[Home] [Help]
PACKAGE BODY: APPS.XLA_00555_AAD_S_000001_PKG
Source
1 PACKAGE BODY XLA_00555_AAD_S_000001_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_00555_AAD_S_000001_PKG |
10 | |
11 | DESCRIPTION |
12 | Package generated From Product Accounting Definition |
13 | Name : Process Manufacturing Financials |
14 | Code : PROCESS_MFG_FINANCIALS |
15 | Owner : PRODUCT |
16 | Version : |
17 | AMB Context Code: DEFAULT |
18 | HISTORY |
19 | Generated at 30-03-2009 at 04:03:27 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_00555_AAD_S_000001_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_00555_AAD_S_000001_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_00555_AAD_S_000001_PKG.ValidateLookupMeaning');
204 --
205 END ValidateLookupMeaning;
206 --
207 --
208
209 --
210 ---------------------------------------
211 --
212 -- PUBLIC FUNCTION
213 -- GetMeaning
214 --
215 ---------------------------------------
216 FUNCTION GetMeaning (
217 p_flex_value_set_id IN INTEGER
218 , p_flex_value IN VARCHAR2
219 , p_source_code IN VARCHAR2
220 , p_source_type_code IN VARCHAR2
221 , p_source_application_id IN INTEGER
222 )
223 RETURN VARCHAR2
224 IS
225 l_meaning_meaning VARCHAR2(4000);
226 l_array_meaning xla_ae_sources_pkg.t_array_meaning;
227 l_Idx INTEGER;
228 l_log_module VARCHAR2(240);
229 --
230 BEGIN
231 IF g_log_enabled THEN
232 l_log_module := C_DEFAULT_MODULE||'.GetMeaning';
233 END IF;
234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
235 trace
236 (p_msg => 'BEGIN of GetMeaning'||
237 'p_flex_value_set_id = '||p_flex_value_set_id||
238 'p_flex_value = '||p_flex_value
239 ,p_level => C_LEVEL_PROCEDURE
240 ,p_module => l_log_module);
241 END IF;
242 --
243 l_array_meaning := xla_ae_sources_pkg.g_array_meaning;
244 --
245 IF p_flex_value IS NULL THEN
246
247 l_meaning_meaning := NULL;
248
249 ELSE
250
251 CASE p_flex_value_set_id
252
253 WHEN 1010186 THEN
254
255 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
256
257 trace
258 (p_msg => '-> CALL DBMS_UTILITY.get_hash_value'
259 ,p_level => C_LEVEL_PROCEDURE
260 ,p_module => l_log_module);
261
262 END IF;
263
264 l_Idx := DBMS_UTILITY.get_hash_value(TO_CHAR(p_flex_value),1,1073741824);
265
266 IF l_array_meaning.EXISTS(1010186) AND
267 l_array_meaning(1010186).array_flex_value.EXISTS(l_Idx) AND
268 l_array_meaning(1010186).array_flex_value(l_Idx) = p_flex_value THEN
269
270 l_meaning_meaning := l_array_meaning(1010186).array_meaning(l_Idx);
271
272 ELSE
273
274 l_meaning_meaning := p_flex_value;
275 l_array_meaning(1010186).array_flex_value(l_Idx) := p_flex_value;
276 l_array_meaning(1010186).array_meaning(l_Idx) := l_meaning_meaning;
277
278 END IF;
279
280 ELSE
281 l_meaning_meaning := NULL;
282 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
283 xla_accounting_err_pkg.build_message
284 (p_appli_s_name => 'XLA'
285 ,p_msg_name => 'XLA_AP_FLEX_VALUE_MEANING'
286 ,p_token_1 => 'VALUE_SET_NAME'
287 ,p_value_1 => xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
288 ,p_token_2 => 'FLEX_VALUE'
289 ,p_value_2 => p_flex_value
290 ,p_token_3 => 'SOURCE_NAME'
291 ,p_value_3 => xla_ae_sources_pkg.GetSourceName(
292 p_source_code
293 , p_source_type_code
294 , p_source_application_id
295 )
296 ,p_token_4 => 'PRODUCT_NAME'
297 ,p_value_4 => xla_ae_journal_entry_pkg.g_cache_event.application_name
298 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
299 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
300 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
301 );
302 IF (C_LEVEL_ERROR >= g_log_level) THEN
303 trace
304 (p_msg => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
305 ,p_level => C_LEVEL_ERROR
306 ,p_module => l_log_module);
307 END IF;
308 END CASE;
309 --
310 END IF;
311 --
312 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
313
314 trace
315 (p_msg => 'return value. meaning = '||l_meaning_meaning
316 ,p_level => C_LEVEL_PROCEDURE
317 ,p_module => l_log_module);
318
319 trace
320 (p_msg => 'END of GetMeaning'
321 ,p_level => C_LEVEL_PROCEDURE
322 ,p_module => l_log_module);
323 END IF;
324 --
325 xla_ae_sources_pkg.g_array_meaning := l_array_meaning ;
326 --
327 RETURN l_meaning_meaning ;
328 --
329 EXCEPTION
330 WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
331 --
332 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
333 xla_accounting_err_pkg.build_message
334 (p_appli_s_name => 'XLA'
335 ,p_msg_name => 'XLA_AP_FLEX_VALUE_MEANING'
336 ,p_token_1 => 'VALUE_SET_NAME'
337 ,p_value_1 => xla_flex_pkg.get_value_set_name(p_flex_value_set_id)
338 ,p_token_2 => 'FLEX_VALUE'
339 ,p_value_2 => p_flex_value
340 ,p_token_3 => 'SOURCE_NAME'
341 ,p_value_3 => xla_ae_sources_pkg.GetSourceName(
345 )
342 p_source_code
343 , p_source_type_code
344 , p_source_application_id
346 ,p_token_4 => 'PRODUCT_NAME'
347 ,p_value_4 => xla_ae_journal_entry_pkg.g_cache_event.application_name
348 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
349 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
350 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
351 );
352
353 IF (C_LEVEL_ERROR >= g_log_level) THEN
354 trace
355 (p_msg => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
356 ,p_level => C_LEVEL_ERROR
357 ,p_module => l_log_module);
358 END IF;
359
360 RETURN NULL;
361 WHEN xla_exceptions_pkg.application_exception THEN
362 RAISE;
363 WHEN OTHERS THEN
364 xla_exceptions_pkg.raise_message
365 (p_location => 'XLA_00555_AAD_S_000001_PKG.GetMeaning');
366 END GetMeaning;
367 --
368
369 ---------------------------------------
370 --
371 -- PRIVATE FUNCTION
372 -- AcctDerRule_1
373 --
374 ---------------------------------------
375 FUNCTION AcctDerRule_1 (
376 p_application_id IN NUMBER
377 , p_ae_header_id IN NUMBER
378 , p_side IN VARCHAR2
379 --Transaction Account
380 , p_source_1 IN NUMBER
381 --Journal Line Type
382 , p_source_2 IN VARCHAR2
383 , x_transaction_coa_id OUT NOCOPY NUMBER
384 , x_accounting_coa_id OUT NOCOPY NUMBER
385 , x_value_type_code OUT NOCOPY VARCHAR2
386 )
387 RETURN NUMBER
388 IS
389 l_component_type VARCHAR2(80) ;
390 l_component_code VARCHAR2(30) ;
391 l_component_type_code VARCHAR2(1) ;
392 l_component_appl_id INTEGER ;
393 l_amb_context_code VARCHAR2(30) ;
394 l_log_module VARCHAR2(240) ;
395 l_output_value NUMBER ;
396 BEGIN
397 IF g_log_enabled THEN
398 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_1';
399 END IF;
400 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
401 trace
402 (p_msg => 'BEGIN of AcctDerRule_1'
403 ,p_level => C_LEVEL_PROCEDURE
404 ,p_module => l_log_module);
405 END IF;
406 --
407 l_component_type := 'AMB_ADR';
408 l_component_code := 'AAC';
409 l_component_type_code := 'S';
410 l_component_appl_id := 555;
411 l_amb_context_code := 'DEFAULT';
412 x_transaction_coa_id := null;
413 x_accounting_coa_id := null;
414 --
415
416 IF NVL(p_source_2,'
417 ') = 'AAC'
418 THEN
419 --
420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
421 trace
422 (p_msg => 'END of AcctDerRule_1'
423 ,p_level => C_LEVEL_PROCEDURE
424 ,p_module => l_log_module);
425 END IF;
426 x_value_type_code := 'S';
427 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
428 RETURN l_output_value;
429
430 END IF;
431 --
432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
433 trace
434 (p_msg => 'END of AcctDerRule_1(invalid)'
435 ,p_level => C_LEVEL_PROCEDURE
436 ,p_module => l_log_module);
437 END IF;
438 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
439 x_value_type_code := null;
440 l_output_value := null;
441 xla_accounting_err_pkg.build_message
442 (p_appli_s_name => 'XLA'
443 ,p_msg_name => 'XLA_AP_INVALID_ADR'
444 ,p_token_1 => 'COMPONENT_NAME'
445 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
446 l_component_type
447 , l_component_code
448 , l_component_type_code
449 , l_component_appl_id
450 , l_amb_context_code
451 )
452 ,p_token_2 => 'OWNER'
453 ,p_value_2 => xla_lookups_pkg.get_meaning(
454 'XLA_OWNER_TYPE'
455 ,l_component_type_code
456 )
457 ,p_token_3 => 'PAD_NAME'
458 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
459 ,p_token_4 => 'PAD_OWNER'
460 ,p_value_4 => xla_lookups_pkg.get_meaning(
461 'XLA_OWNER_TYPE'
465 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
462 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
463 )
464 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
466 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
467 ,p_ae_header_id => NULL
468 );
469 RETURN l_output_value;
470 EXCEPTION
471 WHEN xla_exceptions_pkg.application_exception THEN
472 RAISE;
473 WHEN OTHERS THEN
474 xla_exceptions_pkg.raise_message
475 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_1');
476 END AcctDerRule_1;
477 --
478
479 ---------------------------------------
480 --
481 -- PRIVATE FUNCTION
482 -- AcctDerRule_2
483 --
484 ---------------------------------------
485 FUNCTION AcctDerRule_2 (
486 p_application_id IN NUMBER
487 , p_ae_header_id IN NUMBER
488 , p_side IN VARCHAR2
489 --Transaction Account
490 , p_source_1 IN NUMBER
491 --Journal Line Type
492 , p_source_2 IN VARCHAR2
493 , x_transaction_coa_id OUT NOCOPY NUMBER
494 , x_accounting_coa_id OUT NOCOPY NUMBER
495 , x_value_type_code OUT NOCOPY VARCHAR2
496 )
497 RETURN NUMBER
498 IS
499 l_component_type VARCHAR2(80) ;
500 l_component_code VARCHAR2(30) ;
501 l_component_type_code VARCHAR2(1) ;
502 l_component_appl_id INTEGER ;
503 l_amb_context_code VARCHAR2(30) ;
504 l_log_module VARCHAR2(240) ;
505 l_output_value NUMBER ;
506 BEGIN
507 IF g_log_enabled THEN
508 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_2';
509 END IF;
510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
511 trace
512 (p_msg => 'BEGIN of AcctDerRule_2'
513 ,p_level => C_LEVEL_PROCEDURE
514 ,p_module => l_log_module);
515 END IF;
516 --
517 l_component_type := 'AMB_ADR';
518 l_component_code := 'AAP';
519 l_component_type_code := 'S';
520 l_component_appl_id := 555;
521 l_amb_context_code := 'DEFAULT';
522 x_transaction_coa_id := null;
523 x_accounting_coa_id := null;
524 --
525
526 IF NVL(p_source_2,'
527 ') = 'AAP'
528 THEN
529 --
530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
531 trace
532 (p_msg => 'END of AcctDerRule_2'
533 ,p_level => C_LEVEL_PROCEDURE
534 ,p_module => l_log_module);
535 END IF;
536 x_value_type_code := 'S';
537 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
538 RETURN l_output_value;
539
540 END IF;
541 --
542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
543 trace
544 (p_msg => 'END of AcctDerRule_2(invalid)'
545 ,p_level => C_LEVEL_PROCEDURE
546 ,p_module => l_log_module);
547 END IF;
548 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
549 x_value_type_code := null;
550 l_output_value := null;
551 xla_accounting_err_pkg.build_message
552 (p_appli_s_name => 'XLA'
553 ,p_msg_name => 'XLA_AP_INVALID_ADR'
554 ,p_token_1 => 'COMPONENT_NAME'
555 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
556 l_component_type
557 , l_component_code
558 , l_component_type_code
559 , l_component_appl_id
560 , l_amb_context_code
561 )
562 ,p_token_2 => 'OWNER'
563 ,p_value_2 => xla_lookups_pkg.get_meaning(
564 'XLA_OWNER_TYPE'
565 ,l_component_type_code
566 )
567 ,p_token_3 => 'PAD_NAME'
568 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
569 ,p_token_4 => 'PAD_OWNER'
570 ,p_value_4 => xla_lookups_pkg.get_meaning(
571 'XLA_OWNER_TYPE'
572 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
573 )
574 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
575 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
576 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
577 ,p_ae_header_id => NULL
578 );
579 RETURN l_output_value;
580 EXCEPTION
584 xla_exceptions_pkg.raise_message
581 WHEN xla_exceptions_pkg.application_exception THEN
582 RAISE;
583 WHEN OTHERS THEN
585 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_2');
586 END AcctDerRule_2;
587 --
588
589 ---------------------------------------
590 --
591 -- PRIVATE FUNCTION
592 -- AcctDerRule_3
593 --
594 ---------------------------------------
595 FUNCTION AcctDerRule_3 (
596 p_application_id IN NUMBER
597 , p_ae_header_id IN NUMBER
598 , p_side IN VARCHAR2
599 --Transaction Account
600 , p_source_1 IN NUMBER
601 --Journal Line Type
602 , p_source_2 IN VARCHAR2
603 , x_transaction_coa_id OUT NOCOPY NUMBER
604 , x_accounting_coa_id OUT NOCOPY NUMBER
605 , x_value_type_code OUT NOCOPY VARCHAR2
606 )
607 RETURN NUMBER
608 IS
609 l_component_type VARCHAR2(80) ;
610 l_component_code VARCHAR2(30) ;
611 l_component_type_code VARCHAR2(1) ;
612 l_component_appl_id INTEGER ;
613 l_amb_context_code VARCHAR2(30) ;
614 l_log_module VARCHAR2(240) ;
615 l_output_value NUMBER ;
616 BEGIN
617 IF g_log_enabled THEN
618 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
619 END IF;
620 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
621 trace
622 (p_msg => 'BEGIN of AcctDerRule_3'
623 ,p_level => C_LEVEL_PROCEDURE
624 ,p_module => l_log_module);
625 END IF;
626 --
627 l_component_type := 'AMB_ADR';
628 l_component_code := 'ACV';
629 l_component_type_code := 'S';
630 l_component_appl_id := 555;
631 l_amb_context_code := 'DEFAULT';
632 x_transaction_coa_id := null;
633 x_accounting_coa_id := null;
634 --
635
636 IF NVL(p_source_2,'
637 ') = 'ACV'
638 THEN
639 --
640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
641 trace
642 (p_msg => 'END of AcctDerRule_3'
643 ,p_level => C_LEVEL_PROCEDURE
644 ,p_module => l_log_module);
645 END IF;
646 x_value_type_code := 'S';
647 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
648 RETURN l_output_value;
649
650 END IF;
651 --
652 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
653 trace
654 (p_msg => 'END of AcctDerRule_3(invalid)'
655 ,p_level => C_LEVEL_PROCEDURE
656 ,p_module => l_log_module);
657 END IF;
658 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
659 x_value_type_code := null;
660 l_output_value := null;
661 xla_accounting_err_pkg.build_message
662 (p_appli_s_name => 'XLA'
663 ,p_msg_name => 'XLA_AP_INVALID_ADR'
664 ,p_token_1 => 'COMPONENT_NAME'
665 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
666 l_component_type
667 , l_component_code
668 , l_component_type_code
669 , l_component_appl_id
670 , l_amb_context_code
671 )
672 ,p_token_2 => 'OWNER'
673 ,p_value_2 => xla_lookups_pkg.get_meaning(
674 'XLA_OWNER_TYPE'
675 ,l_component_type_code
676 )
677 ,p_token_3 => 'PAD_NAME'
678 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
679 ,p_token_4 => 'PAD_OWNER'
680 ,p_value_4 => xla_lookups_pkg.get_meaning(
681 'XLA_OWNER_TYPE'
682 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
683 )
684 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
685 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
686 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
687 ,p_ae_header_id => NULL
688 );
689 RETURN l_output_value;
690 EXCEPTION
691 WHEN xla_exceptions_pkg.application_exception THEN
692 RAISE;
693 WHEN OTHERS THEN
694 xla_exceptions_pkg.raise_message
695 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_3');
696 END AcctDerRule_3;
697 --
698
699 ---------------------------------------
700 --
701 -- PRIVATE FUNCTION
702 -- AcctDerRule_4
703 --
704 ---------------------------------------
705 FUNCTION AcctDerRule_4 (
706 p_application_id IN NUMBER
707 , p_ae_header_id IN NUMBER
711 --Journal Line Type
708 , p_side IN VARCHAR2
709 --Transaction Account
710 , p_source_1 IN NUMBER
712 , p_source_2 IN VARCHAR2
713 , x_transaction_coa_id OUT NOCOPY NUMBER
714 , x_accounting_coa_id OUT NOCOPY NUMBER
715 , x_value_type_code OUT NOCOPY VARCHAR2
716 )
717 RETURN NUMBER
718 IS
719 l_component_type VARCHAR2(80) ;
720 l_component_code VARCHAR2(30) ;
721 l_component_type_code VARCHAR2(1) ;
722 l_component_appl_id INTEGER ;
723 l_amb_context_code VARCHAR2(30) ;
724 l_log_module VARCHAR2(240) ;
725 l_output_value NUMBER ;
726 BEGIN
727 IF g_log_enabled THEN
728 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
729 END IF;
730 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
731 trace
732 (p_msg => 'BEGIN of AcctDerRule_4'
733 ,p_level => C_LEVEL_PROCEDURE
734 ,p_module => l_log_module);
735 END IF;
736 --
737 l_component_type := 'AMB_ADR';
738 l_component_code := 'ALC';
739 l_component_type_code := 'S';
740 l_component_appl_id := 555;
741 l_amb_context_code := 'DEFAULT';
742 x_transaction_coa_id := null;
743 x_accounting_coa_id := null;
744 --
745
746 IF NVL(p_source_2,'
747 ') = 'ALC'
748 THEN
749 --
750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
751 trace
752 (p_msg => 'END of AcctDerRule_4'
753 ,p_level => C_LEVEL_PROCEDURE
754 ,p_module => l_log_module);
755 END IF;
756 x_value_type_code := 'S';
757 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
758 RETURN l_output_value;
759
760 END IF;
761 --
762 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
763 trace
764 (p_msg => 'END of AcctDerRule_4(invalid)'
765 ,p_level => C_LEVEL_PROCEDURE
766 ,p_module => l_log_module);
767 END IF;
768 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
769 x_value_type_code := null;
770 l_output_value := null;
771 xla_accounting_err_pkg.build_message
772 (p_appli_s_name => 'XLA'
773 ,p_msg_name => 'XLA_AP_INVALID_ADR'
774 ,p_token_1 => 'COMPONENT_NAME'
775 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
776 l_component_type
777 , l_component_code
778 , l_component_type_code
779 , l_component_appl_id
780 , l_amb_context_code
781 )
782 ,p_token_2 => 'OWNER'
783 ,p_value_2 => xla_lookups_pkg.get_meaning(
784 'XLA_OWNER_TYPE'
785 ,l_component_type_code
786 )
787 ,p_token_3 => 'PAD_NAME'
788 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
789 ,p_token_4 => 'PAD_OWNER'
790 ,p_value_4 => xla_lookups_pkg.get_meaning(
791 'XLA_OWNER_TYPE'
792 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
793 )
794 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
795 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
796 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
797 ,p_ae_header_id => NULL
798 );
799 RETURN l_output_value;
800 EXCEPTION
801 WHEN xla_exceptions_pkg.application_exception THEN
802 RAISE;
803 WHEN OTHERS THEN
804 xla_exceptions_pkg.raise_message
805 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_4');
806 END AcctDerRule_4;
807 --
808
809 ---------------------------------------
810 --
811 -- PRIVATE FUNCTION
812 -- AcctDerRule_5
813 --
814 ---------------------------------------
815 FUNCTION AcctDerRule_5 (
816 p_application_id IN NUMBER
817 , p_ae_header_id IN NUMBER
818 , p_side IN VARCHAR2
819 --Transaction Account
820 , p_source_1 IN NUMBER
821 --Journal Line Type
822 , p_source_2 IN VARCHAR2
823 , x_transaction_coa_id OUT NOCOPY NUMBER
824 , x_accounting_coa_id OUT NOCOPY NUMBER
825 , x_value_type_code OUT NOCOPY VARCHAR2
826 )
827 RETURN NUMBER
828 IS
829 l_component_type VARCHAR2(80) ;
830 l_component_code VARCHAR2(30) ;
831 l_component_type_code VARCHAR2(1) ;
832 l_component_appl_id INTEGER ;
836 BEGIN
833 l_amb_context_code VARCHAR2(30) ;
834 l_log_module VARCHAR2(240) ;
835 l_output_value NUMBER ;
837 IF g_log_enabled THEN
838 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
839 END IF;
840 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
841 trace
842 (p_msg => 'BEGIN of AcctDerRule_5'
843 ,p_level => C_LEVEL_PROCEDURE
844 ,p_module => l_log_module);
845 END IF;
846 --
847 l_component_type := 'AMB_ADR';
848 l_component_code := 'ALV';
849 l_component_type_code := 'S';
850 l_component_appl_id := 555;
851 l_amb_context_code := 'DEFAULT';
852 x_transaction_coa_id := null;
853 x_accounting_coa_id := null;
854 --
855
856 IF NVL(p_source_2,'
857 ') = 'ALV'
858 THEN
859 --
860 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
861 trace
862 (p_msg => 'END of AcctDerRule_5'
863 ,p_level => C_LEVEL_PROCEDURE
864 ,p_module => l_log_module);
865 END IF;
866 x_value_type_code := 'S';
867 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
868 RETURN l_output_value;
869
870 END IF;
871 --
872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
873 trace
874 (p_msg => 'END of AcctDerRule_5(invalid)'
875 ,p_level => C_LEVEL_PROCEDURE
876 ,p_module => l_log_module);
877 END IF;
878 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
879 x_value_type_code := null;
880 l_output_value := null;
881 xla_accounting_err_pkg.build_message
882 (p_appli_s_name => 'XLA'
883 ,p_msg_name => 'XLA_AP_INVALID_ADR'
884 ,p_token_1 => 'COMPONENT_NAME'
885 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
886 l_component_type
887 , l_component_code
888 , l_component_type_code
889 , l_component_appl_id
890 , l_amb_context_code
891 )
892 ,p_token_2 => 'OWNER'
893 ,p_value_2 => xla_lookups_pkg.get_meaning(
894 'XLA_OWNER_TYPE'
895 ,l_component_type_code
896 )
897 ,p_token_3 => 'PAD_NAME'
898 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
899 ,p_token_4 => 'PAD_OWNER'
900 ,p_value_4 => xla_lookups_pkg.get_meaning(
901 'XLA_OWNER_TYPE'
902 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
903 )
904 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
905 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
906 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
907 ,p_ae_header_id => NULL
908 );
909 RETURN l_output_value;
910 EXCEPTION
911 WHEN xla_exceptions_pkg.application_exception THEN
912 RAISE;
913 WHEN OTHERS THEN
914 xla_exceptions_pkg.raise_message
915 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_5');
916 END AcctDerRule_5;
917 --
918
919 ---------------------------------------
920 --
921 -- PRIVATE FUNCTION
922 -- AcctDerRule_6
923 --
924 ---------------------------------------
925 FUNCTION AcctDerRule_6 (
926 p_application_id IN NUMBER
927 , p_ae_header_id IN NUMBER
928 , p_side IN VARCHAR2
929 --Transaction Account
930 , p_source_1 IN NUMBER
931 --Journal Line Type
932 , p_source_2 IN VARCHAR2
933 , x_transaction_coa_id OUT NOCOPY NUMBER
934 , x_accounting_coa_id OUT NOCOPY NUMBER
935 , x_value_type_code OUT NOCOPY VARCHAR2
936 )
937 RETURN NUMBER
938 IS
939 l_component_type VARCHAR2(80) ;
940 l_component_code VARCHAR2(30) ;
941 l_component_type_code VARCHAR2(1) ;
942 l_component_appl_id INTEGER ;
943 l_amb_context_code VARCHAR2(30) ;
944 l_log_module VARCHAR2(240) ;
945 l_output_value NUMBER ;
946 BEGIN
947 IF g_log_enabled THEN
948 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
949 END IF;
950 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
951 trace
952 (p_msg => 'BEGIN of AcctDerRule_6'
953 ,p_level => C_LEVEL_PROCEDURE
954 ,p_module => l_log_module);
955 END IF;
956 --
957 l_component_type := 'AMB_ADR';
958 l_component_code := 'CAD';
962 x_transaction_coa_id := null;
959 l_component_type_code := 'S';
960 l_component_appl_id := 555;
961 l_amb_context_code := 'DEFAULT';
963 x_accounting_coa_id := null;
964 --
965
966 IF NVL(p_source_2,'
967 ') = 'CAD'
968 THEN
969 --
970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
971 trace
972 (p_msg => 'END of AcctDerRule_6'
973 ,p_level => C_LEVEL_PROCEDURE
974 ,p_module => l_log_module);
975 END IF;
976 x_value_type_code := 'S';
977 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
978 RETURN l_output_value;
979
980 END IF;
981 --
982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
983 trace
984 (p_msg => 'END of AcctDerRule_6(invalid)'
985 ,p_level => C_LEVEL_PROCEDURE
986 ,p_module => l_log_module);
987 END IF;
988 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
989 x_value_type_code := null;
990 l_output_value := null;
991 xla_accounting_err_pkg.build_message
992 (p_appli_s_name => 'XLA'
993 ,p_msg_name => 'XLA_AP_INVALID_ADR'
994 ,p_token_1 => 'COMPONENT_NAME'
995 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
996 l_component_type
997 , l_component_code
998 , l_component_type_code
999 , l_component_appl_id
1000 , l_amb_context_code
1001 )
1002 ,p_token_2 => 'OWNER'
1003 ,p_value_2 => xla_lookups_pkg.get_meaning(
1004 'XLA_OWNER_TYPE'
1005 ,l_component_type_code
1006 )
1007 ,p_token_3 => 'PAD_NAME'
1008 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1009 ,p_token_4 => 'PAD_OWNER'
1010 ,p_value_4 => xla_lookups_pkg.get_meaning(
1011 'XLA_OWNER_TYPE'
1012 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1013 )
1014 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1015 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1016 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1017 ,p_ae_header_id => NULL
1018 );
1019 RETURN l_output_value;
1020 EXCEPTION
1021 WHEN xla_exceptions_pkg.application_exception THEN
1022 RAISE;
1023 WHEN OTHERS THEN
1024 xla_exceptions_pkg.raise_message
1025 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_6');
1026 END AcctDerRule_6;
1027 --
1028
1029 ---------------------------------------
1030 --
1031 -- PRIVATE FUNCTION
1032 -- AcctDerRule_7
1033 --
1034 ---------------------------------------
1035 FUNCTION AcctDerRule_7 (
1036 p_application_id IN NUMBER
1037 , p_ae_header_id IN NUMBER
1038 , p_side IN VARCHAR2
1039 --Transaction Account
1040 , p_source_1 IN NUMBER
1041 --Journal Line Type
1042 , p_source_2 IN VARCHAR2
1043 , x_transaction_coa_id OUT NOCOPY NUMBER
1044 , x_accounting_coa_id OUT NOCOPY NUMBER
1045 , x_value_type_code OUT NOCOPY VARCHAR2
1046 )
1047 RETURN NUMBER
1048 IS
1049 l_component_type VARCHAR2(80) ;
1050 l_component_code VARCHAR2(30) ;
1051 l_component_type_code VARCHAR2(1) ;
1052 l_component_appl_id INTEGER ;
1053 l_amb_context_code VARCHAR2(30) ;
1054 l_log_module VARCHAR2(240) ;
1055 l_output_value NUMBER ;
1056 BEGIN
1057 IF g_log_enabled THEN
1058 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
1059 END IF;
1060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1061 trace
1062 (p_msg => 'BEGIN of AcctDerRule_7'
1063 ,p_level => C_LEVEL_PROCEDURE
1064 ,p_module => l_log_module);
1065 END IF;
1066 --
1067 l_component_type := 'AMB_ADR';
1068 l_component_code := 'CLEARING';
1069 l_component_type_code := 'S';
1070 l_component_appl_id := 555;
1071 l_amb_context_code := 'DEFAULT';
1072 x_transaction_coa_id := null;
1073 x_accounting_coa_id := null;
1074 --
1075
1076 IF NVL(p_source_2,'
1077 ') = 'CLR'
1078 THEN
1079 --
1080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1081 trace
1082 (p_msg => 'END of AcctDerRule_7'
1083 ,p_level => C_LEVEL_PROCEDURE
1084 ,p_module => l_log_module);
1085 END IF;
1089
1086 x_value_type_code := 'S';
1087 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1088 RETURN l_output_value;
1090 END IF;
1091 --
1092 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1093 trace
1094 (p_msg => 'END of AcctDerRule_7(invalid)'
1095 ,p_level => C_LEVEL_PROCEDURE
1096 ,p_module => l_log_module);
1097 END IF;
1098 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1099 x_value_type_code := null;
1100 l_output_value := null;
1101 xla_accounting_err_pkg.build_message
1102 (p_appli_s_name => 'XLA'
1103 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1104 ,p_token_1 => 'COMPONENT_NAME'
1105 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1106 l_component_type
1107 , l_component_code
1108 , l_component_type_code
1109 , l_component_appl_id
1110 , l_amb_context_code
1111 )
1112 ,p_token_2 => 'OWNER'
1113 ,p_value_2 => xla_lookups_pkg.get_meaning(
1114 'XLA_OWNER_TYPE'
1115 ,l_component_type_code
1116 )
1117 ,p_token_3 => 'PAD_NAME'
1118 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1119 ,p_token_4 => 'PAD_OWNER'
1120 ,p_value_4 => xla_lookups_pkg.get_meaning(
1121 'XLA_OWNER_TYPE'
1122 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1123 )
1124 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1125 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1126 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1127 ,p_ae_header_id => NULL
1128 );
1129 RETURN l_output_value;
1130 EXCEPTION
1131 WHEN xla_exceptions_pkg.application_exception THEN
1132 RAISE;
1133 WHEN OTHERS THEN
1134 xla_exceptions_pkg.raise_message
1135 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_7');
1136 END AcctDerRule_7;
1137 --
1138
1139 ---------------------------------------
1140 --
1141 -- PRIVATE FUNCTION
1142 -- AcctDerRule_8
1143 --
1144 ---------------------------------------
1145 FUNCTION AcctDerRule_8 (
1146 p_application_id IN NUMBER
1147 , p_ae_header_id IN NUMBER
1148 , p_side IN VARCHAR2
1149 --Transaction Account
1150 , p_source_1 IN NUMBER
1151 --Journal Line Type
1152 , p_source_2 IN VARCHAR2
1153 , x_transaction_coa_id OUT NOCOPY NUMBER
1154 , x_accounting_coa_id OUT NOCOPY NUMBER
1155 , x_value_type_code OUT NOCOPY VARCHAR2
1156 )
1157 RETURN NUMBER
1158 IS
1159 l_component_type VARCHAR2(80) ;
1160 l_component_code VARCHAR2(30) ;
1161 l_component_type_code VARCHAR2(1) ;
1162 l_component_appl_id INTEGER ;
1163 l_amb_context_code VARCHAR2(30) ;
1164 l_log_module VARCHAR2(240) ;
1165 l_output_value NUMBER ;
1166 BEGIN
1167 IF g_log_enabled THEN
1168 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1169 END IF;
1170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1171 trace
1172 (p_msg => 'BEGIN of AcctDerRule_8'
1173 ,p_level => C_LEVEL_PROCEDURE
1174 ,p_module => l_log_module);
1175 END IF;
1176 --
1177 l_component_type := 'AMB_ADR';
1178 l_component_code := 'CLS';
1179 l_component_type_code := 'S';
1180 l_component_appl_id := 555;
1181 l_amb_context_code := 'DEFAULT';
1182 x_transaction_coa_id := null;
1183 x_accounting_coa_id := null;
1184 --
1185
1186 IF NVL(p_source_2,'
1187 ') = 'CLS'
1188 THEN
1189 --
1190 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1191 trace
1192 (p_msg => 'END of AcctDerRule_8'
1193 ,p_level => C_LEVEL_PROCEDURE
1194 ,p_module => l_log_module);
1195 END IF;
1196 x_value_type_code := 'S';
1197 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1198 RETURN l_output_value;
1199
1200 END IF;
1201 --
1202 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1203 trace
1204 (p_msg => 'END of AcctDerRule_8(invalid)'
1205 ,p_level => C_LEVEL_PROCEDURE
1206 ,p_module => l_log_module);
1207 END IF;
1208 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1209 x_value_type_code := null;
1210 l_output_value := null;
1214 ,p_token_1 => 'COMPONENT_NAME'
1211 xla_accounting_err_pkg.build_message
1212 (p_appli_s_name => 'XLA'
1213 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1215 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1216 l_component_type
1217 , l_component_code
1218 , l_component_type_code
1219 , l_component_appl_id
1220 , l_amb_context_code
1221 )
1222 ,p_token_2 => 'OWNER'
1223 ,p_value_2 => xla_lookups_pkg.get_meaning(
1224 'XLA_OWNER_TYPE'
1225 ,l_component_type_code
1226 )
1227 ,p_token_3 => 'PAD_NAME'
1228 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1229 ,p_token_4 => 'PAD_OWNER'
1230 ,p_value_4 => xla_lookups_pkg.get_meaning(
1231 'XLA_OWNER_TYPE'
1232 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1233 )
1234 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1235 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1236 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1237 ,p_ae_header_id => NULL
1238 );
1239 RETURN l_output_value;
1240 EXCEPTION
1241 WHEN xla_exceptions_pkg.application_exception THEN
1242 RAISE;
1243 WHEN OTHERS THEN
1244 xla_exceptions_pkg.raise_message
1245 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_8');
1246 END AcctDerRule_8;
1247 --
1248
1249 ---------------------------------------
1250 --
1251 -- PRIVATE FUNCTION
1252 -- AcctDerRule_9
1253 --
1254 ---------------------------------------
1255 FUNCTION AcctDerRule_9 (
1256 p_application_id IN NUMBER
1257 , p_ae_header_id IN NUMBER
1258 , p_side IN VARCHAR2
1259 --Transaction Account
1260 , p_source_1 IN NUMBER
1261 --Journal Line Type
1262 , p_source_2 IN VARCHAR2
1263 , x_transaction_coa_id OUT NOCOPY NUMBER
1264 , x_accounting_coa_id OUT NOCOPY NUMBER
1265 , x_value_type_code OUT NOCOPY VARCHAR2
1266 )
1267 RETURN NUMBER
1268 IS
1269 l_component_type VARCHAR2(80) ;
1270 l_component_code VARCHAR2(30) ;
1271 l_component_type_code VARCHAR2(1) ;
1272 l_component_appl_id INTEGER ;
1273 l_amb_context_code VARCHAR2(30) ;
1274 l_log_module VARCHAR2(240) ;
1275 l_output_value NUMBER ;
1276 BEGIN
1277 IF g_log_enabled THEN
1278 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_9';
1279 END IF;
1280 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1281 trace
1282 (p_msg => 'BEGIN of AcctDerRule_9'
1283 ,p_level => C_LEVEL_PROCEDURE
1284 ,p_module => l_log_module);
1285 END IF;
1286 --
1287 l_component_type := 'AMB_ADR';
1288 l_component_code := 'COGS';
1289 l_component_type_code := 'S';
1290 l_component_appl_id := 555;
1291 l_amb_context_code := 'DEFAULT';
1292 x_transaction_coa_id := null;
1293 x_accounting_coa_id := null;
1294 --
1295
1296 IF NVL(p_source_2,'
1297 ') = 'COGS'
1298 THEN
1299 --
1300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1301 trace
1302 (p_msg => 'END of AcctDerRule_9'
1303 ,p_level => C_LEVEL_PROCEDURE
1304 ,p_module => l_log_module);
1305 END IF;
1306 x_value_type_code := 'S';
1307 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1308 RETURN l_output_value;
1309
1310 END IF;
1311 --
1312 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1313 trace
1314 (p_msg => 'END of AcctDerRule_9(invalid)'
1315 ,p_level => C_LEVEL_PROCEDURE
1316 ,p_module => l_log_module);
1317 END IF;
1318 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1319 x_value_type_code := null;
1320 l_output_value := null;
1321 xla_accounting_err_pkg.build_message
1322 (p_appli_s_name => 'XLA'
1323 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1324 ,p_token_1 => 'COMPONENT_NAME'
1325 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1326 l_component_type
1327 , l_component_code
1328 , l_component_type_code
1332 ,p_token_2 => 'OWNER'
1329 , l_component_appl_id
1330 , l_amb_context_code
1331 )
1333 ,p_value_2 => xla_lookups_pkg.get_meaning(
1334 'XLA_OWNER_TYPE'
1335 ,l_component_type_code
1336 )
1337 ,p_token_3 => 'PAD_NAME'
1338 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1339 ,p_token_4 => 'PAD_OWNER'
1340 ,p_value_4 => xla_lookups_pkg.get_meaning(
1341 'XLA_OWNER_TYPE'
1342 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1343 )
1344 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1345 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1346 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1347 ,p_ae_header_id => NULL
1348 );
1349 RETURN l_output_value;
1350 EXCEPTION
1351 WHEN xla_exceptions_pkg.application_exception THEN
1352 RAISE;
1353 WHEN OTHERS THEN
1354 xla_exceptions_pkg.raise_message
1355 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_9');
1356 END AcctDerRule_9;
1357 --
1358
1359 ---------------------------------------
1360 --
1361 -- PRIVATE FUNCTION
1362 -- AcctDerRule_10
1363 --
1364 ---------------------------------------
1365 FUNCTION AcctDerRule_10 (
1366 p_application_id IN NUMBER
1367 , p_ae_header_id IN NUMBER
1368 , p_side IN VARCHAR2
1369 --Transaction Account
1370 , p_source_1 IN NUMBER
1371 --Journal Line Type
1372 , p_source_2 IN VARCHAR2
1373 , x_transaction_coa_id OUT NOCOPY NUMBER
1374 , x_accounting_coa_id OUT NOCOPY NUMBER
1375 , x_value_type_code OUT NOCOPY VARCHAR2
1376 )
1377 RETURN NUMBER
1378 IS
1379 l_component_type VARCHAR2(80) ;
1380 l_component_code VARCHAR2(30) ;
1381 l_component_type_code VARCHAR2(1) ;
1382 l_component_appl_id INTEGER ;
1383 l_amb_context_code VARCHAR2(30) ;
1384 l_log_module VARCHAR2(240) ;
1385 l_output_value NUMBER ;
1386 BEGIN
1387 IF g_log_enabled THEN
1388 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_10';
1389 END IF;
1390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1391 trace
1392 (p_msg => 'BEGIN of AcctDerRule_10'
1393 ,p_level => C_LEVEL_PROCEDURE
1394 ,p_module => l_log_module);
1395 END IF;
1396 --
1397 l_component_type := 'AMB_ADR';
1398 l_component_code := 'DCOGS';
1399 l_component_type_code := 'S';
1400 l_component_appl_id := 555;
1401 l_amb_context_code := 'DEFAULT';
1402 x_transaction_coa_id := null;
1403 x_accounting_coa_id := null;
1404 --
1405
1406 IF NVL(p_source_2,'
1407 ') = 'DCOGS'
1408 THEN
1409 --
1410 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1411 trace
1412 (p_msg => 'END of AcctDerRule_10'
1413 ,p_level => C_LEVEL_PROCEDURE
1414 ,p_module => l_log_module);
1415 END IF;
1416 x_value_type_code := 'S';
1417 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1418 RETURN l_output_value;
1419
1420 END IF;
1421 --
1422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1423 trace
1424 (p_msg => 'END of AcctDerRule_10(invalid)'
1425 ,p_level => C_LEVEL_PROCEDURE
1426 ,p_module => l_log_module);
1427 END IF;
1428 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1429 x_value_type_code := null;
1430 l_output_value := null;
1431 xla_accounting_err_pkg.build_message
1432 (p_appli_s_name => 'XLA'
1433 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1434 ,p_token_1 => 'COMPONENT_NAME'
1435 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1436 l_component_type
1437 , l_component_code
1438 , l_component_type_code
1439 , l_component_appl_id
1440 , l_amb_context_code
1441 )
1442 ,p_token_2 => 'OWNER'
1443 ,p_value_2 => xla_lookups_pkg.get_meaning(
1444 'XLA_OWNER_TYPE'
1445 ,l_component_type_code
1446 )
1450 ,p_value_4 => xla_lookups_pkg.get_meaning(
1447 ,p_token_3 => 'PAD_NAME'
1448 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1449 ,p_token_4 => 'PAD_OWNER'
1451 'XLA_OWNER_TYPE'
1452 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1453 )
1454 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1455 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1456 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1457 ,p_ae_header_id => NULL
1458 );
1459 RETURN l_output_value;
1460 EXCEPTION
1461 WHEN xla_exceptions_pkg.application_exception THEN
1462 RAISE;
1463 WHEN OTHERS THEN
1464 xla_exceptions_pkg.raise_message
1465 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_10');
1466 END AcctDerRule_10;
1467 --
1468
1469 ---------------------------------------
1470 --
1471 -- PRIVATE FUNCTION
1472 -- AcctDerRule_11
1473 --
1474 ---------------------------------------
1475 FUNCTION AcctDerRule_11 (
1476 p_application_id IN NUMBER
1477 , p_ae_header_id IN NUMBER
1478 , p_side IN VARCHAR2
1479 --Transaction Account
1480 , p_source_1 IN NUMBER
1481 --Journal Line Type
1482 , p_source_2 IN VARCHAR2
1483 , x_transaction_coa_id OUT NOCOPY NUMBER
1484 , x_accounting_coa_id OUT NOCOPY NUMBER
1485 , x_value_type_code OUT NOCOPY VARCHAR2
1486 )
1487 RETURN NUMBER
1488 IS
1489 l_component_type VARCHAR2(80) ;
1490 l_component_code VARCHAR2(30) ;
1491 l_component_type_code VARCHAR2(1) ;
1492 l_component_appl_id INTEGER ;
1493 l_amb_context_code VARCHAR2(30) ;
1494 l_log_module VARCHAR2(240) ;
1495 l_output_value NUMBER ;
1496 BEGIN
1497 IF g_log_enabled THEN
1498 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_11';
1499 END IF;
1500 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1501 trace
1502 (p_msg => 'BEGIN of AcctDerRule_11'
1503 ,p_level => C_LEVEL_PROCEDURE
1504 ,p_module => l_log_module);
1505 END IF;
1506 --
1507 l_component_type := 'AMB_ADR';
1508 l_component_code := 'ERA';
1509 l_component_type_code := 'S';
1510 l_component_appl_id := 555;
1511 l_amb_context_code := 'DEFAULT';
1512 x_transaction_coa_id := null;
1513 x_accounting_coa_id := null;
1514 --
1515
1516 IF NVL(p_source_2,'
1517 ') = 'ERA'
1518 THEN
1519 --
1520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1521 trace
1522 (p_msg => 'END of AcctDerRule_11'
1523 ,p_level => C_LEVEL_PROCEDURE
1524 ,p_module => l_log_module);
1525 END IF;
1526 x_value_type_code := 'S';
1527 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1528 RETURN l_output_value;
1529
1530 END IF;
1531 --
1532 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1533 trace
1534 (p_msg => 'END of AcctDerRule_11(invalid)'
1535 ,p_level => C_LEVEL_PROCEDURE
1536 ,p_module => l_log_module);
1537 END IF;
1538 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1539 x_value_type_code := null;
1540 l_output_value := null;
1541 xla_accounting_err_pkg.build_message
1542 (p_appli_s_name => 'XLA'
1543 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1544 ,p_token_1 => 'COMPONENT_NAME'
1545 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1546 l_component_type
1547 , l_component_code
1548 , l_component_type_code
1549 , l_component_appl_id
1550 , l_amb_context_code
1551 )
1552 ,p_token_2 => 'OWNER'
1553 ,p_value_2 => xla_lookups_pkg.get_meaning(
1554 'XLA_OWNER_TYPE'
1555 ,l_component_type_code
1556 )
1557 ,p_token_3 => 'PAD_NAME'
1558 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1559 ,p_token_4 => 'PAD_OWNER'
1560 ,p_value_4 => xla_lookups_pkg.get_meaning(
1561 'XLA_OWNER_TYPE'
1562 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1563 )
1567 ,p_ae_header_id => NULL
1564 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1565 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1566 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1568 );
1569 RETURN l_output_value;
1570 EXCEPTION
1571 WHEN xla_exceptions_pkg.application_exception THEN
1572 RAISE;
1573 WHEN OTHERS THEN
1574 xla_exceptions_pkg.raise_message
1575 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_11');
1576 END AcctDerRule_11;
1577 --
1578
1579 ---------------------------------------
1580 --
1581 -- PRIVATE FUNCTION
1582 -- AcctDerRule_12
1583 --
1584 ---------------------------------------
1585 FUNCTION AcctDerRule_12 (
1586 p_application_id IN NUMBER
1587 , p_ae_header_id IN NUMBER
1588 , p_side IN VARCHAR2
1589 --Transaction Account
1590 , p_source_1 IN NUMBER
1591 --Journal Line Type
1592 , p_source_2 IN VARCHAR2
1593 , x_transaction_coa_id OUT NOCOPY NUMBER
1594 , x_accounting_coa_id OUT NOCOPY NUMBER
1595 , x_value_type_code OUT NOCOPY VARCHAR2
1596 )
1597 RETURN NUMBER
1598 IS
1599 l_component_type VARCHAR2(80) ;
1600 l_component_code VARCHAR2(30) ;
1601 l_component_type_code VARCHAR2(1) ;
1602 l_component_appl_id INTEGER ;
1603 l_amb_context_code VARCHAR2(30) ;
1604 l_log_module VARCHAR2(240) ;
1605 l_output_value NUMBER ;
1606 BEGIN
1607 IF g_log_enabled THEN
1608 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_12';
1609 END IF;
1610 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1611 trace
1612 (p_msg => 'BEGIN of AcctDerRule_12'
1613 ,p_level => C_LEVEL_PROCEDURE
1614 ,p_module => l_log_module);
1615 END IF;
1616 --
1617 l_component_type := 'AMB_ADR';
1618 l_component_code := 'EXP';
1619 l_component_type_code := 'S';
1620 l_component_appl_id := 555;
1621 l_amb_context_code := 'DEFAULT';
1622 x_transaction_coa_id := null;
1623 x_accounting_coa_id := null;
1624 --
1625
1626 IF NVL(p_source_2,'
1627 ') = 'EXP'
1628 THEN
1629 --
1630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1631 trace
1632 (p_msg => 'END of AcctDerRule_12'
1633 ,p_level => C_LEVEL_PROCEDURE
1634 ,p_module => l_log_module);
1635 END IF;
1636 x_value_type_code := 'S';
1637 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1638 RETURN l_output_value;
1639
1640 END IF;
1641 --
1642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1643 trace
1644 (p_msg => 'END of AcctDerRule_12(invalid)'
1645 ,p_level => C_LEVEL_PROCEDURE
1646 ,p_module => l_log_module);
1647 END IF;
1648 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1649 x_value_type_code := null;
1650 l_output_value := null;
1651 xla_accounting_err_pkg.build_message
1652 (p_appli_s_name => 'XLA'
1653 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1654 ,p_token_1 => 'COMPONENT_NAME'
1655 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1656 l_component_type
1657 , l_component_code
1658 , l_component_type_code
1659 , l_component_appl_id
1660 , l_amb_context_code
1661 )
1662 ,p_token_2 => 'OWNER'
1663 ,p_value_2 => xla_lookups_pkg.get_meaning(
1664 'XLA_OWNER_TYPE'
1665 ,l_component_type_code
1666 )
1667 ,p_token_3 => 'PAD_NAME'
1668 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1669 ,p_token_4 => 'PAD_OWNER'
1670 ,p_value_4 => xla_lookups_pkg.get_meaning(
1671 'XLA_OWNER_TYPE'
1672 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1673 )
1674 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1675 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1676 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1677 ,p_ae_header_id => NULL
1678 );
1679 RETURN l_output_value;
1680 EXCEPTION
1681 WHEN xla_exceptions_pkg.application_exception THEN
1682 RAISE;
1683 WHEN OTHERS THEN
1684 xla_exceptions_pkg.raise_message
1688
1685 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_12');
1686 END AcctDerRule_12;
1687 --
1689 ---------------------------------------
1690 --
1691 -- PRIVATE FUNCTION
1692 -- AcctDerRule_13
1693 --
1694 ---------------------------------------
1695 FUNCTION AcctDerRule_13 (
1696 p_application_id IN NUMBER
1697 , p_ae_header_id IN NUMBER
1698 , p_side IN VARCHAR2
1699 --Transaction Account
1700 , p_source_1 IN NUMBER
1701 --Journal Line Type
1702 , p_source_2 IN VARCHAR2
1703 , x_transaction_coa_id OUT NOCOPY NUMBER
1704 , x_accounting_coa_id OUT NOCOPY NUMBER
1705 , x_value_type_code OUT NOCOPY VARCHAR2
1706 )
1707 RETURN NUMBER
1708 IS
1709 l_component_type VARCHAR2(80) ;
1710 l_component_code VARCHAR2(30) ;
1711 l_component_type_code VARCHAR2(1) ;
1712 l_component_appl_id INTEGER ;
1713 l_amb_context_code VARCHAR2(30) ;
1714 l_log_module VARCHAR2(240) ;
1715 l_output_value NUMBER ;
1716 BEGIN
1717 IF g_log_enabled THEN
1718 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_13';
1719 END IF;
1720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1721 trace
1722 (p_msg => 'BEGIN of AcctDerRule_13'
1723 ,p_level => C_LEVEL_PROCEDURE
1724 ,p_module => l_log_module);
1725 END IF;
1726 --
1727 l_component_type := 'AMB_ADR';
1728 l_component_code := 'FRT';
1729 l_component_type_code := 'S';
1730 l_component_appl_id := 555;
1731 l_amb_context_code := 'DEFAULT';
1732 x_transaction_coa_id := null;
1733 x_accounting_coa_id := null;
1734 --
1735
1736 IF NVL(p_source_2,'
1737 ') = 'FRT'
1738 THEN
1739 --
1740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1741 trace
1742 (p_msg => 'END of AcctDerRule_13'
1743 ,p_level => C_LEVEL_PROCEDURE
1744 ,p_module => l_log_module);
1745 END IF;
1746 x_value_type_code := 'S';
1747 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1748 RETURN l_output_value;
1749
1750 END IF;
1751 --
1752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1753 trace
1754 (p_msg => 'END of AcctDerRule_13(invalid)'
1755 ,p_level => C_LEVEL_PROCEDURE
1756 ,p_module => l_log_module);
1757 END IF;
1758 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1759 x_value_type_code := null;
1760 l_output_value := null;
1761 xla_accounting_err_pkg.build_message
1762 (p_appli_s_name => 'XLA'
1763 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1764 ,p_token_1 => 'COMPONENT_NAME'
1765 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1766 l_component_type
1767 , l_component_code
1768 , l_component_type_code
1769 , l_component_appl_id
1770 , l_amb_context_code
1771 )
1772 ,p_token_2 => 'OWNER'
1773 ,p_value_2 => xla_lookups_pkg.get_meaning(
1774 'XLA_OWNER_TYPE'
1775 ,l_component_type_code
1776 )
1777 ,p_token_3 => 'PAD_NAME'
1778 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1779 ,p_token_4 => 'PAD_OWNER'
1780 ,p_value_4 => xla_lookups_pkg.get_meaning(
1781 'XLA_OWNER_TYPE'
1782 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1783 )
1784 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1785 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1786 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1787 ,p_ae_header_id => NULL
1788 );
1789 RETURN l_output_value;
1790 EXCEPTION
1791 WHEN xla_exceptions_pkg.application_exception THEN
1792 RAISE;
1793 WHEN OTHERS THEN
1794 xla_exceptions_pkg.raise_message
1795 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_13');
1796 END AcctDerRule_13;
1797 --
1798
1799 ---------------------------------------
1800 --
1801 -- PRIVATE FUNCTION
1802 -- AcctDerRule_14
1803 --
1804 ---------------------------------------
1805 FUNCTION AcctDerRule_14 (
1806 p_application_id IN NUMBER
1807 , p_ae_header_id IN NUMBER
1808 , p_side IN VARCHAR2
1809 --Transaction Account
1813 , x_transaction_coa_id OUT NOCOPY NUMBER
1810 , p_source_1 IN NUMBER
1811 --Journal Line Type
1812 , p_source_2 IN VARCHAR2
1814 , x_accounting_coa_id OUT NOCOPY NUMBER
1815 , x_value_type_code OUT NOCOPY VARCHAR2
1816 )
1817 RETURN NUMBER
1818 IS
1819 l_component_type VARCHAR2(80) ;
1820 l_component_code VARCHAR2(30) ;
1821 l_component_type_code VARCHAR2(1) ;
1822 l_component_appl_id INTEGER ;
1823 l_amb_context_code VARCHAR2(30) ;
1824 l_log_module VARCHAR2(240) ;
1825 l_output_value NUMBER ;
1826 BEGIN
1827 IF g_log_enabled THEN
1828 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_14';
1829 END IF;
1830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1831 trace
1832 (p_msg => 'BEGIN of AcctDerRule_14'
1833 ,p_level => C_LEVEL_PROCEDURE
1834 ,p_module => l_log_module);
1835 END IF;
1836 --
1837 l_component_type := 'AMB_ADR';
1838 l_component_code := 'ICACC';
1839 l_component_type_code := 'S';
1840 l_component_appl_id := 555;
1841 l_amb_context_code := 'DEFAULT';
1842 x_transaction_coa_id := null;
1843 x_accounting_coa_id := null;
1844 --
1845
1846 IF NVL(p_source_2,'
1847 ') = 'ICACC'
1848 THEN
1849 --
1850 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1851 trace
1852 (p_msg => 'END of AcctDerRule_14'
1853 ,p_level => C_LEVEL_PROCEDURE
1854 ,p_module => l_log_module);
1855 END IF;
1856 x_value_type_code := 'S';
1857 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1858 RETURN l_output_value;
1859
1860 END IF;
1861 --
1862 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1863 trace
1864 (p_msg => 'END of AcctDerRule_14(invalid)'
1865 ,p_level => C_LEVEL_PROCEDURE
1866 ,p_module => l_log_module);
1867 END IF;
1868 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1869 x_value_type_code := null;
1870 l_output_value := null;
1871 xla_accounting_err_pkg.build_message
1872 (p_appli_s_name => 'XLA'
1873 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1874 ,p_token_1 => 'COMPONENT_NAME'
1875 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1876 l_component_type
1877 , l_component_code
1878 , l_component_type_code
1879 , l_component_appl_id
1880 , l_amb_context_code
1881 )
1882 ,p_token_2 => 'OWNER'
1883 ,p_value_2 => xla_lookups_pkg.get_meaning(
1884 'XLA_OWNER_TYPE'
1885 ,l_component_type_code
1886 )
1887 ,p_token_3 => 'PAD_NAME'
1888 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1889 ,p_token_4 => 'PAD_OWNER'
1890 ,p_value_4 => xla_lookups_pkg.get_meaning(
1891 'XLA_OWNER_TYPE'
1892 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1893 )
1894 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1895 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
1896 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1897 ,p_ae_header_id => NULL
1898 );
1899 RETURN l_output_value;
1900 EXCEPTION
1901 WHEN xla_exceptions_pkg.application_exception THEN
1902 RAISE;
1903 WHEN OTHERS THEN
1904 xla_exceptions_pkg.raise_message
1905 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_14');
1906 END AcctDerRule_14;
1907 --
1908
1909 ---------------------------------------
1910 --
1911 -- PRIVATE FUNCTION
1912 -- AcctDerRule_15
1913 --
1914 ---------------------------------------
1915 FUNCTION AcctDerRule_15 (
1916 p_application_id IN NUMBER
1917 , p_ae_header_id IN NUMBER
1918 , p_side IN VARCHAR2
1919 --Transaction Account
1920 , p_source_1 IN NUMBER
1921 --Journal Line Type
1922 , p_source_2 IN VARCHAR2
1923 , x_transaction_coa_id OUT NOCOPY NUMBER
1924 , x_accounting_coa_id OUT NOCOPY NUMBER
1925 , x_value_type_code OUT NOCOPY VARCHAR2
1926 )
1927 RETURN NUMBER
1928 IS
1929 l_component_type VARCHAR2(80) ;
1930 l_component_code VARCHAR2(30) ;
1931 l_component_type_code VARCHAR2(1) ;
1932 l_component_appl_id INTEGER ;
1933 l_amb_context_code VARCHAR2(30) ;
1934 l_log_module VARCHAR2(240) ;
1938 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_15';
1935 l_output_value NUMBER ;
1936 BEGIN
1937 IF g_log_enabled THEN
1939 END IF;
1940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1941 trace
1942 (p_msg => 'BEGIN of AcctDerRule_15'
1943 ,p_level => C_LEVEL_PROCEDURE
1944 ,p_module => l_log_module);
1945 END IF;
1946 --
1947 l_component_type := 'AMB_ADR';
1948 l_component_code := 'ICCOGS';
1949 l_component_type_code := 'S';
1950 l_component_appl_id := 555;
1951 l_amb_context_code := 'DEFAULT';
1952 x_transaction_coa_id := null;
1953 x_accounting_coa_id := null;
1954 --
1955
1956 IF NVL(p_source_2,'
1957 ') = 'ICCOGS'
1958 THEN
1959 --
1960 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1961 trace
1962 (p_msg => 'END of AcctDerRule_15'
1963 ,p_level => C_LEVEL_PROCEDURE
1964 ,p_module => l_log_module);
1965 END IF;
1966 x_value_type_code := 'S';
1967 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
1968 RETURN l_output_value;
1969
1970 END IF;
1971 --
1972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1973 trace
1974 (p_msg => 'END of AcctDerRule_15(invalid)'
1975 ,p_level => C_LEVEL_PROCEDURE
1976 ,p_module => l_log_module);
1977 END IF;
1978 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
1979 x_value_type_code := null;
1980 l_output_value := null;
1981 xla_accounting_err_pkg.build_message
1982 (p_appli_s_name => 'XLA'
1983 ,p_msg_name => 'XLA_AP_INVALID_ADR'
1984 ,p_token_1 => 'COMPONENT_NAME'
1985 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
1986 l_component_type
1987 , l_component_code
1988 , l_component_type_code
1989 , l_component_appl_id
1990 , l_amb_context_code
1991 )
1992 ,p_token_2 => 'OWNER'
1993 ,p_value_2 => xla_lookups_pkg.get_meaning(
1994 'XLA_OWNER_TYPE'
1995 ,l_component_type_code
1996 )
1997 ,p_token_3 => 'PAD_NAME'
1998 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1999 ,p_token_4 => 'PAD_OWNER'
2000 ,p_value_4 => xla_lookups_pkg.get_meaning(
2001 'XLA_OWNER_TYPE'
2002 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2003 )
2004 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2005 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2006 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2007 ,p_ae_header_id => NULL
2008 );
2009 RETURN l_output_value;
2010 EXCEPTION
2011 WHEN xla_exceptions_pkg.application_exception THEN
2012 RAISE;
2013 WHEN OTHERS THEN
2014 xla_exceptions_pkg.raise_message
2015 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_15');
2016 END AcctDerRule_15;
2017 --
2018
2019 ---------------------------------------
2020 --
2021 -- PRIVATE FUNCTION
2022 -- AcctDerRule_16
2023 --
2024 ---------------------------------------
2025 FUNCTION AcctDerRule_16 (
2026 p_application_id IN NUMBER
2027 , p_ae_header_id IN NUMBER
2028 , p_side IN VARCHAR2
2029 --Transaction Account
2030 , p_source_1 IN NUMBER
2031 --Journal Line Type
2032 , p_source_2 IN VARCHAR2
2033 , x_transaction_coa_id OUT NOCOPY NUMBER
2034 , x_accounting_coa_id OUT NOCOPY NUMBER
2035 , x_value_type_code OUT NOCOPY VARCHAR2
2036 )
2037 RETURN NUMBER
2038 IS
2039 l_component_type VARCHAR2(80) ;
2040 l_component_code VARCHAR2(30) ;
2041 l_component_type_code VARCHAR2(1) ;
2042 l_component_appl_id INTEGER ;
2043 l_amb_context_code VARCHAR2(30) ;
2044 l_log_module VARCHAR2(240) ;
2045 l_output_value NUMBER ;
2046 BEGIN
2047 IF g_log_enabled THEN
2048 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_16';
2049 END IF;
2050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2051 trace
2052 (p_msg => 'BEGIN of AcctDerRule_16'
2053 ,p_level => C_LEVEL_PROCEDURE
2054 ,p_module => l_log_module);
2055 END IF;
2056 --
2057 l_component_type := 'AMB_ADR';
2058 l_component_code := 'ICEXP';
2059 l_component_type_code := 'S';
2060 l_component_appl_id := 555;
2061 l_amb_context_code := 'DEFAULT';
2065
2062 x_transaction_coa_id := null;
2063 x_accounting_coa_id := null;
2064 --
2066 IF NVL(p_source_2,'
2067 ') = 'ICEXP'
2068 THEN
2069 --
2070 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2071 trace
2072 (p_msg => 'END of AcctDerRule_16'
2073 ,p_level => C_LEVEL_PROCEDURE
2074 ,p_module => l_log_module);
2075 END IF;
2076 x_value_type_code := 'S';
2077 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2078 RETURN l_output_value;
2079
2080 END IF;
2081 --
2082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2083 trace
2084 (p_msg => 'END of AcctDerRule_16(invalid)'
2085 ,p_level => C_LEVEL_PROCEDURE
2086 ,p_module => l_log_module);
2087 END IF;
2088 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2089 x_value_type_code := null;
2090 l_output_value := null;
2091 xla_accounting_err_pkg.build_message
2092 (p_appli_s_name => 'XLA'
2093 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2094 ,p_token_1 => 'COMPONENT_NAME'
2095 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2096 l_component_type
2097 , l_component_code
2098 , l_component_type_code
2099 , l_component_appl_id
2100 , l_amb_context_code
2101 )
2102 ,p_token_2 => 'OWNER'
2103 ,p_value_2 => xla_lookups_pkg.get_meaning(
2104 'XLA_OWNER_TYPE'
2105 ,l_component_type_code
2106 )
2107 ,p_token_3 => 'PAD_NAME'
2108 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2109 ,p_token_4 => 'PAD_OWNER'
2110 ,p_value_4 => xla_lookups_pkg.get_meaning(
2111 'XLA_OWNER_TYPE'
2112 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2113 )
2114 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2115 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2116 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2117 ,p_ae_header_id => NULL
2118 );
2119 RETURN l_output_value;
2120 EXCEPTION
2121 WHEN xla_exceptions_pkg.application_exception THEN
2122 RAISE;
2123 WHEN OTHERS THEN
2124 xla_exceptions_pkg.raise_message
2125 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_16');
2126 END AcctDerRule_16;
2127 --
2128
2129 ---------------------------------------
2130 --
2131 -- PRIVATE FUNCTION
2132 -- AcctDerRule_17
2133 --
2134 ---------------------------------------
2135 FUNCTION AcctDerRule_17 (
2136 p_application_id IN NUMBER
2137 , p_ae_header_id IN NUMBER
2138 , p_side IN VARCHAR2
2139 --Transaction Account
2140 , p_source_1 IN NUMBER
2141 --Journal Line Type
2142 , p_source_2 IN VARCHAR2
2143 , x_transaction_coa_id OUT NOCOPY NUMBER
2144 , x_accounting_coa_id OUT NOCOPY NUMBER
2145 , x_value_type_code OUT NOCOPY VARCHAR2
2146 )
2147 RETURN NUMBER
2148 IS
2149 l_component_type VARCHAR2(80) ;
2150 l_component_code VARCHAR2(30) ;
2151 l_component_type_code VARCHAR2(1) ;
2152 l_component_appl_id INTEGER ;
2153 l_amb_context_code VARCHAR2(30) ;
2154 l_log_module VARCHAR2(240) ;
2155 l_output_value NUMBER ;
2156 BEGIN
2157 IF g_log_enabled THEN
2158 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_17';
2159 END IF;
2160 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2161 trace
2162 (p_msg => 'BEGIN of AcctDerRule_17'
2163 ,p_level => C_LEVEL_PROCEDURE
2164 ,p_module => l_log_module);
2165 END IF;
2166 --
2167 l_component_type := 'AMB_ADR';
2168 l_component_code := 'INV';
2169 l_component_type_code := 'S';
2170 l_component_appl_id := 555;
2171 l_amb_context_code := 'DEFAULT';
2172 x_transaction_coa_id := null;
2173 x_accounting_coa_id := null;
2174 --
2175
2176 IF NVL(p_source_2,'
2177 ') = 'INV'
2178 THEN
2179 --
2180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2181 trace
2182 (p_msg => 'END of AcctDerRule_17'
2183 ,p_level => C_LEVEL_PROCEDURE
2184 ,p_module => l_log_module);
2185 END IF;
2186 x_value_type_code := 'S';
2187 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2188 RETURN l_output_value;
2189
2193 trace
2190 END IF;
2191 --
2192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2194 (p_msg => 'END of AcctDerRule_17(invalid)'
2195 ,p_level => C_LEVEL_PROCEDURE
2196 ,p_module => l_log_module);
2197 END IF;
2198 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2199 x_value_type_code := null;
2200 l_output_value := null;
2201 xla_accounting_err_pkg.build_message
2202 (p_appli_s_name => 'XLA'
2203 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2204 ,p_token_1 => 'COMPONENT_NAME'
2205 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2206 l_component_type
2207 , l_component_code
2208 , l_component_type_code
2209 , l_component_appl_id
2210 , l_amb_context_code
2211 )
2212 ,p_token_2 => 'OWNER'
2213 ,p_value_2 => xla_lookups_pkg.get_meaning(
2214 'XLA_OWNER_TYPE'
2215 ,l_component_type_code
2216 )
2217 ,p_token_3 => 'PAD_NAME'
2218 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2219 ,p_token_4 => 'PAD_OWNER'
2220 ,p_value_4 => xla_lookups_pkg.get_meaning(
2221 'XLA_OWNER_TYPE'
2222 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2223 )
2224 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2225 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2226 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2227 ,p_ae_header_id => NULL
2228 );
2229 RETURN l_output_value;
2230 EXCEPTION
2231 WHEN xla_exceptions_pkg.application_exception THEN
2232 RAISE;
2233 WHEN OTHERS THEN
2234 xla_exceptions_pkg.raise_message
2235 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_17');
2236 END AcctDerRule_17;
2237 --
2238
2239 ---------------------------------------
2240 --
2241 -- PRIVATE FUNCTION
2242 -- AcctDerRule_18
2243 --
2244 ---------------------------------------
2245 FUNCTION AcctDerRule_18 (
2246 p_application_id IN NUMBER
2247 , p_ae_header_id IN NUMBER
2248 , p_side IN VARCHAR2
2249 --Transaction Account
2250 , p_source_1 IN NUMBER
2251 --Journal Line Type
2252 , p_source_2 IN VARCHAR2
2253 --Entered Amount
2254 , p_source_3 IN NUMBER
2255 --Line Number
2256 , p_source_4 IN NUMBER
2257 , x_transaction_coa_id OUT NOCOPY NUMBER
2258 , x_accounting_coa_id OUT NOCOPY NUMBER
2259 , x_value_type_code OUT NOCOPY VARCHAR2
2260 )
2261 RETURN NUMBER
2262 IS
2263 l_component_type VARCHAR2(80) ;
2264 l_component_code VARCHAR2(30) ;
2265 l_component_type_code VARCHAR2(1) ;
2266 l_component_appl_id INTEGER ;
2267 l_amb_context_code VARCHAR2(30) ;
2268 l_log_module VARCHAR2(240) ;
2269 l_output_value NUMBER ;
2270 BEGIN
2271 IF g_log_enabled THEN
2272 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_18';
2273 END IF;
2274 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2275 trace
2276 (p_msg => 'BEGIN of AcctDerRule_18'
2277 ,p_level => C_LEVEL_PROCEDURE
2278 ,p_module => l_log_module);
2279 END IF;
2280 --
2281 l_component_type := 'AMB_ADR';
2282 l_component_code := 'INV_SUB_FROM';
2283 l_component_type_code := 'S';
2284 l_component_appl_id := 555;
2285 l_amb_context_code := 'DEFAULT';
2286 x_transaction_coa_id := null;
2287 x_accounting_coa_id := null;
2288 --
2289
2290 IF (NVL(p_source_2,'
2291 ') = 'INV' AND
2292 p_source_3 < 0) OR
2293 (NVL(p_source_2,'
2294 ') = 'INV' AND
2295 NVL(p_source_3,9E125) = 0 AND
2296 NVL(p_source_4,9E125) = 1)
2297 THEN
2298 --
2299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2300 trace
2301 (p_msg => 'END of AcctDerRule_18'
2302 ,p_level => C_LEVEL_PROCEDURE
2303 ,p_module => l_log_module);
2304 END IF;
2305 x_value_type_code := 'S';
2306 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2307 RETURN l_output_value;
2308
2309 END IF;
2310 --
2311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2312 trace
2313 (p_msg => 'END of AcctDerRule_18(invalid)'
2314 ,p_level => C_LEVEL_PROCEDURE
2315 ,p_module => l_log_module);
2316 END IF;
2320 xla_accounting_err_pkg.build_message
2317 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2318 x_value_type_code := null;
2319 l_output_value := null;
2321 (p_appli_s_name => 'XLA'
2322 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2323 ,p_token_1 => 'COMPONENT_NAME'
2324 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2325 l_component_type
2326 , l_component_code
2327 , l_component_type_code
2328 , l_component_appl_id
2329 , l_amb_context_code
2330 )
2331 ,p_token_2 => 'OWNER'
2332 ,p_value_2 => xla_lookups_pkg.get_meaning(
2333 'XLA_OWNER_TYPE'
2334 ,l_component_type_code
2335 )
2336 ,p_token_3 => 'PAD_NAME'
2337 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2338 ,p_token_4 => 'PAD_OWNER'
2339 ,p_value_4 => xla_lookups_pkg.get_meaning(
2340 'XLA_OWNER_TYPE'
2341 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2342 )
2343 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2344 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2345 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2346 ,p_ae_header_id => NULL
2347 );
2348 RETURN l_output_value;
2349 EXCEPTION
2350 WHEN xla_exceptions_pkg.application_exception THEN
2351 RAISE;
2352 WHEN OTHERS THEN
2353 xla_exceptions_pkg.raise_message
2354 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_18');
2355 END AcctDerRule_18;
2356 --
2357
2358 ---------------------------------------
2359 --
2360 -- PRIVATE FUNCTION
2361 -- AcctDerRule_19
2362 --
2363 ---------------------------------------
2364 FUNCTION AcctDerRule_19 (
2365 p_application_id IN NUMBER
2366 , p_ae_header_id IN NUMBER
2367 , p_side IN VARCHAR2
2368 --Transaction Account
2369 , p_source_1 IN NUMBER
2370 --Journal Line Type
2371 , p_source_2 IN VARCHAR2
2372 --Entered Amount
2373 , p_source_3 IN NUMBER
2374 --Line Number
2375 , p_source_4 IN NUMBER
2376 , x_transaction_coa_id OUT NOCOPY NUMBER
2377 , x_accounting_coa_id OUT NOCOPY NUMBER
2378 , x_value_type_code OUT NOCOPY VARCHAR2
2379 )
2380 RETURN NUMBER
2381 IS
2382 l_component_type VARCHAR2(80) ;
2383 l_component_code VARCHAR2(30) ;
2384 l_component_type_code VARCHAR2(1) ;
2385 l_component_appl_id INTEGER ;
2386 l_amb_context_code VARCHAR2(30) ;
2387 l_log_module VARCHAR2(240) ;
2388 l_output_value NUMBER ;
2389 BEGIN
2390 IF g_log_enabled THEN
2391 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_19';
2392 END IF;
2393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2394 trace
2395 (p_msg => 'BEGIN of AcctDerRule_19'
2396 ,p_level => C_LEVEL_PROCEDURE
2397 ,p_module => l_log_module);
2398 END IF;
2399 --
2400 l_component_type := 'AMB_ADR';
2401 l_component_code := 'INV_SUB_TO';
2402 l_component_type_code := 'S';
2403 l_component_appl_id := 555;
2404 l_amb_context_code := 'DEFAULT';
2405 x_transaction_coa_id := null;
2406 x_accounting_coa_id := null;
2407 --
2408
2409 IF (NVL(p_source_2,'
2410 ') = 'INV' AND
2411 p_source_3 > 0) OR
2412 (NVL(p_source_2,'
2413 ') = 'INV' AND
2414 NVL(p_source_3,9E125) = 0 AND
2415 NVL(p_source_4,9E125) = 2)
2416 THEN
2417 --
2418 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2419 trace
2420 (p_msg => 'END of AcctDerRule_19'
2421 ,p_level => C_LEVEL_PROCEDURE
2422 ,p_module => l_log_module);
2423 END IF;
2424 x_value_type_code := 'S';
2425 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2426 RETURN l_output_value;
2427
2428 END IF;
2429 --
2430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2431 trace
2432 (p_msg => 'END of AcctDerRule_19(invalid)'
2433 ,p_level => C_LEVEL_PROCEDURE
2434 ,p_module => l_log_module);
2435 END IF;
2436 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2437 x_value_type_code := null;
2438 l_output_value := null;
2439 xla_accounting_err_pkg.build_message
2443 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2440 (p_appli_s_name => 'XLA'
2441 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2442 ,p_token_1 => 'COMPONENT_NAME'
2444 l_component_type
2445 , l_component_code
2446 , l_component_type_code
2447 , l_component_appl_id
2448 , l_amb_context_code
2449 )
2450 ,p_token_2 => 'OWNER'
2451 ,p_value_2 => xla_lookups_pkg.get_meaning(
2452 'XLA_OWNER_TYPE'
2453 ,l_component_type_code
2454 )
2455 ,p_token_3 => 'PAD_NAME'
2456 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2457 ,p_token_4 => 'PAD_OWNER'
2458 ,p_value_4 => xla_lookups_pkg.get_meaning(
2459 'XLA_OWNER_TYPE'
2460 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2461 )
2462 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2463 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2464 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2465 ,p_ae_header_id => NULL
2466 );
2467 RETURN l_output_value;
2468 EXCEPTION
2469 WHEN xla_exceptions_pkg.application_exception THEN
2470 RAISE;
2471 WHEN OTHERS THEN
2472 xla_exceptions_pkg.raise_message
2473 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_19');
2474 END AcctDerRule_19;
2475 --
2476
2477 ---------------------------------------
2478 --
2479 -- PRIVATE FUNCTION
2480 -- AcctDerRule_20
2481 --
2482 ---------------------------------------
2483 FUNCTION AcctDerRule_20 (
2484 p_application_id IN NUMBER
2485 , p_ae_header_id IN NUMBER
2486 , p_side IN VARCHAR2
2487 --Transaction Account
2488 , p_source_1 IN NUMBER
2489 --Journal Line Type
2490 , p_source_2 IN VARCHAR2
2491 , x_transaction_coa_id OUT NOCOPY NUMBER
2492 , x_accounting_coa_id OUT NOCOPY NUMBER
2493 , x_value_type_code OUT NOCOPY VARCHAR2
2494 )
2495 RETURN NUMBER
2496 IS
2497 l_component_type VARCHAR2(80) ;
2498 l_component_code VARCHAR2(30) ;
2499 l_component_type_code VARCHAR2(1) ;
2500 l_component_appl_id INTEGER ;
2501 l_amb_context_code VARCHAR2(30) ;
2502 l_log_module VARCHAR2(240) ;
2503 l_output_value NUMBER ;
2504 BEGIN
2505 IF g_log_enabled THEN
2506 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_20';
2507 END IF;
2508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2509 trace
2510 (p_msg => 'BEGIN of AcctDerRule_20'
2511 ,p_level => C_LEVEL_PROCEDURE
2512 ,p_module => l_log_module);
2513 END IF;
2514 --
2515 l_component_type := 'AMB_ADR';
2516 l_component_code := 'IOP';
2517 l_component_type_code := 'S';
2518 l_component_appl_id := 555;
2519 l_amb_context_code := 'DEFAULT';
2520 x_transaction_coa_id := null;
2521 x_accounting_coa_id := null;
2522 --
2523
2524 IF NVL(p_source_2,'
2525 ') = 'IOP'
2526 THEN
2527 --
2528 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2529 trace
2530 (p_msg => 'END of AcctDerRule_20'
2531 ,p_level => C_LEVEL_PROCEDURE
2532 ,p_module => l_log_module);
2533 END IF;
2534 x_value_type_code := 'S';
2535 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2536 RETURN l_output_value;
2537
2538 END IF;
2539 --
2540 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2541 trace
2542 (p_msg => 'END of AcctDerRule_20(invalid)'
2543 ,p_level => C_LEVEL_PROCEDURE
2544 ,p_module => l_log_module);
2545 END IF;
2546 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2547 x_value_type_code := null;
2548 l_output_value := null;
2549 xla_accounting_err_pkg.build_message
2550 (p_appli_s_name => 'XLA'
2551 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2552 ,p_token_1 => 'COMPONENT_NAME'
2553 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2554 l_component_type
2555 , l_component_code
2556 , l_component_type_code
2557 , l_component_appl_id
2558 , l_amb_context_code
2562 'XLA_OWNER_TYPE'
2559 )
2560 ,p_token_2 => 'OWNER'
2561 ,p_value_2 => xla_lookups_pkg.get_meaning(
2563 ,l_component_type_code
2564 )
2565 ,p_token_3 => 'PAD_NAME'
2566 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2567 ,p_token_4 => 'PAD_OWNER'
2568 ,p_value_4 => xla_lookups_pkg.get_meaning(
2569 'XLA_OWNER_TYPE'
2570 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2571 )
2572 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2573 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2574 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2575 ,p_ae_header_id => NULL
2576 );
2577 RETURN l_output_value;
2578 EXCEPTION
2579 WHEN xla_exceptions_pkg.application_exception THEN
2580 RAISE;
2581 WHEN OTHERS THEN
2582 xla_exceptions_pkg.raise_message
2583 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_20');
2584 END AcctDerRule_20;
2585 --
2586
2587 ---------------------------------------
2588 --
2589 -- PRIVATE FUNCTION
2590 -- AcctDerRule_21
2591 --
2592 ---------------------------------------
2593 FUNCTION AcctDerRule_21 (
2594 p_application_id IN NUMBER
2595 , p_ae_header_id IN NUMBER
2596 , p_side IN VARCHAR2
2597 --Transaction Account
2598 , p_source_1 IN NUMBER
2599 --Journal Line Type
2600 , p_source_2 IN VARCHAR2
2601 , x_transaction_coa_id OUT NOCOPY NUMBER
2602 , x_accounting_coa_id OUT NOCOPY NUMBER
2603 , x_value_type_code OUT NOCOPY VARCHAR2
2604 )
2605 RETURN NUMBER
2606 IS
2607 l_component_type VARCHAR2(80) ;
2608 l_component_code VARCHAR2(30) ;
2609 l_component_type_code VARCHAR2(1) ;
2610 l_component_appl_id INTEGER ;
2611 l_amb_context_code VARCHAR2(30) ;
2612 l_log_module VARCHAR2(240) ;
2613 l_output_value NUMBER ;
2614 BEGIN
2615 IF g_log_enabled THEN
2616 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_21';
2617 END IF;
2618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2619 trace
2620 (p_msg => 'BEGIN of AcctDerRule_21'
2621 ,p_level => C_LEVEL_PROCEDURE
2622 ,p_module => l_log_module);
2623 END IF;
2624 --
2625 l_component_type := 'AMB_ADR';
2626 l_component_code := 'IOPR';
2627 l_component_type_code := 'S';
2628 l_component_appl_id := 555;
2629 l_amb_context_code := 'DEFAULT';
2630 x_transaction_coa_id := null;
2631 x_accounting_coa_id := null;
2632 --
2633
2634 IF NVL(p_source_2,'
2635 ') = 'IOPR'
2636 THEN
2637 --
2638 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2639 trace
2640 (p_msg => 'END of AcctDerRule_21'
2641 ,p_level => C_LEVEL_PROCEDURE
2642 ,p_module => l_log_module);
2643 END IF;
2644 x_value_type_code := 'S';
2645 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2646 RETURN l_output_value;
2647
2648 END IF;
2649 --
2650 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2651 trace
2652 (p_msg => 'END of AcctDerRule_21(invalid)'
2653 ,p_level => C_LEVEL_PROCEDURE
2654 ,p_module => l_log_module);
2655 END IF;
2656 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2657 x_value_type_code := null;
2658 l_output_value := null;
2659 xla_accounting_err_pkg.build_message
2660 (p_appli_s_name => 'XLA'
2661 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2662 ,p_token_1 => 'COMPONENT_NAME'
2663 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2664 l_component_type
2665 , l_component_code
2666 , l_component_type_code
2667 , l_component_appl_id
2668 , l_amb_context_code
2669 )
2670 ,p_token_2 => 'OWNER'
2671 ,p_value_2 => xla_lookups_pkg.get_meaning(
2672 'XLA_OWNER_TYPE'
2673 ,l_component_type_code
2674 )
2675 ,p_token_3 => 'PAD_NAME'
2676 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2680 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2677 ,p_token_4 => 'PAD_OWNER'
2678 ,p_value_4 => xla_lookups_pkg.get_meaning(
2679 'XLA_OWNER_TYPE'
2681 )
2682 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2683 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2684 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2685 ,p_ae_header_id => NULL
2686 );
2687 RETURN l_output_value;
2688 EXCEPTION
2689 WHEN xla_exceptions_pkg.application_exception THEN
2690 RAISE;
2691 WHEN OTHERS THEN
2692 xla_exceptions_pkg.raise_message
2693 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_21');
2694 END AcctDerRule_21;
2695 --
2696
2697 ---------------------------------------
2698 --
2699 -- PRIVATE FUNCTION
2700 -- AcctDerRule_22
2701 --
2702 ---------------------------------------
2703 FUNCTION AcctDerRule_22 (
2704 p_application_id IN NUMBER
2705 , p_ae_header_id IN NUMBER
2706 , p_side IN VARCHAR2
2707 --Transaction Account
2708 , p_source_1 IN NUMBER
2709 --Journal Line Type
2710 , p_source_2 IN VARCHAR2
2711 , x_transaction_coa_id OUT NOCOPY NUMBER
2712 , x_accounting_coa_id OUT NOCOPY NUMBER
2713 , x_value_type_code OUT NOCOPY VARCHAR2
2714 )
2715 RETURN NUMBER
2716 IS
2717 l_component_type VARCHAR2(80) ;
2718 l_component_code VARCHAR2(30) ;
2719 l_component_type_code VARCHAR2(1) ;
2720 l_component_appl_id INTEGER ;
2721 l_amb_context_code VARCHAR2(30) ;
2722 l_log_module VARCHAR2(240) ;
2723 l_output_value NUMBER ;
2724 BEGIN
2725 IF g_log_enabled THEN
2726 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_22';
2727 END IF;
2728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2729 trace
2730 (p_msg => 'BEGIN of AcctDerRule_22'
2731 ,p_level => C_LEVEL_PROCEDURE
2732 ,p_module => l_log_module);
2733 END IF;
2734 --
2735 l_component_type := 'AMB_ADR';
2736 l_component_code := 'IOR';
2737 l_component_type_code := 'S';
2738 l_component_appl_id := 555;
2739 l_amb_context_code := 'DEFAULT';
2740 x_transaction_coa_id := null;
2741 x_accounting_coa_id := null;
2742 --
2743
2744 IF NVL(p_source_2,'
2745 ') = 'IOR'
2746 THEN
2747 --
2748 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2749 trace
2750 (p_msg => 'END of AcctDerRule_22'
2751 ,p_level => C_LEVEL_PROCEDURE
2752 ,p_module => l_log_module);
2753 END IF;
2754 x_value_type_code := 'S';
2755 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2756 RETURN l_output_value;
2757
2758 END IF;
2759 --
2760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2761 trace
2762 (p_msg => 'END of AcctDerRule_22(invalid)'
2763 ,p_level => C_LEVEL_PROCEDURE
2764 ,p_module => l_log_module);
2765 END IF;
2766 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2767 x_value_type_code := null;
2768 l_output_value := null;
2769 xla_accounting_err_pkg.build_message
2770 (p_appli_s_name => 'XLA'
2771 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2772 ,p_token_1 => 'COMPONENT_NAME'
2773 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2774 l_component_type
2775 , l_component_code
2776 , l_component_type_code
2777 , l_component_appl_id
2778 , l_amb_context_code
2779 )
2780 ,p_token_2 => 'OWNER'
2781 ,p_value_2 => xla_lookups_pkg.get_meaning(
2782 'XLA_OWNER_TYPE'
2783 ,l_component_type_code
2784 )
2785 ,p_token_3 => 'PAD_NAME'
2786 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2787 ,p_token_4 => 'PAD_OWNER'
2788 ,p_value_4 => xla_lookups_pkg.get_meaning(
2789 'XLA_OWNER_TYPE'
2790 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2791 )
2792 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2793 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2797 RETURN l_output_value;
2794 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2795 ,p_ae_header_id => NULL
2796 );
2798 EXCEPTION
2799 WHEN xla_exceptions_pkg.application_exception THEN
2800 RAISE;
2801 WHEN OTHERS THEN
2802 xla_exceptions_pkg.raise_message
2803 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_22');
2804 END AcctDerRule_22;
2805 --
2806
2807 ---------------------------------------
2808 --
2809 -- PRIVATE FUNCTION
2810 -- AcctDerRule_23
2811 --
2812 ---------------------------------------
2813 FUNCTION AcctDerRule_23 (
2814 p_application_id IN NUMBER
2815 , p_ae_header_id IN NUMBER
2816 , p_side IN VARCHAR2
2817 --Transaction Account
2818 , p_source_1 IN NUMBER
2819 --Journal Line Type
2820 , p_source_2 IN VARCHAR2
2821 , x_transaction_coa_id OUT NOCOPY NUMBER
2822 , x_accounting_coa_id OUT NOCOPY NUMBER
2823 , x_value_type_code OUT NOCOPY VARCHAR2
2824 )
2825 RETURN NUMBER
2826 IS
2827 l_component_type VARCHAR2(80) ;
2828 l_component_code VARCHAR2(30) ;
2829 l_component_type_code VARCHAR2(1) ;
2830 l_component_appl_id INTEGER ;
2831 l_amb_context_code VARCHAR2(30) ;
2832 l_log_module VARCHAR2(240) ;
2833 l_output_value NUMBER ;
2834 BEGIN
2835 IF g_log_enabled THEN
2836 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_23';
2837 END IF;
2838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2839 trace
2840 (p_msg => 'BEGIN of AcctDerRule_23'
2841 ,p_level => C_LEVEL_PROCEDURE
2842 ,p_module => l_log_module);
2843 END IF;
2844 --
2845 l_component_type := 'AMB_ADR';
2846 l_component_code := 'IPA';
2847 l_component_type_code := 'S';
2848 l_component_appl_id := 555;
2849 l_amb_context_code := 'DEFAULT';
2850 x_transaction_coa_id := null;
2851 x_accounting_coa_id := null;
2852 --
2853
2854 IF NVL(p_source_2,'
2855 ') = 'IPA'
2856 THEN
2857 --
2858 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2859 trace
2860 (p_msg => 'END of AcctDerRule_23'
2861 ,p_level => C_LEVEL_PROCEDURE
2862 ,p_module => l_log_module);
2863 END IF;
2864 x_value_type_code := 'S';
2865 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2866 RETURN l_output_value;
2867
2868 END IF;
2869 --
2870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2871 trace
2872 (p_msg => 'END of AcctDerRule_23(invalid)'
2873 ,p_level => C_LEVEL_PROCEDURE
2874 ,p_module => l_log_module);
2875 END IF;
2876 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2877 x_value_type_code := null;
2878 l_output_value := null;
2879 xla_accounting_err_pkg.build_message
2880 (p_appli_s_name => 'XLA'
2881 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2882 ,p_token_1 => 'COMPONENT_NAME'
2883 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2884 l_component_type
2885 , l_component_code
2886 , l_component_type_code
2887 , l_component_appl_id
2888 , l_amb_context_code
2889 )
2890 ,p_token_2 => 'OWNER'
2891 ,p_value_2 => xla_lookups_pkg.get_meaning(
2892 'XLA_OWNER_TYPE'
2893 ,l_component_type_code
2894 )
2895 ,p_token_3 => 'PAD_NAME'
2896 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2897 ,p_token_4 => 'PAD_OWNER'
2898 ,p_value_4 => xla_lookups_pkg.get_meaning(
2899 'XLA_OWNER_TYPE'
2900 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2901 )
2902 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2903 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
2904 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2905 ,p_ae_header_id => NULL
2906 );
2907 RETURN l_output_value;
2908 EXCEPTION
2909 WHEN xla_exceptions_pkg.application_exception THEN
2910 RAISE;
2911 WHEN OTHERS THEN
2912 xla_exceptions_pkg.raise_message
2913 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_23');
2914 END AcctDerRule_23;
2915 --
2916
2917 ---------------------------------------
2918 --
2922 ---------------------------------------
2919 -- PRIVATE FUNCTION
2920 -- AcctDerRule_24
2921 --
2923 FUNCTION AcctDerRule_24 (
2924 p_application_id IN NUMBER
2925 , p_ae_header_id IN NUMBER
2926 , p_side IN VARCHAR2
2927 --Transaction Account
2928 , p_source_1 IN NUMBER
2929 --Journal Line Type
2930 , p_source_2 IN VARCHAR2
2931 , x_transaction_coa_id OUT NOCOPY NUMBER
2932 , x_accounting_coa_id OUT NOCOPY NUMBER
2933 , x_value_type_code OUT NOCOPY VARCHAR2
2934 )
2935 RETURN NUMBER
2936 IS
2937 l_component_type VARCHAR2(80) ;
2938 l_component_code VARCHAR2(30) ;
2939 l_component_type_code VARCHAR2(1) ;
2940 l_component_appl_id INTEGER ;
2941 l_amb_context_code VARCHAR2(30) ;
2942 l_log_module VARCHAR2(240) ;
2943 l_output_value NUMBER ;
2944 BEGIN
2945 IF g_log_enabled THEN
2946 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_24';
2947 END IF;
2948 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2949 trace
2950 (p_msg => 'BEGIN of AcctDerRule_24'
2951 ,p_level => C_LEVEL_PROCEDURE
2952 ,p_module => l_log_module);
2953 END IF;
2954 --
2955 l_component_type := 'AMB_ADR';
2956 l_component_code := 'IRV';
2957 l_component_type_code := 'S';
2958 l_component_appl_id := 555;
2959 l_amb_context_code := 'DEFAULT';
2960 x_transaction_coa_id := null;
2961 x_accounting_coa_id := null;
2962 --
2963
2964 IF NVL(p_source_2,'
2965 ') = 'IRV'
2966 THEN
2967 --
2968 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2969 trace
2970 (p_msg => 'END of AcctDerRule_24'
2971 ,p_level => C_LEVEL_PROCEDURE
2972 ,p_module => l_log_module);
2973 END IF;
2974 x_value_type_code := 'S';
2975 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
2976 RETURN l_output_value;
2977
2978 END IF;
2979 --
2980 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2981 trace
2982 (p_msg => 'END of AcctDerRule_24(invalid)'
2983 ,p_level => C_LEVEL_PROCEDURE
2984 ,p_module => l_log_module);
2985 END IF;
2986 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
2987 x_value_type_code := null;
2988 l_output_value := null;
2989 xla_accounting_err_pkg.build_message
2990 (p_appli_s_name => 'XLA'
2991 ,p_msg_name => 'XLA_AP_INVALID_ADR'
2992 ,p_token_1 => 'COMPONENT_NAME'
2993 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
2994 l_component_type
2995 , l_component_code
2996 , l_component_type_code
2997 , l_component_appl_id
2998 , l_amb_context_code
2999 )
3000 ,p_token_2 => 'OWNER'
3001 ,p_value_2 => xla_lookups_pkg.get_meaning(
3002 'XLA_OWNER_TYPE'
3003 ,l_component_type_code
3004 )
3005 ,p_token_3 => 'PAD_NAME'
3006 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3007 ,p_token_4 => 'PAD_OWNER'
3008 ,p_value_4 => xla_lookups_pkg.get_meaning(
3009 'XLA_OWNER_TYPE'
3010 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3011 )
3012 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3013 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3014 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3015 ,p_ae_header_id => NULL
3016 );
3017 RETURN l_output_value;
3018 EXCEPTION
3019 WHEN xla_exceptions_pkg.application_exception THEN
3020 RAISE;
3021 WHEN OTHERS THEN
3022 xla_exceptions_pkg.raise_message
3023 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_24');
3024 END AcctDerRule_24;
3025 --
3026
3027 ---------------------------------------
3028 --
3029 -- PRIVATE FUNCTION
3030 -- AcctDerRule_25
3031 --
3032 ---------------------------------------
3033 FUNCTION AcctDerRule_25 (
3034 p_application_id IN NUMBER
3035 , p_ae_header_id IN NUMBER
3036 , p_side IN VARCHAR2
3037 --Transaction Account
3038 , p_source_1 IN NUMBER
3039 --Journal Line Type
3040 , p_source_2 IN VARCHAR2
3041 , x_transaction_coa_id OUT NOCOPY NUMBER
3042 , x_accounting_coa_id OUT NOCOPY NUMBER
3043 , x_value_type_code OUT NOCOPY VARCHAR2
3044 )
3048 l_component_code VARCHAR2(30) ;
3045 RETURN NUMBER
3046 IS
3047 l_component_type VARCHAR2(80) ;
3049 l_component_type_code VARCHAR2(1) ;
3050 l_component_appl_id INTEGER ;
3051 l_amb_context_code VARCHAR2(30) ;
3052 l_log_module VARCHAR2(240) ;
3053 l_output_value NUMBER ;
3054 BEGIN
3055 IF g_log_enabled THEN
3056 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_25';
3057 END IF;
3058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3059 trace
3060 (p_msg => 'BEGIN of AcctDerRule_25'
3061 ,p_level => C_LEVEL_PROCEDURE
3062 ,p_module => l_log_module);
3063 END IF;
3064 --
3065 l_component_type := 'AMB_ADR';
3066 l_component_code := 'ISP';
3067 l_component_type_code := 'S';
3068 l_component_appl_id := 555;
3069 l_amb_context_code := 'DEFAULT';
3070 x_transaction_coa_id := null;
3071 x_accounting_coa_id := null;
3072 --
3073
3074 IF NVL(p_source_2,'
3075 ') = 'ISP'
3076 THEN
3077 --
3078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3079 trace
3080 (p_msg => 'END of AcctDerRule_25'
3081 ,p_level => C_LEVEL_PROCEDURE
3082 ,p_module => l_log_module);
3083 END IF;
3084 x_value_type_code := 'S';
3085 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3086 RETURN l_output_value;
3087
3088 END IF;
3089 --
3090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3091 trace
3092 (p_msg => 'END of AcctDerRule_25(invalid)'
3093 ,p_level => C_LEVEL_PROCEDURE
3094 ,p_module => l_log_module);
3095 END IF;
3096 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3097 x_value_type_code := null;
3098 l_output_value := null;
3099 xla_accounting_err_pkg.build_message
3100 (p_appli_s_name => 'XLA'
3101 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3102 ,p_token_1 => 'COMPONENT_NAME'
3103 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3104 l_component_type
3105 , l_component_code
3106 , l_component_type_code
3107 , l_component_appl_id
3108 , l_amb_context_code
3109 )
3110 ,p_token_2 => 'OWNER'
3111 ,p_value_2 => xla_lookups_pkg.get_meaning(
3112 'XLA_OWNER_TYPE'
3113 ,l_component_type_code
3114 )
3115 ,p_token_3 => 'PAD_NAME'
3116 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3117 ,p_token_4 => 'PAD_OWNER'
3118 ,p_value_4 => xla_lookups_pkg.get_meaning(
3119 'XLA_OWNER_TYPE'
3120 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3121 )
3122 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3123 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3124 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3125 ,p_ae_header_id => NULL
3126 );
3127 RETURN l_output_value;
3128 EXCEPTION
3129 WHEN xla_exceptions_pkg.application_exception THEN
3130 RAISE;
3131 WHEN OTHERS THEN
3132 xla_exceptions_pkg.raise_message
3133 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_25');
3134 END AcctDerRule_25;
3135 --
3136
3137 ---------------------------------------
3138 --
3139 -- PRIVATE FUNCTION
3140 -- AcctDerRule_26
3141 --
3142 ---------------------------------------
3143 FUNCTION AcctDerRule_26 (
3144 p_application_id IN NUMBER
3145 , p_ae_header_id IN NUMBER
3146 , p_side IN VARCHAR2
3147 --Transaction Account
3148 , p_source_1 IN NUMBER
3149 --Journal Line Type
3150 , p_source_2 IN VARCHAR2
3151 , x_transaction_coa_id OUT NOCOPY NUMBER
3152 , x_accounting_coa_id OUT NOCOPY NUMBER
3153 , x_value_type_code OUT NOCOPY VARCHAR2
3154 )
3155 RETURN NUMBER
3156 IS
3157 l_component_type VARCHAR2(80) ;
3158 l_component_code VARCHAR2(30) ;
3159 l_component_type_code VARCHAR2(1) ;
3160 l_component_appl_id INTEGER ;
3161 l_amb_context_code VARCHAR2(30) ;
3162 l_log_module VARCHAR2(240) ;
3163 l_output_value NUMBER ;
3164 BEGIN
3165 IF g_log_enabled THEN
3166 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_26';
3167 END IF;
3168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3169 trace
3170 (p_msg => 'BEGIN of AcctDerRule_26'
3174 --
3171 ,p_level => C_LEVEL_PROCEDURE
3172 ,p_module => l_log_module);
3173 END IF;
3175 l_component_type := 'AMB_ADR';
3176 l_component_code := 'ITR';
3177 l_component_type_code := 'S';
3178 l_component_appl_id := 555;
3179 l_amb_context_code := 'DEFAULT';
3180 x_transaction_coa_id := null;
3181 x_accounting_coa_id := null;
3182 --
3183
3184 IF NVL(p_source_2,'
3185 ') = 'ITR'
3186 THEN
3187 --
3188 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3189 trace
3190 (p_msg => 'END of AcctDerRule_26'
3191 ,p_level => C_LEVEL_PROCEDURE
3192 ,p_module => l_log_module);
3193 END IF;
3194 x_value_type_code := 'S';
3195 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3196 RETURN l_output_value;
3197
3198 END IF;
3199 --
3200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3201 trace
3202 (p_msg => 'END of AcctDerRule_26(invalid)'
3203 ,p_level => C_LEVEL_PROCEDURE
3204 ,p_module => l_log_module);
3205 END IF;
3206 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3207 x_value_type_code := null;
3208 l_output_value := null;
3209 xla_accounting_err_pkg.build_message
3210 (p_appli_s_name => 'XLA'
3211 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3212 ,p_token_1 => 'COMPONENT_NAME'
3213 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3214 l_component_type
3215 , l_component_code
3216 , l_component_type_code
3217 , l_component_appl_id
3218 , l_amb_context_code
3219 )
3220 ,p_token_2 => 'OWNER'
3221 ,p_value_2 => xla_lookups_pkg.get_meaning(
3222 'XLA_OWNER_TYPE'
3223 ,l_component_type_code
3224 )
3225 ,p_token_3 => 'PAD_NAME'
3226 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3227 ,p_token_4 => 'PAD_OWNER'
3228 ,p_value_4 => xla_lookups_pkg.get_meaning(
3229 'XLA_OWNER_TYPE'
3230 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3231 )
3232 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3233 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3234 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3235 ,p_ae_header_id => NULL
3236 );
3237 RETURN l_output_value;
3238 EXCEPTION
3239 WHEN xla_exceptions_pkg.application_exception THEN
3240 RAISE;
3241 WHEN OTHERS THEN
3242 xla_exceptions_pkg.raise_message
3243 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_26');
3244 END AcctDerRule_26;
3245 --
3246
3247 ---------------------------------------
3248 --
3249 -- PRIVATE FUNCTION
3250 -- AcctDerRule_27
3251 --
3252 ---------------------------------------
3253 FUNCTION AcctDerRule_27 (
3254 p_application_id IN NUMBER
3255 , p_ae_header_id IN NUMBER
3256 , p_side IN VARCHAR2
3257 --Transaction Account
3258 , p_source_1 IN NUMBER
3259 --Journal Line Type
3260 , p_source_2 IN VARCHAR2
3261 , x_transaction_coa_id OUT NOCOPY NUMBER
3262 , x_accounting_coa_id OUT NOCOPY NUMBER
3263 , x_value_type_code OUT NOCOPY VARCHAR2
3264 )
3265 RETURN NUMBER
3266 IS
3267 l_component_type VARCHAR2(80) ;
3268 l_component_code VARCHAR2(30) ;
3269 l_component_type_code VARCHAR2(1) ;
3270 l_component_appl_id INTEGER ;
3271 l_amb_context_code VARCHAR2(30) ;
3272 l_log_module VARCHAR2(240) ;
3273 l_output_value NUMBER ;
3274 BEGIN
3275 IF g_log_enabled THEN
3276 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_27';
3277 END IF;
3278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3279 trace
3280 (p_msg => 'BEGIN of AcctDerRule_27'
3281 ,p_level => C_LEVEL_PROCEDURE
3282 ,p_module => l_log_module);
3283 END IF;
3284 --
3285 l_component_type := 'AMB_ADR';
3286 l_component_code := 'IVA';
3287 l_component_type_code := 'S';
3288 l_component_appl_id := 555;
3289 l_amb_context_code := 'DEFAULT';
3290 x_transaction_coa_id := null;
3291 x_accounting_coa_id := null;
3292 --
3293
3294 IF NVL(p_source_2,'
3295 ') = 'IVA'
3296 THEN
3297 --
3298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3299 trace
3303 END IF;
3300 (p_msg => 'END of AcctDerRule_27'
3301 ,p_level => C_LEVEL_PROCEDURE
3302 ,p_module => l_log_module);
3304 x_value_type_code := 'S';
3305 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3306 RETURN l_output_value;
3307
3308 END IF;
3309 --
3310 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3311 trace
3312 (p_msg => 'END of AcctDerRule_27(invalid)'
3313 ,p_level => C_LEVEL_PROCEDURE
3314 ,p_module => l_log_module);
3315 END IF;
3316 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3317 x_value_type_code := null;
3318 l_output_value := null;
3319 xla_accounting_err_pkg.build_message
3320 (p_appli_s_name => 'XLA'
3321 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3322 ,p_token_1 => 'COMPONENT_NAME'
3323 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3324 l_component_type
3325 , l_component_code
3326 , l_component_type_code
3327 , l_component_appl_id
3328 , l_amb_context_code
3329 )
3330 ,p_token_2 => 'OWNER'
3331 ,p_value_2 => xla_lookups_pkg.get_meaning(
3332 'XLA_OWNER_TYPE'
3333 ,l_component_type_code
3334 )
3335 ,p_token_3 => 'PAD_NAME'
3336 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3337 ,p_token_4 => 'PAD_OWNER'
3338 ,p_value_4 => xla_lookups_pkg.get_meaning(
3339 'XLA_OWNER_TYPE'
3340 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3341 )
3342 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3343 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3344 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3345 ,p_ae_header_id => NULL
3346 );
3347 RETURN l_output_value;
3348 EXCEPTION
3349 WHEN xla_exceptions_pkg.application_exception THEN
3350 RAISE;
3351 WHEN OTHERS THEN
3352 xla_exceptions_pkg.raise_message
3353 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_27');
3354 END AcctDerRule_27;
3355 --
3356
3357 ---------------------------------------
3358 --
3359 -- PRIVATE FUNCTION
3360 -- AcctDerRule_28
3361 --
3362 ---------------------------------------
3363 FUNCTION AcctDerRule_28 (
3364 p_application_id IN NUMBER
3365 , p_ae_header_id IN NUMBER
3366 , p_side IN VARCHAR2
3367 --Transaction Account
3368 , p_source_1 IN NUMBER
3369 --Journal Line Type
3370 , p_source_2 IN VARCHAR2
3371 , x_transaction_coa_id OUT NOCOPY NUMBER
3372 , x_accounting_coa_id OUT NOCOPY NUMBER
3373 , x_value_type_code OUT NOCOPY VARCHAR2
3374 )
3375 RETURN NUMBER
3376 IS
3377 l_component_type VARCHAR2(80) ;
3378 l_component_code VARCHAR2(30) ;
3379 l_component_type_code VARCHAR2(1) ;
3380 l_component_appl_id INTEGER ;
3381 l_amb_context_code VARCHAR2(30) ;
3382 l_log_module VARCHAR2(240) ;
3383 l_output_value NUMBER ;
3384 BEGIN
3385 IF g_log_enabled THEN
3386 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_28';
3387 END IF;
3388 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3389 trace
3390 (p_msg => 'BEGIN of AcctDerRule_28'
3391 ,p_level => C_LEVEL_PROCEDURE
3392 ,p_module => l_log_module);
3393 END IF;
3394 --
3395 l_component_type := 'AMB_ADR';
3396 l_component_code := 'OHV';
3397 l_component_type_code := 'S';
3398 l_component_appl_id := 555;
3399 l_amb_context_code := 'DEFAULT';
3400 x_transaction_coa_id := null;
3401 x_accounting_coa_id := null;
3402 --
3403
3404 IF NVL(p_source_2,'
3405 ') = 'OHV'
3406 THEN
3407 --
3408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3409 trace
3410 (p_msg => 'END of AcctDerRule_28'
3411 ,p_level => C_LEVEL_PROCEDURE
3412 ,p_module => l_log_module);
3413 END IF;
3414 x_value_type_code := 'S';
3415 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3416 RETURN l_output_value;
3417
3418 END IF;
3419 --
3420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3421 trace
3422 (p_msg => 'END of AcctDerRule_28(invalid)'
3423 ,p_level => C_LEVEL_PROCEDURE
3424 ,p_module => l_log_module);
3425 END IF;
3429 xla_accounting_err_pkg.build_message
3426 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3427 x_value_type_code := null;
3428 l_output_value := null;
3430 (p_appli_s_name => 'XLA'
3431 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3432 ,p_token_1 => 'COMPONENT_NAME'
3433 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3434 l_component_type
3435 , l_component_code
3436 , l_component_type_code
3437 , l_component_appl_id
3438 , l_amb_context_code
3439 )
3440 ,p_token_2 => 'OWNER'
3441 ,p_value_2 => xla_lookups_pkg.get_meaning(
3442 'XLA_OWNER_TYPE'
3443 ,l_component_type_code
3444 )
3445 ,p_token_3 => 'PAD_NAME'
3446 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3447 ,p_token_4 => 'PAD_OWNER'
3448 ,p_value_4 => xla_lookups_pkg.get_meaning(
3449 'XLA_OWNER_TYPE'
3450 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3451 )
3452 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3453 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3454 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3455 ,p_ae_header_id => NULL
3456 );
3457 RETURN l_output_value;
3458 EXCEPTION
3459 WHEN xla_exceptions_pkg.application_exception THEN
3460 RAISE;
3461 WHEN OTHERS THEN
3462 xla_exceptions_pkg.raise_message
3463 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_28');
3464 END AcctDerRule_28;
3465 --
3466
3467 ---------------------------------------
3468 --
3469 -- PRIVATE FUNCTION
3470 -- AcctDerRule_29
3471 --
3472 ---------------------------------------
3473 FUNCTION AcctDerRule_29 (
3474 p_application_id IN NUMBER
3475 , p_ae_header_id IN NUMBER
3476 , p_side IN VARCHAR2
3477 --Transaction Account
3478 , p_source_1 IN NUMBER
3479 --Journal Line Type
3480 , p_source_2 IN VARCHAR2
3481 , x_transaction_coa_id OUT NOCOPY NUMBER
3482 , x_accounting_coa_id OUT NOCOPY NUMBER
3483 , x_value_type_code OUT NOCOPY VARCHAR2
3484 )
3485 RETURN NUMBER
3486 IS
3487 l_component_type VARCHAR2(80) ;
3488 l_component_code VARCHAR2(30) ;
3489 l_component_type_code VARCHAR2(1) ;
3490 l_component_appl_id INTEGER ;
3491 l_amb_context_code VARCHAR2(30) ;
3492 l_log_module VARCHAR2(240) ;
3493 l_output_value NUMBER ;
3494 BEGIN
3495 IF g_log_enabled THEN
3496 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_29';
3497 END IF;
3498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3499 trace
3500 (p_msg => 'BEGIN of AcctDerRule_29'
3501 ,p_level => C_LEVEL_PROCEDURE
3502 ,p_module => l_log_module);
3503 END IF;
3504 --
3505 l_component_type := 'AMB_ADR';
3506 l_component_code := 'OVH';
3507 l_component_type_code := 'S';
3508 l_component_appl_id := 555;
3509 l_amb_context_code := 'DEFAULT';
3510 x_transaction_coa_id := null;
3511 x_accounting_coa_id := null;
3512 --
3513
3514 IF NVL(p_source_2,'
3515 ') = 'OVH'
3516 THEN
3517 --
3518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3519 trace
3520 (p_msg => 'END of AcctDerRule_29'
3521 ,p_level => C_LEVEL_PROCEDURE
3522 ,p_module => l_log_module);
3523 END IF;
3524 x_value_type_code := 'S';
3525 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3526 RETURN l_output_value;
3527
3528 END IF;
3529 --
3530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3531 trace
3532 (p_msg => 'END of AcctDerRule_29(invalid)'
3533 ,p_level => C_LEVEL_PROCEDURE
3534 ,p_module => l_log_module);
3535 END IF;
3536 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3537 x_value_type_code := null;
3538 l_output_value := null;
3539 xla_accounting_err_pkg.build_message
3540 (p_appli_s_name => 'XLA'
3541 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3542 ,p_token_1 => 'COMPONENT_NAME'
3543 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3544 l_component_type
3548 , l_amb_context_code
3545 , l_component_code
3546 , l_component_type_code
3547 , l_component_appl_id
3549 )
3550 ,p_token_2 => 'OWNER'
3551 ,p_value_2 => xla_lookups_pkg.get_meaning(
3552 'XLA_OWNER_TYPE'
3553 ,l_component_type_code
3554 )
3555 ,p_token_3 => 'PAD_NAME'
3556 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3557 ,p_token_4 => 'PAD_OWNER'
3558 ,p_value_4 => xla_lookups_pkg.get_meaning(
3559 'XLA_OWNER_TYPE'
3560 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3561 )
3562 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3563 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3564 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3565 ,p_ae_header_id => NULL
3566 );
3567 RETURN l_output_value;
3568 EXCEPTION
3569 WHEN xla_exceptions_pkg.application_exception THEN
3570 RAISE;
3571 WHEN OTHERS THEN
3572 xla_exceptions_pkg.raise_message
3573 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_29');
3574 END AcctDerRule_29;
3575 --
3576
3577 ---------------------------------------
3578 --
3579 -- PRIVATE FUNCTION
3580 -- AcctDerRule_30
3581 --
3582 ---------------------------------------
3583 FUNCTION AcctDerRule_30 (
3584 p_application_id IN NUMBER
3585 , p_ae_header_id IN NUMBER
3586 , p_side IN VARCHAR2
3587 --Transaction Account
3588 , p_source_1 IN NUMBER
3589 --Journal Line Type
3590 , p_source_2 IN VARCHAR2
3591 , x_transaction_coa_id OUT NOCOPY NUMBER
3592 , x_accounting_coa_id OUT NOCOPY NUMBER
3593 , x_value_type_code OUT NOCOPY VARCHAR2
3594 )
3595 RETURN NUMBER
3596 IS
3597 l_component_type VARCHAR2(80) ;
3598 l_component_code VARCHAR2(30) ;
3599 l_component_type_code VARCHAR2(1) ;
3600 l_component_appl_id INTEGER ;
3601 l_amb_context_code VARCHAR2(30) ;
3602 l_log_module VARCHAR2(240) ;
3603 l_output_value NUMBER ;
3604 BEGIN
3605 IF g_log_enabled THEN
3606 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_30';
3607 END IF;
3608 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3609 trace
3610 (p_msg => 'BEGIN of AcctDerRule_30'
3611 ,p_level => C_LEVEL_PROCEDURE
3612 ,p_module => l_log_module);
3613 END IF;
3614 --
3615 l_component_type := 'AMB_ADR';
3616 l_component_code := 'PIN';
3617 l_component_type_code := 'S';
3618 l_component_appl_id := 555;
3619 l_amb_context_code := 'DEFAULT';
3620 x_transaction_coa_id := null;
3621 x_accounting_coa_id := null;
3622 --
3623
3624 IF NVL(p_source_2,'
3625 ') = 'PIN'
3626 THEN
3627 --
3628 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3629 trace
3630 (p_msg => 'END of AcctDerRule_30'
3631 ,p_level => C_LEVEL_PROCEDURE
3632 ,p_module => l_log_module);
3633 END IF;
3634 x_value_type_code := 'S';
3635 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3636 RETURN l_output_value;
3637
3638 END IF;
3639 --
3640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3641 trace
3642 (p_msg => 'END of AcctDerRule_30(invalid)'
3643 ,p_level => C_LEVEL_PROCEDURE
3644 ,p_module => l_log_module);
3645 END IF;
3646 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3647 x_value_type_code := null;
3648 l_output_value := null;
3649 xla_accounting_err_pkg.build_message
3650 (p_appli_s_name => 'XLA'
3651 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3652 ,p_token_1 => 'COMPONENT_NAME'
3653 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3654 l_component_type
3655 , l_component_code
3656 , l_component_type_code
3657 , l_component_appl_id
3658 , l_amb_context_code
3659 )
3660 ,p_token_2 => 'OWNER'
3661 ,p_value_2 => xla_lookups_pkg.get_meaning(
3662 'XLA_OWNER_TYPE'
3663 ,l_component_type_code
3667 ,p_token_4 => 'PAD_OWNER'
3664 )
3665 ,p_token_3 => 'PAD_NAME'
3666 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3668 ,p_value_4 => xla_lookups_pkg.get_meaning(
3669 'XLA_OWNER_TYPE'
3670 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3671 )
3672 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3673 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3674 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3675 ,p_ae_header_id => NULL
3676 );
3677 RETURN l_output_value;
3678 EXCEPTION
3679 WHEN xla_exceptions_pkg.application_exception THEN
3680 RAISE;
3681 WHEN OTHERS THEN
3682 xla_exceptions_pkg.raise_message
3683 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_30');
3684 END AcctDerRule_30;
3685 --
3686
3687 ---------------------------------------
3688 --
3689 -- PRIVATE FUNCTION
3690 -- AcctDerRule_31
3691 --
3692 ---------------------------------------
3693 FUNCTION AcctDerRule_31 (
3694 p_application_id IN NUMBER
3695 , p_ae_header_id IN NUMBER
3696 , p_side IN VARCHAR2
3697 --Transaction Account
3698 , p_source_1 IN NUMBER
3699 --Journal Line Type
3700 , p_source_2 IN VARCHAR2
3701 , x_transaction_coa_id OUT NOCOPY NUMBER
3702 , x_accounting_coa_id OUT NOCOPY NUMBER
3703 , x_value_type_code OUT NOCOPY VARCHAR2
3704 )
3705 RETURN NUMBER
3706 IS
3707 l_component_type VARCHAR2(80) ;
3708 l_component_code VARCHAR2(30) ;
3709 l_component_type_code VARCHAR2(1) ;
3710 l_component_appl_id INTEGER ;
3711 l_amb_context_code VARCHAR2(30) ;
3712 l_log_module VARCHAR2(240) ;
3713 l_output_value NUMBER ;
3714 BEGIN
3715 IF g_log_enabled THEN
3716 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_31';
3717 END IF;
3718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3719 trace
3720 (p_msg => 'BEGIN of AcctDerRule_31'
3721 ,p_level => C_LEVEL_PROCEDURE
3722 ,p_module => l_log_module);
3723 END IF;
3724 --
3725 l_component_type := 'AMB_ADR';
3726 l_component_code := 'PPV';
3727 l_component_type_code := 'S';
3728 l_component_appl_id := 555;
3729 l_amb_context_code := 'DEFAULT';
3730 x_transaction_coa_id := null;
3731 x_accounting_coa_id := null;
3732 --
3733
3734 IF NVL(p_source_2,'
3735 ') = 'PPV'
3736 THEN
3737 --
3738 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3739 trace
3740 (p_msg => 'END of AcctDerRule_31'
3741 ,p_level => C_LEVEL_PROCEDURE
3742 ,p_module => l_log_module);
3743 END IF;
3744 x_value_type_code := 'S';
3745 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3746 RETURN l_output_value;
3747
3748 END IF;
3749 --
3750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3751 trace
3752 (p_msg => 'END of AcctDerRule_31(invalid)'
3753 ,p_level => C_LEVEL_PROCEDURE
3754 ,p_module => l_log_module);
3755 END IF;
3756 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3757 x_value_type_code := null;
3758 l_output_value := null;
3759 xla_accounting_err_pkg.build_message
3760 (p_appli_s_name => 'XLA'
3761 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3762 ,p_token_1 => 'COMPONENT_NAME'
3763 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3764 l_component_type
3765 , l_component_code
3766 , l_component_type_code
3767 , l_component_appl_id
3768 , l_amb_context_code
3769 )
3770 ,p_token_2 => 'OWNER'
3771 ,p_value_2 => xla_lookups_pkg.get_meaning(
3772 'XLA_OWNER_TYPE'
3773 ,l_component_type_code
3774 )
3775 ,p_token_3 => 'PAD_NAME'
3776 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3777 ,p_token_4 => 'PAD_OWNER'
3778 ,p_value_4 => xla_lookups_pkg.get_meaning(
3779 'XLA_OWNER_TYPE'
3780 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3784 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3781 )
3782 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3783 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3785 ,p_ae_header_id => NULL
3786 );
3787 RETURN l_output_value;
3788 EXCEPTION
3789 WHEN xla_exceptions_pkg.application_exception THEN
3790 RAISE;
3791 WHEN OTHERS THEN
3792 xla_exceptions_pkg.raise_message
3793 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_31');
3794 END AcctDerRule_31;
3795 --
3796
3797 ---------------------------------------
3798 --
3799 -- PRIVATE FUNCTION
3800 -- AcctDerRule_32
3801 --
3802 ---------------------------------------
3803 FUNCTION AcctDerRule_32 (
3804 p_application_id IN NUMBER
3805 , p_ae_header_id IN NUMBER
3806 , p_side IN VARCHAR2
3807 --Transaction Account
3808 , p_source_1 IN NUMBER
3809 --Journal Line Type
3810 , p_source_2 IN VARCHAR2
3811 , x_transaction_coa_id OUT NOCOPY NUMBER
3812 , x_accounting_coa_id OUT NOCOPY NUMBER
3813 , x_value_type_code OUT NOCOPY VARCHAR2
3814 )
3815 RETURN NUMBER
3816 IS
3817 l_component_type VARCHAR2(80) ;
3818 l_component_code VARCHAR2(30) ;
3819 l_component_type_code VARCHAR2(1) ;
3820 l_component_appl_id INTEGER ;
3821 l_amb_context_code VARCHAR2(30) ;
3822 l_log_module VARCHAR2(240) ;
3823 l_output_value NUMBER ;
3824 BEGIN
3825 IF g_log_enabled THEN
3826 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_32';
3827 END IF;
3828 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3829 trace
3830 (p_msg => 'BEGIN of AcctDerRule_32'
3831 ,p_level => C_LEVEL_PROCEDURE
3832 ,p_module => l_log_module);
3833 END IF;
3834 --
3835 l_component_type := 'AMB_ADR';
3836 l_component_code := 'RCA';
3837 l_component_type_code := 'S';
3838 l_component_appl_id := 555;
3839 l_amb_context_code := 'DEFAULT';
3840 x_transaction_coa_id := null;
3841 x_accounting_coa_id := null;
3842 --
3843
3844 IF NVL(p_source_2,'
3845 ') = 'RCA'
3846 THEN
3847 --
3848 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3849 trace
3850 (p_msg => 'END of AcctDerRule_32'
3851 ,p_level => C_LEVEL_PROCEDURE
3852 ,p_module => l_log_module);
3853 END IF;
3854 x_value_type_code := 'S';
3855 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3856 RETURN l_output_value;
3857
3858 END IF;
3859 --
3860 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3861 trace
3862 (p_msg => 'END of AcctDerRule_32(invalid)'
3863 ,p_level => C_LEVEL_PROCEDURE
3864 ,p_module => l_log_module);
3865 END IF;
3866 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3867 x_value_type_code := null;
3868 l_output_value := null;
3869 xla_accounting_err_pkg.build_message
3870 (p_appli_s_name => 'XLA'
3871 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3872 ,p_token_1 => 'COMPONENT_NAME'
3873 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3874 l_component_type
3875 , l_component_code
3876 , l_component_type_code
3877 , l_component_appl_id
3878 , l_amb_context_code
3879 )
3880 ,p_token_2 => 'OWNER'
3881 ,p_value_2 => xla_lookups_pkg.get_meaning(
3882 'XLA_OWNER_TYPE'
3883 ,l_component_type_code
3884 )
3885 ,p_token_3 => 'PAD_NAME'
3886 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3887 ,p_token_4 => 'PAD_OWNER'
3888 ,p_value_4 => xla_lookups_pkg.get_meaning(
3889 'XLA_OWNER_TYPE'
3890 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3891 )
3892 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3893 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
3894 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3895 ,p_ae_header_id => NULL
3896 );
3897 RETURN l_output_value;
3898 EXCEPTION
3899 WHEN xla_exceptions_pkg.application_exception THEN
3900 RAISE;
3904 END AcctDerRule_32;
3901 WHEN OTHERS THEN
3902 xla_exceptions_pkg.raise_message
3903 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_32');
3905 --
3906
3907 ---------------------------------------
3908 --
3909 -- PRIVATE FUNCTION
3910 -- AcctDerRule_33
3911 --
3912 ---------------------------------------
3913 FUNCTION AcctDerRule_33 (
3914 p_application_id IN NUMBER
3915 , p_ae_header_id IN NUMBER
3916 , p_side IN VARCHAR2
3917 --Transaction Account
3918 , p_source_1 IN NUMBER
3919 --Journal Line Type
3920 , p_source_2 IN VARCHAR2
3921 , x_transaction_coa_id OUT NOCOPY NUMBER
3922 , x_accounting_coa_id OUT NOCOPY NUMBER
3923 , x_value_type_code OUT NOCOPY VARCHAR2
3924 )
3925 RETURN NUMBER
3926 IS
3927 l_component_type VARCHAR2(80) ;
3928 l_component_code VARCHAR2(30) ;
3929 l_component_type_code VARCHAR2(1) ;
3930 l_component_appl_id INTEGER ;
3931 l_amb_context_code VARCHAR2(30) ;
3932 l_log_module VARCHAR2(240) ;
3933 l_output_value NUMBER ;
3934 BEGIN
3935 IF g_log_enabled THEN
3936 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_33';
3937 END IF;
3938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3939 trace
3940 (p_msg => 'BEGIN of AcctDerRule_33'
3941 ,p_level => C_LEVEL_PROCEDURE
3942 ,p_module => l_log_module);
3943 END IF;
3944 --
3945 l_component_type := 'AMB_ADR';
3946 l_component_code := 'RMV';
3947 l_component_type_code := 'S';
3948 l_component_appl_id := 555;
3949 l_amb_context_code := 'DEFAULT';
3950 x_transaction_coa_id := null;
3951 x_accounting_coa_id := null;
3952 --
3953
3954 IF NVL(p_source_2,'
3955 ') = 'RMV'
3956 THEN
3957 --
3958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3959 trace
3960 (p_msg => 'END of AcctDerRule_33'
3961 ,p_level => C_LEVEL_PROCEDURE
3962 ,p_module => l_log_module);
3963 END IF;
3964 x_value_type_code := 'S';
3965 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
3966 RETURN l_output_value;
3967
3968 END IF;
3969 --
3970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3971 trace
3972 (p_msg => 'END of AcctDerRule_33(invalid)'
3973 ,p_level => C_LEVEL_PROCEDURE
3974 ,p_module => l_log_module);
3975 END IF;
3976 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
3977 x_value_type_code := null;
3978 l_output_value := null;
3979 xla_accounting_err_pkg.build_message
3980 (p_appli_s_name => 'XLA'
3981 ,p_msg_name => 'XLA_AP_INVALID_ADR'
3982 ,p_token_1 => 'COMPONENT_NAME'
3983 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
3984 l_component_type
3985 , l_component_code
3986 , l_component_type_code
3987 , l_component_appl_id
3988 , l_amb_context_code
3989 )
3990 ,p_token_2 => 'OWNER'
3991 ,p_value_2 => xla_lookups_pkg.get_meaning(
3992 'XLA_OWNER_TYPE'
3993 ,l_component_type_code
3994 )
3995 ,p_token_3 => 'PAD_NAME'
3996 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3997 ,p_token_4 => 'PAD_OWNER'
3998 ,p_value_4 => xla_lookups_pkg.get_meaning(
3999 'XLA_OWNER_TYPE'
4000 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4001 )
4002 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4003 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4004 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4005 ,p_ae_header_id => NULL
4006 );
4007 RETURN l_output_value;
4008 EXCEPTION
4009 WHEN xla_exceptions_pkg.application_exception THEN
4010 RAISE;
4011 WHEN OTHERS THEN
4012 xla_exceptions_pkg.raise_message
4013 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_33');
4014 END AcctDerRule_33;
4015 --
4016
4017 ---------------------------------------
4018 --
4019 -- PRIVATE FUNCTION
4020 -- AcctDerRule_34
4021 --
4022 ---------------------------------------
4023 FUNCTION AcctDerRule_34 (
4024 p_application_id IN NUMBER
4025 , p_ae_header_id IN NUMBER
4026 , p_side IN VARCHAR2
4027 --Transaction Account
4031 , x_transaction_coa_id OUT NOCOPY NUMBER
4028 , p_source_1 IN NUMBER
4029 --Journal Line Type
4030 , p_source_2 IN VARCHAR2
4032 , x_accounting_coa_id OUT NOCOPY NUMBER
4033 , x_value_type_code OUT NOCOPY VARCHAR2
4034 )
4035 RETURN NUMBER
4036 IS
4037 l_component_type VARCHAR2(80) ;
4038 l_component_code VARCHAR2(30) ;
4039 l_component_type_code VARCHAR2(1) ;
4040 l_component_appl_id INTEGER ;
4041 l_amb_context_code VARCHAR2(30) ;
4042 l_log_module VARCHAR2(240) ;
4043 l_output_value NUMBER ;
4044 BEGIN
4045 IF g_log_enabled THEN
4046 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_34';
4047 END IF;
4048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4049 trace
4050 (p_msg => 'BEGIN of AcctDerRule_34'
4051 ,p_level => C_LEVEL_PROCEDURE
4052 ,p_module => l_log_module);
4053 END IF;
4054 --
4055 l_component_type := 'AMB_ADR';
4056 l_component_code := 'RPADJ';
4057 l_component_type_code := 'S';
4058 l_component_appl_id := 555;
4059 l_amb_context_code := 'DEFAULT';
4060 x_transaction_coa_id := null;
4061 x_accounting_coa_id := null;
4062 --
4063
4064 IF NVL(p_source_2,'
4065 ') = 'RPADJ'
4066 THEN
4067 --
4068 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4069 trace
4070 (p_msg => 'END of AcctDerRule_34'
4071 ,p_level => C_LEVEL_PROCEDURE
4072 ,p_module => l_log_module);
4073 END IF;
4074 x_value_type_code := 'S';
4075 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
4076 RETURN l_output_value;
4077
4078 END IF;
4079 --
4080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4081 trace
4082 (p_msg => 'END of AcctDerRule_34(invalid)'
4083 ,p_level => C_LEVEL_PROCEDURE
4084 ,p_module => l_log_module);
4085 END IF;
4086 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4087 x_value_type_code := null;
4088 l_output_value := null;
4089 xla_accounting_err_pkg.build_message
4090 (p_appli_s_name => 'XLA'
4091 ,p_msg_name => 'XLA_AP_INVALID_ADR'
4092 ,p_token_1 => 'COMPONENT_NAME'
4093 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
4094 l_component_type
4095 , l_component_code
4096 , l_component_type_code
4097 , l_component_appl_id
4098 , l_amb_context_code
4099 )
4100 ,p_token_2 => 'OWNER'
4101 ,p_value_2 => xla_lookups_pkg.get_meaning(
4102 'XLA_OWNER_TYPE'
4103 ,l_component_type_code
4104 )
4105 ,p_token_3 => 'PAD_NAME'
4106 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4107 ,p_token_4 => 'PAD_OWNER'
4108 ,p_value_4 => xla_lookups_pkg.get_meaning(
4109 'XLA_OWNER_TYPE'
4110 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4111 )
4112 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4113 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4114 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4115 ,p_ae_header_id => NULL
4116 );
4117 RETURN l_output_value;
4118 EXCEPTION
4119 WHEN xla_exceptions_pkg.application_exception THEN
4120 RAISE;
4121 WHEN OTHERS THEN
4122 xla_exceptions_pkg.raise_message
4123 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_34');
4124 END AcctDerRule_34;
4125 --
4126
4127 ---------------------------------------
4128 --
4129 -- PRIVATE FUNCTION
4130 -- AcctDerRule_35
4131 --
4132 ---------------------------------------
4133 FUNCTION AcctDerRule_35 (
4134 p_application_id IN NUMBER
4135 , p_ae_header_id IN NUMBER
4136 , p_side IN VARCHAR2
4137 --Transaction Account
4138 , p_source_1 IN NUMBER
4139 --Journal Line Type
4140 , p_source_2 IN VARCHAR2
4141 , x_transaction_coa_id OUT NOCOPY NUMBER
4142 , x_accounting_coa_id OUT NOCOPY NUMBER
4143 , x_value_type_code OUT NOCOPY VARCHAR2
4144 )
4145 RETURN NUMBER
4146 IS
4147 l_component_type VARCHAR2(80) ;
4148 l_component_code VARCHAR2(30) ;
4149 l_component_type_code VARCHAR2(1) ;
4150 l_component_appl_id INTEGER ;
4151 l_amb_context_code VARCHAR2(30) ;
4152 l_log_module VARCHAR2(240) ;
4153 l_output_value NUMBER ;
4154 BEGIN
4158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4155 IF g_log_enabled THEN
4156 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_35';
4157 END IF;
4159 trace
4160 (p_msg => 'BEGIN of AcctDerRule_35'
4161 ,p_level => C_LEVEL_PROCEDURE
4162 ,p_module => l_log_module);
4163 END IF;
4164 --
4165 l_component_type := 'AMB_ADR';
4166 l_component_code := 'RSV';
4167 l_component_type_code := 'S';
4168 l_component_appl_id := 555;
4169 l_amb_context_code := 'DEFAULT';
4170 x_transaction_coa_id := null;
4171 x_accounting_coa_id := null;
4172 --
4173
4174 IF NVL(p_source_2,'
4175 ') = 'RSV'
4176 THEN
4177 --
4178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4179 trace
4180 (p_msg => 'END of AcctDerRule_35'
4181 ,p_level => C_LEVEL_PROCEDURE
4182 ,p_module => l_log_module);
4183 END IF;
4184 x_value_type_code := 'S';
4185 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
4186 RETURN l_output_value;
4187
4188 END IF;
4189 --
4190 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4191 trace
4192 (p_msg => 'END of AcctDerRule_35(invalid)'
4193 ,p_level => C_LEVEL_PROCEDURE
4194 ,p_module => l_log_module);
4195 END IF;
4196 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4197 x_value_type_code := null;
4198 l_output_value := null;
4199 xla_accounting_err_pkg.build_message
4200 (p_appli_s_name => 'XLA'
4201 ,p_msg_name => 'XLA_AP_INVALID_ADR'
4202 ,p_token_1 => 'COMPONENT_NAME'
4203 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
4204 l_component_type
4205 , l_component_code
4206 , l_component_type_code
4207 , l_component_appl_id
4208 , l_amb_context_code
4209 )
4210 ,p_token_2 => 'OWNER'
4211 ,p_value_2 => xla_lookups_pkg.get_meaning(
4212 'XLA_OWNER_TYPE'
4213 ,l_component_type_code
4214 )
4215 ,p_token_3 => 'PAD_NAME'
4216 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4217 ,p_token_4 => 'PAD_OWNER'
4218 ,p_value_4 => xla_lookups_pkg.get_meaning(
4219 'XLA_OWNER_TYPE'
4220 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4221 )
4222 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4223 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4224 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4225 ,p_ae_header_id => NULL
4226 );
4227 RETURN l_output_value;
4228 EXCEPTION
4229 WHEN xla_exceptions_pkg.application_exception THEN
4230 RAISE;
4231 WHEN OTHERS THEN
4232 xla_exceptions_pkg.raise_message
4233 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_35');
4234 END AcctDerRule_35;
4235 --
4236
4237 ---------------------------------------
4238 --
4239 -- PRIVATE FUNCTION
4240 -- AcctDerRule_36
4241 --
4242 ---------------------------------------
4243 FUNCTION AcctDerRule_36 (
4244 p_application_id IN NUMBER
4245 , p_ae_header_id IN NUMBER
4246 , p_side IN VARCHAR2
4247 --Transaction Account
4248 , p_source_1 IN NUMBER
4249 --Journal Line Type
4250 , p_source_2 IN VARCHAR2
4251 , x_transaction_coa_id OUT NOCOPY NUMBER
4252 , x_accounting_coa_id OUT NOCOPY NUMBER
4253 , x_value_type_code OUT NOCOPY VARCHAR2
4254 )
4255 RETURN NUMBER
4256 IS
4257 l_component_type VARCHAR2(80) ;
4258 l_component_code VARCHAR2(30) ;
4259 l_component_type_code VARCHAR2(1) ;
4260 l_component_appl_id INTEGER ;
4261 l_amb_context_code VARCHAR2(30) ;
4262 l_log_module VARCHAR2(240) ;
4263 l_output_value NUMBER ;
4264 BEGIN
4265 IF g_log_enabled THEN
4266 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_36';
4267 END IF;
4268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4269 trace
4270 (p_msg => 'BEGIN of AcctDerRule_36'
4271 ,p_level => C_LEVEL_PROCEDURE
4272 ,p_module => l_log_module);
4273 END IF;
4274 --
4275 l_component_type := 'AMB_ADR';
4276 l_component_code := 'RUV';
4277 l_component_type_code := 'S';
4278 l_component_appl_id := 555;
4282 --
4279 l_amb_context_code := 'DEFAULT';
4280 x_transaction_coa_id := null;
4281 x_accounting_coa_id := null;
4283
4284 IF NVL(p_source_2,'
4285 ') = 'RUV'
4286 THEN
4287 --
4288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4289 trace
4290 (p_msg => 'END of AcctDerRule_36'
4291 ,p_level => C_LEVEL_PROCEDURE
4292 ,p_module => l_log_module);
4293 END IF;
4294 x_value_type_code := 'S';
4295 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
4296 RETURN l_output_value;
4297
4298 END IF;
4299 --
4300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4301 trace
4302 (p_msg => 'END of AcctDerRule_36(invalid)'
4303 ,p_level => C_LEVEL_PROCEDURE
4304 ,p_module => l_log_module);
4305 END IF;
4306 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4307 x_value_type_code := null;
4308 l_output_value := null;
4309 xla_accounting_err_pkg.build_message
4310 (p_appli_s_name => 'XLA'
4311 ,p_msg_name => 'XLA_AP_INVALID_ADR'
4312 ,p_token_1 => 'COMPONENT_NAME'
4313 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
4314 l_component_type
4315 , l_component_code
4316 , l_component_type_code
4317 , l_component_appl_id
4318 , l_amb_context_code
4319 )
4320 ,p_token_2 => 'OWNER'
4321 ,p_value_2 => xla_lookups_pkg.get_meaning(
4322 'XLA_OWNER_TYPE'
4323 ,l_component_type_code
4324 )
4325 ,p_token_3 => 'PAD_NAME'
4326 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4327 ,p_token_4 => 'PAD_OWNER'
4328 ,p_value_4 => xla_lookups_pkg.get_meaning(
4329 'XLA_OWNER_TYPE'
4330 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4331 )
4332 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4333 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4334 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4335 ,p_ae_header_id => NULL
4336 );
4337 RETURN l_output_value;
4338 EXCEPTION
4339 WHEN xla_exceptions_pkg.application_exception THEN
4340 RAISE;
4341 WHEN OTHERS THEN
4342 xla_exceptions_pkg.raise_message
4343 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_36');
4344 END AcctDerRule_36;
4345 --
4346
4347 ---------------------------------------
4348 --
4349 -- PRIVATE FUNCTION
4350 -- AcctDerRule_37
4351 --
4352 ---------------------------------------
4353 FUNCTION AcctDerRule_37 (
4354 p_application_id IN NUMBER
4355 , p_ae_header_id IN NUMBER
4356 , p_side IN VARCHAR2
4357 --Transaction Account
4358 , p_source_1 IN NUMBER
4359 --Journal Line Type
4360 , p_source_2 IN VARCHAR2
4361 , x_transaction_coa_id OUT NOCOPY NUMBER
4362 , x_accounting_coa_id OUT NOCOPY NUMBER
4363 , x_value_type_code OUT NOCOPY VARCHAR2
4364 )
4365 RETURN NUMBER
4366 IS
4367 l_component_type VARCHAR2(80) ;
4368 l_component_code VARCHAR2(30) ;
4369 l_component_type_code VARCHAR2(1) ;
4370 l_component_appl_id INTEGER ;
4371 l_amb_context_code VARCHAR2(30) ;
4372 l_log_module VARCHAR2(240) ;
4373 l_output_value NUMBER ;
4374 BEGIN
4375 IF g_log_enabled THEN
4376 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_37';
4377 END IF;
4378 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4379 trace
4380 (p_msg => 'BEGIN of AcctDerRule_37'
4381 ,p_level => C_LEVEL_PROCEDURE
4382 ,p_module => l_log_module);
4383 END IF;
4384 --
4385 l_component_type := 'AMB_ADR';
4386 l_component_code := 'SUB';
4387 l_component_type_code := 'S';
4388 l_component_appl_id := 555;
4389 l_amb_context_code := 'DEFAULT';
4390 x_transaction_coa_id := null;
4391 x_accounting_coa_id := null;
4392 --
4393
4394 IF NVL(p_source_2,'
4395 ') = 'SUB'
4396 THEN
4397 --
4398 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4399 trace
4400 (p_msg => 'END of AcctDerRule_37'
4401 ,p_level => C_LEVEL_PROCEDURE
4402 ,p_module => l_log_module);
4403 END IF;
4404 x_value_type_code := 'S';
4405 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
4406 RETURN l_output_value;
4407
4408 END IF;
4409 --
4413 ,p_level => C_LEVEL_PROCEDURE
4410 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4411 trace
4412 (p_msg => 'END of AcctDerRule_37(invalid)'
4414 ,p_module => l_log_module);
4415 END IF;
4416 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4417 x_value_type_code := null;
4418 l_output_value := null;
4419 xla_accounting_err_pkg.build_message
4420 (p_appli_s_name => 'XLA'
4421 ,p_msg_name => 'XLA_AP_INVALID_ADR'
4422 ,p_token_1 => 'COMPONENT_NAME'
4423 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
4424 l_component_type
4425 , l_component_code
4426 , l_component_type_code
4427 , l_component_appl_id
4428 , l_amb_context_code
4429 )
4430 ,p_token_2 => 'OWNER'
4431 ,p_value_2 => xla_lookups_pkg.get_meaning(
4432 'XLA_OWNER_TYPE'
4433 ,l_component_type_code
4434 )
4435 ,p_token_3 => 'PAD_NAME'
4436 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4437 ,p_token_4 => 'PAD_OWNER'
4438 ,p_value_4 => xla_lookups_pkg.get_meaning(
4439 'XLA_OWNER_TYPE'
4440 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4441 )
4442 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4443 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4444 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4445 ,p_ae_header_id => NULL
4446 );
4447 RETURN l_output_value;
4448 EXCEPTION
4449 WHEN xla_exceptions_pkg.application_exception THEN
4450 RAISE;
4451 WHEN OTHERS THEN
4452 xla_exceptions_pkg.raise_message
4453 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_37');
4454 END AcctDerRule_37;
4455 --
4456
4457 ---------------------------------------
4458 --
4459 -- PRIVATE FUNCTION
4460 -- AcctDerRule_38
4461 --
4462 ---------------------------------------
4463 FUNCTION AcctDerRule_38 (
4464 p_application_id IN NUMBER
4465 , p_ae_header_id IN NUMBER
4466 , p_side IN VARCHAR2
4467 --Transaction Account
4468 , p_source_1 IN NUMBER
4469 --Journal Line Type
4470 , p_source_2 IN VARCHAR2
4471 , x_transaction_coa_id OUT NOCOPY NUMBER
4472 , x_accounting_coa_id OUT NOCOPY NUMBER
4473 , x_value_type_code OUT NOCOPY VARCHAR2
4474 )
4475 RETURN NUMBER
4476 IS
4477 l_component_type VARCHAR2(80) ;
4478 l_component_code VARCHAR2(30) ;
4479 l_component_type_code VARCHAR2(1) ;
4480 l_component_appl_id INTEGER ;
4481 l_amb_context_code VARCHAR2(30) ;
4482 l_log_module VARCHAR2(240) ;
4483 l_output_value NUMBER ;
4484 BEGIN
4485 IF g_log_enabled THEN
4486 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_38';
4487 END IF;
4488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4489 trace
4490 (p_msg => 'BEGIN of AcctDerRule_38'
4491 ,p_level => C_LEVEL_PROCEDURE
4492 ,p_module => l_log_module);
4493 END IF;
4494 --
4495 l_component_type := 'AMB_ADR';
4496 l_component_code := 'USG';
4497 l_component_type_code := 'S';
4498 l_component_appl_id := 555;
4499 l_amb_context_code := 'DEFAULT';
4500 x_transaction_coa_id := null;
4501 x_accounting_coa_id := null;
4502 --
4503
4504 IF NVL(p_source_2,'
4505 ') = 'USG'
4506 THEN
4507 --
4508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4509 trace
4510 (p_msg => 'END of AcctDerRule_38'
4511 ,p_level => C_LEVEL_PROCEDURE
4512 ,p_module => l_log_module);
4513 END IF;
4514 x_value_type_code := 'S';
4515 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
4516 RETURN l_output_value;
4517
4518 END IF;
4519 --
4520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4521 trace
4522 (p_msg => 'END of AcctDerRule_38(invalid)'
4523 ,p_level => C_LEVEL_PROCEDURE
4524 ,p_module => l_log_module);
4525 END IF;
4526 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4527 x_value_type_code := null;
4528 l_output_value := null;
4529 xla_accounting_err_pkg.build_message
4530 (p_appli_s_name => 'XLA'
4534 l_component_type
4531 ,p_msg_name => 'XLA_AP_INVALID_ADR'
4532 ,p_token_1 => 'COMPONENT_NAME'
4533 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
4535 , l_component_code
4536 , l_component_type_code
4537 , l_component_appl_id
4538 , l_amb_context_code
4539 )
4540 ,p_token_2 => 'OWNER'
4541 ,p_value_2 => xla_lookups_pkg.get_meaning(
4542 'XLA_OWNER_TYPE'
4543 ,l_component_type_code
4544 )
4545 ,p_token_3 => 'PAD_NAME'
4546 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4547 ,p_token_4 => 'PAD_OWNER'
4548 ,p_value_4 => xla_lookups_pkg.get_meaning(
4549 'XLA_OWNER_TYPE'
4550 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4551 )
4552 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4553 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4554 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4555 ,p_ae_header_id => NULL
4556 );
4557 RETURN l_output_value;
4558 EXCEPTION
4559 WHEN xla_exceptions_pkg.application_exception THEN
4560 RAISE;
4561 WHEN OTHERS THEN
4562 xla_exceptions_pkg.raise_message
4563 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_38');
4564 END AcctDerRule_38;
4565 --
4566
4567 ---------------------------------------
4568 --
4569 -- PRIVATE FUNCTION
4570 -- AcctDerRule_39
4571 --
4572 ---------------------------------------
4573 FUNCTION AcctDerRule_39 (
4574 p_application_id IN NUMBER
4575 , p_ae_header_id IN NUMBER
4576 , p_side IN VARCHAR2
4577 --Transaction Account
4578 , p_source_1 IN NUMBER
4579 --Journal Line Type
4580 , p_source_2 IN VARCHAR2
4581 , x_transaction_coa_id OUT NOCOPY NUMBER
4582 , x_accounting_coa_id OUT NOCOPY NUMBER
4583 , x_value_type_code OUT NOCOPY VARCHAR2
4584 )
4585 RETURN NUMBER
4586 IS
4587 l_component_type VARCHAR2(80) ;
4588 l_component_code VARCHAR2(30) ;
4589 l_component_type_code VARCHAR2(1) ;
4590 l_component_appl_id INTEGER ;
4591 l_amb_context_code VARCHAR2(30) ;
4592 l_log_module VARCHAR2(240) ;
4593 l_output_value NUMBER ;
4594 BEGIN
4595 IF g_log_enabled THEN
4596 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_39';
4597 END IF;
4598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4599 trace
4600 (p_msg => 'BEGIN of AcctDerRule_39'
4601 ,p_level => C_LEVEL_PROCEDURE
4602 ,p_module => l_log_module);
4603 END IF;
4604 --
4605 l_component_type := 'AMB_ADR';
4606 l_component_code := 'WIP';
4607 l_component_type_code := 'S';
4608 l_component_appl_id := 555;
4609 l_amb_context_code := 'DEFAULT';
4610 x_transaction_coa_id := null;
4611 x_accounting_coa_id := null;
4612 --
4613
4614 IF NVL(p_source_2,'
4615 ') = 'WIP'
4616 THEN
4617 --
4618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4619 trace
4620 (p_msg => 'END of AcctDerRule_39'
4621 ,p_level => C_LEVEL_PROCEDURE
4622 ,p_module => l_log_module);
4623 END IF;
4624 x_value_type_code := 'S';
4625 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
4626 RETURN l_output_value;
4627
4628 END IF;
4629 --
4630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4631 trace
4632 (p_msg => 'END of AcctDerRule_39(invalid)'
4633 ,p_level => C_LEVEL_PROCEDURE
4634 ,p_module => l_log_module);
4635 END IF;
4636 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4637 x_value_type_code := null;
4638 l_output_value := null;
4639 xla_accounting_err_pkg.build_message
4640 (p_appli_s_name => 'XLA'
4641 ,p_msg_name => 'XLA_AP_INVALID_ADR'
4642 ,p_token_1 => 'COMPONENT_NAME'
4643 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
4644 l_component_type
4645 , l_component_code
4646 , l_component_type_code
4647 , l_component_appl_id
4648 , l_amb_context_code
4649 )
4653 ,l_component_type_code
4650 ,p_token_2 => 'OWNER'
4651 ,p_value_2 => xla_lookups_pkg.get_meaning(
4652 'XLA_OWNER_TYPE'
4654 )
4655 ,p_token_3 => 'PAD_NAME'
4656 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4657 ,p_token_4 => 'PAD_OWNER'
4658 ,p_value_4 => xla_lookups_pkg.get_meaning(
4659 'XLA_OWNER_TYPE'
4660 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4661 )
4662 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4663 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4664 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4665 ,p_ae_header_id => NULL
4666 );
4667 RETURN l_output_value;
4668 EXCEPTION
4669 WHEN xla_exceptions_pkg.application_exception THEN
4670 RAISE;
4671 WHEN OTHERS THEN
4672 xla_exceptions_pkg.raise_message
4673 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_39');
4674 END AcctDerRule_39;
4675 --
4676
4677 ---------------------------------------
4678 --
4679 -- PRIVATE FUNCTION
4680 -- AcctDerRule_40
4681 --
4682 ---------------------------------------
4683 FUNCTION AcctDerRule_40 (
4684 p_application_id IN NUMBER
4685 , p_ae_header_id IN NUMBER
4686 , p_side IN VARCHAR2
4687 --Transaction Account
4688 , p_source_1 IN NUMBER
4689 --Journal Line Type
4690 , p_source_2 IN VARCHAR2
4691 , x_transaction_coa_id OUT NOCOPY NUMBER
4692 , x_accounting_coa_id OUT NOCOPY NUMBER
4693 , x_value_type_code OUT NOCOPY VARCHAR2
4694 )
4695 RETURN NUMBER
4696 IS
4697 l_component_type VARCHAR2(80) ;
4698 l_component_code VARCHAR2(30) ;
4699 l_component_type_code VARCHAR2(1) ;
4700 l_component_appl_id INTEGER ;
4701 l_amb_context_code VARCHAR2(30) ;
4702 l_log_module VARCHAR2(240) ;
4703 l_output_value NUMBER ;
4704 BEGIN
4705 IF g_log_enabled THEN
4706 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_40';
4707 END IF;
4708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4709 trace
4710 (p_msg => 'BEGIN of AcctDerRule_40'
4711 ,p_level => C_LEVEL_PROCEDURE
4712 ,p_module => l_log_module);
4713 END IF;
4714 --
4715 l_component_type := 'AMB_ADR';
4716 l_component_code := 'XTC';
4717 l_component_type_code := 'S';
4718 l_component_appl_id := 555;
4719 l_amb_context_code := 'DEFAULT';
4720 x_transaction_coa_id := null;
4721 x_accounting_coa_id := null;
4722 --
4723
4724 IF NVL(p_source_2,'
4725 ') = 'XFC'
4726 THEN
4727 --
4728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4729 trace
4730 (p_msg => 'END of AcctDerRule_40'
4731 ,p_level => C_LEVEL_PROCEDURE
4732 ,p_module => l_log_module);
4733 END IF;
4734 x_value_type_code := 'S';
4735 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
4736 RETURN l_output_value;
4737
4738 END IF;
4739 --
4740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4741 trace
4742 (p_msg => 'END of AcctDerRule_40(invalid)'
4743 ,p_level => C_LEVEL_PROCEDURE
4744 ,p_module => l_log_module);
4745 END IF;
4746 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4747 x_value_type_code := null;
4748 l_output_value := null;
4749 xla_accounting_err_pkg.build_message
4750 (p_appli_s_name => 'XLA'
4751 ,p_msg_name => 'XLA_AP_INVALID_ADR'
4752 ,p_token_1 => 'COMPONENT_NAME'
4753 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
4754 l_component_type
4755 , l_component_code
4756 , l_component_type_code
4757 , l_component_appl_id
4758 , l_amb_context_code
4759 )
4760 ,p_token_2 => 'OWNER'
4761 ,p_value_2 => xla_lookups_pkg.get_meaning(
4762 'XLA_OWNER_TYPE'
4763 ,l_component_type_code
4764 )
4765 ,p_token_3 => 'PAD_NAME'
4766 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4767 ,p_token_4 => 'PAD_OWNER'
4771 )
4768 ,p_value_4 => xla_lookups_pkg.get_meaning(
4769 'XLA_OWNER_TYPE'
4770 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4772 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4773 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4774 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4775 ,p_ae_header_id => NULL
4776 );
4777 RETURN l_output_value;
4778 EXCEPTION
4779 WHEN xla_exceptions_pkg.application_exception THEN
4780 RAISE;
4781 WHEN OTHERS THEN
4782 xla_exceptions_pkg.raise_message
4783 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_40');
4784 END AcctDerRule_40;
4785 --
4786
4787 ---------------------------------------
4788 --
4789 -- PRIVATE FUNCTION
4790 -- AcctDerRule_41
4791 --
4792 ---------------------------------------
4793 FUNCTION AcctDerRule_41 (
4794 p_application_id IN NUMBER
4795 , p_ae_header_id IN NUMBER
4796 , p_side IN VARCHAR2
4797 --Transaction Account
4798 , p_source_1 IN NUMBER
4799 --Journal Line Type
4800 , p_source_2 IN VARCHAR2
4801 , x_transaction_coa_id OUT NOCOPY NUMBER
4802 , x_accounting_coa_id OUT NOCOPY NUMBER
4803 , x_value_type_code OUT NOCOPY VARCHAR2
4804 )
4805 RETURN NUMBER
4806 IS
4807 l_component_type VARCHAR2(80) ;
4808 l_component_code VARCHAR2(30) ;
4809 l_component_type_code VARCHAR2(1) ;
4810 l_component_appl_id INTEGER ;
4811 l_amb_context_code VARCHAR2(30) ;
4812 l_log_module VARCHAR2(240) ;
4813 l_output_value NUMBER ;
4814 BEGIN
4815 IF g_log_enabled THEN
4816 l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_41';
4817 END IF;
4818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4819 trace
4820 (p_msg => 'BEGIN of AcctDerRule_41'
4821 ,p_level => C_LEVEL_PROCEDURE
4822 ,p_module => l_log_module);
4823 END IF;
4824 --
4825 l_component_type := 'AMB_ADR';
4826 l_component_code := 'YLD';
4827 l_component_type_code := 'S';
4828 l_component_appl_id := 555;
4829 l_amb_context_code := 'DEFAULT';
4830 x_transaction_coa_id := null;
4831 x_accounting_coa_id := null;
4832 --
4833
4834 IF NVL(p_source_2,'
4835 ') = 'YLD'
4836 THEN
4837 --
4838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4839 trace
4840 (p_msg => 'END of AcctDerRule_41'
4841 ,p_level => C_LEVEL_PROCEDURE
4842 ,p_module => l_log_module);
4843 END IF;
4844 x_value_type_code := 'S';
4845 l_output_value := TO_NUMBER(TO_NUMBER(p_source_1));
4846 RETURN l_output_value;
4847
4848 END IF;
4849 --
4850 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4851 trace
4852 (p_msg => 'END of AcctDerRule_41(invalid)'
4853 ,p_level => C_LEVEL_PROCEDURE
4854 ,p_module => l_log_module);
4855 END IF;
4856 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
4857 x_value_type_code := null;
4858 l_output_value := null;
4859 xla_accounting_err_pkg.build_message
4860 (p_appli_s_name => 'XLA'
4861 ,p_msg_name => 'XLA_AP_INVALID_ADR'
4862 ,p_token_1 => 'COMPONENT_NAME'
4863 ,p_value_1 => xla_ae_sources_pkg.GetComponentName (
4864 l_component_type
4865 , l_component_code
4866 , l_component_type_code
4867 , l_component_appl_id
4868 , l_amb_context_code
4869 )
4870 ,p_token_2 => 'OWNER'
4871 ,p_value_2 => xla_lookups_pkg.get_meaning(
4872 'XLA_OWNER_TYPE'
4873 ,l_component_type_code
4874 )
4875 ,p_token_3 => 'PAD_NAME'
4876 ,p_value_3 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4877 ,p_token_4 => 'PAD_OWNER'
4878 ,p_value_4 => xla_lookups_pkg.get_meaning(
4879 'XLA_OWNER_TYPE'
4880 ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4881 )
4882 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4883 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
4887 RETURN l_output_value;
4884 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4885 ,p_ae_header_id => NULL
4886 );
4888 EXCEPTION
4889 WHEN xla_exceptions_pkg.application_exception THEN
4890 RAISE;
4891 WHEN OTHERS THEN
4892 xla_exceptions_pkg.raise_message
4893 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctDerRule_41');
4894 END AcctDerRule_41;
4895 --
4896
4897 ---------------------------------------
4898 --
4899 -- PRIVATE FUNCTION
4900 -- AcctLineType_42
4901 --
4902 ---------------------------------------
4903 PROCEDURE AcctLineType_42 (
4904 p_application_id IN NUMBER
4905 ,p_event_id IN NUMBER
4906 ,p_calculate_acctd_flag IN VARCHAR2
4907 ,p_calculate_g_l_flag IN VARCHAR2
4908 ,p_actual_flag IN OUT VARCHAR2
4909 ,p_balance_type_code OUT VARCHAR2
4910 ,p_gain_or_loss_ref OUT VARCHAR2
4911
4912 --Transaction Account
4913 , p_source_1 IN NUMBER
4914 --Journal Line Type
4915 , p_source_2 IN VARCHAR2
4916 --Entered Amount
4917 , p_source_3 IN NUMBER
4918 --First Distribution Identifier
4919 , p_source_5 IN NUMBER
4920 --Distribution Type
4921 , p_source_6 IN VARCHAR2
4922 --Currency Code
4923 , p_source_7 IN VARCHAR2
4924 --Currency Conversion Date
4925 , p_source_8 IN DATE
4926 --Currency Conversion Rate
4927 , p_source_9 IN NUMBER
4928 --Currency Conversion Type
4929 , p_source_10 IN VARCHAR2
4930 --Accounted Amount
4931 , p_source_11 IN NUMBER
4932 )
4933 IS
4934
4935 l_component_type VARCHAR2(80);
4936 l_component_code VARCHAR2(30);
4937 l_component_type_code VARCHAR2(1);
4938 l_component_appl_id INTEGER;
4939 l_amb_context_code VARCHAR2(30);
4940 l_entity_code VARCHAR2(30);
4941 l_event_class_code VARCHAR2(30);
4942 l_ae_header_id NUMBER;
4943 l_event_type_code VARCHAR2(30);
4944 l_line_definition_code VARCHAR2(30);
4945 l_line_definition_owner_code VARCHAR2(1);
4946 --
4947 -- adr variables
4948 l_segment VARCHAR2(30);
4949 l_ccid NUMBER;
4950 l_adr_transaction_coa_id NUMBER;
4951 l_adr_accounting_coa_id NUMBER;
4952 l_adr_flexfield_segment_code VARCHAR2(30);
4953 l_adr_flex_value_set_id NUMBER;
4954 l_adr_value_type_code VARCHAR2(30);
4955 l_adr_value_combination_id NUMBER;
4956 l_adr_value_segment_code VARCHAR2(30);
4957
4958 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4959 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4960 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4961 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4962
4963 -- 4262811 Variables ------------------------------------------------------------------------------------------
4964 l_entered_amt_idx NUMBER;
4965 l_accted_amt_idx NUMBER;
4966 l_acc_rev_flag VARCHAR2(1);
4967 l_accrual_line_num NUMBER;
4968 l_tmp_amt NUMBER;
4969 l_acc_rev_natural_side_code VARCHAR2(1);
4970
4971 l_num_entries NUMBER;
4972 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4973 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4974 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4975 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4976 l_recog_line_1 NUMBER;
4977 l_recog_line_2 NUMBER;
4978
4979 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4980 l_bflow_applied_to_amt NUMBER; -- 5132302
4981 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4982
4983 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4984
4985 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4986 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4987
4988 ---------------------------------------------------------------------------------------------------------------
4989
4990
4991 --
4992 -- bulk performance
4993 --
4994 l_balance_type_code VARCHAR2(1);
4995 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4996 l_log_module VARCHAR2(240);
4997
4998 --
4999 -- Upgrade strategy
5000 --
5001 l_actual_upg_option VARCHAR2(1);
5002 l_enc_upg_option VARCHAR2(1);
5003
5004 --
5005 BEGIN
5006 --
5007 IF g_log_enabled THEN
5008 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
5009 END IF;
5010 --
5011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5012
5013 trace
5014 (p_msg => 'BEGIN of AcctLineType_42'
5015 ,p_level => C_LEVEL_PROCEDURE
5016 ,p_module => l_log_module);
5017
5018 END IF;
5019 --
5020 l_component_type := 'AMB_JLT';
5024 l_amb_context_code := 'DEFAULT';
5021 l_component_code := 'AAC';
5022 l_component_type_code := 'S';
5023 l_component_appl_id := 555;
5025 l_entity_code := 'PURCHASING';
5026 l_event_class_code := 'DELIVER';
5027 l_event_type_code := 'RET_TO_RECEIVING';
5028 l_line_definition_owner_code := 'S';
5029 l_line_definition_code := 'PO_RETURN';
5030 --
5031 l_balance_type_code := 'A';
5032 l_segment := NULL;
5033 l_ccid := NULL;
5034 l_adr_transaction_coa_id := NULL;
5035 l_adr_accounting_coa_id := NULL;
5036 l_adr_flexfield_segment_code := NULL;
5037 l_adr_flex_value_set_id := NULL;
5038 l_adr_value_type_code := NULL;
5039 l_adr_value_combination_id := NULL;
5040 l_adr_value_segment_code := NULL;
5041
5042 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5043 l_bflow_class_code := ''; -- 4219869 Business Flow
5044 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5045 l_budgetary_control_flag := 'N';
5046
5047 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5048 l_bflow_applied_to_amt := NULL; -- 5132302
5049 l_entered_amt_idx := NULL; -- 4262811
5050 l_accted_amt_idx := NULL; -- 4262811
5051 l_acc_rev_flag := NULL; -- 4262811
5052 l_accrual_line_num := NULL; -- 4262811
5053 l_tmp_amt := NULL; -- 4262811
5054 --
5055
5056 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5057 l_balance_type_code <> 'B' THEN
5058 IF NVL(p_source_2,'
5059 ') = 'AAC'
5060 THEN
5061
5062 --
5063 XLA_AE_LINES_PKG.SetNewLine;
5064
5065 p_balance_type_code := l_balance_type_code;
5066 -- set the flag so later we will know whether the gain loss line needs to be created
5067
5068 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5069 p_actual_flag :='A';
5070 END IF;
5071
5072 --
5073 -- bulk performance
5074 --
5075 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5076 p_header_num => 0); -- 4262811
5077 --
5078 -- set accounting line options
5079 --
5080 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5081 p_natural_side_code => 'D'
5082 , p_gain_or_loss_flag => 'N'
5083 , p_gl_transfer_mode_code => 'D'
5084 , p_acct_entry_type_code => 'A'
5085 , p_switch_side_flag => 'Y'
5086 , p_merge_duplicate_code => 'W'
5087 );
5088 --
5089 l_acc_rev_natural_side_code := 'C'; -- 4262811
5090 --
5091 --
5092 -- set accounting line type info
5093 --
5094 xla_ae_lines_pkg.SetAcctLineType
5095 (p_component_type => l_component_type
5096 ,p_event_type_code => l_event_type_code
5097 ,p_line_definition_owner_code => l_line_definition_owner_code
5098 ,p_line_definition_code => l_line_definition_code
5099 ,p_accounting_line_code => l_component_code
5100 ,p_accounting_line_type_code => l_component_type_code
5101 ,p_accounting_line_appl_id => l_component_appl_id
5102 ,p_amb_context_code => l_amb_context_code
5103 ,p_entity_code => l_entity_code
5104 ,p_event_class_code => l_event_class_code);
5105 --
5106 -- set accounting class
5107 --
5108 xla_ae_lines_pkg.SetAcctClass(
5109 p_accounting_class_code => 'AAC'
5110 , p_ae_header_id => l_ae_header_id
5111 );
5112
5113 --
5114 -- set rounding class
5115 --
5116 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5117 'AAC';
5118
5119 --
5120 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5121 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5122 --
5123 -- bulk performance
5124 --
5125 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5126
5127 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5128 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5129
5130 -- 4955764
5131 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5132 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5133
5134 -- 4458381 Public Sector Enh
5135
5136 --
5137 -- set accounting attributes for the line type
5138 --
5139 l_entered_amt_idx := 3;
5140 l_accted_amt_idx := 8;
5141 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5142 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5143 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
5144 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5145 l_rec_acct_attrs.array_char_value(2) := p_source_6;
5146 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5147 l_rec_acct_attrs.array_num_value(3) := p_source_3;
5151 l_rec_acct_attrs.array_date_value(5) := p_source_8;
5148 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5149 l_rec_acct_attrs.array_char_value(4) := p_source_7;
5150 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5152 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5153 l_rec_acct_attrs.array_num_value(6) := p_source_9;
5154 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5155 l_rec_acct_attrs.array_char_value(7) := p_source_10;
5156 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5157 l_rec_acct_attrs.array_num_value(8) := p_source_11;
5158
5159 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5160 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5161
5162 ---------------------------------------------------------------------------------------------------------------
5163 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5164 ---------------------------------------------------------------------------------------------------------------
5165 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5166
5167 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5168 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5169
5170 IF xla_accounting_cache_pkg.GetValueChar
5171 (p_source_code => 'LEDGER_CATEGORY_CODE'
5172 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5173 AND l_bflow_method_code = 'PRIOR_ENTRY'
5174 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5175 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5176 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5177 )
5178 THEN
5179 xla_ae_lines_pkg.BflowUpgEntry
5180 (p_business_method_code => l_bflow_method_code
5181 ,p_business_class_code => l_bflow_class_code
5182 ,p_balance_type => l_balance_type_code);
5183 ELSE
5184 NULL;
5185 -- No business flow processing for business flow method of NONE.
5186 END IF;
5187
5188 --
5189 -- call analytical criteria
5190 --
5191
5192 --
5193 -- call description
5194 --
5195 -- No description or it is inherited.
5196 --
5197 -- call ADRs
5198 -- Bug 4922099
5199 --
5200 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5201 (NVL(l_actual_upg_option, 'N') = 'O') OR
5202 (NVL(l_enc_upg_option, 'N') = 'O')
5203 )
5204 THEN
5205 NULL;
5206 --
5207 --
5208
5209 l_ccid := AcctDerRule_1(
5210 p_application_id => p_application_id
5211 , p_ae_header_id => l_ae_header_id
5212 , p_source_1 => p_source_1
5213 , p_source_2 => p_source_2
5214 , x_transaction_coa_id => l_adr_transaction_coa_id
5215 , x_accounting_coa_id => l_adr_accounting_coa_id
5216 , x_value_type_code => l_adr_value_type_code
5217 , p_side => 'NA'
5218 );
5219
5220 xla_ae_lines_pkg.set_ccid(
5221 p_code_combination_id => l_ccid
5222 , p_value_type_code => l_adr_value_type_code
5223 , p_transaction_coa_id => l_adr_transaction_coa_id
5224 , p_accounting_coa_id => l_adr_accounting_coa_id
5225 , p_adr_code => 'AAC'
5226 , p_adr_type_code => 'S'
5227 , p_component_type => l_component_type
5228 , p_component_code => l_component_code
5229 , p_component_type_code => l_component_type_code
5230 , p_component_appl_id => l_component_appl_id
5231 , p_amb_context_code => l_amb_context_code
5232 , p_side => 'NA'
5233 );
5234
5235
5236 --
5237 --
5238 END IF;
5239 --
5240 -- Bug 4922099
5241 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5242 (NVL(l_enc_upg_option, 'N') = 'O')
5243 ) AND
5244 (l_bflow_method_code = 'PRIOR_ENTRY')
5245 )
5246 THEN
5247 IF
5248 --
5249 1 = 2
5250 --
5251 THEN
5252 xla_accounting_err_pkg.build_message
5253 (p_appli_s_name => 'XLA'
5254 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5255 ,p_token_1 => 'LINE_NUMBER'
5256 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5257 ,p_token_2 => 'LINE_TYPE_NAME'
5258 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5259 l_component_type
5260 ,l_component_code
5261 ,l_component_type_code
5262 ,l_component_appl_id
5266 )
5263 ,l_amb_context_code
5264 ,l_entity_code
5265 ,l_event_class_code
5267 ,p_token_3 => 'OWNER'
5268 ,p_value_3 => xla_lookups_pkg.get_meaning(
5269 p_lookup_type => 'XLA_OWNER_TYPE'
5270 ,p_lookup_code => l_component_type_code
5271 )
5272 ,p_token_4 => 'PRODUCT_NAME'
5273 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5274 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5275 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5276 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5277 ,p_ae_header_id => NULL
5278 );
5279
5280 IF (C_LEVEL_ERROR>= g_log_level) THEN
5281 trace
5282 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5283 ,p_level => C_LEVEL_ERROR
5284 ,p_module => l_log_module);
5285 END IF;
5286 END IF;
5287 END IF;
5288 --
5289 --
5290 ------------------------------------------------------------------------------------------------
5291 -- 4219869 Business Flow
5292 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5293 -- Prior Entry. Currently, the following code is always generated.
5294 ------------------------------------------------------------------------------------------------
5295 XLA_AE_LINES_PKG.ValidateCurrentLine;
5296
5297 ------------------------------------------------------------------------------------
5298 -- 4219869 Business Flow
5299 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5300 ------------------------------------------------------------------------------------
5301 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5302
5303 ----------------------------------------------------------------------------------
5304 -- 4219869 Business Flow
5305 -- Update journal entry status -- Need to generate this within IF <condition>
5306 ----------------------------------------------------------------------------------
5307 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5308 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5309 ,p_balance_type_code => l_balance_type_code
5310 );
5311
5312 -------------------------------------------------------------------------------------------
5313 -- 4262811 - Generate the Accrual Reversal lines
5314 -------------------------------------------------------------------------------------------
5315 BEGIN
5316 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5317 (g_array_event(p_event_id).array_value_num('header_index'));
5318 IF l_acc_rev_flag IS NULL THEN
5319 l_acc_rev_flag := 'N';
5320 END IF;
5321 EXCEPTION
5322 WHEN OTHERS THEN
5323 l_acc_rev_flag := 'N';
5324 END;
5325 --
5326 IF (l_acc_rev_flag = 'Y') THEN
5327
5328 -- 4645092 ------------------------------------------------------------------------------
5329 -- To allow MPA report to determine if it should generate report process
5330 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5331 ------------------------------------------------------------------------------------------
5332
5333 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5334 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5335 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
5336 -- call ADRs
5337 -- Bug 4922099
5338 --
5339 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5340 (NVL(l_actual_upg_option, 'N') = 'O') OR
5341 (NVL(l_enc_upg_option, 'N') = 'O')
5342 )
5343 THEN
5344 NULL;
5345 --
5346 --
5347
5348 l_ccid := AcctDerRule_1(
5349 p_application_id => p_application_id
5350 , p_ae_header_id => l_ae_header_id
5351 , p_source_1 => p_source_1
5352 , p_source_2 => p_source_2
5353 , x_transaction_coa_id => l_adr_transaction_coa_id
5354 , x_accounting_coa_id => l_adr_accounting_coa_id
5355 , x_value_type_code => l_adr_value_type_code
5356 , p_side => 'NA'
5357 );
5358
5359 xla_ae_lines_pkg.set_ccid(
5360 p_code_combination_id => l_ccid
5361 , p_value_type_code => l_adr_value_type_code
5362 , p_transaction_coa_id => l_adr_transaction_coa_id
5363 , p_accounting_coa_id => l_adr_accounting_coa_id
5364 , p_adr_code => 'AAC'
5365 , p_adr_type_code => 'S'
5369 , p_component_appl_id => l_component_appl_id
5366 , p_component_type => l_component_type
5367 , p_component_code => l_component_code
5368 , p_component_type_code => l_component_type_code
5370 , p_amb_context_code => l_amb_context_code
5371 , p_side => 'NA'
5372 );
5373
5374
5375 --
5376 --
5377 END IF;
5378
5379 --
5380 -- Update the line information that should be overwritten
5381 --
5382 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5383 p_header_num => 1);
5384 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5385
5386 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5387
5388 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5389 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5390 END IF;
5391
5392 --
5393 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5394 --
5395 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5396 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5397 ELSE
5398 ---------------------------------------------------------------------------------------------------
5399 -- 4262811a Switch Sign
5400 ---------------------------------------------------------------------------------------------------
5401 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5402 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5403 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5404 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5405 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5406 -- 5132302
5407 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5408 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5409
5410 END IF;
5411
5412 -- 4955764
5413 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5414 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5415
5416
5417 XLA_AE_LINES_PKG.ValidateCurrentLine;
5418 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5419
5420 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5421 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5422 ,p_balance_type_code => l_balance_type_code);
5423
5424 END IF;
5425
5426 -----------------------------------------------------------------------------------------
5427 -- 4262811 Multiperiod Accounting
5428 -----------------------------------------------------------------------------------------
5429 -- No MPA option is assigned.
5430
5431
5432 END IF;
5433 END IF;
5434 --
5435
5436 --
5437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5438 trace
5439 (p_msg => 'END of AcctLineType_42'
5440 ,p_level => C_LEVEL_PROCEDURE
5441 ,p_module => l_log_module);
5442 END IF;
5443 --
5444 EXCEPTION
5445 WHEN xla_exceptions_pkg.application_exception THEN
5446 RAISE;
5447 WHEN OTHERS THEN
5448 xla_exceptions_pkg.raise_message
5449 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_42');
5450 END AcctLineType_42;
5451 --
5452
5453 ---------------------------------------
5454 --
5455 -- PRIVATE FUNCTION
5456 -- AcctLineType_43
5457 --
5458 ---------------------------------------
5459 PROCEDURE AcctLineType_43 (
5460 p_application_id IN NUMBER
5461 ,p_event_id IN NUMBER
5462 ,p_calculate_acctd_flag IN VARCHAR2
5463 ,p_calculate_g_l_flag IN VARCHAR2
5464 ,p_actual_flag IN OUT VARCHAR2
5465 ,p_balance_type_code OUT VARCHAR2
5466 ,p_gain_or_loss_ref OUT VARCHAR2
5467
5468 --Transaction Account
5469 , p_source_1 IN NUMBER
5470 --Journal Line Type
5471 , p_source_2 IN VARCHAR2
5472 --Entered Amount
5473 , p_source_3 IN NUMBER
5474 --First Distribution Identifier
5475 , p_source_5 IN NUMBER
5476 --Distribution Type
5477 , p_source_6 IN VARCHAR2
5478 --Currency Code
5479 , p_source_7 IN VARCHAR2
5480 --Currency Conversion Date
5481 , p_source_8 IN DATE
5482 --Currency Conversion Rate
5483 , p_source_9 IN NUMBER
5484 --Currency Conversion Type
5485 , p_source_10 IN VARCHAR2
5486 --Accounted Amount
5487 , p_source_11 IN NUMBER
5488 )
5489 IS
5490
5491 l_component_type VARCHAR2(80);
5492 l_component_code VARCHAR2(30);
5496 l_entity_code VARCHAR2(30);
5493 l_component_type_code VARCHAR2(1);
5494 l_component_appl_id INTEGER;
5495 l_amb_context_code VARCHAR2(30);
5497 l_event_class_code VARCHAR2(30);
5498 l_ae_header_id NUMBER;
5499 l_event_type_code VARCHAR2(30);
5500 l_line_definition_code VARCHAR2(30);
5501 l_line_definition_owner_code VARCHAR2(1);
5502 --
5503 -- adr variables
5504 l_segment VARCHAR2(30);
5505 l_ccid NUMBER;
5506 l_adr_transaction_coa_id NUMBER;
5507 l_adr_accounting_coa_id NUMBER;
5508 l_adr_flexfield_segment_code VARCHAR2(30);
5509 l_adr_flex_value_set_id NUMBER;
5510 l_adr_value_type_code VARCHAR2(30);
5511 l_adr_value_combination_id NUMBER;
5512 l_adr_value_segment_code VARCHAR2(30);
5513
5514 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5515 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5516 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5517 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5518
5519 -- 4262811 Variables ------------------------------------------------------------------------------------------
5520 l_entered_amt_idx NUMBER;
5521 l_accted_amt_idx NUMBER;
5522 l_acc_rev_flag VARCHAR2(1);
5523 l_accrual_line_num NUMBER;
5524 l_tmp_amt NUMBER;
5525 l_acc_rev_natural_side_code VARCHAR2(1);
5526
5527 l_num_entries NUMBER;
5528 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5529 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5530 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5531 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5532 l_recog_line_1 NUMBER;
5533 l_recog_line_2 NUMBER;
5534
5535 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5536 l_bflow_applied_to_amt NUMBER; -- 5132302
5537 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5538
5539 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5540
5541 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5542 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5543
5544 ---------------------------------------------------------------------------------------------------------------
5545
5546
5547 --
5548 -- bulk performance
5549 --
5550 l_balance_type_code VARCHAR2(1);
5551 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5552 l_log_module VARCHAR2(240);
5553
5554 --
5555 -- Upgrade strategy
5556 --
5557 l_actual_upg_option VARCHAR2(1);
5558 l_enc_upg_option VARCHAR2(1);
5559
5560 --
5561 BEGIN
5562 --
5563 IF g_log_enabled THEN
5564 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
5565 END IF;
5566 --
5567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5568
5569 trace
5570 (p_msg => 'BEGIN of AcctLineType_43'
5571 ,p_level => C_LEVEL_PROCEDURE
5572 ,p_module => l_log_module);
5573
5574 END IF;
5575 --
5576 l_component_type := 'AMB_JLT';
5577 l_component_code := 'AAC';
5578 l_component_type_code := 'S';
5579 l_component_appl_id := 555;
5580 l_amb_context_code := 'DEFAULT';
5581 l_entity_code := 'PURCHASING';
5582 l_event_class_code := 'DELIVER';
5583 l_event_type_code := 'PO_RECEIPT';
5584 l_line_definition_owner_code := 'S';
5585 l_line_definition_code := 'DELIVER';
5586 --
5587 l_balance_type_code := 'A';
5588 l_segment := NULL;
5589 l_ccid := NULL;
5590 l_adr_transaction_coa_id := NULL;
5591 l_adr_accounting_coa_id := NULL;
5592 l_adr_flexfield_segment_code := NULL;
5593 l_adr_flex_value_set_id := NULL;
5594 l_adr_value_type_code := NULL;
5595 l_adr_value_combination_id := NULL;
5596 l_adr_value_segment_code := NULL;
5597
5598 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5599 l_bflow_class_code := ''; -- 4219869 Business Flow
5600 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5601 l_budgetary_control_flag := 'N';
5602
5603 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5604 l_bflow_applied_to_amt := NULL; -- 5132302
5605 l_entered_amt_idx := NULL; -- 4262811
5606 l_accted_amt_idx := NULL; -- 4262811
5607 l_acc_rev_flag := NULL; -- 4262811
5608 l_accrual_line_num := NULL; -- 4262811
5609 l_tmp_amt := NULL; -- 4262811
5610 --
5611
5612 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5613 l_balance_type_code <> 'B' THEN
5614 IF NVL(p_source_2,'
5615 ') = 'AAC'
5616 THEN
5617
5618 --
5619 XLA_AE_LINES_PKG.SetNewLine;
5620
5621 p_balance_type_code := l_balance_type_code;
5622 -- set the flag so later we will know whether the gain loss line needs to be created
5623
5627
5624 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5625 p_actual_flag :='A';
5626 END IF;
5628 --
5629 -- bulk performance
5630 --
5631 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5632 p_header_num => 0); -- 4262811
5633 --
5634 -- set accounting line options
5635 --
5636 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5637 p_natural_side_code => 'D'
5638 , p_gain_or_loss_flag => 'N'
5639 , p_gl_transfer_mode_code => 'D'
5640 , p_acct_entry_type_code => 'A'
5641 , p_switch_side_flag => 'Y'
5642 , p_merge_duplicate_code => 'W'
5643 );
5644 --
5645 l_acc_rev_natural_side_code := 'C'; -- 4262811
5646 --
5647 --
5648 -- set accounting line type info
5649 --
5650 xla_ae_lines_pkg.SetAcctLineType
5651 (p_component_type => l_component_type
5652 ,p_event_type_code => l_event_type_code
5653 ,p_line_definition_owner_code => l_line_definition_owner_code
5654 ,p_line_definition_code => l_line_definition_code
5655 ,p_accounting_line_code => l_component_code
5656 ,p_accounting_line_type_code => l_component_type_code
5657 ,p_accounting_line_appl_id => l_component_appl_id
5658 ,p_amb_context_code => l_amb_context_code
5659 ,p_entity_code => l_entity_code
5660 ,p_event_class_code => l_event_class_code);
5661 --
5662 -- set accounting class
5663 --
5664 xla_ae_lines_pkg.SetAcctClass(
5665 p_accounting_class_code => 'AAC'
5666 , p_ae_header_id => l_ae_header_id
5667 );
5668
5669 --
5670 -- set rounding class
5671 --
5672 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5673 'AAC';
5674
5675 --
5676 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5677 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5678 --
5679 -- bulk performance
5680 --
5681 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5682
5683 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5684 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5685
5686 -- 4955764
5687 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5688 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5689
5690 -- 4458381 Public Sector Enh
5691
5692 --
5693 -- set accounting attributes for the line type
5694 --
5695 l_entered_amt_idx := 3;
5696 l_accted_amt_idx := 8;
5697 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5698 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5699 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
5700 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5701 l_rec_acct_attrs.array_char_value(2) := p_source_6;
5702 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5703 l_rec_acct_attrs.array_num_value(3) := p_source_3;
5704 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5705 l_rec_acct_attrs.array_char_value(4) := p_source_7;
5706 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5707 l_rec_acct_attrs.array_date_value(5) := p_source_8;
5708 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5709 l_rec_acct_attrs.array_num_value(6) := p_source_9;
5710 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5711 l_rec_acct_attrs.array_char_value(7) := p_source_10;
5712 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5713 l_rec_acct_attrs.array_num_value(8) := p_source_11;
5714
5715 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5716 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5717
5718 ---------------------------------------------------------------------------------------------------------------
5719 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5720 ---------------------------------------------------------------------------------------------------------------
5721 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5722
5723 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5724 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5725
5726 IF xla_accounting_cache_pkg.GetValueChar
5727 (p_source_code => 'LEDGER_CATEGORY_CODE'
5728 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5729 AND l_bflow_method_code = 'PRIOR_ENTRY'
5730 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5731 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5732 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5733 )
5734 THEN
5735 xla_ae_lines_pkg.BflowUpgEntry
5739 ELSE
5736 (p_business_method_code => l_bflow_method_code
5737 ,p_business_class_code => l_bflow_class_code
5738 ,p_balance_type => l_balance_type_code);
5740 NULL;
5741 -- No business flow processing for business flow method of NONE.
5742 END IF;
5743
5744 --
5745 -- call analytical criteria
5746 --
5747
5748 --
5749 -- call description
5750 --
5751 -- No description or it is inherited.
5752 --
5753 -- call ADRs
5754 -- Bug 4922099
5755 --
5756 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5757 (NVL(l_actual_upg_option, 'N') = 'O') OR
5758 (NVL(l_enc_upg_option, 'N') = 'O')
5759 )
5760 THEN
5761 NULL;
5762 --
5763 --
5764
5765 l_ccid := AcctDerRule_1(
5766 p_application_id => p_application_id
5767 , p_ae_header_id => l_ae_header_id
5768 , p_source_1 => p_source_1
5769 , p_source_2 => p_source_2
5770 , x_transaction_coa_id => l_adr_transaction_coa_id
5771 , x_accounting_coa_id => l_adr_accounting_coa_id
5772 , x_value_type_code => l_adr_value_type_code
5773 , p_side => 'NA'
5774 );
5775
5776 xla_ae_lines_pkg.set_ccid(
5777 p_code_combination_id => l_ccid
5778 , p_value_type_code => l_adr_value_type_code
5779 , p_transaction_coa_id => l_adr_transaction_coa_id
5780 , p_accounting_coa_id => l_adr_accounting_coa_id
5781 , p_adr_code => 'AAC'
5782 , p_adr_type_code => 'S'
5783 , p_component_type => l_component_type
5784 , p_component_code => l_component_code
5785 , p_component_type_code => l_component_type_code
5786 , p_component_appl_id => l_component_appl_id
5787 , p_amb_context_code => l_amb_context_code
5788 , p_side => 'NA'
5789 );
5790
5791
5792 --
5793 --
5794 END IF;
5795 --
5796 -- Bug 4922099
5797 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5798 (NVL(l_enc_upg_option, 'N') = 'O')
5799 ) AND
5800 (l_bflow_method_code = 'PRIOR_ENTRY')
5801 )
5802 THEN
5803 IF
5804 --
5805 1 = 2
5806 --
5807 THEN
5808 xla_accounting_err_pkg.build_message
5809 (p_appli_s_name => 'XLA'
5810 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5811 ,p_token_1 => 'LINE_NUMBER'
5812 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5813 ,p_token_2 => 'LINE_TYPE_NAME'
5814 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5815 l_component_type
5816 ,l_component_code
5817 ,l_component_type_code
5818 ,l_component_appl_id
5819 ,l_amb_context_code
5820 ,l_entity_code
5821 ,l_event_class_code
5822 )
5823 ,p_token_3 => 'OWNER'
5824 ,p_value_3 => xla_lookups_pkg.get_meaning(
5825 p_lookup_type => 'XLA_OWNER_TYPE'
5826 ,p_lookup_code => l_component_type_code
5827 )
5828 ,p_token_4 => 'PRODUCT_NAME'
5829 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5830 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5831 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5832 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5833 ,p_ae_header_id => NULL
5834 );
5835
5836 IF (C_LEVEL_ERROR>= g_log_level) THEN
5837 trace
5838 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5839 ,p_level => C_LEVEL_ERROR
5840 ,p_module => l_log_module);
5841 END IF;
5842 END IF;
5843 END IF;
5844 --
5845 --
5846 ------------------------------------------------------------------------------------------------
5847 -- 4219869 Business Flow
5851 XLA_AE_LINES_PKG.ValidateCurrentLine;
5848 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5849 -- Prior Entry. Currently, the following code is always generated.
5850 ------------------------------------------------------------------------------------------------
5852
5853 ------------------------------------------------------------------------------------
5854 -- 4219869 Business Flow
5855 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5856 ------------------------------------------------------------------------------------
5857 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5858
5859 ----------------------------------------------------------------------------------
5860 -- 4219869 Business Flow
5861 -- Update journal entry status -- Need to generate this within IF <condition>
5862 ----------------------------------------------------------------------------------
5863 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5864 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5865 ,p_balance_type_code => l_balance_type_code
5866 );
5867
5868 -------------------------------------------------------------------------------------------
5869 -- 4262811 - Generate the Accrual Reversal lines
5870 -------------------------------------------------------------------------------------------
5871 BEGIN
5872 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5873 (g_array_event(p_event_id).array_value_num('header_index'));
5874 IF l_acc_rev_flag IS NULL THEN
5875 l_acc_rev_flag := 'N';
5876 END IF;
5877 EXCEPTION
5878 WHEN OTHERS THEN
5879 l_acc_rev_flag := 'N';
5880 END;
5881 --
5882 IF (l_acc_rev_flag = 'Y') THEN
5883
5884 -- 4645092 ------------------------------------------------------------------------------
5885 -- To allow MPA report to determine if it should generate report process
5886 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5887 ------------------------------------------------------------------------------------------
5888
5889 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5890 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5891 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
5892 -- call ADRs
5893 -- Bug 4922099
5894 --
5895 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5896 (NVL(l_actual_upg_option, 'N') = 'O') OR
5897 (NVL(l_enc_upg_option, 'N') = 'O')
5898 )
5899 THEN
5900 NULL;
5901 --
5902 --
5903
5904 l_ccid := AcctDerRule_1(
5905 p_application_id => p_application_id
5906 , p_ae_header_id => l_ae_header_id
5907 , p_source_1 => p_source_1
5908 , p_source_2 => p_source_2
5909 , x_transaction_coa_id => l_adr_transaction_coa_id
5910 , x_accounting_coa_id => l_adr_accounting_coa_id
5911 , x_value_type_code => l_adr_value_type_code
5912 , p_side => 'NA'
5913 );
5914
5915 xla_ae_lines_pkg.set_ccid(
5916 p_code_combination_id => l_ccid
5917 , p_value_type_code => l_adr_value_type_code
5918 , p_transaction_coa_id => l_adr_transaction_coa_id
5919 , p_accounting_coa_id => l_adr_accounting_coa_id
5920 , p_adr_code => 'AAC'
5921 , p_adr_type_code => 'S'
5922 , p_component_type => l_component_type
5923 , p_component_code => l_component_code
5924 , p_component_type_code => l_component_type_code
5925 , p_component_appl_id => l_component_appl_id
5926 , p_amb_context_code => l_amb_context_code
5927 , p_side => 'NA'
5928 );
5929
5930
5931 --
5932 --
5933 END IF;
5934
5935 --
5936 -- Update the line information that should be overwritten
5937 --
5938 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5939 p_header_num => 1);
5940 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5941
5942 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5943
5944 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5945 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5946 END IF;
5947
5948 --
5949 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5950 --
5951 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5952 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5953 ELSE
5954 ---------------------------------------------------------------------------------------------------
5955 -- 4262811a Switch Sign
5956 ---------------------------------------------------------------------------------------------------
5960 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5957 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5958 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5959 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5961 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5962 -- 5132302
5963 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5964 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5965
5966 END IF;
5967
5968 -- 4955764
5969 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5970 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5971
5972
5973 XLA_AE_LINES_PKG.ValidateCurrentLine;
5974 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5975
5976 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5977 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5978 ,p_balance_type_code => l_balance_type_code);
5979
5980 END IF;
5981
5982 -----------------------------------------------------------------------------------------
5983 -- 4262811 Multiperiod Accounting
5984 -----------------------------------------------------------------------------------------
5985 -- No MPA option is assigned.
5986
5987
5988 END IF;
5989 END IF;
5990 --
5991
5992 --
5993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5994 trace
5995 (p_msg => 'END of AcctLineType_43'
5996 ,p_level => C_LEVEL_PROCEDURE
5997 ,p_module => l_log_module);
5998 END IF;
5999 --
6000 EXCEPTION
6001 WHEN xla_exceptions_pkg.application_exception THEN
6002 RAISE;
6003 WHEN OTHERS THEN
6004 xla_exceptions_pkg.raise_message
6005 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_43');
6006 END AcctLineType_43;
6007 --
6008
6009 ---------------------------------------
6010 --
6011 -- PRIVATE FUNCTION
6012 -- AcctLineType_44
6013 --
6014 ---------------------------------------
6015 PROCEDURE AcctLineType_44 (
6016 p_application_id IN NUMBER
6017 ,p_event_id IN NUMBER
6018 ,p_calculate_acctd_flag IN VARCHAR2
6019 ,p_calculate_g_l_flag IN VARCHAR2
6020 ,p_actual_flag IN OUT VARCHAR2
6021 ,p_balance_type_code OUT VARCHAR2
6022 ,p_gain_or_loss_ref OUT VARCHAR2
6023
6024 --Transaction Account
6025 , p_source_1 IN NUMBER
6026 --Journal Line Type
6027 , p_source_2 IN VARCHAR2
6028 --Entered Amount
6029 , p_source_3 IN NUMBER
6030 --First Distribution Identifier
6031 , p_source_5 IN NUMBER
6032 --Distribution Type
6033 , p_source_6 IN VARCHAR2
6034 --Currency Code
6035 , p_source_7 IN VARCHAR2
6036 --Currency Conversion Date
6037 , p_source_8 IN DATE
6038 --Currency Conversion Rate
6039 , p_source_9 IN NUMBER
6040 --Currency Conversion Type
6041 , p_source_10 IN VARCHAR2
6042 --Accounted Amount
6043 , p_source_11 IN NUMBER
6044 )
6045 IS
6046
6047 l_component_type VARCHAR2(80);
6048 l_component_code VARCHAR2(30);
6049 l_component_type_code VARCHAR2(1);
6050 l_component_appl_id INTEGER;
6051 l_amb_context_code VARCHAR2(30);
6052 l_entity_code VARCHAR2(30);
6053 l_event_class_code VARCHAR2(30);
6054 l_ae_header_id NUMBER;
6055 l_event_type_code VARCHAR2(30);
6056 l_line_definition_code VARCHAR2(30);
6057 l_line_definition_owner_code VARCHAR2(1);
6058 --
6059 -- adr variables
6060 l_segment VARCHAR2(30);
6061 l_ccid NUMBER;
6062 l_adr_transaction_coa_id NUMBER;
6063 l_adr_accounting_coa_id NUMBER;
6064 l_adr_flexfield_segment_code VARCHAR2(30);
6065 l_adr_flex_value_set_id NUMBER;
6066 l_adr_value_type_code VARCHAR2(30);
6067 l_adr_value_combination_id NUMBER;
6068 l_adr_value_segment_code VARCHAR2(30);
6069
6070 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
6071 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
6072 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
6073 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
6074
6075 -- 4262811 Variables ------------------------------------------------------------------------------------------
6076 l_entered_amt_idx NUMBER;
6077 l_accted_amt_idx NUMBER;
6078 l_acc_rev_flag VARCHAR2(1);
6079 l_accrual_line_num NUMBER;
6080 l_tmp_amt NUMBER;
6081 l_acc_rev_natural_side_code VARCHAR2(1);
6082
6083 l_num_entries NUMBER;
6084 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
6085 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
6086 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
6090
6087 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
6088 l_recog_line_1 NUMBER;
6089 l_recog_line_2 NUMBER;
6091 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
6092 l_bflow_applied_to_amt NUMBER; -- 5132302
6093 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
6094
6095 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6096
6097 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
6098 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
6099
6100 ---------------------------------------------------------------------------------------------------------------
6101
6102
6103 --
6104 -- bulk performance
6105 --
6106 l_balance_type_code VARCHAR2(1);
6107 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
6108 l_log_module VARCHAR2(240);
6109
6110 --
6111 -- Upgrade strategy
6112 --
6113 l_actual_upg_option VARCHAR2(1);
6114 l_enc_upg_option VARCHAR2(1);
6115
6116 --
6117 BEGIN
6118 --
6119 IF g_log_enabled THEN
6120 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
6121 END IF;
6122 --
6123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6124
6125 trace
6126 (p_msg => 'BEGIN of AcctLineType_44'
6127 ,p_level => C_LEVEL_PROCEDURE
6128 ,p_module => l_log_module);
6129
6130 END IF;
6131 --
6132 l_component_type := 'AMB_JLT';
6133 l_component_code := 'AAC';
6134 l_component_type_code := 'S';
6135 l_component_appl_id := 555;
6136 l_amb_context_code := 'DEFAULT';
6137 l_entity_code := 'PURCHASING';
6138 l_event_class_code := 'DELIVER';
6139 l_event_type_code := 'INT_REQ_RECEIPT_ADJ';
6140 l_line_definition_owner_code := 'S';
6141 l_line_definition_code := 'INT_REQ_RCPT_ADJ';
6142 --
6143 l_balance_type_code := 'A';
6144 l_segment := NULL;
6145 l_ccid := NULL;
6146 l_adr_transaction_coa_id := NULL;
6147 l_adr_accounting_coa_id := NULL;
6148 l_adr_flexfield_segment_code := NULL;
6149 l_adr_flex_value_set_id := NULL;
6150 l_adr_value_type_code := NULL;
6151 l_adr_value_combination_id := NULL;
6152 l_adr_value_segment_code := NULL;
6153
6154 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
6155 l_bflow_class_code := ''; -- 4219869 Business Flow
6156 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
6157 l_budgetary_control_flag := 'N';
6158
6159 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6160 l_bflow_applied_to_amt := NULL; -- 5132302
6161 l_entered_amt_idx := NULL; -- 4262811
6162 l_accted_amt_idx := NULL; -- 4262811
6163 l_acc_rev_flag := NULL; -- 4262811
6164 l_accrual_line_num := NULL; -- 4262811
6165 l_tmp_amt := NULL; -- 4262811
6166 --
6167
6168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6169 l_balance_type_code <> 'B' THEN
6170 IF NVL(p_source_2,'
6171 ') = 'AAC'
6172 THEN
6173
6174 --
6175 XLA_AE_LINES_PKG.SetNewLine;
6176
6177 p_balance_type_code := l_balance_type_code;
6178 -- set the flag so later we will know whether the gain loss line needs to be created
6179
6180 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6181 p_actual_flag :='A';
6182 END IF;
6183
6184 --
6185 -- bulk performance
6186 --
6187 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6188 p_header_num => 0); -- 4262811
6189 --
6190 -- set accounting line options
6191 --
6192 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6193 p_natural_side_code => 'D'
6194 , p_gain_or_loss_flag => 'N'
6195 , p_gl_transfer_mode_code => 'D'
6196 , p_acct_entry_type_code => 'A'
6197 , p_switch_side_flag => 'Y'
6198 , p_merge_duplicate_code => 'W'
6199 );
6200 --
6201 l_acc_rev_natural_side_code := 'C'; -- 4262811
6202 --
6203 --
6204 -- set accounting line type info
6205 --
6206 xla_ae_lines_pkg.SetAcctLineType
6207 (p_component_type => l_component_type
6208 ,p_event_type_code => l_event_type_code
6209 ,p_line_definition_owner_code => l_line_definition_owner_code
6210 ,p_line_definition_code => l_line_definition_code
6211 ,p_accounting_line_code => l_component_code
6212 ,p_accounting_line_type_code => l_component_type_code
6213 ,p_accounting_line_appl_id => l_component_appl_id
6214 ,p_amb_context_code => l_amb_context_code
6215 ,p_entity_code => l_entity_code
6216 ,p_event_class_code => l_event_class_code);
6217 --
6218 -- set accounting class
6219 --
6220 xla_ae_lines_pkg.SetAcctClass(
6224
6221 p_accounting_class_code => 'AAC'
6222 , p_ae_header_id => l_ae_header_id
6223 );
6225 --
6226 -- set rounding class
6227 --
6228 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6229 'AAC';
6230
6231 --
6232 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6233 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6234 --
6235 -- bulk performance
6236 --
6237 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6238
6239 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6240 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6241
6242 -- 4955764
6243 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6244 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6245
6246 -- 4458381 Public Sector Enh
6247
6248 --
6249 -- set accounting attributes for the line type
6250 --
6251 l_entered_amt_idx := 3;
6252 l_accted_amt_idx := 8;
6253 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6254 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6255 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
6256 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6257 l_rec_acct_attrs.array_char_value(2) := p_source_6;
6258 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6259 l_rec_acct_attrs.array_num_value(3) := p_source_3;
6260 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6261 l_rec_acct_attrs.array_char_value(4) := p_source_7;
6262 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6263 l_rec_acct_attrs.array_date_value(5) := p_source_8;
6264 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6265 l_rec_acct_attrs.array_num_value(6) := p_source_9;
6266 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6267 l_rec_acct_attrs.array_char_value(7) := p_source_10;
6268 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6269 l_rec_acct_attrs.array_num_value(8) := p_source_11;
6270
6271 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6272 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6273
6274 ---------------------------------------------------------------------------------------------------------------
6275 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6276 ---------------------------------------------------------------------------------------------------------------
6277 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6278
6279 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6280 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6281
6282 IF xla_accounting_cache_pkg.GetValueChar
6283 (p_source_code => 'LEDGER_CATEGORY_CODE'
6284 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6285 AND l_bflow_method_code = 'PRIOR_ENTRY'
6286 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6287 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6288 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6289 )
6290 THEN
6291 xla_ae_lines_pkg.BflowUpgEntry
6292 (p_business_method_code => l_bflow_method_code
6293 ,p_business_class_code => l_bflow_class_code
6294 ,p_balance_type => l_balance_type_code);
6295 ELSE
6296 NULL;
6297 -- No business flow processing for business flow method of NONE.
6298 END IF;
6299
6300 --
6301 -- call analytical criteria
6302 --
6303
6304 --
6305 -- call description
6306 --
6307 -- No description or it is inherited.
6308 --
6309 -- call ADRs
6310 -- Bug 4922099
6311 --
6312 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6313 (NVL(l_actual_upg_option, 'N') = 'O') OR
6314 (NVL(l_enc_upg_option, 'N') = 'O')
6315 )
6316 THEN
6317 NULL;
6318 --
6319 --
6320
6321 l_ccid := AcctDerRule_1(
6322 p_application_id => p_application_id
6323 , p_ae_header_id => l_ae_header_id
6324 , p_source_1 => p_source_1
6325 , p_source_2 => p_source_2
6326 , x_transaction_coa_id => l_adr_transaction_coa_id
6327 , x_accounting_coa_id => l_adr_accounting_coa_id
6328 , x_value_type_code => l_adr_value_type_code
6329 , p_side => 'NA'
6330 );
6331
6332 xla_ae_lines_pkg.set_ccid(
6333 p_code_combination_id => l_ccid
6334 , p_value_type_code => l_adr_value_type_code
6335 , p_transaction_coa_id => l_adr_transaction_coa_id
6336 , p_accounting_coa_id => l_adr_accounting_coa_id
6337 , p_adr_code => 'AAC'
6338 , p_adr_type_code => 'S'
6342 , p_component_appl_id => l_component_appl_id
6339 , p_component_type => l_component_type
6340 , p_component_code => l_component_code
6341 , p_component_type_code => l_component_type_code
6343 , p_amb_context_code => l_amb_context_code
6344 , p_side => 'NA'
6345 );
6346
6347
6348 --
6349 --
6350 END IF;
6351 --
6352 -- Bug 4922099
6353 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6354 (NVL(l_enc_upg_option, 'N') = 'O')
6355 ) AND
6356 (l_bflow_method_code = 'PRIOR_ENTRY')
6357 )
6358 THEN
6359 IF
6360 --
6361 1 = 2
6362 --
6363 THEN
6364 xla_accounting_err_pkg.build_message
6365 (p_appli_s_name => 'XLA'
6366 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6367 ,p_token_1 => 'LINE_NUMBER'
6368 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
6369 ,p_token_2 => 'LINE_TYPE_NAME'
6370 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
6371 l_component_type
6372 ,l_component_code
6373 ,l_component_type_code
6374 ,l_component_appl_id
6375 ,l_amb_context_code
6376 ,l_entity_code
6377 ,l_event_class_code
6378 )
6379 ,p_token_3 => 'OWNER'
6380 ,p_value_3 => xla_lookups_pkg.get_meaning(
6381 p_lookup_type => 'XLA_OWNER_TYPE'
6382 ,p_lookup_code => l_component_type_code
6383 )
6384 ,p_token_4 => 'PRODUCT_NAME'
6385 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6386 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6387 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6388 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6389 ,p_ae_header_id => NULL
6390 );
6391
6392 IF (C_LEVEL_ERROR>= g_log_level) THEN
6393 trace
6394 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6395 ,p_level => C_LEVEL_ERROR
6396 ,p_module => l_log_module);
6397 END IF;
6398 END IF;
6399 END IF;
6400 --
6401 --
6402 ------------------------------------------------------------------------------------------------
6403 -- 4219869 Business Flow
6404 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6405 -- Prior Entry. Currently, the following code is always generated.
6406 ------------------------------------------------------------------------------------------------
6407 XLA_AE_LINES_PKG.ValidateCurrentLine;
6408
6409 ------------------------------------------------------------------------------------
6410 -- 4219869 Business Flow
6411 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6412 ------------------------------------------------------------------------------------
6413 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6414
6415 ----------------------------------------------------------------------------------
6416 -- 4219869 Business Flow
6417 -- Update journal entry status -- Need to generate this within IF <condition>
6418 ----------------------------------------------------------------------------------
6419 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6420 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6421 ,p_balance_type_code => l_balance_type_code
6422 );
6423
6424 -------------------------------------------------------------------------------------------
6425 -- 4262811 - Generate the Accrual Reversal lines
6426 -------------------------------------------------------------------------------------------
6427 BEGIN
6428 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6429 (g_array_event(p_event_id).array_value_num('header_index'));
6430 IF l_acc_rev_flag IS NULL THEN
6431 l_acc_rev_flag := 'N';
6432 END IF;
6433 EXCEPTION
6434 WHEN OTHERS THEN
6435 l_acc_rev_flag := 'N';
6436 END;
6440 -- 4645092 ------------------------------------------------------------------------------
6437 --
6438 IF (l_acc_rev_flag = 'Y') THEN
6439
6441 -- To allow MPA report to determine if it should generate report process
6442 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6443 ------------------------------------------------------------------------------------------
6444
6445 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6446 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6447 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
6448 -- call ADRs
6449 -- Bug 4922099
6450 --
6451 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6452 (NVL(l_actual_upg_option, 'N') = 'O') OR
6453 (NVL(l_enc_upg_option, 'N') = 'O')
6454 )
6455 THEN
6456 NULL;
6457 --
6458 --
6459
6460 l_ccid := AcctDerRule_1(
6461 p_application_id => p_application_id
6462 , p_ae_header_id => l_ae_header_id
6463 , p_source_1 => p_source_1
6464 , p_source_2 => p_source_2
6465 , x_transaction_coa_id => l_adr_transaction_coa_id
6466 , x_accounting_coa_id => l_adr_accounting_coa_id
6467 , x_value_type_code => l_adr_value_type_code
6468 , p_side => 'NA'
6469 );
6470
6471 xla_ae_lines_pkg.set_ccid(
6472 p_code_combination_id => l_ccid
6473 , p_value_type_code => l_adr_value_type_code
6474 , p_transaction_coa_id => l_adr_transaction_coa_id
6475 , p_accounting_coa_id => l_adr_accounting_coa_id
6476 , p_adr_code => 'AAC'
6477 , p_adr_type_code => 'S'
6478 , p_component_type => l_component_type
6479 , p_component_code => l_component_code
6480 , p_component_type_code => l_component_type_code
6481 , p_component_appl_id => l_component_appl_id
6482 , p_amb_context_code => l_amb_context_code
6483 , p_side => 'NA'
6484 );
6485
6486
6487 --
6488 --
6489 END IF;
6490
6491 --
6492 -- Update the line information that should be overwritten
6493 --
6494 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6495 p_header_num => 1);
6496 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
6497
6498 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6499
6500 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
6501 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6502 END IF;
6503
6504 --
6505 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6506 --
6507 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6508 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
6509 ELSE
6510 ---------------------------------------------------------------------------------------------------
6511 -- 4262811a Switch Sign
6512 ---------------------------------------------------------------------------------------------------
6513 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
6514 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6515 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6516 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6517 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6518 -- 5132302
6519 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6520 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6521
6522 END IF;
6523
6524 -- 4955764
6525 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6526 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6527
6528
6529 XLA_AE_LINES_PKG.ValidateCurrentLine;
6530 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6531
6532 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6533 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6534 ,p_balance_type_code => l_balance_type_code);
6535
6536 END IF;
6537
6538 -----------------------------------------------------------------------------------------
6539 -- 4262811 Multiperiod Accounting
6540 -----------------------------------------------------------------------------------------
6541 -- No MPA option is assigned.
6542
6543
6544 END IF;
6545 END IF;
6546 --
6547
6548 --
6549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6550 trace
6551 (p_msg => 'END of AcctLineType_44'
6552 ,p_level => C_LEVEL_PROCEDURE
6553 ,p_module => l_log_module);
6554 END IF;
6558 RAISE;
6555 --
6556 EXCEPTION
6557 WHEN xla_exceptions_pkg.application_exception THEN
6559 WHEN OTHERS THEN
6560 xla_exceptions_pkg.raise_message
6561 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_44');
6562 END AcctLineType_44;
6563 --
6564
6565 ---------------------------------------
6566 --
6567 -- PRIVATE FUNCTION
6568 -- AcctLineType_45
6569 --
6570 ---------------------------------------
6571 PROCEDURE AcctLineType_45 (
6572 p_application_id IN NUMBER
6573 ,p_event_id IN NUMBER
6574 ,p_calculate_acctd_flag IN VARCHAR2
6575 ,p_calculate_g_l_flag IN VARCHAR2
6576 ,p_actual_flag IN OUT VARCHAR2
6577 ,p_balance_type_code OUT VARCHAR2
6578 ,p_gain_or_loss_ref OUT VARCHAR2
6579
6580 --Transaction Account
6581 , p_source_1 IN NUMBER
6582 --Journal Line Type
6583 , p_source_2 IN VARCHAR2
6584 --Entered Amount
6585 , p_source_3 IN NUMBER
6586 --First Distribution Identifier
6587 , p_source_5 IN NUMBER
6588 --Distribution Type
6589 , p_source_6 IN VARCHAR2
6590 --Currency Code
6591 , p_source_7 IN VARCHAR2
6592 --Currency Conversion Date
6593 , p_source_8 IN DATE
6594 --Currency Conversion Rate
6595 , p_source_9 IN NUMBER
6596 --Currency Conversion Type
6597 , p_source_10 IN VARCHAR2
6598 --Accounted Amount
6599 , p_source_11 IN NUMBER
6600 )
6601 IS
6602
6603 l_component_type VARCHAR2(80);
6604 l_component_code VARCHAR2(30);
6605 l_component_type_code VARCHAR2(1);
6606 l_component_appl_id INTEGER;
6607 l_amb_context_code VARCHAR2(30);
6608 l_entity_code VARCHAR2(30);
6609 l_event_class_code VARCHAR2(30);
6610 l_ae_header_id NUMBER;
6611 l_event_type_code VARCHAR2(30);
6612 l_line_definition_code VARCHAR2(30);
6613 l_line_definition_owner_code VARCHAR2(1);
6614 --
6615 -- adr variables
6616 l_segment VARCHAR2(30);
6617 l_ccid NUMBER;
6618 l_adr_transaction_coa_id NUMBER;
6619 l_adr_accounting_coa_id NUMBER;
6620 l_adr_flexfield_segment_code VARCHAR2(30);
6621 l_adr_flex_value_set_id NUMBER;
6622 l_adr_value_type_code VARCHAR2(30);
6623 l_adr_value_combination_id NUMBER;
6624 l_adr_value_segment_code VARCHAR2(30);
6625
6626 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
6627 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
6628 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
6629 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
6630
6631 -- 4262811 Variables ------------------------------------------------------------------------------------------
6632 l_entered_amt_idx NUMBER;
6633 l_accted_amt_idx NUMBER;
6634 l_acc_rev_flag VARCHAR2(1);
6635 l_accrual_line_num NUMBER;
6636 l_tmp_amt NUMBER;
6637 l_acc_rev_natural_side_code VARCHAR2(1);
6638
6639 l_num_entries NUMBER;
6640 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
6641 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
6642 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
6643 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
6644 l_recog_line_1 NUMBER;
6645 l_recog_line_2 NUMBER;
6646
6647 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
6648 l_bflow_applied_to_amt NUMBER; -- 5132302
6649 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
6650
6651 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6652
6653 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
6654 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
6655
6656 ---------------------------------------------------------------------------------------------------------------
6657
6658
6659 --
6660 -- bulk performance
6661 --
6662 l_balance_type_code VARCHAR2(1);
6663 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
6664 l_log_module VARCHAR2(240);
6665
6666 --
6667 -- Upgrade strategy
6668 --
6669 l_actual_upg_option VARCHAR2(1);
6670 l_enc_upg_option VARCHAR2(1);
6671
6672 --
6673 BEGIN
6674 --
6675 IF g_log_enabled THEN
6676 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
6677 END IF;
6678 --
6679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6680
6681 trace
6682 (p_msg => 'BEGIN of AcctLineType_45'
6683 ,p_level => C_LEVEL_PROCEDURE
6684 ,p_module => l_log_module);
6685
6686 END IF;
6687 --
6688 l_component_type := 'AMB_JLT';
6689 l_component_code := 'AAC';
6690 l_component_type_code := 'S';
6691 l_component_appl_id := 555;
6692 l_amb_context_code := 'DEFAULT';
6693 l_entity_code := 'PURCHASING';
6694 l_event_class_code := 'DELIVER';
6698 --
6695 l_event_type_code := 'PO_RECEIPT_ADJ';
6696 l_line_definition_owner_code := 'S';
6697 l_line_definition_code := 'PO_RECEIPT_ADJ';
6699 l_balance_type_code := 'A';
6700 l_segment := NULL;
6701 l_ccid := NULL;
6702 l_adr_transaction_coa_id := NULL;
6703 l_adr_accounting_coa_id := NULL;
6704 l_adr_flexfield_segment_code := NULL;
6705 l_adr_flex_value_set_id := NULL;
6706 l_adr_value_type_code := NULL;
6707 l_adr_value_combination_id := NULL;
6708 l_adr_value_segment_code := NULL;
6709
6710 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
6711 l_bflow_class_code := ''; -- 4219869 Business Flow
6712 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
6713 l_budgetary_control_flag := 'N';
6714
6715 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6716 l_bflow_applied_to_amt := NULL; -- 5132302
6717 l_entered_amt_idx := NULL; -- 4262811
6718 l_accted_amt_idx := NULL; -- 4262811
6719 l_acc_rev_flag := NULL; -- 4262811
6720 l_accrual_line_num := NULL; -- 4262811
6721 l_tmp_amt := NULL; -- 4262811
6722 --
6723
6724 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6725 l_balance_type_code <> 'B' THEN
6726 IF NVL(p_source_2,'
6727 ') = 'AAC'
6728 THEN
6729
6730 --
6731 XLA_AE_LINES_PKG.SetNewLine;
6732
6733 p_balance_type_code := l_balance_type_code;
6734 -- set the flag so later we will know whether the gain loss line needs to be created
6735
6736 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6737 p_actual_flag :='A';
6738 END IF;
6739
6740 --
6741 -- bulk performance
6742 --
6743 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6744 p_header_num => 0); -- 4262811
6745 --
6746 -- set accounting line options
6747 --
6748 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6749 p_natural_side_code => 'D'
6750 , p_gain_or_loss_flag => 'N'
6751 , p_gl_transfer_mode_code => 'D'
6752 , p_acct_entry_type_code => 'A'
6753 , p_switch_side_flag => 'Y'
6754 , p_merge_duplicate_code => 'W'
6755 );
6756 --
6757 l_acc_rev_natural_side_code := 'C'; -- 4262811
6758 --
6759 --
6760 -- set accounting line type info
6761 --
6762 xla_ae_lines_pkg.SetAcctLineType
6763 (p_component_type => l_component_type
6764 ,p_event_type_code => l_event_type_code
6765 ,p_line_definition_owner_code => l_line_definition_owner_code
6766 ,p_line_definition_code => l_line_definition_code
6767 ,p_accounting_line_code => l_component_code
6768 ,p_accounting_line_type_code => l_component_type_code
6769 ,p_accounting_line_appl_id => l_component_appl_id
6770 ,p_amb_context_code => l_amb_context_code
6771 ,p_entity_code => l_entity_code
6772 ,p_event_class_code => l_event_class_code);
6773 --
6774 -- set accounting class
6775 --
6776 xla_ae_lines_pkg.SetAcctClass(
6777 p_accounting_class_code => 'AAC'
6778 , p_ae_header_id => l_ae_header_id
6779 );
6780
6781 --
6782 -- set rounding class
6783 --
6784 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6785 'AAC';
6786
6787 --
6788 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6789 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6790 --
6791 -- bulk performance
6792 --
6793 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6794
6795 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6796 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6797
6798 -- 4955764
6799 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6800 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6801
6802 -- 4458381 Public Sector Enh
6803
6804 --
6805 -- set accounting attributes for the line type
6806 --
6807 l_entered_amt_idx := 3;
6808 l_accted_amt_idx := 8;
6809 l_bflow_applied_to_amt_idx := NULL; -- 5132302
6810 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6811 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
6812 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6813 l_rec_acct_attrs.array_char_value(2) := p_source_6;
6814 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6815 l_rec_acct_attrs.array_num_value(3) := p_source_3;
6816 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6817 l_rec_acct_attrs.array_char_value(4) := p_source_7;
6818 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6822 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6819 l_rec_acct_attrs.array_date_value(5) := p_source_8;
6820 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6821 l_rec_acct_attrs.array_num_value(6) := p_source_9;
6823 l_rec_acct_attrs.array_char_value(7) := p_source_10;
6824 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6825 l_rec_acct_attrs.array_num_value(8) := p_source_11;
6826
6827 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6828 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6829
6830 ---------------------------------------------------------------------------------------------------------------
6831 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6832 ---------------------------------------------------------------------------------------------------------------
6833 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6834
6835 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6836 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6837
6838 IF xla_accounting_cache_pkg.GetValueChar
6839 (p_source_code => 'LEDGER_CATEGORY_CODE'
6840 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6841 AND l_bflow_method_code = 'PRIOR_ENTRY'
6842 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6843 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6844 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6845 )
6846 THEN
6847 xla_ae_lines_pkg.BflowUpgEntry
6848 (p_business_method_code => l_bflow_method_code
6849 ,p_business_class_code => l_bflow_class_code
6850 ,p_balance_type => l_balance_type_code);
6851 ELSE
6852 NULL;
6853 -- No business flow processing for business flow method of NONE.
6854 END IF;
6855
6856 --
6857 -- call analytical criteria
6858 --
6859
6860 --
6861 -- call description
6862 --
6863 -- No description or it is inherited.
6864 --
6865 -- call ADRs
6866 -- Bug 4922099
6867 --
6868 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6869 (NVL(l_actual_upg_option, 'N') = 'O') OR
6870 (NVL(l_enc_upg_option, 'N') = 'O')
6871 )
6872 THEN
6873 NULL;
6874 --
6875 --
6876
6877 l_ccid := AcctDerRule_1(
6878 p_application_id => p_application_id
6879 , p_ae_header_id => l_ae_header_id
6880 , p_source_1 => p_source_1
6881 , p_source_2 => p_source_2
6882 , x_transaction_coa_id => l_adr_transaction_coa_id
6883 , x_accounting_coa_id => l_adr_accounting_coa_id
6884 , x_value_type_code => l_adr_value_type_code
6885 , p_side => 'NA'
6886 );
6887
6888 xla_ae_lines_pkg.set_ccid(
6889 p_code_combination_id => l_ccid
6890 , p_value_type_code => l_adr_value_type_code
6891 , p_transaction_coa_id => l_adr_transaction_coa_id
6892 , p_accounting_coa_id => l_adr_accounting_coa_id
6893 , p_adr_code => 'AAC'
6894 , p_adr_type_code => 'S'
6895 , p_component_type => l_component_type
6896 , p_component_code => l_component_code
6897 , p_component_type_code => l_component_type_code
6898 , p_component_appl_id => l_component_appl_id
6899 , p_amb_context_code => l_amb_context_code
6900 , p_side => 'NA'
6901 );
6902
6903
6904 --
6905 --
6906 END IF;
6907 --
6908 -- Bug 4922099
6909 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6910 (NVL(l_enc_upg_option, 'N') = 'O')
6911 ) AND
6912 (l_bflow_method_code = 'PRIOR_ENTRY')
6913 )
6914 THEN
6915 IF
6916 --
6917 1 = 2
6918 --
6919 THEN
6920 xla_accounting_err_pkg.build_message
6921 (p_appli_s_name => 'XLA'
6922 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6923 ,p_token_1 => 'LINE_NUMBER'
6924 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
6925 ,p_token_2 => 'LINE_TYPE_NAME'
6926 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
6927 l_component_type
6928 ,l_component_code
6929 ,l_component_type_code
6930 ,l_component_appl_id
6931 ,l_amb_context_code
6935 ,p_token_3 => 'OWNER'
6932 ,l_entity_code
6933 ,l_event_class_code
6934 )
6936 ,p_value_3 => xla_lookups_pkg.get_meaning(
6937 p_lookup_type => 'XLA_OWNER_TYPE'
6938 ,p_lookup_code => l_component_type_code
6939 )
6940 ,p_token_4 => 'PRODUCT_NAME'
6941 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6942 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6943 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6944 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6945 ,p_ae_header_id => NULL
6946 );
6947
6948 IF (C_LEVEL_ERROR>= g_log_level) THEN
6949 trace
6950 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6951 ,p_level => C_LEVEL_ERROR
6952 ,p_module => l_log_module);
6953 END IF;
6954 END IF;
6955 END IF;
6956 --
6957 --
6958 ------------------------------------------------------------------------------------------------
6959 -- 4219869 Business Flow
6960 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6961 -- Prior Entry. Currently, the following code is always generated.
6962 ------------------------------------------------------------------------------------------------
6963 XLA_AE_LINES_PKG.ValidateCurrentLine;
6964
6965 ------------------------------------------------------------------------------------
6966 -- 4219869 Business Flow
6967 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6968 ------------------------------------------------------------------------------------
6969 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6970
6971 ----------------------------------------------------------------------------------
6972 -- 4219869 Business Flow
6973 -- Update journal entry status -- Need to generate this within IF <condition>
6974 ----------------------------------------------------------------------------------
6975 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6976 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6977 ,p_balance_type_code => l_balance_type_code
6978 );
6979
6980 -------------------------------------------------------------------------------------------
6981 -- 4262811 - Generate the Accrual Reversal lines
6982 -------------------------------------------------------------------------------------------
6983 BEGIN
6984 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6985 (g_array_event(p_event_id).array_value_num('header_index'));
6986 IF l_acc_rev_flag IS NULL THEN
6987 l_acc_rev_flag := 'N';
6988 END IF;
6989 EXCEPTION
6990 WHEN OTHERS THEN
6991 l_acc_rev_flag := 'N';
6992 END;
6993 --
6994 IF (l_acc_rev_flag = 'Y') THEN
6995
6996 -- 4645092 ------------------------------------------------------------------------------
6997 -- To allow MPA report to determine if it should generate report process
6998 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6999 ------------------------------------------------------------------------------------------
7000
7001 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7002 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7003 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
7004 -- call ADRs
7005 -- Bug 4922099
7006 --
7007 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7008 (NVL(l_actual_upg_option, 'N') = 'O') OR
7009 (NVL(l_enc_upg_option, 'N') = 'O')
7010 )
7011 THEN
7012 NULL;
7013 --
7014 --
7015
7016 l_ccid := AcctDerRule_1(
7017 p_application_id => p_application_id
7018 , p_ae_header_id => l_ae_header_id
7019 , p_source_1 => p_source_1
7020 , p_source_2 => p_source_2
7021 , x_transaction_coa_id => l_adr_transaction_coa_id
7022 , x_accounting_coa_id => l_adr_accounting_coa_id
7023 , x_value_type_code => l_adr_value_type_code
7024 , p_side => 'NA'
7025 );
7026
7027 xla_ae_lines_pkg.set_ccid(
7028 p_code_combination_id => l_ccid
7029 , p_value_type_code => l_adr_value_type_code
7030 , p_transaction_coa_id => l_adr_transaction_coa_id
7031 , p_accounting_coa_id => l_adr_accounting_coa_id
7032 , p_adr_code => 'AAC'
7033 , p_adr_type_code => 'S'
7034 , p_component_type => l_component_type
7038 , p_amb_context_code => l_amb_context_code
7035 , p_component_code => l_component_code
7036 , p_component_type_code => l_component_type_code
7037 , p_component_appl_id => l_component_appl_id
7039 , p_side => 'NA'
7040 );
7041
7042
7043 --
7044 --
7045 END IF;
7046
7047 --
7048 -- Update the line information that should be overwritten
7049 --
7050 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7051 p_header_num => 1);
7052 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7053
7054 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7055
7056 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7057 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7058 END IF;
7059
7060 --
7061 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7062 --
7063 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7064 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
7065 ELSE
7066 ---------------------------------------------------------------------------------------------------
7067 -- 4262811a Switch Sign
7068 ---------------------------------------------------------------------------------------------------
7069 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
7070 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7071 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7072 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7073 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7074 -- 5132302
7075 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7076 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7077
7078 END IF;
7079
7080 -- 4955764
7081 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7082 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7083
7084
7085 XLA_AE_LINES_PKG.ValidateCurrentLine;
7086 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7087
7088 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7089 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7090 ,p_balance_type_code => l_balance_type_code);
7091
7092 END IF;
7093
7094 -----------------------------------------------------------------------------------------
7095 -- 4262811 Multiperiod Accounting
7096 -----------------------------------------------------------------------------------------
7097 -- No MPA option is assigned.
7098
7099
7100 END IF;
7101 END IF;
7102 --
7103
7104 --
7105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7106 trace
7107 (p_msg => 'END of AcctLineType_45'
7108 ,p_level => C_LEVEL_PROCEDURE
7109 ,p_module => l_log_module);
7110 END IF;
7111 --
7112 EXCEPTION
7113 WHEN xla_exceptions_pkg.application_exception THEN
7114 RAISE;
7115 WHEN OTHERS THEN
7116 xla_exceptions_pkg.raise_message
7117 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_45');
7118 END AcctLineType_45;
7119 --
7120
7121 ---------------------------------------
7122 --
7123 -- PRIVATE FUNCTION
7124 -- AcctLineType_46
7125 --
7126 ---------------------------------------
7127 PROCEDURE AcctLineType_46 (
7128 p_application_id IN NUMBER
7129 ,p_event_id IN NUMBER
7130 ,p_calculate_acctd_flag IN VARCHAR2
7131 ,p_calculate_g_l_flag IN VARCHAR2
7132 ,p_actual_flag IN OUT VARCHAR2
7133 ,p_balance_type_code OUT VARCHAR2
7134 ,p_gain_or_loss_ref OUT VARCHAR2
7135
7136 --Transaction Account
7137 , p_source_1 IN NUMBER
7138 --Journal Line Type
7139 , p_source_2 IN VARCHAR2
7140 --Entered Amount
7141 , p_source_3 IN NUMBER
7142 --First Distribution Identifier
7143 , p_source_5 IN NUMBER
7144 --Distribution Type
7145 , p_source_6 IN VARCHAR2
7146 --Currency Code
7147 , p_source_7 IN VARCHAR2
7148 --Currency Conversion Date
7149 , p_source_8 IN DATE
7150 --Currency Conversion Rate
7151 , p_source_9 IN NUMBER
7152 --Currency Conversion Type
7153 , p_source_10 IN VARCHAR2
7154 --Accounted Amount
7155 , p_source_11 IN NUMBER
7156 )
7157 IS
7158
7159 l_component_type VARCHAR2(80);
7160 l_component_code VARCHAR2(30);
7161 l_component_type_code VARCHAR2(1);
7162 l_component_appl_id INTEGER;
7163 l_amb_context_code VARCHAR2(30);
7167 l_event_type_code VARCHAR2(30);
7164 l_entity_code VARCHAR2(30);
7165 l_event_class_code VARCHAR2(30);
7166 l_ae_header_id NUMBER;
7168 l_line_definition_code VARCHAR2(30);
7169 l_line_definition_owner_code VARCHAR2(1);
7170 --
7171 -- adr variables
7172 l_segment VARCHAR2(30);
7173 l_ccid NUMBER;
7174 l_adr_transaction_coa_id NUMBER;
7175 l_adr_accounting_coa_id NUMBER;
7176 l_adr_flexfield_segment_code VARCHAR2(30);
7177 l_adr_flex_value_set_id NUMBER;
7178 l_adr_value_type_code VARCHAR2(30);
7179 l_adr_value_combination_id NUMBER;
7180 l_adr_value_segment_code VARCHAR2(30);
7181
7182 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7183 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7184 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7185 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7186
7187 -- 4262811 Variables ------------------------------------------------------------------------------------------
7188 l_entered_amt_idx NUMBER;
7189 l_accted_amt_idx NUMBER;
7190 l_acc_rev_flag VARCHAR2(1);
7191 l_accrual_line_num NUMBER;
7192 l_tmp_amt NUMBER;
7193 l_acc_rev_natural_side_code VARCHAR2(1);
7194
7195 l_num_entries NUMBER;
7196 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7197 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7198 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7199 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7200 l_recog_line_1 NUMBER;
7201 l_recog_line_2 NUMBER;
7202
7203 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7204 l_bflow_applied_to_amt NUMBER; -- 5132302
7205 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7206
7207 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7208
7209 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7210 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7211
7212 ---------------------------------------------------------------------------------------------------------------
7213
7214
7215 --
7216 -- bulk performance
7217 --
7218 l_balance_type_code VARCHAR2(1);
7219 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7220 l_log_module VARCHAR2(240);
7221
7222 --
7223 -- Upgrade strategy
7224 --
7225 l_actual_upg_option VARCHAR2(1);
7226 l_enc_upg_option VARCHAR2(1);
7227
7228 --
7229 BEGIN
7230 --
7231 IF g_log_enabled THEN
7232 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
7233 END IF;
7234 --
7235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7236
7237 trace
7238 (p_msg => 'BEGIN of AcctLineType_46'
7239 ,p_level => C_LEVEL_PROCEDURE
7240 ,p_module => l_log_module);
7241
7242 END IF;
7243 --
7244 l_component_type := 'AMB_JLT';
7245 l_component_code := 'AAP';
7246 l_component_type_code := 'S';
7247 l_component_appl_id := 555;
7248 l_amb_context_code := 'DEFAULT';
7249 l_entity_code := 'PURCHASING';
7250 l_event_class_code := 'RECEIVE';
7251 l_event_type_code := 'ADJUST_RECEIVE';
7252 l_line_definition_owner_code := 'S';
7253 l_line_definition_code := 'ADJUST_RECEIVE';
7254 --
7255 l_balance_type_code := 'A';
7256 l_segment := NULL;
7257 l_ccid := NULL;
7258 l_adr_transaction_coa_id := NULL;
7259 l_adr_accounting_coa_id := NULL;
7260 l_adr_flexfield_segment_code := NULL;
7261 l_adr_flex_value_set_id := NULL;
7262 l_adr_value_type_code := NULL;
7263 l_adr_value_combination_id := NULL;
7264 l_adr_value_segment_code := NULL;
7265
7266 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
7267 l_bflow_class_code := ''; -- 4219869 Business Flow
7268 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
7269 l_budgetary_control_flag := 'N';
7270
7271 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7272 l_bflow_applied_to_amt := NULL; -- 5132302
7273 l_entered_amt_idx := NULL; -- 4262811
7274 l_accted_amt_idx := NULL; -- 4262811
7275 l_acc_rev_flag := NULL; -- 4262811
7276 l_accrual_line_num := NULL; -- 4262811
7277 l_tmp_amt := NULL; -- 4262811
7278 --
7279
7280 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7281 l_balance_type_code <> 'B' THEN
7282 IF NVL(p_source_2,'
7283 ') = 'AAP'
7284 THEN
7285
7286 --
7287 XLA_AE_LINES_PKG.SetNewLine;
7288
7289 p_balance_type_code := l_balance_type_code;
7290 -- set the flag so later we will know whether the gain loss line needs to be created
7291
7292 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7296 --
7293 p_actual_flag :='A';
7294 END IF;
7295
7297 -- bulk performance
7298 --
7299 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7300 p_header_num => 0); -- 4262811
7301 --
7302 -- set accounting line options
7303 --
7304 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7305 p_natural_side_code => 'D'
7306 , p_gain_or_loss_flag => 'N'
7307 , p_gl_transfer_mode_code => 'D'
7308 , p_acct_entry_type_code => 'A'
7309 , p_switch_side_flag => 'Y'
7310 , p_merge_duplicate_code => 'W'
7311 );
7312 --
7313 l_acc_rev_natural_side_code := 'C'; -- 4262811
7314 --
7315 --
7316 -- set accounting line type info
7317 --
7318 xla_ae_lines_pkg.SetAcctLineType
7319 (p_component_type => l_component_type
7320 ,p_event_type_code => l_event_type_code
7321 ,p_line_definition_owner_code => l_line_definition_owner_code
7322 ,p_line_definition_code => l_line_definition_code
7323 ,p_accounting_line_code => l_component_code
7324 ,p_accounting_line_type_code => l_component_type_code
7325 ,p_accounting_line_appl_id => l_component_appl_id
7326 ,p_amb_context_code => l_amb_context_code
7327 ,p_entity_code => l_entity_code
7328 ,p_event_class_code => l_event_class_code);
7329 --
7330 -- set accounting class
7331 --
7332 xla_ae_lines_pkg.SetAcctClass(
7333 p_accounting_class_code => 'AAP'
7334 , p_ae_header_id => l_ae_header_id
7335 );
7336
7337 --
7338 -- set rounding class
7339 --
7340 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7341 'AAP';
7342
7343 --
7344 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7345 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7346 --
7347 -- bulk performance
7348 --
7349 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7350
7351 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7352 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7353
7354 -- 4955764
7355 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7356 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7357
7358 -- 4458381 Public Sector Enh
7359
7360 --
7361 -- set accounting attributes for the line type
7362 --
7363 l_entered_amt_idx := 3;
7364 l_accted_amt_idx := 8;
7365 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7366 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7367 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
7368 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7369 l_rec_acct_attrs.array_char_value(2) := p_source_6;
7370 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7371 l_rec_acct_attrs.array_num_value(3) := p_source_3;
7372 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7373 l_rec_acct_attrs.array_char_value(4) := p_source_7;
7374 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7375 l_rec_acct_attrs.array_date_value(5) := p_source_8;
7376 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7377 l_rec_acct_attrs.array_num_value(6) := p_source_9;
7378 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7379 l_rec_acct_attrs.array_char_value(7) := p_source_10;
7380 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7381 l_rec_acct_attrs.array_num_value(8) := p_source_11;
7382
7383 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7384 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7385
7386 ---------------------------------------------------------------------------------------------------------------
7387 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7388 ---------------------------------------------------------------------------------------------------------------
7389 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7390
7391 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7392 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7393
7394 IF xla_accounting_cache_pkg.GetValueChar
7395 (p_source_code => 'LEDGER_CATEGORY_CODE'
7396 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7397 AND l_bflow_method_code = 'PRIOR_ENTRY'
7398 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7399 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7400 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7401 )
7402 THEN
7403 xla_ae_lines_pkg.BflowUpgEntry
7404 (p_business_method_code => l_bflow_method_code
7408 NULL;
7405 ,p_business_class_code => l_bflow_class_code
7406 ,p_balance_type => l_balance_type_code);
7407 ELSE
7409 -- No business flow processing for business flow method of NONE.
7410 END IF;
7411
7412 --
7413 -- call analytical criteria
7414 --
7415
7416 --
7417 -- call description
7418 --
7419 -- No description or it is inherited.
7420 --
7421 -- call ADRs
7422 -- Bug 4922099
7423 --
7424 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7425 (NVL(l_actual_upg_option, 'N') = 'O') OR
7426 (NVL(l_enc_upg_option, 'N') = 'O')
7427 )
7428 THEN
7429 NULL;
7430 --
7431 --
7432
7433 l_ccid := AcctDerRule_2(
7434 p_application_id => p_application_id
7435 , p_ae_header_id => l_ae_header_id
7436 , p_source_1 => p_source_1
7437 , p_source_2 => p_source_2
7438 , x_transaction_coa_id => l_adr_transaction_coa_id
7439 , x_accounting_coa_id => l_adr_accounting_coa_id
7440 , x_value_type_code => l_adr_value_type_code
7441 , p_side => 'NA'
7442 );
7443
7444 xla_ae_lines_pkg.set_ccid(
7445 p_code_combination_id => l_ccid
7446 , p_value_type_code => l_adr_value_type_code
7447 , p_transaction_coa_id => l_adr_transaction_coa_id
7448 , p_accounting_coa_id => l_adr_accounting_coa_id
7449 , p_adr_code => 'AAP'
7450 , p_adr_type_code => 'S'
7451 , p_component_type => l_component_type
7452 , p_component_code => l_component_code
7453 , p_component_type_code => l_component_type_code
7454 , p_component_appl_id => l_component_appl_id
7455 , p_amb_context_code => l_amb_context_code
7456 , p_side => 'NA'
7457 );
7458
7459
7460 --
7461 --
7462 END IF;
7463 --
7464 -- Bug 4922099
7465 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7466 (NVL(l_enc_upg_option, 'N') = 'O')
7467 ) AND
7468 (l_bflow_method_code = 'PRIOR_ENTRY')
7469 )
7470 THEN
7471 IF
7472 --
7473 1 = 2
7474 --
7475 THEN
7476 xla_accounting_err_pkg.build_message
7477 (p_appli_s_name => 'XLA'
7478 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7479 ,p_token_1 => 'LINE_NUMBER'
7480 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7481 ,p_token_2 => 'LINE_TYPE_NAME'
7482 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7483 l_component_type
7484 ,l_component_code
7485 ,l_component_type_code
7486 ,l_component_appl_id
7487 ,l_amb_context_code
7488 ,l_entity_code
7489 ,l_event_class_code
7490 )
7491 ,p_token_3 => 'OWNER'
7492 ,p_value_3 => xla_lookups_pkg.get_meaning(
7493 p_lookup_type => 'XLA_OWNER_TYPE'
7494 ,p_lookup_code => l_component_type_code
7495 )
7496 ,p_token_4 => 'PRODUCT_NAME'
7497 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7498 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7499 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7500 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7501 ,p_ae_header_id => NULL
7502 );
7503
7504 IF (C_LEVEL_ERROR>= g_log_level) THEN
7505 trace
7506 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7507 ,p_level => C_LEVEL_ERROR
7508 ,p_module => l_log_module);
7509 END IF;
7510 END IF;
7511 END IF;
7512 --
7513 --
7514 ------------------------------------------------------------------------------------------------
7515 -- 4219869 Business Flow
7516 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7517 -- Prior Entry. Currently, the following code is always generated.
7521 ------------------------------------------------------------------------------------
7518 ------------------------------------------------------------------------------------------------
7519 XLA_AE_LINES_PKG.ValidateCurrentLine;
7520
7522 -- 4219869 Business Flow
7523 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7524 ------------------------------------------------------------------------------------
7525 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7526
7527 ----------------------------------------------------------------------------------
7528 -- 4219869 Business Flow
7529 -- Update journal entry status -- Need to generate this within IF <condition>
7530 ----------------------------------------------------------------------------------
7531 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7532 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7533 ,p_balance_type_code => l_balance_type_code
7534 );
7535
7536 -------------------------------------------------------------------------------------------
7537 -- 4262811 - Generate the Accrual Reversal lines
7538 -------------------------------------------------------------------------------------------
7539 BEGIN
7540 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7541 (g_array_event(p_event_id).array_value_num('header_index'));
7542 IF l_acc_rev_flag IS NULL THEN
7543 l_acc_rev_flag := 'N';
7544 END IF;
7545 EXCEPTION
7546 WHEN OTHERS THEN
7547 l_acc_rev_flag := 'N';
7548 END;
7549 --
7550 IF (l_acc_rev_flag = 'Y') THEN
7551
7552 -- 4645092 ------------------------------------------------------------------------------
7553 -- To allow MPA report to determine if it should generate report process
7554 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7555 ------------------------------------------------------------------------------------------
7556
7557 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7558 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7559 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
7560 -- call ADRs
7561 -- Bug 4922099
7562 --
7563 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7564 (NVL(l_actual_upg_option, 'N') = 'O') OR
7565 (NVL(l_enc_upg_option, 'N') = 'O')
7566 )
7567 THEN
7568 NULL;
7569 --
7570 --
7571
7572 l_ccid := AcctDerRule_2(
7573 p_application_id => p_application_id
7574 , p_ae_header_id => l_ae_header_id
7575 , p_source_1 => p_source_1
7576 , p_source_2 => p_source_2
7577 , x_transaction_coa_id => l_adr_transaction_coa_id
7578 , x_accounting_coa_id => l_adr_accounting_coa_id
7579 , x_value_type_code => l_adr_value_type_code
7580 , p_side => 'NA'
7581 );
7582
7583 xla_ae_lines_pkg.set_ccid(
7584 p_code_combination_id => l_ccid
7585 , p_value_type_code => l_adr_value_type_code
7586 , p_transaction_coa_id => l_adr_transaction_coa_id
7587 , p_accounting_coa_id => l_adr_accounting_coa_id
7588 , p_adr_code => 'AAP'
7589 , p_adr_type_code => 'S'
7590 , p_component_type => l_component_type
7591 , p_component_code => l_component_code
7592 , p_component_type_code => l_component_type_code
7593 , p_component_appl_id => l_component_appl_id
7594 , p_amb_context_code => l_amb_context_code
7595 , p_side => 'NA'
7596 );
7597
7598
7599 --
7600 --
7601 END IF;
7602
7603 --
7604 -- Update the line information that should be overwritten
7605 --
7606 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7607 p_header_num => 1);
7608 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7609
7610 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7611
7612 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7613 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7614 END IF;
7615
7616 --
7617 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7618 --
7619 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7620 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
7621 ELSE
7622 ---------------------------------------------------------------------------------------------------
7623 -- 4262811a Switch Sign
7624 ---------------------------------------------------------------------------------------------------
7625 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
7626 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7627 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7631 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7628 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7629 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7630 -- 5132302
7632 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7633
7634 END IF;
7635
7636 -- 4955764
7637 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7638 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7639
7640
7641 XLA_AE_LINES_PKG.ValidateCurrentLine;
7642 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7643
7644 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7645 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7646 ,p_balance_type_code => l_balance_type_code);
7647
7648 END IF;
7649
7650 -----------------------------------------------------------------------------------------
7651 -- 4262811 Multiperiod Accounting
7652 -----------------------------------------------------------------------------------------
7653 -- No MPA option is assigned.
7654
7655
7656 END IF;
7657 END IF;
7658 --
7659
7660 --
7661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7662 trace
7663 (p_msg => 'END of AcctLineType_46'
7664 ,p_level => C_LEVEL_PROCEDURE
7665 ,p_module => l_log_module);
7666 END IF;
7667 --
7668 EXCEPTION
7669 WHEN xla_exceptions_pkg.application_exception THEN
7670 RAISE;
7671 WHEN OTHERS THEN
7672 xla_exceptions_pkg.raise_message
7673 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_46');
7674 END AcctLineType_46;
7675 --
7676
7677 ---------------------------------------
7678 --
7679 -- PRIVATE FUNCTION
7680 -- AcctLineType_47
7681 --
7682 ---------------------------------------
7683 PROCEDURE AcctLineType_47 (
7684 p_application_id IN NUMBER
7685 ,p_event_id IN NUMBER
7686 ,p_calculate_acctd_flag IN VARCHAR2
7687 ,p_calculate_g_l_flag IN VARCHAR2
7688 ,p_actual_flag IN OUT VARCHAR2
7689 ,p_balance_type_code OUT VARCHAR2
7690 ,p_gain_or_loss_ref OUT VARCHAR2
7691
7692 --Transaction Account
7693 , p_source_1 IN NUMBER
7694 --Journal Line Type
7695 , p_source_2 IN VARCHAR2
7696 --Entered Amount
7697 , p_source_3 IN NUMBER
7698 --First Distribution Identifier
7699 , p_source_5 IN NUMBER
7700 --Distribution Type
7701 , p_source_6 IN VARCHAR2
7702 --Currency Code
7703 , p_source_7 IN VARCHAR2
7704 --Currency Conversion Date
7705 , p_source_8 IN DATE
7706 --Currency Conversion Rate
7707 , p_source_9 IN NUMBER
7708 --Currency Conversion Type
7709 , p_source_10 IN VARCHAR2
7710 --Accounted Amount
7711 , p_source_11 IN NUMBER
7712 )
7713 IS
7714
7715 l_component_type VARCHAR2(80);
7716 l_component_code VARCHAR2(30);
7717 l_component_type_code VARCHAR2(1);
7718 l_component_appl_id INTEGER;
7719 l_amb_context_code VARCHAR2(30);
7720 l_entity_code VARCHAR2(30);
7721 l_event_class_code VARCHAR2(30);
7722 l_ae_header_id NUMBER;
7723 l_event_type_code VARCHAR2(30);
7724 l_line_definition_code VARCHAR2(30);
7725 l_line_definition_owner_code VARCHAR2(1);
7726 --
7727 -- adr variables
7728 l_segment VARCHAR2(30);
7729 l_ccid NUMBER;
7730 l_adr_transaction_coa_id NUMBER;
7731 l_adr_accounting_coa_id NUMBER;
7732 l_adr_flexfield_segment_code VARCHAR2(30);
7733 l_adr_flex_value_set_id NUMBER;
7734 l_adr_value_type_code VARCHAR2(30);
7735 l_adr_value_combination_id NUMBER;
7736 l_adr_value_segment_code VARCHAR2(30);
7737
7738 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7739 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7740 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7741 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7742
7743 -- 4262811 Variables ------------------------------------------------------------------------------------------
7744 l_entered_amt_idx NUMBER;
7745 l_accted_amt_idx NUMBER;
7746 l_acc_rev_flag VARCHAR2(1);
7747 l_accrual_line_num NUMBER;
7748 l_tmp_amt NUMBER;
7749 l_acc_rev_natural_side_code VARCHAR2(1);
7750
7751 l_num_entries NUMBER;
7752 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7753 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7754 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7755 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7756 l_recog_line_1 NUMBER;
7757 l_recog_line_2 NUMBER;
7758
7759 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7763 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7760 l_bflow_applied_to_amt NUMBER; -- 5132302
7761 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7762
7764
7765 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7766 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7767
7768 ---------------------------------------------------------------------------------------------------------------
7769
7770
7771 --
7772 -- bulk performance
7773 --
7774 l_balance_type_code VARCHAR2(1);
7775 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7776 l_log_module VARCHAR2(240);
7777
7778 --
7779 -- Upgrade strategy
7780 --
7781 l_actual_upg_option VARCHAR2(1);
7782 l_enc_upg_option VARCHAR2(1);
7783
7784 --
7785 BEGIN
7786 --
7787 IF g_log_enabled THEN
7788 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
7789 END IF;
7790 --
7791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7792
7793 trace
7794 (p_msg => 'BEGIN of AcctLineType_47'
7795 ,p_level => C_LEVEL_PROCEDURE
7796 ,p_module => l_log_module);
7797
7798 END IF;
7799 --
7800 l_component_type := 'AMB_JLT';
7801 l_component_code := 'AAP';
7802 l_component_type_code := 'S';
7803 l_component_appl_id := 555;
7804 l_amb_context_code := 'DEFAULT';
7805 l_entity_code := 'PURCHASING';
7806 l_event_class_code := 'RECEIVE';
7807 l_event_type_code := 'RECEIVE';
7808 l_line_definition_owner_code := 'S';
7809 l_line_definition_code := 'RECEIVE';
7810 --
7811 l_balance_type_code := 'A';
7812 l_segment := NULL;
7813 l_ccid := NULL;
7814 l_adr_transaction_coa_id := NULL;
7815 l_adr_accounting_coa_id := NULL;
7816 l_adr_flexfield_segment_code := NULL;
7817 l_adr_flex_value_set_id := NULL;
7818 l_adr_value_type_code := NULL;
7819 l_adr_value_combination_id := NULL;
7820 l_adr_value_segment_code := NULL;
7821
7822 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
7823 l_bflow_class_code := ''; -- 4219869 Business Flow
7824 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
7825 l_budgetary_control_flag := 'N';
7826
7827 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7828 l_bflow_applied_to_amt := NULL; -- 5132302
7829 l_entered_amt_idx := NULL; -- 4262811
7830 l_accted_amt_idx := NULL; -- 4262811
7831 l_acc_rev_flag := NULL; -- 4262811
7832 l_accrual_line_num := NULL; -- 4262811
7833 l_tmp_amt := NULL; -- 4262811
7834 --
7835
7836 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7837 l_balance_type_code <> 'B' THEN
7838 IF NVL(p_source_2,'
7839 ') = 'AAP'
7840 THEN
7841
7842 --
7843 XLA_AE_LINES_PKG.SetNewLine;
7844
7845 p_balance_type_code := l_balance_type_code;
7846 -- set the flag so later we will know whether the gain loss line needs to be created
7847
7848 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7849 p_actual_flag :='A';
7850 END IF;
7851
7852 --
7853 -- bulk performance
7854 --
7855 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7856 p_header_num => 0); -- 4262811
7857 --
7858 -- set accounting line options
7859 --
7860 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7861 p_natural_side_code => 'D'
7862 , p_gain_or_loss_flag => 'N'
7863 , p_gl_transfer_mode_code => 'D'
7864 , p_acct_entry_type_code => 'A'
7865 , p_switch_side_flag => 'Y'
7866 , p_merge_duplicate_code => 'W'
7867 );
7868 --
7869 l_acc_rev_natural_side_code := 'C'; -- 4262811
7870 --
7871 --
7872 -- set accounting line type info
7873 --
7874 xla_ae_lines_pkg.SetAcctLineType
7875 (p_component_type => l_component_type
7876 ,p_event_type_code => l_event_type_code
7877 ,p_line_definition_owner_code => l_line_definition_owner_code
7878 ,p_line_definition_code => l_line_definition_code
7879 ,p_accounting_line_code => l_component_code
7880 ,p_accounting_line_type_code => l_component_type_code
7881 ,p_accounting_line_appl_id => l_component_appl_id
7882 ,p_amb_context_code => l_amb_context_code
7883 ,p_entity_code => l_entity_code
7884 ,p_event_class_code => l_event_class_code);
7885 --
7886 -- set accounting class
7887 --
7888 xla_ae_lines_pkg.SetAcctClass(
7889 p_accounting_class_code => 'AAP'
7890 , p_ae_header_id => l_ae_header_id
7891 );
7892
7893 --
7894 -- set rounding class
7895 --
7899 --
7896 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7897 'AAP';
7898
7900 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7901 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7902 --
7903 -- bulk performance
7904 --
7905 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7906
7907 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7908 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7909
7910 -- 4955764
7911 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7912 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7913
7914 -- 4458381 Public Sector Enh
7915
7916 --
7917 -- set accounting attributes for the line type
7918 --
7919 l_entered_amt_idx := 3;
7920 l_accted_amt_idx := 8;
7921 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7922 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7923 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
7924 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7925 l_rec_acct_attrs.array_char_value(2) := p_source_6;
7926 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7927 l_rec_acct_attrs.array_num_value(3) := p_source_3;
7928 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7929 l_rec_acct_attrs.array_char_value(4) := p_source_7;
7930 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7931 l_rec_acct_attrs.array_date_value(5) := p_source_8;
7932 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7933 l_rec_acct_attrs.array_num_value(6) := p_source_9;
7934 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7935 l_rec_acct_attrs.array_char_value(7) := p_source_10;
7936 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7937 l_rec_acct_attrs.array_num_value(8) := p_source_11;
7938
7939 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7940 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7941
7942 ---------------------------------------------------------------------------------------------------------------
7943 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7944 ---------------------------------------------------------------------------------------------------------------
7945 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7946
7947 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7948 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7949
7950 IF xla_accounting_cache_pkg.GetValueChar
7951 (p_source_code => 'LEDGER_CATEGORY_CODE'
7952 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7953 AND l_bflow_method_code = 'PRIOR_ENTRY'
7954 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7955 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7956 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7957 )
7958 THEN
7959 xla_ae_lines_pkg.BflowUpgEntry
7960 (p_business_method_code => l_bflow_method_code
7961 ,p_business_class_code => l_bflow_class_code
7962 ,p_balance_type => l_balance_type_code);
7963 ELSE
7964 NULL;
7965 -- No business flow processing for business flow method of NONE.
7966 END IF;
7967
7968 --
7969 -- call analytical criteria
7970 --
7971
7972 --
7973 -- call description
7974 --
7975 -- No description or it is inherited.
7976 --
7977 -- call ADRs
7978 -- Bug 4922099
7979 --
7980 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7981 (NVL(l_actual_upg_option, 'N') = 'O') OR
7982 (NVL(l_enc_upg_option, 'N') = 'O')
7983 )
7984 THEN
7985 NULL;
7986 --
7987 --
7988
7989 l_ccid := AcctDerRule_2(
7990 p_application_id => p_application_id
7991 , p_ae_header_id => l_ae_header_id
7992 , p_source_1 => p_source_1
7993 , p_source_2 => p_source_2
7994 , x_transaction_coa_id => l_adr_transaction_coa_id
7995 , x_accounting_coa_id => l_adr_accounting_coa_id
7996 , x_value_type_code => l_adr_value_type_code
7997 , p_side => 'NA'
7998 );
7999
8000 xla_ae_lines_pkg.set_ccid(
8001 p_code_combination_id => l_ccid
8002 , p_value_type_code => l_adr_value_type_code
8003 , p_transaction_coa_id => l_adr_transaction_coa_id
8004 , p_accounting_coa_id => l_adr_accounting_coa_id
8005 , p_adr_code => 'AAP'
8006 , p_adr_type_code => 'S'
8007 , p_component_type => l_component_type
8008 , p_component_code => l_component_code
8012 , p_side => 'NA'
8009 , p_component_type_code => l_component_type_code
8010 , p_component_appl_id => l_component_appl_id
8011 , p_amb_context_code => l_amb_context_code
8013 );
8014
8015
8016 --
8017 --
8018 END IF;
8019 --
8020 -- Bug 4922099
8021 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8022 (NVL(l_enc_upg_option, 'N') = 'O')
8023 ) AND
8024 (l_bflow_method_code = 'PRIOR_ENTRY')
8025 )
8026 THEN
8027 IF
8028 --
8029 1 = 2
8030 --
8031 THEN
8032 xla_accounting_err_pkg.build_message
8033 (p_appli_s_name => 'XLA'
8034 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8035 ,p_token_1 => 'LINE_NUMBER'
8036 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
8037 ,p_token_2 => 'LINE_TYPE_NAME'
8038 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
8039 l_component_type
8040 ,l_component_code
8041 ,l_component_type_code
8042 ,l_component_appl_id
8043 ,l_amb_context_code
8044 ,l_entity_code
8045 ,l_event_class_code
8046 )
8047 ,p_token_3 => 'OWNER'
8048 ,p_value_3 => xla_lookups_pkg.get_meaning(
8049 p_lookup_type => 'XLA_OWNER_TYPE'
8050 ,p_lookup_code => l_component_type_code
8051 )
8052 ,p_token_4 => 'PRODUCT_NAME'
8053 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8054 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8055 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8056 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8057 ,p_ae_header_id => NULL
8058 );
8059
8060 IF (C_LEVEL_ERROR>= g_log_level) THEN
8061 trace
8062 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8063 ,p_level => C_LEVEL_ERROR
8064 ,p_module => l_log_module);
8065 END IF;
8066 END IF;
8067 END IF;
8068 --
8069 --
8070 ------------------------------------------------------------------------------------------------
8071 -- 4219869 Business Flow
8072 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8073 -- Prior Entry. Currently, the following code is always generated.
8074 ------------------------------------------------------------------------------------------------
8075 XLA_AE_LINES_PKG.ValidateCurrentLine;
8076
8077 ------------------------------------------------------------------------------------
8078 -- 4219869 Business Flow
8079 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8080 ------------------------------------------------------------------------------------
8081 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8082
8083 ----------------------------------------------------------------------------------
8084 -- 4219869 Business Flow
8085 -- Update journal entry status -- Need to generate this within IF <condition>
8086 ----------------------------------------------------------------------------------
8087 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8088 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8089 ,p_balance_type_code => l_balance_type_code
8090 );
8091
8092 -------------------------------------------------------------------------------------------
8093 -- 4262811 - Generate the Accrual Reversal lines
8094 -------------------------------------------------------------------------------------------
8095 BEGIN
8096 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8097 (g_array_event(p_event_id).array_value_num('header_index'));
8098 IF l_acc_rev_flag IS NULL THEN
8099 l_acc_rev_flag := 'N';
8100 END IF;
8101 EXCEPTION
8102 WHEN OTHERS THEN
8103 l_acc_rev_flag := 'N';
8104 END;
8105 --
8106 IF (l_acc_rev_flag = 'Y') THEN
8107
8108 -- 4645092 ------------------------------------------------------------------------------
8112
8109 -- To allow MPA report to determine if it should generate report process
8110 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8111 ------------------------------------------------------------------------------------------
8113 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8114 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8115 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
8116 -- call ADRs
8117 -- Bug 4922099
8118 --
8119 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8120 (NVL(l_actual_upg_option, 'N') = 'O') OR
8121 (NVL(l_enc_upg_option, 'N') = 'O')
8122 )
8123 THEN
8124 NULL;
8125 --
8126 --
8127
8128 l_ccid := AcctDerRule_2(
8129 p_application_id => p_application_id
8130 , p_ae_header_id => l_ae_header_id
8131 , p_source_1 => p_source_1
8132 , p_source_2 => p_source_2
8133 , x_transaction_coa_id => l_adr_transaction_coa_id
8134 , x_accounting_coa_id => l_adr_accounting_coa_id
8135 , x_value_type_code => l_adr_value_type_code
8136 , p_side => 'NA'
8137 );
8138
8139 xla_ae_lines_pkg.set_ccid(
8140 p_code_combination_id => l_ccid
8141 , p_value_type_code => l_adr_value_type_code
8142 , p_transaction_coa_id => l_adr_transaction_coa_id
8143 , p_accounting_coa_id => l_adr_accounting_coa_id
8144 , p_adr_code => 'AAP'
8145 , p_adr_type_code => 'S'
8146 , p_component_type => l_component_type
8147 , p_component_code => l_component_code
8148 , p_component_type_code => l_component_type_code
8149 , p_component_appl_id => l_component_appl_id
8150 , p_amb_context_code => l_amb_context_code
8151 , p_side => 'NA'
8152 );
8153
8154
8155 --
8156 --
8157 END IF;
8158
8159 --
8160 -- Update the line information that should be overwritten
8161 --
8162 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8163 p_header_num => 1);
8164 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
8165
8166 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8167
8168 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
8169 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8170 END IF;
8171
8172 --
8173 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8174 --
8175 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8176 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8177 ELSE
8178 ---------------------------------------------------------------------------------------------------
8179 -- 4262811a Switch Sign
8180 ---------------------------------------------------------------------------------------------------
8181 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8182 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8183 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8184 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8185 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8186 -- 5132302
8187 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8188 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8189
8190 END IF;
8191
8192 -- 4955764
8193 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8194 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8195
8196
8197 XLA_AE_LINES_PKG.ValidateCurrentLine;
8198 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8199
8200 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8201 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8202 ,p_balance_type_code => l_balance_type_code);
8203
8204 END IF;
8205
8206 -----------------------------------------------------------------------------------------
8207 -- 4262811 Multiperiod Accounting
8208 -----------------------------------------------------------------------------------------
8209 -- No MPA option is assigned.
8210
8211
8212 END IF;
8213 END IF;
8214 --
8215
8216 --
8217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8218 trace
8219 (p_msg => 'END of AcctLineType_47'
8220 ,p_level => C_LEVEL_PROCEDURE
8221 ,p_module => l_log_module);
8222 END IF;
8223 --
8224 EXCEPTION
8225 WHEN xla_exceptions_pkg.application_exception THEN
8226 RAISE;
8227 WHEN OTHERS THEN
8231 --
8228 xla_exceptions_pkg.raise_message
8229 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_47');
8230 END AcctLineType_47;
8232
8233 ---------------------------------------
8234 --
8235 -- PRIVATE FUNCTION
8236 -- AcctLineType_48
8237 --
8238 ---------------------------------------
8239 PROCEDURE AcctLineType_48 (
8240 p_application_id IN NUMBER
8241 ,p_event_id IN NUMBER
8242 ,p_calculate_acctd_flag IN VARCHAR2
8243 ,p_calculate_g_l_flag IN VARCHAR2
8244 ,p_actual_flag IN OUT VARCHAR2
8245 ,p_balance_type_code OUT VARCHAR2
8246 ,p_gain_or_loss_ref OUT VARCHAR2
8247
8248 --Transaction Account
8249 , p_source_1 IN NUMBER
8250 --Journal Line Type
8251 , p_source_2 IN VARCHAR2
8252 --Entered Amount
8253 , p_source_3 IN NUMBER
8254 --First Distribution Identifier
8255 , p_source_5 IN NUMBER
8256 --Distribution Type
8257 , p_source_6 IN VARCHAR2
8258 --Currency Code
8259 , p_source_7 IN VARCHAR2
8260 --Currency Conversion Date
8261 , p_source_8 IN DATE
8262 --Currency Conversion Rate
8263 , p_source_9 IN NUMBER
8264 --Currency Conversion Type
8265 , p_source_10 IN VARCHAR2
8266 --Accounted Amount
8267 , p_source_11 IN NUMBER
8268 )
8269 IS
8270
8271 l_component_type VARCHAR2(80);
8272 l_component_code VARCHAR2(30);
8273 l_component_type_code VARCHAR2(1);
8274 l_component_appl_id INTEGER;
8275 l_amb_context_code VARCHAR2(30);
8276 l_entity_code VARCHAR2(30);
8277 l_event_class_code VARCHAR2(30);
8278 l_ae_header_id NUMBER;
8279 l_event_type_code VARCHAR2(30);
8280 l_line_definition_code VARCHAR2(30);
8281 l_line_definition_owner_code VARCHAR2(1);
8282 --
8283 -- adr variables
8284 l_segment VARCHAR2(30);
8285 l_ccid NUMBER;
8286 l_adr_transaction_coa_id NUMBER;
8287 l_adr_accounting_coa_id NUMBER;
8288 l_adr_flexfield_segment_code VARCHAR2(30);
8289 l_adr_flex_value_set_id NUMBER;
8290 l_adr_value_type_code VARCHAR2(30);
8291 l_adr_value_combination_id NUMBER;
8292 l_adr_value_segment_code VARCHAR2(30);
8293
8294 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
8295 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
8296 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
8297 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
8298
8299 -- 4262811 Variables ------------------------------------------------------------------------------------------
8300 l_entered_amt_idx NUMBER;
8301 l_accted_amt_idx NUMBER;
8302 l_acc_rev_flag VARCHAR2(1);
8303 l_accrual_line_num NUMBER;
8304 l_tmp_amt NUMBER;
8305 l_acc_rev_natural_side_code VARCHAR2(1);
8306
8307 l_num_entries NUMBER;
8308 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
8309 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
8310 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
8311 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
8312 l_recog_line_1 NUMBER;
8313 l_recog_line_2 NUMBER;
8314
8315 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
8316 l_bflow_applied_to_amt NUMBER; -- 5132302
8317 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
8318
8319 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8320
8321 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
8322 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
8323
8324 ---------------------------------------------------------------------------------------------------------------
8325
8326
8327 --
8328 -- bulk performance
8329 --
8330 l_balance_type_code VARCHAR2(1);
8331 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
8332 l_log_module VARCHAR2(240);
8333
8334 --
8335 -- Upgrade strategy
8336 --
8337 l_actual_upg_option VARCHAR2(1);
8338 l_enc_upg_option VARCHAR2(1);
8339
8340 --
8341 BEGIN
8342 --
8343 IF g_log_enabled THEN
8344 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
8345 END IF;
8346 --
8347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8348
8349 trace
8350 (p_msg => 'BEGIN of AcctLineType_48'
8351 ,p_level => C_LEVEL_PROCEDURE
8352 ,p_module => l_log_module);
8353
8354 END IF;
8355 --
8356 l_component_type := 'AMB_JLT';
8357 l_component_code := 'AAP';
8358 l_component_type_code := 'S';
8359 l_component_appl_id := 555;
8360 l_amb_context_code := 'DEFAULT';
8361 l_entity_code := 'PURCHASING';
8362 l_event_class_code := 'RECEIVE';
8363 l_event_type_code := 'LOG_RECEIVE';
8364 l_line_definition_owner_code := 'S';
8368 l_segment := NULL;
8365 l_line_definition_code := 'LOG_RECEIVE';
8366 --
8367 l_balance_type_code := 'A';
8369 l_ccid := NULL;
8370 l_adr_transaction_coa_id := NULL;
8371 l_adr_accounting_coa_id := NULL;
8372 l_adr_flexfield_segment_code := NULL;
8373 l_adr_flex_value_set_id := NULL;
8374 l_adr_value_type_code := NULL;
8375 l_adr_value_combination_id := NULL;
8376 l_adr_value_segment_code := NULL;
8377
8378 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8379 l_bflow_class_code := ''; -- 4219869 Business Flow
8380 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8381 l_budgetary_control_flag := 'N';
8382
8383 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8384 l_bflow_applied_to_amt := NULL; -- 5132302
8385 l_entered_amt_idx := NULL; -- 4262811
8386 l_accted_amt_idx := NULL; -- 4262811
8387 l_acc_rev_flag := NULL; -- 4262811
8388 l_accrual_line_num := NULL; -- 4262811
8389 l_tmp_amt := NULL; -- 4262811
8390 --
8391
8392 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8393 l_balance_type_code <> 'B' THEN
8394 IF NVL(p_source_2,'
8395 ') = 'AAP'
8396 THEN
8397
8398 --
8399 XLA_AE_LINES_PKG.SetNewLine;
8400
8401 p_balance_type_code := l_balance_type_code;
8402 -- set the flag so later we will know whether the gain loss line needs to be created
8403
8404 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8405 p_actual_flag :='A';
8406 END IF;
8407
8408 --
8409 -- bulk performance
8410 --
8411 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8412 p_header_num => 0); -- 4262811
8413 --
8414 -- set accounting line options
8415 --
8416 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8417 p_natural_side_code => 'D'
8418 , p_gain_or_loss_flag => 'N'
8419 , p_gl_transfer_mode_code => 'D'
8420 , p_acct_entry_type_code => 'A'
8421 , p_switch_side_flag => 'Y'
8422 , p_merge_duplicate_code => 'W'
8423 );
8424 --
8425 l_acc_rev_natural_side_code := 'C'; -- 4262811
8426 --
8427 --
8428 -- set accounting line type info
8429 --
8430 xla_ae_lines_pkg.SetAcctLineType
8431 (p_component_type => l_component_type
8432 ,p_event_type_code => l_event_type_code
8433 ,p_line_definition_owner_code => l_line_definition_owner_code
8434 ,p_line_definition_code => l_line_definition_code
8435 ,p_accounting_line_code => l_component_code
8436 ,p_accounting_line_type_code => l_component_type_code
8437 ,p_accounting_line_appl_id => l_component_appl_id
8438 ,p_amb_context_code => l_amb_context_code
8439 ,p_entity_code => l_entity_code
8440 ,p_event_class_code => l_event_class_code);
8441 --
8442 -- set accounting class
8443 --
8444 xla_ae_lines_pkg.SetAcctClass(
8445 p_accounting_class_code => 'AAP'
8446 , p_ae_header_id => l_ae_header_id
8447 );
8448
8449 --
8450 -- set rounding class
8451 --
8452 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8453 'AAP';
8454
8455 --
8456 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8457 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8458 --
8459 -- bulk performance
8460 --
8461 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8462
8463 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8464 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8465
8466 -- 4955764
8467 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8468 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8469
8470 -- 4458381 Public Sector Enh
8471
8472 --
8473 -- set accounting attributes for the line type
8474 --
8475 l_entered_amt_idx := 3;
8476 l_accted_amt_idx := 8;
8477 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8478 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8479 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
8480 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8481 l_rec_acct_attrs.array_char_value(2) := p_source_6;
8482 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8483 l_rec_acct_attrs.array_num_value(3) := p_source_3;
8484 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8485 l_rec_acct_attrs.array_char_value(4) := p_source_7;
8486 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8487 l_rec_acct_attrs.array_date_value(5) := p_source_8;
8488 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8492 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8489 l_rec_acct_attrs.array_num_value(6) := p_source_9;
8490 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8491 l_rec_acct_attrs.array_char_value(7) := p_source_10;
8493 l_rec_acct_attrs.array_num_value(8) := p_source_11;
8494
8495 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8496 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8497
8498 ---------------------------------------------------------------------------------------------------------------
8499 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8500 ---------------------------------------------------------------------------------------------------------------
8501 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8502
8503 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8504 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8505
8506 IF xla_accounting_cache_pkg.GetValueChar
8507 (p_source_code => 'LEDGER_CATEGORY_CODE'
8508 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8509 AND l_bflow_method_code = 'PRIOR_ENTRY'
8510 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8511 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8512 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8513 )
8514 THEN
8515 xla_ae_lines_pkg.BflowUpgEntry
8516 (p_business_method_code => l_bflow_method_code
8517 ,p_business_class_code => l_bflow_class_code
8518 ,p_balance_type => l_balance_type_code);
8519 ELSE
8520 NULL;
8521 -- No business flow processing for business flow method of NONE.
8522 END IF;
8523
8524 --
8525 -- call analytical criteria
8526 --
8527
8528 --
8529 -- call description
8530 --
8531 -- No description or it is inherited.
8532 --
8533 -- call ADRs
8534 -- Bug 4922099
8535 --
8536 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8537 (NVL(l_actual_upg_option, 'N') = 'O') OR
8538 (NVL(l_enc_upg_option, 'N') = 'O')
8539 )
8540 THEN
8541 NULL;
8542 --
8543 --
8544
8545 l_ccid := AcctDerRule_2(
8546 p_application_id => p_application_id
8547 , p_ae_header_id => l_ae_header_id
8548 , p_source_1 => p_source_1
8549 , p_source_2 => p_source_2
8550 , x_transaction_coa_id => l_adr_transaction_coa_id
8551 , x_accounting_coa_id => l_adr_accounting_coa_id
8552 , x_value_type_code => l_adr_value_type_code
8553 , p_side => 'NA'
8554 );
8555
8556 xla_ae_lines_pkg.set_ccid(
8557 p_code_combination_id => l_ccid
8558 , p_value_type_code => l_adr_value_type_code
8559 , p_transaction_coa_id => l_adr_transaction_coa_id
8560 , p_accounting_coa_id => l_adr_accounting_coa_id
8561 , p_adr_code => 'AAP'
8562 , p_adr_type_code => 'S'
8563 , p_component_type => l_component_type
8564 , p_component_code => l_component_code
8565 , p_component_type_code => l_component_type_code
8566 , p_component_appl_id => l_component_appl_id
8567 , p_amb_context_code => l_amb_context_code
8568 , p_side => 'NA'
8569 );
8570
8571
8572 --
8573 --
8574 END IF;
8575 --
8576 -- Bug 4922099
8577 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8578 (NVL(l_enc_upg_option, 'N') = 'O')
8579 ) AND
8580 (l_bflow_method_code = 'PRIOR_ENTRY')
8581 )
8582 THEN
8583 IF
8584 --
8585 1 = 2
8586 --
8587 THEN
8588 xla_accounting_err_pkg.build_message
8589 (p_appli_s_name => 'XLA'
8590 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8591 ,p_token_1 => 'LINE_NUMBER'
8592 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
8593 ,p_token_2 => 'LINE_TYPE_NAME'
8594 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
8595 l_component_type
8596 ,l_component_code
8597 ,l_component_type_code
8598 ,l_component_appl_id
8599 ,l_amb_context_code
8600 ,l_entity_code
8601 ,l_event_class_code
8602 )
8603 ,p_token_3 => 'OWNER'
8607 )
8604 ,p_value_3 => xla_lookups_pkg.get_meaning(
8605 p_lookup_type => 'XLA_OWNER_TYPE'
8606 ,p_lookup_code => l_component_type_code
8608 ,p_token_4 => 'PRODUCT_NAME'
8609 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8610 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8611 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8612 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8613 ,p_ae_header_id => NULL
8614 );
8615
8616 IF (C_LEVEL_ERROR>= g_log_level) THEN
8617 trace
8618 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8619 ,p_level => C_LEVEL_ERROR
8620 ,p_module => l_log_module);
8621 END IF;
8622 END IF;
8623 END IF;
8624 --
8625 --
8626 ------------------------------------------------------------------------------------------------
8627 -- 4219869 Business Flow
8628 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8629 -- Prior Entry. Currently, the following code is always generated.
8630 ------------------------------------------------------------------------------------------------
8631 XLA_AE_LINES_PKG.ValidateCurrentLine;
8632
8633 ------------------------------------------------------------------------------------
8634 -- 4219869 Business Flow
8635 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8636 ------------------------------------------------------------------------------------
8637 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8638
8639 ----------------------------------------------------------------------------------
8640 -- 4219869 Business Flow
8641 -- Update journal entry status -- Need to generate this within IF <condition>
8642 ----------------------------------------------------------------------------------
8643 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8644 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8645 ,p_balance_type_code => l_balance_type_code
8646 );
8647
8648 -------------------------------------------------------------------------------------------
8649 -- 4262811 - Generate the Accrual Reversal lines
8650 -------------------------------------------------------------------------------------------
8651 BEGIN
8652 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8653 (g_array_event(p_event_id).array_value_num('header_index'));
8654 IF l_acc_rev_flag IS NULL THEN
8655 l_acc_rev_flag := 'N';
8656 END IF;
8657 EXCEPTION
8658 WHEN OTHERS THEN
8659 l_acc_rev_flag := 'N';
8660 END;
8661 --
8662 IF (l_acc_rev_flag = 'Y') THEN
8663
8664 -- 4645092 ------------------------------------------------------------------------------
8665 -- To allow MPA report to determine if it should generate report process
8666 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8667 ------------------------------------------------------------------------------------------
8668
8669 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8670 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8671 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
8672 -- call ADRs
8673 -- Bug 4922099
8674 --
8675 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8676 (NVL(l_actual_upg_option, 'N') = 'O') OR
8677 (NVL(l_enc_upg_option, 'N') = 'O')
8678 )
8679 THEN
8680 NULL;
8681 --
8682 --
8683
8684 l_ccid := AcctDerRule_2(
8685 p_application_id => p_application_id
8686 , p_ae_header_id => l_ae_header_id
8687 , p_source_1 => p_source_1
8688 , p_source_2 => p_source_2
8689 , x_transaction_coa_id => l_adr_transaction_coa_id
8690 , x_accounting_coa_id => l_adr_accounting_coa_id
8691 , x_value_type_code => l_adr_value_type_code
8692 , p_side => 'NA'
8693 );
8694
8695 xla_ae_lines_pkg.set_ccid(
8696 p_code_combination_id => l_ccid
8697 , p_value_type_code => l_adr_value_type_code
8698 , p_transaction_coa_id => l_adr_transaction_coa_id
8699 , p_accounting_coa_id => l_adr_accounting_coa_id
8700 , p_adr_code => 'AAP'
8701 , p_adr_type_code => 'S'
8702 , p_component_type => l_component_type
8703 , p_component_code => l_component_code
8704 , p_component_type_code => l_component_type_code
8705 , p_component_appl_id => l_component_appl_id
8706 , p_amb_context_code => l_amb_context_code
8710
8707 , p_side => 'NA'
8708 );
8709
8711 --
8712 --
8713 END IF;
8714
8715 --
8716 -- Update the line information that should be overwritten
8717 --
8718 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8719 p_header_num => 1);
8720 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
8721
8722 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8723
8724 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
8725 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8726 END IF;
8727
8728 --
8729 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8730 --
8731 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8732 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8733 ELSE
8734 ---------------------------------------------------------------------------------------------------
8735 -- 4262811a Switch Sign
8736 ---------------------------------------------------------------------------------------------------
8737 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8738 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8739 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8740 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8741 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8742 -- 5132302
8743 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8744 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8745
8746 END IF;
8747
8748 -- 4955764
8749 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8750 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8751
8752
8753 XLA_AE_LINES_PKG.ValidateCurrentLine;
8754 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8755
8756 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8757 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8758 ,p_balance_type_code => l_balance_type_code);
8759
8760 END IF;
8761
8762 -----------------------------------------------------------------------------------------
8763 -- 4262811 Multiperiod Accounting
8764 -----------------------------------------------------------------------------------------
8765 -- No MPA option is assigned.
8766
8767
8768 END IF;
8769 END IF;
8770 --
8771
8772 --
8773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8774 trace
8775 (p_msg => 'END of AcctLineType_48'
8776 ,p_level => C_LEVEL_PROCEDURE
8777 ,p_module => l_log_module);
8778 END IF;
8779 --
8780 EXCEPTION
8781 WHEN xla_exceptions_pkg.application_exception THEN
8782 RAISE;
8783 WHEN OTHERS THEN
8784 xla_exceptions_pkg.raise_message
8785 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_48');
8786 END AcctLineType_48;
8787 --
8788
8789 ---------------------------------------
8790 --
8791 -- PRIVATE FUNCTION
8792 -- AcctLineType_49
8793 --
8794 ---------------------------------------
8795 PROCEDURE AcctLineType_49 (
8796 p_application_id IN NUMBER
8797 ,p_event_id IN NUMBER
8798 ,p_calculate_acctd_flag IN VARCHAR2
8799 ,p_calculate_g_l_flag IN VARCHAR2
8800 ,p_actual_flag IN OUT VARCHAR2
8801 ,p_balance_type_code OUT VARCHAR2
8802 ,p_gain_or_loss_ref OUT VARCHAR2
8803
8804 --Transaction Account
8805 , p_source_1 IN NUMBER
8806 --Journal Line Type
8807 , p_source_2 IN VARCHAR2
8808 --Entered Amount
8809 , p_source_3 IN NUMBER
8810 --First Distribution Identifier
8811 , p_source_5 IN NUMBER
8812 --Distribution Type
8813 , p_source_6 IN VARCHAR2
8814 --Currency Code
8815 , p_source_7 IN VARCHAR2
8816 --Currency Conversion Date
8817 , p_source_8 IN DATE
8818 --Currency Conversion Rate
8819 , p_source_9 IN NUMBER
8820 --Currency Conversion Type
8821 , p_source_10 IN VARCHAR2
8822 --Accounted Amount
8823 , p_source_11 IN NUMBER
8824 )
8825 IS
8826
8827 l_component_type VARCHAR2(80);
8828 l_component_code VARCHAR2(30);
8829 l_component_type_code VARCHAR2(1);
8830 l_component_appl_id INTEGER;
8831 l_amb_context_code VARCHAR2(30);
8832 l_entity_code VARCHAR2(30);
8833 l_event_class_code VARCHAR2(30);
8834 l_ae_header_id NUMBER;
8835 l_event_type_code VARCHAR2(30);
8839 -- adr variables
8836 l_line_definition_code VARCHAR2(30);
8837 l_line_definition_owner_code VARCHAR2(1);
8838 --
8840 l_segment VARCHAR2(30);
8841 l_ccid NUMBER;
8842 l_adr_transaction_coa_id NUMBER;
8843 l_adr_accounting_coa_id NUMBER;
8844 l_adr_flexfield_segment_code VARCHAR2(30);
8845 l_adr_flex_value_set_id NUMBER;
8846 l_adr_value_type_code VARCHAR2(30);
8847 l_adr_value_combination_id NUMBER;
8848 l_adr_value_segment_code VARCHAR2(30);
8849
8850 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
8851 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
8852 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
8853 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
8854
8855 -- 4262811 Variables ------------------------------------------------------------------------------------------
8856 l_entered_amt_idx NUMBER;
8857 l_accted_amt_idx NUMBER;
8858 l_acc_rev_flag VARCHAR2(1);
8859 l_accrual_line_num NUMBER;
8860 l_tmp_amt NUMBER;
8861 l_acc_rev_natural_side_code VARCHAR2(1);
8862
8863 l_num_entries NUMBER;
8864 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
8865 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
8866 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
8867 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
8868 l_recog_line_1 NUMBER;
8869 l_recog_line_2 NUMBER;
8870
8871 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
8872 l_bflow_applied_to_amt NUMBER; -- 5132302
8873 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
8874
8875 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8876
8877 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
8878 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
8879
8880 ---------------------------------------------------------------------------------------------------------------
8881
8882
8883 --
8884 -- bulk performance
8885 --
8886 l_balance_type_code VARCHAR2(1);
8887 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
8888 l_log_module VARCHAR2(240);
8889
8890 --
8891 -- Upgrade strategy
8892 --
8893 l_actual_upg_option VARCHAR2(1);
8894 l_enc_upg_option VARCHAR2(1);
8895
8896 --
8897 BEGIN
8898 --
8899 IF g_log_enabled THEN
8900 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
8901 END IF;
8902 --
8903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8904
8905 trace
8906 (p_msg => 'BEGIN of AcctLineType_49'
8907 ,p_level => C_LEVEL_PROCEDURE
8908 ,p_module => l_log_module);
8909
8910 END IF;
8911 --
8912 l_component_type := 'AMB_JLT';
8913 l_component_code := 'AAP';
8914 l_component_type_code := 'S';
8915 l_component_appl_id := 555;
8916 l_amb_context_code := 'DEFAULT';
8917 l_entity_code := 'PURCHASING';
8918 l_event_class_code := 'DELIVER';
8919 l_event_type_code := 'XFER_TO_CONSIGNED';
8920 l_line_definition_owner_code := 'S';
8921 l_line_definition_code := 'XFER_TO_CONSIGN';
8922 --
8923 l_balance_type_code := 'A';
8924 l_segment := NULL;
8925 l_ccid := NULL;
8926 l_adr_transaction_coa_id := NULL;
8927 l_adr_accounting_coa_id := NULL;
8928 l_adr_flexfield_segment_code := NULL;
8929 l_adr_flex_value_set_id := NULL;
8930 l_adr_value_type_code := NULL;
8931 l_adr_value_combination_id := NULL;
8932 l_adr_value_segment_code := NULL;
8933
8934 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8935 l_bflow_class_code := ''; -- 4219869 Business Flow
8936 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8937 l_budgetary_control_flag := 'N';
8938
8939 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8940 l_bflow_applied_to_amt := NULL; -- 5132302
8941 l_entered_amt_idx := NULL; -- 4262811
8942 l_accted_amt_idx := NULL; -- 4262811
8943 l_acc_rev_flag := NULL; -- 4262811
8944 l_accrual_line_num := NULL; -- 4262811
8945 l_tmp_amt := NULL; -- 4262811
8946 --
8947
8948 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8949 l_balance_type_code <> 'B' THEN
8950 IF NVL(p_source_2,'
8951 ') = 'AAP'
8952 THEN
8953
8954 --
8955 XLA_AE_LINES_PKG.SetNewLine;
8956
8957 p_balance_type_code := l_balance_type_code;
8958 -- set the flag so later we will know whether the gain loss line needs to be created
8959
8960 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8961 p_actual_flag :='A';
8962 END IF;
8963
8964 --
8965 -- bulk performance
8966 --
8970 -- set accounting line options
8967 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8968 p_header_num => 0); -- 4262811
8969 --
8971 --
8972 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8973 p_natural_side_code => 'D'
8974 , p_gain_or_loss_flag => 'N'
8975 , p_gl_transfer_mode_code => 'D'
8976 , p_acct_entry_type_code => 'A'
8977 , p_switch_side_flag => 'Y'
8978 , p_merge_duplicate_code => 'W'
8979 );
8980 --
8981 l_acc_rev_natural_side_code := 'C'; -- 4262811
8982 --
8983 --
8984 -- set accounting line type info
8985 --
8986 xla_ae_lines_pkg.SetAcctLineType
8987 (p_component_type => l_component_type
8988 ,p_event_type_code => l_event_type_code
8989 ,p_line_definition_owner_code => l_line_definition_owner_code
8990 ,p_line_definition_code => l_line_definition_code
8991 ,p_accounting_line_code => l_component_code
8992 ,p_accounting_line_type_code => l_component_type_code
8993 ,p_accounting_line_appl_id => l_component_appl_id
8994 ,p_amb_context_code => l_amb_context_code
8995 ,p_entity_code => l_entity_code
8996 ,p_event_class_code => l_event_class_code);
8997 --
8998 -- set accounting class
8999 --
9000 xla_ae_lines_pkg.SetAcctClass(
9001 p_accounting_class_code => 'AAP'
9002 , p_ae_header_id => l_ae_header_id
9003 );
9004
9005 --
9006 -- set rounding class
9007 --
9008 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9009 'AAP';
9010
9011 --
9012 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9013 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9014 --
9015 -- bulk performance
9016 --
9017 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9018
9019 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9020 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9021
9022 -- 4955764
9023 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9024 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9025
9026 -- 4458381 Public Sector Enh
9027
9028 --
9029 -- set accounting attributes for the line type
9030 --
9031 l_entered_amt_idx := 3;
9032 l_accted_amt_idx := 8;
9033 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9034 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9035 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
9036 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9037 l_rec_acct_attrs.array_char_value(2) := p_source_6;
9038 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9039 l_rec_acct_attrs.array_num_value(3) := p_source_3;
9040 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9041 l_rec_acct_attrs.array_char_value(4) := p_source_7;
9042 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9043 l_rec_acct_attrs.array_date_value(5) := p_source_8;
9044 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9045 l_rec_acct_attrs.array_num_value(6) := p_source_9;
9046 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9047 l_rec_acct_attrs.array_char_value(7) := p_source_10;
9048 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9049 l_rec_acct_attrs.array_num_value(8) := p_source_11;
9050
9051 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9052 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9053
9054 ---------------------------------------------------------------------------------------------------------------
9055 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9056 ---------------------------------------------------------------------------------------------------------------
9057 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9058
9059 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9060 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9061
9062 IF xla_accounting_cache_pkg.GetValueChar
9063 (p_source_code => 'LEDGER_CATEGORY_CODE'
9064 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9065 AND l_bflow_method_code = 'PRIOR_ENTRY'
9066 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9067 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9068 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9069 )
9070 THEN
9071 xla_ae_lines_pkg.BflowUpgEntry
9072 (p_business_method_code => l_bflow_method_code
9073 ,p_business_class_code => l_bflow_class_code
9074 ,p_balance_type => l_balance_type_code);
9075 ELSE
9079
9076 NULL;
9077 -- No business flow processing for business flow method of NONE.
9078 END IF;
9080 --
9081 -- call analytical criteria
9082 --
9083
9084 --
9085 -- call description
9086 --
9087 -- No description or it is inherited.
9088 --
9089 -- call ADRs
9090 -- Bug 4922099
9091 --
9092 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9093 (NVL(l_actual_upg_option, 'N') = 'O') OR
9094 (NVL(l_enc_upg_option, 'N') = 'O')
9095 )
9096 THEN
9097 NULL;
9098 --
9099 --
9100
9101 l_ccid := AcctDerRule_2(
9102 p_application_id => p_application_id
9103 , p_ae_header_id => l_ae_header_id
9104 , p_source_1 => p_source_1
9105 , p_source_2 => p_source_2
9106 , x_transaction_coa_id => l_adr_transaction_coa_id
9107 , x_accounting_coa_id => l_adr_accounting_coa_id
9108 , x_value_type_code => l_adr_value_type_code
9109 , p_side => 'NA'
9110 );
9111
9112 xla_ae_lines_pkg.set_ccid(
9113 p_code_combination_id => l_ccid
9114 , p_value_type_code => l_adr_value_type_code
9115 , p_transaction_coa_id => l_adr_transaction_coa_id
9116 , p_accounting_coa_id => l_adr_accounting_coa_id
9117 , p_adr_code => 'AAP'
9118 , p_adr_type_code => 'S'
9119 , p_component_type => l_component_type
9120 , p_component_code => l_component_code
9121 , p_component_type_code => l_component_type_code
9122 , p_component_appl_id => l_component_appl_id
9123 , p_amb_context_code => l_amb_context_code
9124 , p_side => 'NA'
9125 );
9126
9127
9128 --
9129 --
9130 END IF;
9131 --
9132 -- Bug 4922099
9133 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9134 (NVL(l_enc_upg_option, 'N') = 'O')
9135 ) AND
9136 (l_bflow_method_code = 'PRIOR_ENTRY')
9137 )
9138 THEN
9139 IF
9140 --
9141 1 = 2
9142 --
9143 THEN
9144 xla_accounting_err_pkg.build_message
9145 (p_appli_s_name => 'XLA'
9146 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9147 ,p_token_1 => 'LINE_NUMBER'
9148 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
9149 ,p_token_2 => 'LINE_TYPE_NAME'
9150 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
9151 l_component_type
9152 ,l_component_code
9153 ,l_component_type_code
9154 ,l_component_appl_id
9155 ,l_amb_context_code
9156 ,l_entity_code
9157 ,l_event_class_code
9158 )
9159 ,p_token_3 => 'OWNER'
9160 ,p_value_3 => xla_lookups_pkg.get_meaning(
9161 p_lookup_type => 'XLA_OWNER_TYPE'
9162 ,p_lookup_code => l_component_type_code
9163 )
9164 ,p_token_4 => 'PRODUCT_NAME'
9165 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9166 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9167 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9168 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9169 ,p_ae_header_id => NULL
9170 );
9171
9172 IF (C_LEVEL_ERROR>= g_log_level) THEN
9173 trace
9174 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9175 ,p_level => C_LEVEL_ERROR
9176 ,p_module => l_log_module);
9177 END IF;
9178 END IF;
9179 END IF;
9180 --
9181 --
9182 ------------------------------------------------------------------------------------------------
9183 -- 4219869 Business Flow
9184 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9185 -- Prior Entry. Currently, the following code is always generated.
9186 ------------------------------------------------------------------------------------------------
9187 XLA_AE_LINES_PKG.ValidateCurrentLine;
9191 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9188
9189 ------------------------------------------------------------------------------------
9190 -- 4219869 Business Flow
9192 ------------------------------------------------------------------------------------
9193 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9194
9195 ----------------------------------------------------------------------------------
9196 -- 4219869 Business Flow
9197 -- Update journal entry status -- Need to generate this within IF <condition>
9198 ----------------------------------------------------------------------------------
9199 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9200 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9201 ,p_balance_type_code => l_balance_type_code
9202 );
9203
9204 -------------------------------------------------------------------------------------------
9205 -- 4262811 - Generate the Accrual Reversal lines
9206 -------------------------------------------------------------------------------------------
9207 BEGIN
9208 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9209 (g_array_event(p_event_id).array_value_num('header_index'));
9210 IF l_acc_rev_flag IS NULL THEN
9211 l_acc_rev_flag := 'N';
9212 END IF;
9213 EXCEPTION
9214 WHEN OTHERS THEN
9215 l_acc_rev_flag := 'N';
9216 END;
9217 --
9218 IF (l_acc_rev_flag = 'Y') THEN
9219
9220 -- 4645092 ------------------------------------------------------------------------------
9221 -- To allow MPA report to determine if it should generate report process
9222 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9223 ------------------------------------------------------------------------------------------
9224
9225 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9226 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9227 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
9228 -- call ADRs
9229 -- Bug 4922099
9230 --
9231 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9232 (NVL(l_actual_upg_option, 'N') = 'O') OR
9233 (NVL(l_enc_upg_option, 'N') = 'O')
9234 )
9235 THEN
9236 NULL;
9237 --
9238 --
9239
9240 l_ccid := AcctDerRule_2(
9241 p_application_id => p_application_id
9242 , p_ae_header_id => l_ae_header_id
9243 , p_source_1 => p_source_1
9244 , p_source_2 => p_source_2
9245 , x_transaction_coa_id => l_adr_transaction_coa_id
9246 , x_accounting_coa_id => l_adr_accounting_coa_id
9247 , x_value_type_code => l_adr_value_type_code
9248 , p_side => 'NA'
9249 );
9250
9251 xla_ae_lines_pkg.set_ccid(
9252 p_code_combination_id => l_ccid
9253 , p_value_type_code => l_adr_value_type_code
9254 , p_transaction_coa_id => l_adr_transaction_coa_id
9255 , p_accounting_coa_id => l_adr_accounting_coa_id
9256 , p_adr_code => 'AAP'
9257 , p_adr_type_code => 'S'
9258 , p_component_type => l_component_type
9259 , p_component_code => l_component_code
9260 , p_component_type_code => l_component_type_code
9261 , p_component_appl_id => l_component_appl_id
9262 , p_amb_context_code => l_amb_context_code
9263 , p_side => 'NA'
9264 );
9265
9266
9267 --
9268 --
9269 END IF;
9270
9271 --
9272 -- Update the line information that should be overwritten
9273 --
9274 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9275 p_header_num => 1);
9276 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9277
9278 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9279
9280 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9281 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9282 END IF;
9283
9284 --
9285 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9286 --
9287 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9288 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9289 ELSE
9290 ---------------------------------------------------------------------------------------------------
9291 -- 4262811a Switch Sign
9292 ---------------------------------------------------------------------------------------------------
9293 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9294 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9295 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9296 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9300 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9297 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9298 -- 5132302
9299 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9301
9302 END IF;
9303
9304 -- 4955764
9305 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9306 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9307
9308
9309 XLA_AE_LINES_PKG.ValidateCurrentLine;
9310 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9311
9312 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9313 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9314 ,p_balance_type_code => l_balance_type_code);
9315
9316 END IF;
9317
9318 -----------------------------------------------------------------------------------------
9319 -- 4262811 Multiperiod Accounting
9320 -----------------------------------------------------------------------------------------
9321 -- No MPA option is assigned.
9322
9323
9324 END IF;
9325 END IF;
9326 --
9327
9328 --
9329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9330 trace
9331 (p_msg => 'END of AcctLineType_49'
9332 ,p_level => C_LEVEL_PROCEDURE
9333 ,p_module => l_log_module);
9334 END IF;
9335 --
9336 EXCEPTION
9337 WHEN xla_exceptions_pkg.application_exception THEN
9338 RAISE;
9339 WHEN OTHERS THEN
9340 xla_exceptions_pkg.raise_message
9341 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_49');
9342 END AcctLineType_49;
9343 --
9344
9345 ---------------------------------------
9346 --
9347 -- PRIVATE FUNCTION
9348 -- AcctLineType_50
9349 --
9350 ---------------------------------------
9351 PROCEDURE AcctLineType_50 (
9352 p_application_id IN NUMBER
9353 ,p_event_id IN NUMBER
9354 ,p_calculate_acctd_flag IN VARCHAR2
9355 ,p_calculate_g_l_flag IN VARCHAR2
9356 ,p_actual_flag IN OUT VARCHAR2
9357 ,p_balance_type_code OUT VARCHAR2
9358 ,p_gain_or_loss_ref OUT VARCHAR2
9359
9360 --Transaction Account
9361 , p_source_1 IN NUMBER
9362 --Journal Line Type
9363 , p_source_2 IN VARCHAR2
9364 --Entered Amount
9365 , p_source_3 IN NUMBER
9366 --First Distribution Identifier
9367 , p_source_5 IN NUMBER
9368 --Distribution Type
9369 , p_source_6 IN VARCHAR2
9370 --Currency Code
9371 , p_source_7 IN VARCHAR2
9372 --Currency Conversion Date
9373 , p_source_8 IN DATE
9374 --Currency Conversion Rate
9375 , p_source_9 IN NUMBER
9376 --Currency Conversion Type
9377 , p_source_10 IN VARCHAR2
9378 --Accounted Amount
9379 , p_source_11 IN NUMBER
9380 )
9381 IS
9382
9383 l_component_type VARCHAR2(80);
9384 l_component_code VARCHAR2(30);
9385 l_component_type_code VARCHAR2(1);
9386 l_component_appl_id INTEGER;
9387 l_amb_context_code VARCHAR2(30);
9388 l_entity_code VARCHAR2(30);
9389 l_event_class_code VARCHAR2(30);
9390 l_ae_header_id NUMBER;
9391 l_event_type_code VARCHAR2(30);
9392 l_line_definition_code VARCHAR2(30);
9393 l_line_definition_owner_code VARCHAR2(1);
9394 --
9395 -- adr variables
9396 l_segment VARCHAR2(30);
9397 l_ccid NUMBER;
9398 l_adr_transaction_coa_id NUMBER;
9399 l_adr_accounting_coa_id NUMBER;
9400 l_adr_flexfield_segment_code VARCHAR2(30);
9401 l_adr_flex_value_set_id NUMBER;
9402 l_adr_value_type_code VARCHAR2(30);
9403 l_adr_value_combination_id NUMBER;
9404 l_adr_value_segment_code VARCHAR2(30);
9405
9406 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9407 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9408 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9409 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9410
9411 -- 4262811 Variables ------------------------------------------------------------------------------------------
9412 l_entered_amt_idx NUMBER;
9413 l_accted_amt_idx NUMBER;
9414 l_acc_rev_flag VARCHAR2(1);
9415 l_accrual_line_num NUMBER;
9416 l_tmp_amt NUMBER;
9417 l_acc_rev_natural_side_code VARCHAR2(1);
9418
9419 l_num_entries NUMBER;
9420 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9421 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9422 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9423 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9424 l_recog_line_1 NUMBER;
9425 l_recog_line_2 NUMBER;
9426
9427 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9428 l_bflow_applied_to_amt NUMBER; -- 5132302
9432
9429 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9430
9431 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9433 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9434 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9435
9436 ---------------------------------------------------------------------------------------------------------------
9437
9438
9439 --
9440 -- bulk performance
9441 --
9442 l_balance_type_code VARCHAR2(1);
9443 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
9444 l_log_module VARCHAR2(240);
9445
9446 --
9447 -- Upgrade strategy
9448 --
9449 l_actual_upg_option VARCHAR2(1);
9450 l_enc_upg_option VARCHAR2(1);
9451
9452 --
9453 BEGIN
9454 --
9455 IF g_log_enabled THEN
9456 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
9457 END IF;
9458 --
9459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9460
9461 trace
9462 (p_msg => 'BEGIN of AcctLineType_50'
9463 ,p_level => C_LEVEL_PROCEDURE
9464 ,p_module => l_log_module);
9465
9466 END IF;
9467 --
9468 l_component_type := 'AMB_JLT';
9469 l_component_code := 'AAP';
9470 l_component_type_code := 'S';
9471 l_component_appl_id := 555;
9472 l_amb_context_code := 'DEFAULT';
9473 l_entity_code := 'PURCHASING';
9474 l_event_class_code := 'DELIVER';
9475 l_event_type_code := 'XFER_TO_REGULAR';
9476 l_line_definition_owner_code := 'S';
9477 l_line_definition_code := 'XFER_TO_REG';
9478 --
9479 l_balance_type_code := 'A';
9480 l_segment := NULL;
9481 l_ccid := NULL;
9482 l_adr_transaction_coa_id := NULL;
9483 l_adr_accounting_coa_id := NULL;
9484 l_adr_flexfield_segment_code := NULL;
9485 l_adr_flex_value_set_id := NULL;
9486 l_adr_value_type_code := NULL;
9487 l_adr_value_combination_id := NULL;
9488 l_adr_value_segment_code := NULL;
9489
9490 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
9491 l_bflow_class_code := ''; -- 4219869 Business Flow
9492 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
9493 l_budgetary_control_flag := 'N';
9494
9495 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9496 l_bflow_applied_to_amt := NULL; -- 5132302
9497 l_entered_amt_idx := NULL; -- 4262811
9498 l_accted_amt_idx := NULL; -- 4262811
9499 l_acc_rev_flag := NULL; -- 4262811
9500 l_accrual_line_num := NULL; -- 4262811
9501 l_tmp_amt := NULL; -- 4262811
9502 --
9503
9504 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9505 l_balance_type_code <> 'B' THEN
9506 IF NVL(p_source_2,'
9507 ') = 'AAP'
9508 THEN
9509
9510 --
9511 XLA_AE_LINES_PKG.SetNewLine;
9512
9513 p_balance_type_code := l_balance_type_code;
9514 -- set the flag so later we will know whether the gain loss line needs to be created
9515
9516 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9517 p_actual_flag :='A';
9518 END IF;
9519
9520 --
9521 -- bulk performance
9522 --
9523 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9524 p_header_num => 0); -- 4262811
9525 --
9526 -- set accounting line options
9527 --
9528 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9529 p_natural_side_code => 'D'
9530 , p_gain_or_loss_flag => 'N'
9531 , p_gl_transfer_mode_code => 'D'
9532 , p_acct_entry_type_code => 'A'
9533 , p_switch_side_flag => 'Y'
9534 , p_merge_duplicate_code => 'W'
9535 );
9536 --
9537 l_acc_rev_natural_side_code := 'C'; -- 4262811
9538 --
9539 --
9540 -- set accounting line type info
9541 --
9542 xla_ae_lines_pkg.SetAcctLineType
9543 (p_component_type => l_component_type
9544 ,p_event_type_code => l_event_type_code
9545 ,p_line_definition_owner_code => l_line_definition_owner_code
9546 ,p_line_definition_code => l_line_definition_code
9547 ,p_accounting_line_code => l_component_code
9548 ,p_accounting_line_type_code => l_component_type_code
9549 ,p_accounting_line_appl_id => l_component_appl_id
9550 ,p_amb_context_code => l_amb_context_code
9551 ,p_entity_code => l_entity_code
9552 ,p_event_class_code => l_event_class_code);
9553 --
9554 -- set accounting class
9555 --
9556 xla_ae_lines_pkg.SetAcctClass(
9557 p_accounting_class_code => 'AAP'
9558 , p_ae_header_id => l_ae_header_id
9559 );
9560
9561 --
9562 -- set rounding class
9563 --
9564 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9565 'AAP';
9566
9567 --
9571 -- bulk performance
9568 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9569 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9570 --
9572 --
9573 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9574
9575 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9576 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9577
9578 -- 4955764
9579 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9580 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9581
9582 -- 4458381 Public Sector Enh
9583
9584 --
9585 -- set accounting attributes for the line type
9586 --
9587 l_entered_amt_idx := 3;
9588 l_accted_amt_idx := 8;
9589 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9590 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9591 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
9592 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9593 l_rec_acct_attrs.array_char_value(2) := p_source_6;
9594 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9595 l_rec_acct_attrs.array_num_value(3) := p_source_3;
9596 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9597 l_rec_acct_attrs.array_char_value(4) := p_source_7;
9598 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9599 l_rec_acct_attrs.array_date_value(5) := p_source_8;
9600 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9601 l_rec_acct_attrs.array_num_value(6) := p_source_9;
9602 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9603 l_rec_acct_attrs.array_char_value(7) := p_source_10;
9604 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9605 l_rec_acct_attrs.array_num_value(8) := p_source_11;
9606
9607 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9608 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9609
9610 ---------------------------------------------------------------------------------------------------------------
9611 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9612 ---------------------------------------------------------------------------------------------------------------
9613 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9614
9615 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9616 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9617
9618 IF xla_accounting_cache_pkg.GetValueChar
9619 (p_source_code => 'LEDGER_CATEGORY_CODE'
9620 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9621 AND l_bflow_method_code = 'PRIOR_ENTRY'
9622 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9623 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9624 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9625 )
9626 THEN
9627 xla_ae_lines_pkg.BflowUpgEntry
9628 (p_business_method_code => l_bflow_method_code
9629 ,p_business_class_code => l_bflow_class_code
9630 ,p_balance_type => l_balance_type_code);
9631 ELSE
9632 NULL;
9633 -- No business flow processing for business flow method of NONE.
9634 END IF;
9635
9636 --
9637 -- call analytical criteria
9638 --
9639
9640 --
9641 -- call description
9642 --
9643 -- No description or it is inherited.
9644 --
9645 -- call ADRs
9646 -- Bug 4922099
9647 --
9648 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9649 (NVL(l_actual_upg_option, 'N') = 'O') OR
9650 (NVL(l_enc_upg_option, 'N') = 'O')
9651 )
9652 THEN
9653 NULL;
9654 --
9655 --
9656
9657 l_ccid := AcctDerRule_2(
9658 p_application_id => p_application_id
9659 , p_ae_header_id => l_ae_header_id
9660 , p_source_1 => p_source_1
9661 , p_source_2 => p_source_2
9662 , x_transaction_coa_id => l_adr_transaction_coa_id
9663 , x_accounting_coa_id => l_adr_accounting_coa_id
9664 , x_value_type_code => l_adr_value_type_code
9665 , p_side => 'NA'
9666 );
9667
9668 xla_ae_lines_pkg.set_ccid(
9669 p_code_combination_id => l_ccid
9670 , p_value_type_code => l_adr_value_type_code
9671 , p_transaction_coa_id => l_adr_transaction_coa_id
9672 , p_accounting_coa_id => l_adr_accounting_coa_id
9673 , p_adr_code => 'AAP'
9674 , p_adr_type_code => 'S'
9675 , p_component_type => l_component_type
9676 , p_component_code => l_component_code
9677 , p_component_type_code => l_component_type_code
9678 , p_component_appl_id => l_component_appl_id
9679 , p_amb_context_code => l_amb_context_code
9680 , p_side => 'NA'
9681 );
9682
9683
9684 --
9688 -- Bug 4922099
9685 --
9686 END IF;
9687 --
9689 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9690 (NVL(l_enc_upg_option, 'N') = 'O')
9691 ) AND
9692 (l_bflow_method_code = 'PRIOR_ENTRY')
9693 )
9694 THEN
9695 IF
9696 --
9697 1 = 2
9698 --
9699 THEN
9700 xla_accounting_err_pkg.build_message
9701 (p_appli_s_name => 'XLA'
9702 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9703 ,p_token_1 => 'LINE_NUMBER'
9704 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
9705 ,p_token_2 => 'LINE_TYPE_NAME'
9706 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
9707 l_component_type
9708 ,l_component_code
9709 ,l_component_type_code
9710 ,l_component_appl_id
9711 ,l_amb_context_code
9712 ,l_entity_code
9713 ,l_event_class_code
9714 )
9715 ,p_token_3 => 'OWNER'
9716 ,p_value_3 => xla_lookups_pkg.get_meaning(
9717 p_lookup_type => 'XLA_OWNER_TYPE'
9718 ,p_lookup_code => l_component_type_code
9719 )
9720 ,p_token_4 => 'PRODUCT_NAME'
9721 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9722 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9723 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9724 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9725 ,p_ae_header_id => NULL
9726 );
9727
9728 IF (C_LEVEL_ERROR>= g_log_level) THEN
9729 trace
9730 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9731 ,p_level => C_LEVEL_ERROR
9732 ,p_module => l_log_module);
9733 END IF;
9734 END IF;
9735 END IF;
9736 --
9737 --
9738 ------------------------------------------------------------------------------------------------
9739 -- 4219869 Business Flow
9740 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9741 -- Prior Entry. Currently, the following code is always generated.
9742 ------------------------------------------------------------------------------------------------
9743 XLA_AE_LINES_PKG.ValidateCurrentLine;
9744
9745 ------------------------------------------------------------------------------------
9746 -- 4219869 Business Flow
9747 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9748 ------------------------------------------------------------------------------------
9749 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9750
9751 ----------------------------------------------------------------------------------
9752 -- 4219869 Business Flow
9753 -- Update journal entry status -- Need to generate this within IF <condition>
9754 ----------------------------------------------------------------------------------
9755 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9756 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9757 ,p_balance_type_code => l_balance_type_code
9758 );
9759
9760 -------------------------------------------------------------------------------------------
9761 -- 4262811 - Generate the Accrual Reversal lines
9762 -------------------------------------------------------------------------------------------
9763 BEGIN
9764 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9765 (g_array_event(p_event_id).array_value_num('header_index'));
9766 IF l_acc_rev_flag IS NULL THEN
9767 l_acc_rev_flag := 'N';
9768 END IF;
9769 EXCEPTION
9770 WHEN OTHERS THEN
9771 l_acc_rev_flag := 'N';
9772 END;
9773 --
9774 IF (l_acc_rev_flag = 'Y') THEN
9775
9776 -- 4645092 ------------------------------------------------------------------------------
9777 -- To allow MPA report to determine if it should generate report process
9778 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9779 ------------------------------------------------------------------------------------------
9780
9784 -- call ADRs
9781 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9782 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9783 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
9785 -- Bug 4922099
9786 --
9787 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9788 (NVL(l_actual_upg_option, 'N') = 'O') OR
9789 (NVL(l_enc_upg_option, 'N') = 'O')
9790 )
9791 THEN
9792 NULL;
9793 --
9794 --
9795
9796 l_ccid := AcctDerRule_2(
9797 p_application_id => p_application_id
9798 , p_ae_header_id => l_ae_header_id
9799 , p_source_1 => p_source_1
9800 , p_source_2 => p_source_2
9801 , x_transaction_coa_id => l_adr_transaction_coa_id
9802 , x_accounting_coa_id => l_adr_accounting_coa_id
9803 , x_value_type_code => l_adr_value_type_code
9804 , p_side => 'NA'
9805 );
9806
9807 xla_ae_lines_pkg.set_ccid(
9808 p_code_combination_id => l_ccid
9809 , p_value_type_code => l_adr_value_type_code
9810 , p_transaction_coa_id => l_adr_transaction_coa_id
9811 , p_accounting_coa_id => l_adr_accounting_coa_id
9812 , p_adr_code => 'AAP'
9813 , p_adr_type_code => 'S'
9814 , p_component_type => l_component_type
9815 , p_component_code => l_component_code
9816 , p_component_type_code => l_component_type_code
9817 , p_component_appl_id => l_component_appl_id
9818 , p_amb_context_code => l_amb_context_code
9819 , p_side => 'NA'
9820 );
9821
9822
9823 --
9824 --
9825 END IF;
9826
9827 --
9828 -- Update the line information that should be overwritten
9829 --
9830 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9831 p_header_num => 1);
9832 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9833
9834 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9835
9836 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9837 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9838 END IF;
9839
9840 --
9841 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9842 --
9843 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9844 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9845 ELSE
9846 ---------------------------------------------------------------------------------------------------
9847 -- 4262811a Switch Sign
9848 ---------------------------------------------------------------------------------------------------
9849 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9850 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9851 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9852 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9853 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9854 -- 5132302
9855 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9856 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9857
9858 END IF;
9859
9860 -- 4955764
9861 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9862 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9863
9864
9865 XLA_AE_LINES_PKG.ValidateCurrentLine;
9866 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9867
9868 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9869 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9870 ,p_balance_type_code => l_balance_type_code);
9871
9872 END IF;
9873
9874 -----------------------------------------------------------------------------------------
9875 -- 4262811 Multiperiod Accounting
9876 -----------------------------------------------------------------------------------------
9877 -- No MPA option is assigned.
9878
9879
9880 END IF;
9881 END IF;
9882 --
9883
9884 --
9885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9886 trace
9887 (p_msg => 'END of AcctLineType_50'
9888 ,p_level => C_LEVEL_PROCEDURE
9889 ,p_module => l_log_module);
9890 END IF;
9891 --
9892 EXCEPTION
9893 WHEN xla_exceptions_pkg.application_exception THEN
9894 RAISE;
9895 WHEN OTHERS THEN
9896 xla_exceptions_pkg.raise_message
9897 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_50');
9898 END AcctLineType_50;
9899 --
9900
9904 -- AcctLineType_51
9901 ---------------------------------------
9902 --
9903 -- PRIVATE FUNCTION
9905 --
9906 ---------------------------------------
9907 PROCEDURE AcctLineType_51 (
9908 p_application_id IN NUMBER
9909 ,p_event_id IN NUMBER
9910 ,p_calculate_acctd_flag IN VARCHAR2
9911 ,p_calculate_g_l_flag IN VARCHAR2
9912 ,p_actual_flag IN OUT VARCHAR2
9913 ,p_balance_type_code OUT VARCHAR2
9914 ,p_gain_or_loss_ref OUT VARCHAR2
9915
9916 --Transaction Account
9917 , p_source_1 IN NUMBER
9918 --Journal Line Type
9919 , p_source_2 IN VARCHAR2
9920 --Entered Amount
9921 , p_source_3 IN NUMBER
9922 --First Distribution Identifier
9923 , p_source_5 IN NUMBER
9924 --Distribution Type
9925 , p_source_6 IN VARCHAR2
9926 --Currency Code
9927 , p_source_7 IN VARCHAR2
9928 --Currency Conversion Date
9929 , p_source_8 IN DATE
9930 --Currency Conversion Rate
9931 , p_source_9 IN NUMBER
9932 --Currency Conversion Type
9933 , p_source_10 IN VARCHAR2
9934 --Accounted Amount
9935 , p_source_11 IN NUMBER
9936 )
9937 IS
9938
9939 l_component_type VARCHAR2(80);
9940 l_component_code VARCHAR2(30);
9941 l_component_type_code VARCHAR2(1);
9942 l_component_appl_id INTEGER;
9943 l_amb_context_code VARCHAR2(30);
9944 l_entity_code VARCHAR2(30);
9945 l_event_class_code VARCHAR2(30);
9946 l_ae_header_id NUMBER;
9947 l_event_type_code VARCHAR2(30);
9948 l_line_definition_code VARCHAR2(30);
9949 l_line_definition_owner_code VARCHAR2(1);
9950 --
9951 -- adr variables
9952 l_segment VARCHAR2(30);
9953 l_ccid NUMBER;
9954 l_adr_transaction_coa_id NUMBER;
9955 l_adr_accounting_coa_id NUMBER;
9956 l_adr_flexfield_segment_code VARCHAR2(30);
9957 l_adr_flex_value_set_id NUMBER;
9958 l_adr_value_type_code VARCHAR2(30);
9959 l_adr_value_combination_id NUMBER;
9960 l_adr_value_segment_code VARCHAR2(30);
9961
9962 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9963 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9964 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9965 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9966
9967 -- 4262811 Variables ------------------------------------------------------------------------------------------
9968 l_entered_amt_idx NUMBER;
9969 l_accted_amt_idx NUMBER;
9970 l_acc_rev_flag VARCHAR2(1);
9971 l_accrual_line_num NUMBER;
9972 l_tmp_amt NUMBER;
9973 l_acc_rev_natural_side_code VARCHAR2(1);
9974
9975 l_num_entries NUMBER;
9976 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9977 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9978 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9979 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9980 l_recog_line_1 NUMBER;
9981 l_recog_line_2 NUMBER;
9982
9983 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9984 l_bflow_applied_to_amt NUMBER; -- 5132302
9985 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9986
9987 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9988
9989 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9990 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9991
9992 ---------------------------------------------------------------------------------------------------------------
9993
9994
9995 --
9996 -- bulk performance
9997 --
9998 l_balance_type_code VARCHAR2(1);
9999 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
10000 l_log_module VARCHAR2(240);
10001
10002 --
10003 -- Upgrade strategy
10004 --
10005 l_actual_upg_option VARCHAR2(1);
10006 l_enc_upg_option VARCHAR2(1);
10007
10008 --
10009 BEGIN
10010 --
10011 IF g_log_enabled THEN
10012 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
10013 END IF;
10014 --
10015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10016
10017 trace
10018 (p_msg => 'BEGIN of AcctLineType_51'
10019 ,p_level => C_LEVEL_PROCEDURE
10020 ,p_module => l_log_module);
10021
10022 END IF;
10023 --
10024 l_component_type := 'AMB_JLT';
10025 l_component_code := 'AAP';
10026 l_component_type_code := 'S';
10027 l_component_appl_id := 555;
10028 l_amb_context_code := 'DEFAULT';
10029 l_entity_code := 'PURCHASING';
10030 l_event_class_code := 'DELIVER';
10031 l_event_type_code := 'RETRO_PRICE_UPD';
10032 l_line_definition_owner_code := 'S';
10033 l_line_definition_code := 'RETRO_PRICE_UPD';
10034 --
10035 l_balance_type_code := 'A';
10036 l_segment := NULL;
10040 l_adr_flexfield_segment_code := NULL;
10037 l_ccid := NULL;
10038 l_adr_transaction_coa_id := NULL;
10039 l_adr_accounting_coa_id := NULL;
10041 l_adr_flex_value_set_id := NULL;
10042 l_adr_value_type_code := NULL;
10043 l_adr_value_combination_id := NULL;
10044 l_adr_value_segment_code := NULL;
10045
10046 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
10047 l_bflow_class_code := ''; -- 4219869 Business Flow
10048 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
10049 l_budgetary_control_flag := 'N';
10050
10051 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10052 l_bflow_applied_to_amt := NULL; -- 5132302
10053 l_entered_amt_idx := NULL; -- 4262811
10054 l_accted_amt_idx := NULL; -- 4262811
10055 l_acc_rev_flag := NULL; -- 4262811
10056 l_accrual_line_num := NULL; -- 4262811
10057 l_tmp_amt := NULL; -- 4262811
10058 --
10059
10060 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10061 l_balance_type_code <> 'B' THEN
10062 IF NVL(p_source_2,'
10063 ') = 'AAP'
10064 THEN
10065
10066 --
10067 XLA_AE_LINES_PKG.SetNewLine;
10068
10069 p_balance_type_code := l_balance_type_code;
10070 -- set the flag so later we will know whether the gain loss line needs to be created
10071
10072 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10073 p_actual_flag :='A';
10074 END IF;
10075
10076 --
10077 -- bulk performance
10078 --
10079 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10080 p_header_num => 0); -- 4262811
10081 --
10082 -- set accounting line options
10083 --
10084 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10085 p_natural_side_code => 'D'
10086 , p_gain_or_loss_flag => 'N'
10087 , p_gl_transfer_mode_code => 'D'
10088 , p_acct_entry_type_code => 'A'
10089 , p_switch_side_flag => 'Y'
10090 , p_merge_duplicate_code => 'W'
10091 );
10092 --
10093 l_acc_rev_natural_side_code := 'C'; -- 4262811
10094 --
10095 --
10096 -- set accounting line type info
10097 --
10098 xla_ae_lines_pkg.SetAcctLineType
10099 (p_component_type => l_component_type
10100 ,p_event_type_code => l_event_type_code
10101 ,p_line_definition_owner_code => l_line_definition_owner_code
10102 ,p_line_definition_code => l_line_definition_code
10103 ,p_accounting_line_code => l_component_code
10104 ,p_accounting_line_type_code => l_component_type_code
10105 ,p_accounting_line_appl_id => l_component_appl_id
10106 ,p_amb_context_code => l_amb_context_code
10107 ,p_entity_code => l_entity_code
10108 ,p_event_class_code => l_event_class_code);
10109 --
10110 -- set accounting class
10111 --
10112 xla_ae_lines_pkg.SetAcctClass(
10113 p_accounting_class_code => 'AAP'
10114 , p_ae_header_id => l_ae_header_id
10115 );
10116
10117 --
10118 -- set rounding class
10119 --
10120 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10121 'AAP';
10122
10123 --
10124 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10125 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10126 --
10127 -- bulk performance
10128 --
10129 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10130
10131 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10132 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10133
10134 -- 4955764
10135 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10136 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10137
10138 -- 4458381 Public Sector Enh
10139
10140 --
10141 -- set accounting attributes for the line type
10142 --
10143 l_entered_amt_idx := 3;
10144 l_accted_amt_idx := 8;
10145 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10146 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10147 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
10148 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10149 l_rec_acct_attrs.array_char_value(2) := p_source_6;
10150 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10151 l_rec_acct_attrs.array_num_value(3) := p_source_3;
10152 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10153 l_rec_acct_attrs.array_char_value(4) := p_source_7;
10154 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10155 l_rec_acct_attrs.array_date_value(5) := p_source_8;
10156 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10157 l_rec_acct_attrs.array_num_value(6) := p_source_9;
10161 l_rec_acct_attrs.array_num_value(8) := p_source_11;
10158 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10159 l_rec_acct_attrs.array_char_value(7) := p_source_10;
10160 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10162
10163 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10164 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10165
10166 ---------------------------------------------------------------------------------------------------------------
10167 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10168 ---------------------------------------------------------------------------------------------------------------
10169 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10170
10171 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10172 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10173
10174 IF xla_accounting_cache_pkg.GetValueChar
10175 (p_source_code => 'LEDGER_CATEGORY_CODE'
10176 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10177 AND l_bflow_method_code = 'PRIOR_ENTRY'
10178 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10179 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10180 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10181 )
10182 THEN
10183 xla_ae_lines_pkg.BflowUpgEntry
10184 (p_business_method_code => l_bflow_method_code
10185 ,p_business_class_code => l_bflow_class_code
10186 ,p_balance_type => l_balance_type_code);
10187 ELSE
10188 NULL;
10189 -- No business flow processing for business flow method of NONE.
10190 END IF;
10191
10192 --
10193 -- call analytical criteria
10194 --
10195
10196 --
10197 -- call description
10198 --
10199 -- No description or it is inherited.
10200 --
10201 -- call ADRs
10202 -- Bug 4922099
10203 --
10204 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10205 (NVL(l_actual_upg_option, 'N') = 'O') OR
10206 (NVL(l_enc_upg_option, 'N') = 'O')
10207 )
10208 THEN
10209 NULL;
10210 --
10211 --
10212
10213 l_ccid := AcctDerRule_2(
10214 p_application_id => p_application_id
10215 , p_ae_header_id => l_ae_header_id
10216 , p_source_1 => p_source_1
10217 , p_source_2 => p_source_2
10218 , x_transaction_coa_id => l_adr_transaction_coa_id
10219 , x_accounting_coa_id => l_adr_accounting_coa_id
10220 , x_value_type_code => l_adr_value_type_code
10221 , p_side => 'NA'
10222 );
10223
10224 xla_ae_lines_pkg.set_ccid(
10225 p_code_combination_id => l_ccid
10226 , p_value_type_code => l_adr_value_type_code
10227 , p_transaction_coa_id => l_adr_transaction_coa_id
10228 , p_accounting_coa_id => l_adr_accounting_coa_id
10229 , p_adr_code => 'AAP'
10230 , p_adr_type_code => 'S'
10231 , p_component_type => l_component_type
10232 , p_component_code => l_component_code
10233 , p_component_type_code => l_component_type_code
10234 , p_component_appl_id => l_component_appl_id
10235 , p_amb_context_code => l_amb_context_code
10236 , p_side => 'NA'
10237 );
10238
10239
10240 --
10241 --
10242 END IF;
10243 --
10244 -- Bug 4922099
10245 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10246 (NVL(l_enc_upg_option, 'N') = 'O')
10247 ) AND
10248 (l_bflow_method_code = 'PRIOR_ENTRY')
10249 )
10250 THEN
10251 IF
10252 --
10253 1 = 2
10254 --
10255 THEN
10256 xla_accounting_err_pkg.build_message
10257 (p_appli_s_name => 'XLA'
10258 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10259 ,p_token_1 => 'LINE_NUMBER'
10260 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
10261 ,p_token_2 => 'LINE_TYPE_NAME'
10262 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
10263 l_component_type
10264 ,l_component_code
10265 ,l_component_type_code
10266 ,l_component_appl_id
10267 ,l_amb_context_code
10268 ,l_entity_code
10269 ,l_event_class_code
10270 )
10274 ,p_lookup_code => l_component_type_code
10271 ,p_token_3 => 'OWNER'
10272 ,p_value_3 => xla_lookups_pkg.get_meaning(
10273 p_lookup_type => 'XLA_OWNER_TYPE'
10275 )
10276 ,p_token_4 => 'PRODUCT_NAME'
10277 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10278 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10279 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10280 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10281 ,p_ae_header_id => NULL
10282 );
10283
10284 IF (C_LEVEL_ERROR>= g_log_level) THEN
10285 trace
10286 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10287 ,p_level => C_LEVEL_ERROR
10288 ,p_module => l_log_module);
10289 END IF;
10290 END IF;
10291 END IF;
10292 --
10293 --
10294 ------------------------------------------------------------------------------------------------
10295 -- 4219869 Business Flow
10296 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10297 -- Prior Entry. Currently, the following code is always generated.
10298 ------------------------------------------------------------------------------------------------
10299 XLA_AE_LINES_PKG.ValidateCurrentLine;
10300
10301 ------------------------------------------------------------------------------------
10302 -- 4219869 Business Flow
10303 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10304 ------------------------------------------------------------------------------------
10305 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10306
10307 ----------------------------------------------------------------------------------
10308 -- 4219869 Business Flow
10309 -- Update journal entry status -- Need to generate this within IF <condition>
10310 ----------------------------------------------------------------------------------
10311 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10312 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10313 ,p_balance_type_code => l_balance_type_code
10314 );
10315
10316 -------------------------------------------------------------------------------------------
10317 -- 4262811 - Generate the Accrual Reversal lines
10318 -------------------------------------------------------------------------------------------
10319 BEGIN
10320 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10321 (g_array_event(p_event_id).array_value_num('header_index'));
10322 IF l_acc_rev_flag IS NULL THEN
10323 l_acc_rev_flag := 'N';
10324 END IF;
10325 EXCEPTION
10326 WHEN OTHERS THEN
10327 l_acc_rev_flag := 'N';
10328 END;
10329 --
10330 IF (l_acc_rev_flag = 'Y') THEN
10331
10332 -- 4645092 ------------------------------------------------------------------------------
10333 -- To allow MPA report to determine if it should generate report process
10334 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10335 ------------------------------------------------------------------------------------------
10336
10337 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10338 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10339 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
10340 -- call ADRs
10341 -- Bug 4922099
10342 --
10343 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10344 (NVL(l_actual_upg_option, 'N') = 'O') OR
10345 (NVL(l_enc_upg_option, 'N') = 'O')
10346 )
10347 THEN
10348 NULL;
10349 --
10350 --
10351
10352 l_ccid := AcctDerRule_2(
10353 p_application_id => p_application_id
10354 , p_ae_header_id => l_ae_header_id
10355 , p_source_1 => p_source_1
10356 , p_source_2 => p_source_2
10357 , x_transaction_coa_id => l_adr_transaction_coa_id
10358 , x_accounting_coa_id => l_adr_accounting_coa_id
10359 , x_value_type_code => l_adr_value_type_code
10360 , p_side => 'NA'
10361 );
10362
10363 xla_ae_lines_pkg.set_ccid(
10364 p_code_combination_id => l_ccid
10365 , p_value_type_code => l_adr_value_type_code
10366 , p_transaction_coa_id => l_adr_transaction_coa_id
10367 , p_accounting_coa_id => l_adr_accounting_coa_id
10368 , p_adr_code => 'AAP'
10369 , p_adr_type_code => 'S'
10370 , p_component_type => l_component_type
10371 , p_component_code => l_component_code
10372 , p_component_type_code => l_component_type_code
10376 );
10373 , p_component_appl_id => l_component_appl_id
10374 , p_amb_context_code => l_amb_context_code
10375 , p_side => 'NA'
10377
10378
10379 --
10380 --
10381 END IF;
10382
10383 --
10384 -- Update the line information that should be overwritten
10385 --
10386 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10387 p_header_num => 1);
10388 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
10389
10390 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10391
10392 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
10393 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10394 END IF;
10395
10396 --
10397 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10398 --
10399 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10400 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
10401 ELSE
10402 ---------------------------------------------------------------------------------------------------
10403 -- 4262811a Switch Sign
10404 ---------------------------------------------------------------------------------------------------
10405 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
10406 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10407 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10408 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10409 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10410 -- 5132302
10411 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10412 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10413
10414 END IF;
10415
10416 -- 4955764
10417 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10418 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10419
10420
10421 XLA_AE_LINES_PKG.ValidateCurrentLine;
10422 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10423
10424 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10425 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10426 ,p_balance_type_code => l_balance_type_code);
10427
10428 END IF;
10429
10430 -----------------------------------------------------------------------------------------
10431 -- 4262811 Multiperiod Accounting
10432 -----------------------------------------------------------------------------------------
10433 -- No MPA option is assigned.
10434
10435
10436 END IF;
10437 END IF;
10438 --
10439
10440 --
10441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10442 trace
10443 (p_msg => 'END of AcctLineType_51'
10444 ,p_level => C_LEVEL_PROCEDURE
10445 ,p_module => l_log_module);
10446 END IF;
10447 --
10448 EXCEPTION
10449 WHEN xla_exceptions_pkg.application_exception THEN
10450 RAISE;
10451 WHEN OTHERS THEN
10452 xla_exceptions_pkg.raise_message
10453 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_51');
10454 END AcctLineType_51;
10455 --
10456
10457 ---------------------------------------
10458 --
10459 -- PRIVATE FUNCTION
10460 -- AcctLineType_52
10461 --
10462 ---------------------------------------
10463 PROCEDURE AcctLineType_52 (
10464 p_application_id IN NUMBER
10465 ,p_event_id IN NUMBER
10466 ,p_calculate_acctd_flag IN VARCHAR2
10467 ,p_calculate_g_l_flag IN VARCHAR2
10468 ,p_actual_flag IN OUT VARCHAR2
10469 ,p_balance_type_code OUT VARCHAR2
10470 ,p_gain_or_loss_ref OUT VARCHAR2
10471
10472 --Transaction Account
10473 , p_source_1 IN NUMBER
10474 --Journal Line Type
10475 , p_source_2 IN VARCHAR2
10476 --Entered Amount
10477 , p_source_3 IN NUMBER
10478 --First Distribution Identifier
10479 , p_source_5 IN NUMBER
10480 --Distribution Type
10481 , p_source_6 IN VARCHAR2
10482 --Currency Code
10483 , p_source_7 IN VARCHAR2
10484 --Currency Conversion Date
10485 , p_source_8 IN DATE
10486 --Currency Conversion Rate
10487 , p_source_9 IN NUMBER
10488 --Currency Conversion Type
10489 , p_source_10 IN VARCHAR2
10490 --Accounted Amount
10491 , p_source_11 IN NUMBER
10492 )
10493 IS
10494
10495 l_component_type VARCHAR2(80);
10496 l_component_code VARCHAR2(30);
10497 l_component_type_code VARCHAR2(1);
10498 l_component_appl_id INTEGER;
10499 l_amb_context_code VARCHAR2(30);
10503 l_event_type_code VARCHAR2(30);
10500 l_entity_code VARCHAR2(30);
10501 l_event_class_code VARCHAR2(30);
10502 l_ae_header_id NUMBER;
10504 l_line_definition_code VARCHAR2(30);
10505 l_line_definition_owner_code VARCHAR2(1);
10506 --
10507 -- adr variables
10508 l_segment VARCHAR2(30);
10509 l_ccid NUMBER;
10510 l_adr_transaction_coa_id NUMBER;
10511 l_adr_accounting_coa_id NUMBER;
10512 l_adr_flexfield_segment_code VARCHAR2(30);
10513 l_adr_flex_value_set_id NUMBER;
10514 l_adr_value_type_code VARCHAR2(30);
10515 l_adr_value_combination_id NUMBER;
10516 l_adr_value_segment_code VARCHAR2(30);
10517
10518 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
10519 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
10520 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
10521 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
10522
10523 -- 4262811 Variables ------------------------------------------------------------------------------------------
10524 l_entered_amt_idx NUMBER;
10525 l_accted_amt_idx NUMBER;
10526 l_acc_rev_flag VARCHAR2(1);
10527 l_accrual_line_num NUMBER;
10528 l_tmp_amt NUMBER;
10529 l_acc_rev_natural_side_code VARCHAR2(1);
10530
10531 l_num_entries NUMBER;
10532 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
10533 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
10534 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
10535 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
10536 l_recog_line_1 NUMBER;
10537 l_recog_line_2 NUMBER;
10538
10539 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
10540 l_bflow_applied_to_amt NUMBER; -- 5132302
10541 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
10542
10543 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10544
10545 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
10546 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
10547
10548 ---------------------------------------------------------------------------------------------------------------
10549
10550
10551 --
10552 -- bulk performance
10553 --
10554 l_balance_type_code VARCHAR2(1);
10555 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
10556 l_log_module VARCHAR2(240);
10557
10558 --
10559 -- Upgrade strategy
10560 --
10561 l_actual_upg_option VARCHAR2(1);
10562 l_enc_upg_option VARCHAR2(1);
10563
10564 --
10565 BEGIN
10566 --
10567 IF g_log_enabled THEN
10568 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
10569 END IF;
10570 --
10571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10572
10573 trace
10574 (p_msg => 'BEGIN of AcctLineType_52'
10575 ,p_level => C_LEVEL_PROCEDURE
10576 ,p_module => l_log_module);
10577
10578 END IF;
10579 --
10580 l_component_type := 'AMB_JLT';
10581 l_component_code := 'AAP';
10582 l_component_type_code := 'S';
10583 l_component_appl_id := 555;
10584 l_amb_context_code := 'DEFAULT';
10585 l_entity_code := 'PURCHASING';
10586 l_event_class_code := 'RECEIVE';
10587 l_event_type_code := 'CORRECTION_RECEIVE';
10588 l_line_definition_owner_code := 'S';
10589 l_line_definition_code := 'CORRECTION_RECEIVE';
10590 --
10591 l_balance_type_code := 'A';
10592 l_segment := NULL;
10593 l_ccid := NULL;
10594 l_adr_transaction_coa_id := NULL;
10595 l_adr_accounting_coa_id := NULL;
10596 l_adr_flexfield_segment_code := NULL;
10597 l_adr_flex_value_set_id := NULL;
10598 l_adr_value_type_code := NULL;
10599 l_adr_value_combination_id := NULL;
10600 l_adr_value_segment_code := NULL;
10601
10602 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
10603 l_bflow_class_code := ''; -- 4219869 Business Flow
10604 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
10605 l_budgetary_control_flag := 'N';
10606
10607 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10608 l_bflow_applied_to_amt := NULL; -- 5132302
10609 l_entered_amt_idx := NULL; -- 4262811
10610 l_accted_amt_idx := NULL; -- 4262811
10611 l_acc_rev_flag := NULL; -- 4262811
10612 l_accrual_line_num := NULL; -- 4262811
10613 l_tmp_amt := NULL; -- 4262811
10614 --
10615
10616 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10617 l_balance_type_code <> 'B' THEN
10618 IF NVL(p_source_2,'
10619 ') = 'AAP'
10620 THEN
10621
10622 --
10623 XLA_AE_LINES_PKG.SetNewLine;
10624
10625 p_balance_type_code := l_balance_type_code;
10626 -- set the flag so later we will know whether the gain loss line needs to be created
10627
10631
10628 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10629 p_actual_flag :='A';
10630 END IF;
10632 --
10633 -- bulk performance
10634 --
10635 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10636 p_header_num => 0); -- 4262811
10637 --
10638 -- set accounting line options
10639 --
10640 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10641 p_natural_side_code => 'D'
10642 , p_gain_or_loss_flag => 'N'
10643 , p_gl_transfer_mode_code => 'D'
10644 , p_acct_entry_type_code => 'A'
10645 , p_switch_side_flag => 'Y'
10646 , p_merge_duplicate_code => 'W'
10647 );
10648 --
10649 l_acc_rev_natural_side_code := 'C'; -- 4262811
10650 --
10651 --
10652 -- set accounting line type info
10653 --
10654 xla_ae_lines_pkg.SetAcctLineType
10655 (p_component_type => l_component_type
10656 ,p_event_type_code => l_event_type_code
10657 ,p_line_definition_owner_code => l_line_definition_owner_code
10658 ,p_line_definition_code => l_line_definition_code
10659 ,p_accounting_line_code => l_component_code
10660 ,p_accounting_line_type_code => l_component_type_code
10661 ,p_accounting_line_appl_id => l_component_appl_id
10662 ,p_amb_context_code => l_amb_context_code
10663 ,p_entity_code => l_entity_code
10664 ,p_event_class_code => l_event_class_code);
10665 --
10666 -- set accounting class
10667 --
10668 xla_ae_lines_pkg.SetAcctClass(
10669 p_accounting_class_code => 'AAP'
10670 , p_ae_header_id => l_ae_header_id
10671 );
10672
10673 --
10674 -- set rounding class
10675 --
10676 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10677 'AAP';
10678
10679 --
10680 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10681 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10682 --
10683 -- bulk performance
10684 --
10685 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10686
10687 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10688 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10689
10690 -- 4955764
10691 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10692 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10693
10694 -- 4458381 Public Sector Enh
10695
10696 --
10697 -- set accounting attributes for the line type
10698 --
10699 l_entered_amt_idx := 3;
10700 l_accted_amt_idx := 8;
10701 l_bflow_applied_to_amt_idx := NULL; -- 5132302
10702 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10703 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
10704 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10705 l_rec_acct_attrs.array_char_value(2) := p_source_6;
10706 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10707 l_rec_acct_attrs.array_num_value(3) := p_source_3;
10708 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10709 l_rec_acct_attrs.array_char_value(4) := p_source_7;
10710 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10711 l_rec_acct_attrs.array_date_value(5) := p_source_8;
10712 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10713 l_rec_acct_attrs.array_num_value(6) := p_source_9;
10714 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10715 l_rec_acct_attrs.array_char_value(7) := p_source_10;
10716 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10717 l_rec_acct_attrs.array_num_value(8) := p_source_11;
10718
10719 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10720 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10721
10722 ---------------------------------------------------------------------------------------------------------------
10723 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10724 ---------------------------------------------------------------------------------------------------------------
10725 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10726
10727 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10728 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10729
10730 IF xla_accounting_cache_pkg.GetValueChar
10731 (p_source_code => 'LEDGER_CATEGORY_CODE'
10732 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10733 AND l_bflow_method_code = 'PRIOR_ENTRY'
10734 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10735 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10739 xla_ae_lines_pkg.BflowUpgEntry
10736 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10737 )
10738 THEN
10740 (p_business_method_code => l_bflow_method_code
10741 ,p_business_class_code => l_bflow_class_code
10742 ,p_balance_type => l_balance_type_code);
10743 ELSE
10744 NULL;
10745 -- No business flow processing for business flow method of NONE.
10746 END IF;
10747
10748 --
10749 -- call analytical criteria
10750 --
10751
10752 --
10753 -- call description
10754 --
10755 -- No description or it is inherited.
10756 --
10757 -- call ADRs
10758 -- Bug 4922099
10759 --
10760 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10761 (NVL(l_actual_upg_option, 'N') = 'O') OR
10762 (NVL(l_enc_upg_option, 'N') = 'O')
10763 )
10764 THEN
10765 NULL;
10766 --
10767 --
10768
10769 l_ccid := AcctDerRule_2(
10770 p_application_id => p_application_id
10771 , p_ae_header_id => l_ae_header_id
10772 , p_source_1 => p_source_1
10773 , p_source_2 => p_source_2
10774 , x_transaction_coa_id => l_adr_transaction_coa_id
10775 , x_accounting_coa_id => l_adr_accounting_coa_id
10776 , x_value_type_code => l_adr_value_type_code
10777 , p_side => 'NA'
10778 );
10779
10780 xla_ae_lines_pkg.set_ccid(
10781 p_code_combination_id => l_ccid
10782 , p_value_type_code => l_adr_value_type_code
10783 , p_transaction_coa_id => l_adr_transaction_coa_id
10784 , p_accounting_coa_id => l_adr_accounting_coa_id
10785 , p_adr_code => 'AAP'
10786 , p_adr_type_code => 'S'
10787 , p_component_type => l_component_type
10788 , p_component_code => l_component_code
10789 , p_component_type_code => l_component_type_code
10790 , p_component_appl_id => l_component_appl_id
10791 , p_amb_context_code => l_amb_context_code
10792 , p_side => 'NA'
10793 );
10794
10795
10796 --
10797 --
10798 END IF;
10799 --
10800 -- Bug 4922099
10801 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10802 (NVL(l_enc_upg_option, 'N') = 'O')
10803 ) AND
10804 (l_bflow_method_code = 'PRIOR_ENTRY')
10805 )
10806 THEN
10807 IF
10808 --
10809 1 = 2
10810 --
10811 THEN
10812 xla_accounting_err_pkg.build_message
10813 (p_appli_s_name => 'XLA'
10814 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10815 ,p_token_1 => 'LINE_NUMBER'
10816 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
10817 ,p_token_2 => 'LINE_TYPE_NAME'
10818 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
10819 l_component_type
10820 ,l_component_code
10821 ,l_component_type_code
10822 ,l_component_appl_id
10823 ,l_amb_context_code
10824 ,l_entity_code
10825 ,l_event_class_code
10826 )
10827 ,p_token_3 => 'OWNER'
10828 ,p_value_3 => xla_lookups_pkg.get_meaning(
10829 p_lookup_type => 'XLA_OWNER_TYPE'
10830 ,p_lookup_code => l_component_type_code
10831 )
10832 ,p_token_4 => 'PRODUCT_NAME'
10833 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10834 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10835 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10836 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10837 ,p_ae_header_id => NULL
10838 );
10839
10840 IF (C_LEVEL_ERROR>= g_log_level) THEN
10841 trace
10842 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10843 ,p_level => C_LEVEL_ERROR
10844 ,p_module => l_log_module);
10845 END IF;
10846 END IF;
10850 ------------------------------------------------------------------------------------------------
10847 END IF;
10848 --
10849 --
10851 -- 4219869 Business Flow
10852 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10853 -- Prior Entry. Currently, the following code is always generated.
10854 ------------------------------------------------------------------------------------------------
10855 XLA_AE_LINES_PKG.ValidateCurrentLine;
10856
10857 ------------------------------------------------------------------------------------
10858 -- 4219869 Business Flow
10859 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10860 ------------------------------------------------------------------------------------
10861 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10862
10863 ----------------------------------------------------------------------------------
10864 -- 4219869 Business Flow
10865 -- Update journal entry status -- Need to generate this within IF <condition>
10866 ----------------------------------------------------------------------------------
10867 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10868 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10869 ,p_balance_type_code => l_balance_type_code
10870 );
10871
10872 -------------------------------------------------------------------------------------------
10873 -- 4262811 - Generate the Accrual Reversal lines
10874 -------------------------------------------------------------------------------------------
10875 BEGIN
10876 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10877 (g_array_event(p_event_id).array_value_num('header_index'));
10878 IF l_acc_rev_flag IS NULL THEN
10879 l_acc_rev_flag := 'N';
10880 END IF;
10881 EXCEPTION
10882 WHEN OTHERS THEN
10883 l_acc_rev_flag := 'N';
10884 END;
10885 --
10886 IF (l_acc_rev_flag = 'Y') THEN
10887
10888 -- 4645092 ------------------------------------------------------------------------------
10889 -- To allow MPA report to determine if it should generate report process
10890 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10891 ------------------------------------------------------------------------------------------
10892
10893 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10894 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10895 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
10896 -- call ADRs
10897 -- Bug 4922099
10898 --
10899 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10900 (NVL(l_actual_upg_option, 'N') = 'O') OR
10901 (NVL(l_enc_upg_option, 'N') = 'O')
10902 )
10903 THEN
10904 NULL;
10905 --
10906 --
10907
10908 l_ccid := AcctDerRule_2(
10909 p_application_id => p_application_id
10910 , p_ae_header_id => l_ae_header_id
10911 , p_source_1 => p_source_1
10912 , p_source_2 => p_source_2
10913 , x_transaction_coa_id => l_adr_transaction_coa_id
10914 , x_accounting_coa_id => l_adr_accounting_coa_id
10915 , x_value_type_code => l_adr_value_type_code
10916 , p_side => 'NA'
10917 );
10918
10919 xla_ae_lines_pkg.set_ccid(
10920 p_code_combination_id => l_ccid
10921 , p_value_type_code => l_adr_value_type_code
10922 , p_transaction_coa_id => l_adr_transaction_coa_id
10923 , p_accounting_coa_id => l_adr_accounting_coa_id
10924 , p_adr_code => 'AAP'
10925 , p_adr_type_code => 'S'
10926 , p_component_type => l_component_type
10927 , p_component_code => l_component_code
10928 , p_component_type_code => l_component_type_code
10929 , p_component_appl_id => l_component_appl_id
10930 , p_amb_context_code => l_amb_context_code
10931 , p_side => 'NA'
10932 );
10933
10934
10935 --
10936 --
10937 END IF;
10938
10939 --
10940 -- Update the line information that should be overwritten
10941 --
10942 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10943 p_header_num => 1);
10944 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
10945
10946 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10947
10948 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
10949 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10950 END IF;
10951
10952 --
10953 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10954 --
10955 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10956 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
10957 ELSE
10958 ---------------------------------------------------------------------------------------------------
10962 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10959 -- 4262811a Switch Sign
10960 ---------------------------------------------------------------------------------------------------
10961 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
10963 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10964 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10965 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10966 -- 5132302
10967 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10968 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10969
10970 END IF;
10971
10972 -- 4955764
10973 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10974 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10975
10976
10977 XLA_AE_LINES_PKG.ValidateCurrentLine;
10978 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10979
10980 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10981 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10982 ,p_balance_type_code => l_balance_type_code);
10983
10984 END IF;
10985
10986 -----------------------------------------------------------------------------------------
10987 -- 4262811 Multiperiod Accounting
10988 -----------------------------------------------------------------------------------------
10989 -- No MPA option is assigned.
10990
10991
10992 END IF;
10993 END IF;
10994 --
10995
10996 --
10997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10998 trace
10999 (p_msg => 'END of AcctLineType_52'
11000 ,p_level => C_LEVEL_PROCEDURE
11001 ,p_module => l_log_module);
11002 END IF;
11003 --
11004 EXCEPTION
11005 WHEN xla_exceptions_pkg.application_exception THEN
11006 RAISE;
11007 WHEN OTHERS THEN
11008 xla_exceptions_pkg.raise_message
11009 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_52');
11010 END AcctLineType_52;
11011 --
11012
11013 ---------------------------------------
11014 --
11015 -- PRIVATE FUNCTION
11016 -- AcctLineType_53
11017 --
11018 ---------------------------------------
11019 PROCEDURE AcctLineType_53 (
11020 p_application_id IN NUMBER
11021 ,p_event_id IN NUMBER
11022 ,p_calculate_acctd_flag IN VARCHAR2
11023 ,p_calculate_g_l_flag IN VARCHAR2
11024 ,p_actual_flag IN OUT VARCHAR2
11025 ,p_balance_type_code OUT VARCHAR2
11026 ,p_gain_or_loss_ref OUT VARCHAR2
11027
11028 --Transaction Account
11029 , p_source_1 IN NUMBER
11030 --Journal Line Type
11031 , p_source_2 IN VARCHAR2
11032 --Entered Amount
11033 , p_source_3 IN NUMBER
11034 --First Distribution Identifier
11035 , p_source_5 IN NUMBER
11036 --Distribution Type
11037 , p_source_6 IN VARCHAR2
11038 --Currency Code
11039 , p_source_7 IN VARCHAR2
11040 --Currency Conversion Date
11041 , p_source_8 IN DATE
11042 --Currency Conversion Rate
11043 , p_source_9 IN NUMBER
11044 --Currency Conversion Type
11045 , p_source_10 IN VARCHAR2
11046 --Accounted Amount
11047 , p_source_11 IN NUMBER
11048 )
11049 IS
11050
11051 l_component_type VARCHAR2(80);
11052 l_component_code VARCHAR2(30);
11053 l_component_type_code VARCHAR2(1);
11054 l_component_appl_id INTEGER;
11055 l_amb_context_code VARCHAR2(30);
11056 l_entity_code VARCHAR2(30);
11057 l_event_class_code VARCHAR2(30);
11058 l_ae_header_id NUMBER;
11059 l_event_type_code VARCHAR2(30);
11060 l_line_definition_code VARCHAR2(30);
11061 l_line_definition_owner_code VARCHAR2(1);
11062 --
11063 -- adr variables
11064 l_segment VARCHAR2(30);
11065 l_ccid NUMBER;
11066 l_adr_transaction_coa_id NUMBER;
11067 l_adr_accounting_coa_id NUMBER;
11068 l_adr_flexfield_segment_code VARCHAR2(30);
11069 l_adr_flex_value_set_id NUMBER;
11070 l_adr_value_type_code VARCHAR2(30);
11071 l_adr_value_combination_id NUMBER;
11072 l_adr_value_segment_code VARCHAR2(30);
11073
11074 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
11075 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
11076 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
11077 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
11078
11079 -- 4262811 Variables ------------------------------------------------------------------------------------------
11080 l_entered_amt_idx NUMBER;
11081 l_accted_amt_idx NUMBER;
11082 l_acc_rev_flag VARCHAR2(1);
11083 l_accrual_line_num NUMBER;
11084 l_tmp_amt NUMBER;
11085 l_acc_rev_natural_side_code VARCHAR2(1);
11086
11090 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
11087 l_num_entries NUMBER;
11088 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
11089 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
11091 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
11092 l_recog_line_1 NUMBER;
11093 l_recog_line_2 NUMBER;
11094
11095 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
11096 l_bflow_applied_to_amt NUMBER; -- 5132302
11097 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
11098
11099 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11100
11101 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
11102 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
11103
11104 ---------------------------------------------------------------------------------------------------------------
11105
11106
11107 --
11108 -- bulk performance
11109 --
11110 l_balance_type_code VARCHAR2(1);
11111 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
11112 l_log_module VARCHAR2(240);
11113
11114 --
11115 -- Upgrade strategy
11116 --
11117 l_actual_upg_option VARCHAR2(1);
11118 l_enc_upg_option VARCHAR2(1);
11119
11120 --
11121 BEGIN
11122 --
11123 IF g_log_enabled THEN
11124 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
11125 END IF;
11126 --
11127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11128
11129 trace
11130 (p_msg => 'BEGIN of AcctLineType_53'
11131 ,p_level => C_LEVEL_PROCEDURE
11132 ,p_module => l_log_module);
11133
11134 END IF;
11135 --
11136 l_component_type := 'AMB_JLT';
11137 l_component_code := 'AAP';
11138 l_component_type_code := 'S';
11139 l_component_appl_id := 555;
11140 l_amb_context_code := 'DEFAULT';
11141 l_entity_code := 'PURCHASING';
11142 l_event_class_code := 'RECEIVE';
11143 l_event_type_code := 'RET_TO_VENDOR';
11144 l_line_definition_owner_code := 'S';
11145 l_line_definition_code := 'RETURN';
11146 --
11147 l_balance_type_code := 'A';
11148 l_segment := NULL;
11149 l_ccid := NULL;
11150 l_adr_transaction_coa_id := NULL;
11151 l_adr_accounting_coa_id := NULL;
11152 l_adr_flexfield_segment_code := NULL;
11153 l_adr_flex_value_set_id := NULL;
11154 l_adr_value_type_code := NULL;
11155 l_adr_value_combination_id := NULL;
11156 l_adr_value_segment_code := NULL;
11157
11158 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
11159 l_bflow_class_code := ''; -- 4219869 Business Flow
11160 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
11161 l_budgetary_control_flag := 'N';
11162
11163 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11164 l_bflow_applied_to_amt := NULL; -- 5132302
11165 l_entered_amt_idx := NULL; -- 4262811
11166 l_accted_amt_idx := NULL; -- 4262811
11167 l_acc_rev_flag := NULL; -- 4262811
11168 l_accrual_line_num := NULL; -- 4262811
11169 l_tmp_amt := NULL; -- 4262811
11170 --
11171
11172 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11173 l_balance_type_code <> 'B' THEN
11174 IF NVL(p_source_2,'
11175 ') = 'AAP'
11176 THEN
11177
11178 --
11179 XLA_AE_LINES_PKG.SetNewLine;
11180
11181 p_balance_type_code := l_balance_type_code;
11182 -- set the flag so later we will know whether the gain loss line needs to be created
11183
11184 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11185 p_actual_flag :='A';
11186 END IF;
11187
11188 --
11189 -- bulk performance
11190 --
11191 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11192 p_header_num => 0); -- 4262811
11193 --
11194 -- set accounting line options
11195 --
11196 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11197 p_natural_side_code => 'D'
11198 , p_gain_or_loss_flag => 'N'
11199 , p_gl_transfer_mode_code => 'D'
11200 , p_acct_entry_type_code => 'A'
11201 , p_switch_side_flag => 'Y'
11202 , p_merge_duplicate_code => 'W'
11203 );
11204 --
11205 l_acc_rev_natural_side_code := 'C'; -- 4262811
11206 --
11207 --
11208 -- set accounting line type info
11209 --
11210 xla_ae_lines_pkg.SetAcctLineType
11211 (p_component_type => l_component_type
11212 ,p_event_type_code => l_event_type_code
11213 ,p_line_definition_owner_code => l_line_definition_owner_code
11214 ,p_line_definition_code => l_line_definition_code
11215 ,p_accounting_line_code => l_component_code
11216 ,p_accounting_line_type_code => l_component_type_code
11220 ,p_event_class_code => l_event_class_code);
11217 ,p_accounting_line_appl_id => l_component_appl_id
11218 ,p_amb_context_code => l_amb_context_code
11219 ,p_entity_code => l_entity_code
11221 --
11222 -- set accounting class
11223 --
11224 xla_ae_lines_pkg.SetAcctClass(
11225 p_accounting_class_code => 'AAP'
11226 , p_ae_header_id => l_ae_header_id
11227 );
11228
11229 --
11230 -- set rounding class
11231 --
11232 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11233 'AAP';
11234
11235 --
11236 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11237 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11238 --
11239 -- bulk performance
11240 --
11241 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11242
11243 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11244 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11245
11246 -- 4955764
11247 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11248 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11249
11250 -- 4458381 Public Sector Enh
11251
11252 --
11253 -- set accounting attributes for the line type
11254 --
11255 l_entered_amt_idx := 3;
11256 l_accted_amt_idx := 8;
11257 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11258 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11259 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
11260 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11261 l_rec_acct_attrs.array_char_value(2) := p_source_6;
11262 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11263 l_rec_acct_attrs.array_num_value(3) := p_source_3;
11264 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11265 l_rec_acct_attrs.array_char_value(4) := p_source_7;
11266 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11267 l_rec_acct_attrs.array_date_value(5) := p_source_8;
11268 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11269 l_rec_acct_attrs.array_num_value(6) := p_source_9;
11270 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11271 l_rec_acct_attrs.array_char_value(7) := p_source_10;
11272 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11273 l_rec_acct_attrs.array_num_value(8) := p_source_11;
11274
11275 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11276 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11277
11278 ---------------------------------------------------------------------------------------------------------------
11279 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11280 ---------------------------------------------------------------------------------------------------------------
11281 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11282
11283 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11284 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11285
11286 IF xla_accounting_cache_pkg.GetValueChar
11287 (p_source_code => 'LEDGER_CATEGORY_CODE'
11288 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11289 AND l_bflow_method_code = 'PRIOR_ENTRY'
11290 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11291 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11292 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11293 )
11294 THEN
11295 xla_ae_lines_pkg.BflowUpgEntry
11296 (p_business_method_code => l_bflow_method_code
11297 ,p_business_class_code => l_bflow_class_code
11298 ,p_balance_type => l_balance_type_code);
11299 ELSE
11300 NULL;
11301 -- No business flow processing for business flow method of NONE.
11302 END IF;
11303
11304 --
11305 -- call analytical criteria
11306 --
11307
11308 --
11309 -- call description
11310 --
11311 -- No description or it is inherited.
11312 --
11313 -- call ADRs
11314 -- Bug 4922099
11315 --
11316 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11317 (NVL(l_actual_upg_option, 'N') = 'O') OR
11318 (NVL(l_enc_upg_option, 'N') = 'O')
11319 )
11320 THEN
11321 NULL;
11322 --
11323 --
11324
11325 l_ccid := AcctDerRule_2(
11326 p_application_id => p_application_id
11327 , p_ae_header_id => l_ae_header_id
11328 , p_source_1 => p_source_1
11329 , p_source_2 => p_source_2
11330 , x_transaction_coa_id => l_adr_transaction_coa_id
11331 , x_accounting_coa_id => l_adr_accounting_coa_id
11335
11332 , x_value_type_code => l_adr_value_type_code
11333 , p_side => 'NA'
11334 );
11336 xla_ae_lines_pkg.set_ccid(
11337 p_code_combination_id => l_ccid
11338 , p_value_type_code => l_adr_value_type_code
11339 , p_transaction_coa_id => l_adr_transaction_coa_id
11340 , p_accounting_coa_id => l_adr_accounting_coa_id
11341 , p_adr_code => 'AAP'
11342 , p_adr_type_code => 'S'
11343 , p_component_type => l_component_type
11344 , p_component_code => l_component_code
11345 , p_component_type_code => l_component_type_code
11346 , p_component_appl_id => l_component_appl_id
11347 , p_amb_context_code => l_amb_context_code
11348 , p_side => 'NA'
11349 );
11350
11351
11352 --
11353 --
11354 END IF;
11355 --
11356 -- Bug 4922099
11357 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11358 (NVL(l_enc_upg_option, 'N') = 'O')
11359 ) AND
11360 (l_bflow_method_code = 'PRIOR_ENTRY')
11361 )
11362 THEN
11363 IF
11364 --
11365 1 = 2
11366 --
11367 THEN
11368 xla_accounting_err_pkg.build_message
11369 (p_appli_s_name => 'XLA'
11370 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11371 ,p_token_1 => 'LINE_NUMBER'
11372 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
11373 ,p_token_2 => 'LINE_TYPE_NAME'
11374 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
11375 l_component_type
11376 ,l_component_code
11377 ,l_component_type_code
11378 ,l_component_appl_id
11379 ,l_amb_context_code
11380 ,l_entity_code
11381 ,l_event_class_code
11382 )
11383 ,p_token_3 => 'OWNER'
11384 ,p_value_3 => xla_lookups_pkg.get_meaning(
11385 p_lookup_type => 'XLA_OWNER_TYPE'
11386 ,p_lookup_code => l_component_type_code
11387 )
11388 ,p_token_4 => 'PRODUCT_NAME'
11389 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11390 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11391 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11392 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11393 ,p_ae_header_id => NULL
11394 );
11395
11396 IF (C_LEVEL_ERROR>= g_log_level) THEN
11397 trace
11398 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11399 ,p_level => C_LEVEL_ERROR
11400 ,p_module => l_log_module);
11401 END IF;
11402 END IF;
11403 END IF;
11404 --
11405 --
11406 ------------------------------------------------------------------------------------------------
11407 -- 4219869 Business Flow
11408 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11409 -- Prior Entry. Currently, the following code is always generated.
11410 ------------------------------------------------------------------------------------------------
11411 XLA_AE_LINES_PKG.ValidateCurrentLine;
11412
11413 ------------------------------------------------------------------------------------
11414 -- 4219869 Business Flow
11415 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11416 ------------------------------------------------------------------------------------
11417 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11418
11419 ----------------------------------------------------------------------------------
11420 -- 4219869 Business Flow
11421 -- Update journal entry status -- Need to generate this within IF <condition>
11422 ----------------------------------------------------------------------------------
11423 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11424 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11425 ,p_balance_type_code => l_balance_type_code
11426 );
11427
11431 BEGIN
11428 -------------------------------------------------------------------------------------------
11429 -- 4262811 - Generate the Accrual Reversal lines
11430 -------------------------------------------------------------------------------------------
11432 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11433 (g_array_event(p_event_id).array_value_num('header_index'));
11434 IF l_acc_rev_flag IS NULL THEN
11435 l_acc_rev_flag := 'N';
11436 END IF;
11437 EXCEPTION
11438 WHEN OTHERS THEN
11439 l_acc_rev_flag := 'N';
11440 END;
11441 --
11442 IF (l_acc_rev_flag = 'Y') THEN
11443
11444 -- 4645092 ------------------------------------------------------------------------------
11445 -- To allow MPA report to determine if it should generate report process
11446 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11447 ------------------------------------------------------------------------------------------
11448
11449 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11450 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11451 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
11452 -- call ADRs
11453 -- Bug 4922099
11454 --
11455 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11456 (NVL(l_actual_upg_option, 'N') = 'O') OR
11457 (NVL(l_enc_upg_option, 'N') = 'O')
11458 )
11459 THEN
11460 NULL;
11461 --
11462 --
11463
11464 l_ccid := AcctDerRule_2(
11465 p_application_id => p_application_id
11466 , p_ae_header_id => l_ae_header_id
11467 , p_source_1 => p_source_1
11468 , p_source_2 => p_source_2
11469 , x_transaction_coa_id => l_adr_transaction_coa_id
11470 , x_accounting_coa_id => l_adr_accounting_coa_id
11471 , x_value_type_code => l_adr_value_type_code
11472 , p_side => 'NA'
11473 );
11474
11475 xla_ae_lines_pkg.set_ccid(
11476 p_code_combination_id => l_ccid
11477 , p_value_type_code => l_adr_value_type_code
11478 , p_transaction_coa_id => l_adr_transaction_coa_id
11479 , p_accounting_coa_id => l_adr_accounting_coa_id
11480 , p_adr_code => 'AAP'
11481 , p_adr_type_code => 'S'
11482 , p_component_type => l_component_type
11483 , p_component_code => l_component_code
11484 , p_component_type_code => l_component_type_code
11485 , p_component_appl_id => l_component_appl_id
11486 , p_amb_context_code => l_amb_context_code
11487 , p_side => 'NA'
11488 );
11489
11490
11491 --
11492 --
11493 END IF;
11494
11495 --
11496 -- Update the line information that should be overwritten
11497 --
11498 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11499 p_header_num => 1);
11500 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
11501
11502 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11503
11504 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
11505 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11506 END IF;
11507
11508 --
11509 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11510 --
11511 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11512 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
11513 ELSE
11514 ---------------------------------------------------------------------------------------------------
11515 -- 4262811a Switch Sign
11516 ---------------------------------------------------------------------------------------------------
11517 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
11518 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11519 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11520 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11521 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11522 -- 5132302
11523 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11524 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11525
11526 END IF;
11527
11528 -- 4955764
11529 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11530 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11531
11532
11533 XLA_AE_LINES_PKG.ValidateCurrentLine;
11534 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11535
11536 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11537 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11541
11538 ,p_balance_type_code => l_balance_type_code);
11539
11540 END IF;
11542 -----------------------------------------------------------------------------------------
11543 -- 4262811 Multiperiod Accounting
11544 -----------------------------------------------------------------------------------------
11545 -- No MPA option is assigned.
11546
11547
11548 END IF;
11549 END IF;
11550 --
11551
11552 --
11553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11554 trace
11555 (p_msg => 'END of AcctLineType_53'
11556 ,p_level => C_LEVEL_PROCEDURE
11557 ,p_module => l_log_module);
11558 END IF;
11559 --
11560 EXCEPTION
11561 WHEN xla_exceptions_pkg.application_exception THEN
11562 RAISE;
11563 WHEN OTHERS THEN
11564 xla_exceptions_pkg.raise_message
11565 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_53');
11566 END AcctLineType_53;
11567 --
11568
11569 ---------------------------------------
11570 --
11571 -- PRIVATE FUNCTION
11572 -- AcctLineType_54
11573 --
11574 ---------------------------------------
11575 PROCEDURE AcctLineType_54 (
11576 p_application_id IN NUMBER
11577 ,p_event_id IN NUMBER
11578 ,p_calculate_acctd_flag IN VARCHAR2
11579 ,p_calculate_g_l_flag IN VARCHAR2
11580 ,p_actual_flag IN OUT VARCHAR2
11581 ,p_balance_type_code OUT VARCHAR2
11582 ,p_gain_or_loss_ref OUT VARCHAR2
11583
11584 --Transaction Account
11585 , p_source_1 IN NUMBER
11586 --Journal Line Type
11587 , p_source_2 IN VARCHAR2
11588 --Entered Amount
11589 , p_source_3 IN NUMBER
11590 --First Distribution Identifier
11591 , p_source_5 IN NUMBER
11592 --Distribution Type
11593 , p_source_6 IN VARCHAR2
11594 --Currency Code
11595 , p_source_7 IN VARCHAR2
11596 --Currency Conversion Date
11597 , p_source_8 IN DATE
11598 --Currency Conversion Rate
11599 , p_source_9 IN NUMBER
11600 --Currency Conversion Type
11601 , p_source_10 IN VARCHAR2
11602 --Accounted Amount
11603 , p_source_11 IN NUMBER
11604 )
11605 IS
11606
11607 l_component_type VARCHAR2(80);
11608 l_component_code VARCHAR2(30);
11609 l_component_type_code VARCHAR2(1);
11610 l_component_appl_id INTEGER;
11611 l_amb_context_code VARCHAR2(30);
11612 l_entity_code VARCHAR2(30);
11613 l_event_class_code VARCHAR2(30);
11614 l_ae_header_id NUMBER;
11615 l_event_type_code VARCHAR2(30);
11616 l_line_definition_code VARCHAR2(30);
11617 l_line_definition_owner_code VARCHAR2(1);
11618 --
11619 -- adr variables
11620 l_segment VARCHAR2(30);
11621 l_ccid NUMBER;
11622 l_adr_transaction_coa_id NUMBER;
11623 l_adr_accounting_coa_id NUMBER;
11624 l_adr_flexfield_segment_code VARCHAR2(30);
11625 l_adr_flex_value_set_id NUMBER;
11626 l_adr_value_type_code VARCHAR2(30);
11627 l_adr_value_combination_id NUMBER;
11628 l_adr_value_segment_code VARCHAR2(30);
11629
11630 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
11631 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
11632 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
11633 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
11634
11635 -- 4262811 Variables ------------------------------------------------------------------------------------------
11636 l_entered_amt_idx NUMBER;
11637 l_accted_amt_idx NUMBER;
11638 l_acc_rev_flag VARCHAR2(1);
11639 l_accrual_line_num NUMBER;
11640 l_tmp_amt NUMBER;
11641 l_acc_rev_natural_side_code VARCHAR2(1);
11642
11643 l_num_entries NUMBER;
11644 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
11645 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
11646 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
11647 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
11648 l_recog_line_1 NUMBER;
11649 l_recog_line_2 NUMBER;
11650
11651 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
11652 l_bflow_applied_to_amt NUMBER; -- 5132302
11653 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
11654
11655 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11656
11657 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
11658 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
11659
11660 ---------------------------------------------------------------------------------------------------------------
11661
11662
11663 --
11664 -- bulk performance
11665 --
11666 l_balance_type_code VARCHAR2(1);
11667 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
11668 l_log_module VARCHAR2(240);
11669
11670 --
11671 -- Upgrade strategy
11672 --
11676 --
11673 l_actual_upg_option VARCHAR2(1);
11674 l_enc_upg_option VARCHAR2(1);
11675
11677 BEGIN
11678 --
11679 IF g_log_enabled THEN
11680 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
11681 END IF;
11682 --
11683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11684
11685 trace
11686 (p_msg => 'BEGIN of AcctLineType_54'
11687 ,p_level => C_LEVEL_PROCEDURE
11688 ,p_module => l_log_module);
11689
11690 END IF;
11691 --
11692 l_component_type := 'AMB_JLT';
11693 l_component_code := 'AAP';
11694 l_component_type_code := 'S';
11695 l_component_appl_id := 555;
11696 l_amb_context_code := 'DEFAULT';
11697 l_entity_code := 'PURCHASING';
11698 l_event_class_code := 'RECEIVE';
11699 l_event_type_code := 'LOG_RET_TO_VENDOR';
11700 l_line_definition_owner_code := 'S';
11701 l_line_definition_code := 'LOG_RET_TO_VENDOR';
11702 --
11703 l_balance_type_code := 'A';
11704 l_segment := NULL;
11705 l_ccid := NULL;
11706 l_adr_transaction_coa_id := NULL;
11707 l_adr_accounting_coa_id := NULL;
11708 l_adr_flexfield_segment_code := NULL;
11709 l_adr_flex_value_set_id := NULL;
11710 l_adr_value_type_code := NULL;
11711 l_adr_value_combination_id := NULL;
11712 l_adr_value_segment_code := NULL;
11713
11714 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
11715 l_bflow_class_code := ''; -- 4219869 Business Flow
11716 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
11717 l_budgetary_control_flag := 'N';
11718
11719 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11720 l_bflow_applied_to_amt := NULL; -- 5132302
11721 l_entered_amt_idx := NULL; -- 4262811
11722 l_accted_amt_idx := NULL; -- 4262811
11723 l_acc_rev_flag := NULL; -- 4262811
11724 l_accrual_line_num := NULL; -- 4262811
11725 l_tmp_amt := NULL; -- 4262811
11726 --
11727
11728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11729 l_balance_type_code <> 'B' THEN
11730 IF NVL(p_source_2,'
11731 ') = 'AAP'
11732 THEN
11733
11734 --
11735 XLA_AE_LINES_PKG.SetNewLine;
11736
11737 p_balance_type_code := l_balance_type_code;
11738 -- set the flag so later we will know whether the gain loss line needs to be created
11739
11740 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11741 p_actual_flag :='A';
11742 END IF;
11743
11744 --
11745 -- bulk performance
11746 --
11747 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11748 p_header_num => 0); -- 4262811
11749 --
11750 -- set accounting line options
11751 --
11752 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11753 p_natural_side_code => 'D'
11754 , p_gain_or_loss_flag => 'N'
11755 , p_gl_transfer_mode_code => 'D'
11756 , p_acct_entry_type_code => 'A'
11757 , p_switch_side_flag => 'Y'
11758 , p_merge_duplicate_code => 'W'
11759 );
11760 --
11761 l_acc_rev_natural_side_code := 'C'; -- 4262811
11762 --
11763 --
11764 -- set accounting line type info
11765 --
11766 xla_ae_lines_pkg.SetAcctLineType
11767 (p_component_type => l_component_type
11768 ,p_event_type_code => l_event_type_code
11769 ,p_line_definition_owner_code => l_line_definition_owner_code
11770 ,p_line_definition_code => l_line_definition_code
11771 ,p_accounting_line_code => l_component_code
11772 ,p_accounting_line_type_code => l_component_type_code
11773 ,p_accounting_line_appl_id => l_component_appl_id
11774 ,p_amb_context_code => l_amb_context_code
11775 ,p_entity_code => l_entity_code
11776 ,p_event_class_code => l_event_class_code);
11777 --
11778 -- set accounting class
11779 --
11780 xla_ae_lines_pkg.SetAcctClass(
11781 p_accounting_class_code => 'AAP'
11782 , p_ae_header_id => l_ae_header_id
11783 );
11784
11785 --
11786 -- set rounding class
11787 --
11788 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11789 'AAP';
11790
11791 --
11792 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11793 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11794 --
11795 -- bulk performance
11796 --
11797 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11798
11799 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11800 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11801
11802 -- 4955764
11803 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11807
11804 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11805
11806 -- 4458381 Public Sector Enh
11808 --
11809 -- set accounting attributes for the line type
11810 --
11811 l_entered_amt_idx := 3;
11812 l_accted_amt_idx := 8;
11813 l_bflow_applied_to_amt_idx := NULL; -- 5132302
11814 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11815 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
11816 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11817 l_rec_acct_attrs.array_char_value(2) := p_source_6;
11818 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11819 l_rec_acct_attrs.array_num_value(3) := p_source_3;
11820 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11821 l_rec_acct_attrs.array_char_value(4) := p_source_7;
11822 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11823 l_rec_acct_attrs.array_date_value(5) := p_source_8;
11824 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11825 l_rec_acct_attrs.array_num_value(6) := p_source_9;
11826 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11827 l_rec_acct_attrs.array_char_value(7) := p_source_10;
11828 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11829 l_rec_acct_attrs.array_num_value(8) := p_source_11;
11830
11831 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11832 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11833
11834 ---------------------------------------------------------------------------------------------------------------
11835 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11836 ---------------------------------------------------------------------------------------------------------------
11837 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11838
11839 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11840 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11841
11842 IF xla_accounting_cache_pkg.GetValueChar
11843 (p_source_code => 'LEDGER_CATEGORY_CODE'
11844 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11845 AND l_bflow_method_code = 'PRIOR_ENTRY'
11846 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11847 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11848 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11849 )
11850 THEN
11851 xla_ae_lines_pkg.BflowUpgEntry
11852 (p_business_method_code => l_bflow_method_code
11853 ,p_business_class_code => l_bflow_class_code
11854 ,p_balance_type => l_balance_type_code);
11855 ELSE
11856 NULL;
11857 -- No business flow processing for business flow method of NONE.
11858 END IF;
11859
11860 --
11861 -- call analytical criteria
11862 --
11863
11864 --
11865 -- call description
11866 --
11867 -- No description or it is inherited.
11868 --
11869 -- call ADRs
11870 -- Bug 4922099
11871 --
11872 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11873 (NVL(l_actual_upg_option, 'N') = 'O') OR
11874 (NVL(l_enc_upg_option, 'N') = 'O')
11875 )
11876 THEN
11877 NULL;
11878 --
11879 --
11880
11881 l_ccid := AcctDerRule_2(
11882 p_application_id => p_application_id
11883 , p_ae_header_id => l_ae_header_id
11884 , p_source_1 => p_source_1
11885 , p_source_2 => p_source_2
11886 , x_transaction_coa_id => l_adr_transaction_coa_id
11887 , x_accounting_coa_id => l_adr_accounting_coa_id
11888 , x_value_type_code => l_adr_value_type_code
11889 , p_side => 'NA'
11890 );
11891
11892 xla_ae_lines_pkg.set_ccid(
11893 p_code_combination_id => l_ccid
11894 , p_value_type_code => l_adr_value_type_code
11895 , p_transaction_coa_id => l_adr_transaction_coa_id
11896 , p_accounting_coa_id => l_adr_accounting_coa_id
11897 , p_adr_code => 'AAP'
11898 , p_adr_type_code => 'S'
11899 , p_component_type => l_component_type
11900 , p_component_code => l_component_code
11901 , p_component_type_code => l_component_type_code
11902 , p_component_appl_id => l_component_appl_id
11903 , p_amb_context_code => l_amb_context_code
11904 , p_side => 'NA'
11905 );
11906
11907
11908 --
11909 --
11910 END IF;
11911 --
11912 -- Bug 4922099
11913 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11914 (NVL(l_enc_upg_option, 'N') = 'O')
11915 ) AND
11916 (l_bflow_method_code = 'PRIOR_ENTRY')
11917 )
11918 THEN
11919 IF
11920 --
11921 1 = 2
11922 --
11923 THEN
11924 xla_accounting_err_pkg.build_message
11928 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
11925 (p_appli_s_name => 'XLA'
11926 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11927 ,p_token_1 => 'LINE_NUMBER'
11929 ,p_token_2 => 'LINE_TYPE_NAME'
11930 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
11931 l_component_type
11932 ,l_component_code
11933 ,l_component_type_code
11934 ,l_component_appl_id
11935 ,l_amb_context_code
11936 ,l_entity_code
11937 ,l_event_class_code
11938 )
11939 ,p_token_3 => 'OWNER'
11940 ,p_value_3 => xla_lookups_pkg.get_meaning(
11941 p_lookup_type => 'XLA_OWNER_TYPE'
11942 ,p_lookup_code => l_component_type_code
11943 )
11944 ,p_token_4 => 'PRODUCT_NAME'
11945 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11946 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11947 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11948 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11949 ,p_ae_header_id => NULL
11950 );
11951
11952 IF (C_LEVEL_ERROR>= g_log_level) THEN
11953 trace
11954 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11955 ,p_level => C_LEVEL_ERROR
11956 ,p_module => l_log_module);
11957 END IF;
11958 END IF;
11959 END IF;
11960 --
11961 --
11962 ------------------------------------------------------------------------------------------------
11963 -- 4219869 Business Flow
11964 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11965 -- Prior Entry. Currently, the following code is always generated.
11966 ------------------------------------------------------------------------------------------------
11967 XLA_AE_LINES_PKG.ValidateCurrentLine;
11968
11969 ------------------------------------------------------------------------------------
11970 -- 4219869 Business Flow
11971 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11972 ------------------------------------------------------------------------------------
11973 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11974
11975 ----------------------------------------------------------------------------------
11976 -- 4219869 Business Flow
11977 -- Update journal entry status -- Need to generate this within IF <condition>
11978 ----------------------------------------------------------------------------------
11979 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11980 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11981 ,p_balance_type_code => l_balance_type_code
11982 );
11983
11984 -------------------------------------------------------------------------------------------
11985 -- 4262811 - Generate the Accrual Reversal lines
11986 -------------------------------------------------------------------------------------------
11987 BEGIN
11988 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11989 (g_array_event(p_event_id).array_value_num('header_index'));
11990 IF l_acc_rev_flag IS NULL THEN
11991 l_acc_rev_flag := 'N';
11992 END IF;
11993 EXCEPTION
11994 WHEN OTHERS THEN
11995 l_acc_rev_flag := 'N';
11996 END;
11997 --
11998 IF (l_acc_rev_flag = 'Y') THEN
11999
12000 -- 4645092 ------------------------------------------------------------------------------
12001 -- To allow MPA report to determine if it should generate report process
12002 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12003 ------------------------------------------------------------------------------------------
12004
12005 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12006 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12007 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
12008 -- call ADRs
12009 -- Bug 4922099
12010 --
12011 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12012 (NVL(l_actual_upg_option, 'N') = 'O') OR
12013 (NVL(l_enc_upg_option, 'N') = 'O')
12014 )
12018 --
12015 THEN
12016 NULL;
12017 --
12019
12020 l_ccid := AcctDerRule_2(
12021 p_application_id => p_application_id
12022 , p_ae_header_id => l_ae_header_id
12023 , p_source_1 => p_source_1
12024 , p_source_2 => p_source_2
12025 , x_transaction_coa_id => l_adr_transaction_coa_id
12026 , x_accounting_coa_id => l_adr_accounting_coa_id
12027 , x_value_type_code => l_adr_value_type_code
12028 , p_side => 'NA'
12029 );
12030
12031 xla_ae_lines_pkg.set_ccid(
12032 p_code_combination_id => l_ccid
12033 , p_value_type_code => l_adr_value_type_code
12034 , p_transaction_coa_id => l_adr_transaction_coa_id
12035 , p_accounting_coa_id => l_adr_accounting_coa_id
12036 , p_adr_code => 'AAP'
12037 , p_adr_type_code => 'S'
12038 , p_component_type => l_component_type
12039 , p_component_code => l_component_code
12040 , p_component_type_code => l_component_type_code
12041 , p_component_appl_id => l_component_appl_id
12042 , p_amb_context_code => l_amb_context_code
12043 , p_side => 'NA'
12044 );
12045
12046
12047 --
12048 --
12049 END IF;
12050
12051 --
12052 -- Update the line information that should be overwritten
12053 --
12054 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12055 p_header_num => 1);
12056 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
12057
12058 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12059
12060 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
12061 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12062 END IF;
12063
12064 --
12065 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12066 --
12067 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12068 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
12069 ELSE
12070 ---------------------------------------------------------------------------------------------------
12071 -- 4262811a Switch Sign
12072 ---------------------------------------------------------------------------------------------------
12073 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
12074 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12075 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12076 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12077 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12078 -- 5132302
12079 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12080 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12081
12082 END IF;
12083
12084 -- 4955764
12085 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12086 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12087
12088
12089 XLA_AE_LINES_PKG.ValidateCurrentLine;
12090 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12091
12092 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12093 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12094 ,p_balance_type_code => l_balance_type_code);
12095
12096 END IF;
12097
12098 -----------------------------------------------------------------------------------------
12099 -- 4262811 Multiperiod Accounting
12100 -----------------------------------------------------------------------------------------
12101 -- No MPA option is assigned.
12102
12103
12104 END IF;
12105 END IF;
12106 --
12107
12108 --
12109 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12110 trace
12111 (p_msg => 'END of AcctLineType_54'
12112 ,p_level => C_LEVEL_PROCEDURE
12113 ,p_module => l_log_module);
12114 END IF;
12115 --
12116 EXCEPTION
12117 WHEN xla_exceptions_pkg.application_exception THEN
12118 RAISE;
12119 WHEN OTHERS THEN
12120 xla_exceptions_pkg.raise_message
12121 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_54');
12122 END AcctLineType_54;
12123 --
12124
12125 ---------------------------------------
12126 --
12127 -- PRIVATE FUNCTION
12128 -- AcctLineType_55
12129 --
12130 ---------------------------------------
12131 PROCEDURE AcctLineType_55 (
12132 p_application_id IN NUMBER
12133 ,p_event_id IN NUMBER
12134 ,p_calculate_acctd_flag IN VARCHAR2
12135 ,p_calculate_g_l_flag IN VARCHAR2
12139
12136 ,p_actual_flag IN OUT VARCHAR2
12137 ,p_balance_type_code OUT VARCHAR2
12138 ,p_gain_or_loss_ref OUT VARCHAR2
12140 --Transaction Account
12141 , p_source_1 IN NUMBER
12142 --Journal Line Type
12143 , p_source_2 IN VARCHAR2
12144 --Entered Amount
12145 , p_source_3 IN NUMBER
12146 --First Distribution Identifier
12147 , p_source_5 IN NUMBER
12148 --Distribution Type
12149 , p_source_6 IN VARCHAR2
12150 --Currency Code
12151 , p_source_7 IN VARCHAR2
12152 --Currency Conversion Date
12153 , p_source_8 IN DATE
12154 --Currency Conversion Rate
12155 , p_source_9 IN NUMBER
12156 --Currency Conversion Type
12157 , p_source_10 IN VARCHAR2
12158 --Accounted Amount
12159 , p_source_11 IN NUMBER
12160 )
12161 IS
12162
12163 l_component_type VARCHAR2(80);
12164 l_component_code VARCHAR2(30);
12165 l_component_type_code VARCHAR2(1);
12166 l_component_appl_id INTEGER;
12167 l_amb_context_code VARCHAR2(30);
12168 l_entity_code VARCHAR2(30);
12169 l_event_class_code VARCHAR2(30);
12170 l_ae_header_id NUMBER;
12171 l_event_type_code VARCHAR2(30);
12172 l_line_definition_code VARCHAR2(30);
12173 l_line_definition_owner_code VARCHAR2(1);
12174 --
12175 -- adr variables
12176 l_segment VARCHAR2(30);
12177 l_ccid NUMBER;
12178 l_adr_transaction_coa_id NUMBER;
12179 l_adr_accounting_coa_id NUMBER;
12180 l_adr_flexfield_segment_code VARCHAR2(30);
12181 l_adr_flex_value_set_id NUMBER;
12182 l_adr_value_type_code VARCHAR2(30);
12183 l_adr_value_combination_id NUMBER;
12184 l_adr_value_segment_code VARCHAR2(30);
12185
12186 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
12187 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
12188 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
12189 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
12190
12191 -- 4262811 Variables ------------------------------------------------------------------------------------------
12192 l_entered_amt_idx NUMBER;
12193 l_accted_amt_idx NUMBER;
12194 l_acc_rev_flag VARCHAR2(1);
12195 l_accrual_line_num NUMBER;
12196 l_tmp_amt NUMBER;
12197 l_acc_rev_natural_side_code VARCHAR2(1);
12198
12199 l_num_entries NUMBER;
12200 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
12201 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
12202 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
12203 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
12204 l_recog_line_1 NUMBER;
12205 l_recog_line_2 NUMBER;
12206
12207 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
12208 l_bflow_applied_to_amt NUMBER; -- 5132302
12209 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
12210
12211 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12212
12213 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
12214 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
12215
12216 ---------------------------------------------------------------------------------------------------------------
12217
12218
12219 --
12220 -- bulk performance
12221 --
12222 l_balance_type_code VARCHAR2(1);
12223 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
12224 l_log_module VARCHAR2(240);
12225
12226 --
12227 -- Upgrade strategy
12228 --
12229 l_actual_upg_option VARCHAR2(1);
12230 l_enc_upg_option VARCHAR2(1);
12231
12232 --
12233 BEGIN
12234 --
12235 IF g_log_enabled THEN
12236 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
12237 END IF;
12238 --
12239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12240
12241 trace
12242 (p_msg => 'BEGIN of AcctLineType_55'
12243 ,p_level => C_LEVEL_PROCEDURE
12244 ,p_module => l_log_module);
12245
12246 END IF;
12247 --
12248 l_component_type := 'AMB_JLT';
12249 l_component_code := 'ACV';
12250 l_component_type_code := 'S';
12251 l_component_appl_id := 555;
12252 l_amb_context_code := 'DEFAULT';
12253 l_entity_code := 'PURCHASING';
12254 l_event_class_code := 'DELIVER';
12255 l_event_type_code := 'PO_RECEIPT_ADJ';
12256 l_line_definition_owner_code := 'S';
12257 l_line_definition_code := 'PO_RECEIPT_ADJ';
12258 --
12259 l_balance_type_code := 'A';
12260 l_segment := NULL;
12261 l_ccid := NULL;
12262 l_adr_transaction_coa_id := NULL;
12263 l_adr_accounting_coa_id := NULL;
12264 l_adr_flexfield_segment_code := NULL;
12265 l_adr_flex_value_set_id := NULL;
12266 l_adr_value_type_code := NULL;
12267 l_adr_value_combination_id := NULL;
12268 l_adr_value_segment_code := NULL;
12269
12273 l_budgetary_control_flag := 'N';
12270 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
12271 l_bflow_class_code := ''; -- 4219869 Business Flow
12272 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
12274
12275 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12276 l_bflow_applied_to_amt := NULL; -- 5132302
12277 l_entered_amt_idx := NULL; -- 4262811
12278 l_accted_amt_idx := NULL; -- 4262811
12279 l_acc_rev_flag := NULL; -- 4262811
12280 l_accrual_line_num := NULL; -- 4262811
12281 l_tmp_amt := NULL; -- 4262811
12282 --
12283
12284 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12285 l_balance_type_code <> 'B' THEN
12286 IF NVL(p_source_2,'
12287 ') = 'ACV'
12288 THEN
12289
12290 --
12291 XLA_AE_LINES_PKG.SetNewLine;
12292
12293 p_balance_type_code := l_balance_type_code;
12294 -- set the flag so later we will know whether the gain loss line needs to be created
12295
12296 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12297 p_actual_flag :='A';
12298 END IF;
12299
12300 --
12301 -- bulk performance
12302 --
12303 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12304 p_header_num => 0); -- 4262811
12305 --
12306 -- set accounting line options
12307 --
12308 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12309 p_natural_side_code => 'D'
12310 , p_gain_or_loss_flag => 'N'
12311 , p_gl_transfer_mode_code => 'D'
12312 , p_acct_entry_type_code => 'A'
12313 , p_switch_side_flag => 'Y'
12314 , p_merge_duplicate_code => 'W'
12315 );
12316 --
12317 l_acc_rev_natural_side_code := 'C'; -- 4262811
12318 --
12319 --
12320 -- set accounting line type info
12321 --
12322 xla_ae_lines_pkg.SetAcctLineType
12323 (p_component_type => l_component_type
12324 ,p_event_type_code => l_event_type_code
12325 ,p_line_definition_owner_code => l_line_definition_owner_code
12326 ,p_line_definition_code => l_line_definition_code
12327 ,p_accounting_line_code => l_component_code
12328 ,p_accounting_line_type_code => l_component_type_code
12329 ,p_accounting_line_appl_id => l_component_appl_id
12330 ,p_amb_context_code => l_amb_context_code
12331 ,p_entity_code => l_entity_code
12332 ,p_event_class_code => l_event_class_code);
12333 --
12334 -- set accounting class
12335 --
12336 xla_ae_lines_pkg.SetAcctClass(
12337 p_accounting_class_code => 'ACV'
12338 , p_ae_header_id => l_ae_header_id
12339 );
12340
12341 --
12342 -- set rounding class
12343 --
12344 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12345 'ACV';
12346
12347 --
12348 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12349 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12350 --
12351 -- bulk performance
12352 --
12353 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12354
12355 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12356 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12357
12358 -- 4955764
12359 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12360 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12361
12362 -- 4458381 Public Sector Enh
12363
12364 --
12365 -- set accounting attributes for the line type
12366 --
12367 l_entered_amt_idx := 3;
12368 l_accted_amt_idx := 8;
12369 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12370 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12371 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
12372 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12373 l_rec_acct_attrs.array_char_value(2) := p_source_6;
12374 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12375 l_rec_acct_attrs.array_num_value(3) := p_source_3;
12376 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12377 l_rec_acct_attrs.array_char_value(4) := p_source_7;
12378 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12379 l_rec_acct_attrs.array_date_value(5) := p_source_8;
12380 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12381 l_rec_acct_attrs.array_num_value(6) := p_source_9;
12382 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12383 l_rec_acct_attrs.array_char_value(7) := p_source_10;
12384 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12385 l_rec_acct_attrs.array_num_value(8) := p_source_11;
12386
12390 ---------------------------------------------------------------------------------------------------------------
12387 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12388 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12389
12391 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12392 ---------------------------------------------------------------------------------------------------------------
12393 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12394
12395 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12396 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12397
12398 IF xla_accounting_cache_pkg.GetValueChar
12399 (p_source_code => 'LEDGER_CATEGORY_CODE'
12400 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12401 AND l_bflow_method_code = 'PRIOR_ENTRY'
12402 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12403 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12404 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12405 )
12406 THEN
12407 xla_ae_lines_pkg.BflowUpgEntry
12408 (p_business_method_code => l_bflow_method_code
12409 ,p_business_class_code => l_bflow_class_code
12410 ,p_balance_type => l_balance_type_code);
12411 ELSE
12412 NULL;
12413 -- No business flow processing for business flow method of NONE.
12414 END IF;
12415
12416 --
12417 -- call analytical criteria
12418 --
12419
12420 --
12421 -- call description
12422 --
12423 -- No description or it is inherited.
12424 --
12425 -- call ADRs
12426 -- Bug 4922099
12427 --
12428 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12429 (NVL(l_actual_upg_option, 'N') = 'O') OR
12430 (NVL(l_enc_upg_option, 'N') = 'O')
12431 )
12432 THEN
12433 NULL;
12434 --
12435 --
12436
12437 l_ccid := AcctDerRule_3(
12438 p_application_id => p_application_id
12439 , p_ae_header_id => l_ae_header_id
12440 , p_source_1 => p_source_1
12441 , p_source_2 => p_source_2
12442 , x_transaction_coa_id => l_adr_transaction_coa_id
12443 , x_accounting_coa_id => l_adr_accounting_coa_id
12444 , x_value_type_code => l_adr_value_type_code
12445 , p_side => 'NA'
12446 );
12447
12448 xla_ae_lines_pkg.set_ccid(
12449 p_code_combination_id => l_ccid
12450 , p_value_type_code => l_adr_value_type_code
12451 , p_transaction_coa_id => l_adr_transaction_coa_id
12452 , p_accounting_coa_id => l_adr_accounting_coa_id
12453 , p_adr_code => 'ACV'
12454 , p_adr_type_code => 'S'
12455 , p_component_type => l_component_type
12456 , p_component_code => l_component_code
12457 , p_component_type_code => l_component_type_code
12458 , p_component_appl_id => l_component_appl_id
12459 , p_amb_context_code => l_amb_context_code
12460 , p_side => 'NA'
12461 );
12462
12463
12464 --
12465 --
12466 END IF;
12467 --
12468 -- Bug 4922099
12469 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12470 (NVL(l_enc_upg_option, 'N') = 'O')
12471 ) AND
12472 (l_bflow_method_code = 'PRIOR_ENTRY')
12473 )
12474 THEN
12475 IF
12476 --
12477 1 = 2
12478 --
12479 THEN
12480 xla_accounting_err_pkg.build_message
12481 (p_appli_s_name => 'XLA'
12482 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12483 ,p_token_1 => 'LINE_NUMBER'
12484 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
12485 ,p_token_2 => 'LINE_TYPE_NAME'
12486 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
12487 l_component_type
12488 ,l_component_code
12489 ,l_component_type_code
12490 ,l_component_appl_id
12491 ,l_amb_context_code
12492 ,l_entity_code
12493 ,l_event_class_code
12494 )
12495 ,p_token_3 => 'OWNER'
12496 ,p_value_3 => xla_lookups_pkg.get_meaning(
12497 p_lookup_type => 'XLA_OWNER_TYPE'
12501 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12498 ,p_lookup_code => l_component_type_code
12499 )
12500 ,p_token_4 => 'PRODUCT_NAME'
12502 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12503 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12504 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12505 ,p_ae_header_id => NULL
12506 );
12507
12508 IF (C_LEVEL_ERROR>= g_log_level) THEN
12509 trace
12510 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12511 ,p_level => C_LEVEL_ERROR
12512 ,p_module => l_log_module);
12513 END IF;
12514 END IF;
12515 END IF;
12516 --
12517 --
12518 ------------------------------------------------------------------------------------------------
12519 -- 4219869 Business Flow
12520 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12521 -- Prior Entry. Currently, the following code is always generated.
12522 ------------------------------------------------------------------------------------------------
12523 XLA_AE_LINES_PKG.ValidateCurrentLine;
12524
12525 ------------------------------------------------------------------------------------
12526 -- 4219869 Business Flow
12527 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12528 ------------------------------------------------------------------------------------
12529 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12530
12531 ----------------------------------------------------------------------------------
12532 -- 4219869 Business Flow
12533 -- Update journal entry status -- Need to generate this within IF <condition>
12534 ----------------------------------------------------------------------------------
12535 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12536 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12537 ,p_balance_type_code => l_balance_type_code
12538 );
12539
12540 -------------------------------------------------------------------------------------------
12541 -- 4262811 - Generate the Accrual Reversal lines
12542 -------------------------------------------------------------------------------------------
12543 BEGIN
12544 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12545 (g_array_event(p_event_id).array_value_num('header_index'));
12546 IF l_acc_rev_flag IS NULL THEN
12547 l_acc_rev_flag := 'N';
12548 END IF;
12549 EXCEPTION
12550 WHEN OTHERS THEN
12551 l_acc_rev_flag := 'N';
12552 END;
12553 --
12554 IF (l_acc_rev_flag = 'Y') THEN
12555
12556 -- 4645092 ------------------------------------------------------------------------------
12557 -- To allow MPA report to determine if it should generate report process
12558 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12559 ------------------------------------------------------------------------------------------
12560
12561 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12562 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12563 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
12564 -- call ADRs
12565 -- Bug 4922099
12566 --
12567 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12568 (NVL(l_actual_upg_option, 'N') = 'O') OR
12569 (NVL(l_enc_upg_option, 'N') = 'O')
12570 )
12571 THEN
12572 NULL;
12573 --
12574 --
12575
12576 l_ccid := AcctDerRule_3(
12577 p_application_id => p_application_id
12578 , p_ae_header_id => l_ae_header_id
12579 , p_source_1 => p_source_1
12580 , p_source_2 => p_source_2
12581 , x_transaction_coa_id => l_adr_transaction_coa_id
12582 , x_accounting_coa_id => l_adr_accounting_coa_id
12583 , x_value_type_code => l_adr_value_type_code
12584 , p_side => 'NA'
12585 );
12586
12587 xla_ae_lines_pkg.set_ccid(
12588 p_code_combination_id => l_ccid
12589 , p_value_type_code => l_adr_value_type_code
12590 , p_transaction_coa_id => l_adr_transaction_coa_id
12591 , p_accounting_coa_id => l_adr_accounting_coa_id
12592 , p_adr_code => 'ACV'
12593 , p_adr_type_code => 'S'
12594 , p_component_type => l_component_type
12595 , p_component_code => l_component_code
12596 , p_component_type_code => l_component_type_code
12597 , p_component_appl_id => l_component_appl_id
12598 , p_amb_context_code => l_amb_context_code
12599 , p_side => 'NA'
12600 );
12601
12602
12603 --
12604 --
12608 -- Update the line information that should be overwritten
12605 END IF;
12606
12607 --
12609 --
12610 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12611 p_header_num => 1);
12612 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
12613
12614 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12615
12616 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
12617 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12618 END IF;
12619
12620 --
12621 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12622 --
12623 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12624 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
12625 ELSE
12626 ---------------------------------------------------------------------------------------------------
12627 -- 4262811a Switch Sign
12628 ---------------------------------------------------------------------------------------------------
12629 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
12630 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12631 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12632 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12633 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12634 -- 5132302
12635 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12636 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12637
12638 END IF;
12639
12640 -- 4955764
12641 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12642 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12643
12644
12645 XLA_AE_LINES_PKG.ValidateCurrentLine;
12646 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12647
12648 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12649 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12650 ,p_balance_type_code => l_balance_type_code);
12651
12652 END IF;
12653
12654 -----------------------------------------------------------------------------------------
12655 -- 4262811 Multiperiod Accounting
12656 -----------------------------------------------------------------------------------------
12657 -- No MPA option is assigned.
12658
12659
12660 END IF;
12661 END IF;
12662 --
12663
12664 --
12665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12666 trace
12667 (p_msg => 'END of AcctLineType_55'
12668 ,p_level => C_LEVEL_PROCEDURE
12669 ,p_module => l_log_module);
12670 END IF;
12671 --
12672 EXCEPTION
12673 WHEN xla_exceptions_pkg.application_exception THEN
12674 RAISE;
12675 WHEN OTHERS THEN
12676 xla_exceptions_pkg.raise_message
12677 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_55');
12678 END AcctLineType_55;
12679 --
12680
12681 ---------------------------------------
12682 --
12683 -- PRIVATE FUNCTION
12684 -- AcctLineType_56
12685 --
12686 ---------------------------------------
12687 PROCEDURE AcctLineType_56 (
12688 p_application_id IN NUMBER
12689 ,p_event_id IN NUMBER
12690 ,p_calculate_acctd_flag IN VARCHAR2
12691 ,p_calculate_g_l_flag IN VARCHAR2
12692 ,p_actual_flag IN OUT VARCHAR2
12693 ,p_balance_type_code OUT VARCHAR2
12694 ,p_gain_or_loss_ref OUT VARCHAR2
12695
12696 --Transaction Account
12697 , p_source_1 IN NUMBER
12698 --Journal Line Type
12699 , p_source_2 IN VARCHAR2
12700 --Entered Amount
12701 , p_source_3 IN NUMBER
12702 --First Distribution Identifier
12703 , p_source_5 IN NUMBER
12704 --Distribution Type
12705 , p_source_6 IN VARCHAR2
12706 --Currency Code
12707 , p_source_7 IN VARCHAR2
12708 --Currency Conversion Date
12709 , p_source_8 IN DATE
12710 --Currency Conversion Rate
12711 , p_source_9 IN NUMBER
12712 --Currency Conversion Type
12713 , p_source_10 IN VARCHAR2
12714 --Accounted Amount
12715 , p_source_11 IN NUMBER
12716 )
12717 IS
12718
12719 l_component_type VARCHAR2(80);
12720 l_component_code VARCHAR2(30);
12721 l_component_type_code VARCHAR2(1);
12722 l_component_appl_id INTEGER;
12723 l_amb_context_code VARCHAR2(30);
12724 l_entity_code VARCHAR2(30);
12725 l_event_class_code VARCHAR2(30);
12726 l_ae_header_id NUMBER;
12727 l_event_type_code VARCHAR2(30);
12728 l_line_definition_code VARCHAR2(30);
12732 l_segment VARCHAR2(30);
12729 l_line_definition_owner_code VARCHAR2(1);
12730 --
12731 -- adr variables
12733 l_ccid NUMBER;
12734 l_adr_transaction_coa_id NUMBER;
12735 l_adr_accounting_coa_id NUMBER;
12736 l_adr_flexfield_segment_code VARCHAR2(30);
12737 l_adr_flex_value_set_id NUMBER;
12738 l_adr_value_type_code VARCHAR2(30);
12739 l_adr_value_combination_id NUMBER;
12740 l_adr_value_segment_code VARCHAR2(30);
12741
12742 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
12743 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
12744 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
12745 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
12746
12747 -- 4262811 Variables ------------------------------------------------------------------------------------------
12748 l_entered_amt_idx NUMBER;
12749 l_accted_amt_idx NUMBER;
12750 l_acc_rev_flag VARCHAR2(1);
12751 l_accrual_line_num NUMBER;
12752 l_tmp_amt NUMBER;
12753 l_acc_rev_natural_side_code VARCHAR2(1);
12754
12755 l_num_entries NUMBER;
12756 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
12757 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
12758 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
12759 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
12760 l_recog_line_1 NUMBER;
12761 l_recog_line_2 NUMBER;
12762
12763 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
12764 l_bflow_applied_to_amt NUMBER; -- 5132302
12765 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
12766
12767 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12768
12769 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
12770 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
12771
12772 ---------------------------------------------------------------------------------------------------------------
12773
12774
12775 --
12776 -- bulk performance
12777 --
12778 l_balance_type_code VARCHAR2(1);
12779 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
12780 l_log_module VARCHAR2(240);
12781
12782 --
12783 -- Upgrade strategy
12784 --
12785 l_actual_upg_option VARCHAR2(1);
12786 l_enc_upg_option VARCHAR2(1);
12787
12788 --
12789 BEGIN
12790 --
12791 IF g_log_enabled THEN
12792 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
12793 END IF;
12794 --
12795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12796
12797 trace
12798 (p_msg => 'BEGIN of AcctLineType_56'
12799 ,p_level => C_LEVEL_PROCEDURE
12800 ,p_module => l_log_module);
12801
12802 END IF;
12803 --
12804 l_component_type := 'AMB_JLT';
12805 l_component_code := 'ACV';
12806 l_component_type_code := 'S';
12807 l_component_appl_id := 555;
12808 l_amb_context_code := 'DEFAULT';
12809 l_entity_code := 'PURCHASING';
12810 l_event_class_code := 'DELIVER';
12811 l_event_type_code := 'RET_TO_RECEIVING';
12812 l_line_definition_owner_code := 'S';
12813 l_line_definition_code := 'PO_RETURN';
12814 --
12815 l_balance_type_code := 'A';
12816 l_segment := NULL;
12817 l_ccid := NULL;
12818 l_adr_transaction_coa_id := NULL;
12819 l_adr_accounting_coa_id := NULL;
12820 l_adr_flexfield_segment_code := NULL;
12821 l_adr_flex_value_set_id := NULL;
12822 l_adr_value_type_code := NULL;
12823 l_adr_value_combination_id := NULL;
12824 l_adr_value_segment_code := NULL;
12825
12826 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
12827 l_bflow_class_code := ''; -- 4219869 Business Flow
12828 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
12829 l_budgetary_control_flag := 'N';
12830
12831 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12832 l_bflow_applied_to_amt := NULL; -- 5132302
12833 l_entered_amt_idx := NULL; -- 4262811
12834 l_accted_amt_idx := NULL; -- 4262811
12835 l_acc_rev_flag := NULL; -- 4262811
12836 l_accrual_line_num := NULL; -- 4262811
12837 l_tmp_amt := NULL; -- 4262811
12838 --
12839
12840 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12841 l_balance_type_code <> 'B' THEN
12842 IF NVL(p_source_2,'
12843 ') = 'ACV'
12844 THEN
12845
12846 --
12847 XLA_AE_LINES_PKG.SetNewLine;
12848
12849 p_balance_type_code := l_balance_type_code;
12850 -- set the flag so later we will know whether the gain loss line needs to be created
12851
12852 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12853 p_actual_flag :='A';
12854 END IF;
12855
12856 --
12860 p_header_num => 0); -- 4262811
12857 -- bulk performance
12858 --
12859 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12861 --
12862 -- set accounting line options
12863 --
12864 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12865 p_natural_side_code => 'D'
12866 , p_gain_or_loss_flag => 'N'
12867 , p_gl_transfer_mode_code => 'D'
12868 , p_acct_entry_type_code => 'A'
12869 , p_switch_side_flag => 'Y'
12870 , p_merge_duplicate_code => 'W'
12871 );
12872 --
12873 l_acc_rev_natural_side_code := 'C'; -- 4262811
12874 --
12875 --
12876 -- set accounting line type info
12877 --
12878 xla_ae_lines_pkg.SetAcctLineType
12879 (p_component_type => l_component_type
12880 ,p_event_type_code => l_event_type_code
12881 ,p_line_definition_owner_code => l_line_definition_owner_code
12882 ,p_line_definition_code => l_line_definition_code
12883 ,p_accounting_line_code => l_component_code
12884 ,p_accounting_line_type_code => l_component_type_code
12885 ,p_accounting_line_appl_id => l_component_appl_id
12886 ,p_amb_context_code => l_amb_context_code
12887 ,p_entity_code => l_entity_code
12888 ,p_event_class_code => l_event_class_code);
12889 --
12890 -- set accounting class
12891 --
12892 xla_ae_lines_pkg.SetAcctClass(
12893 p_accounting_class_code => 'ACV'
12894 , p_ae_header_id => l_ae_header_id
12895 );
12896
12897 --
12898 -- set rounding class
12899 --
12900 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12901 'ACV';
12902
12903 --
12904 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12905 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12906 --
12907 -- bulk performance
12908 --
12909 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12910
12911 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12912 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12913
12914 -- 4955764
12915 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12916 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12917
12918 -- 4458381 Public Sector Enh
12919
12920 --
12921 -- set accounting attributes for the line type
12922 --
12923 l_entered_amt_idx := 3;
12924 l_accted_amt_idx := 8;
12925 l_bflow_applied_to_amt_idx := NULL; -- 5132302
12926 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12927 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
12928 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12929 l_rec_acct_attrs.array_char_value(2) := p_source_6;
12930 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12931 l_rec_acct_attrs.array_num_value(3) := p_source_3;
12932 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12933 l_rec_acct_attrs.array_char_value(4) := p_source_7;
12934 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12935 l_rec_acct_attrs.array_date_value(5) := p_source_8;
12936 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12937 l_rec_acct_attrs.array_num_value(6) := p_source_9;
12938 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12939 l_rec_acct_attrs.array_char_value(7) := p_source_10;
12940 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12941 l_rec_acct_attrs.array_num_value(8) := p_source_11;
12942
12943 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12944 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12945
12946 ---------------------------------------------------------------------------------------------------------------
12947 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12948 ---------------------------------------------------------------------------------------------------------------
12949 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12950
12951 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12952 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12953
12954 IF xla_accounting_cache_pkg.GetValueChar
12955 (p_source_code => 'LEDGER_CATEGORY_CODE'
12956 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12957 AND l_bflow_method_code = 'PRIOR_ENTRY'
12958 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12959 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12960 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12961 )
12962 THEN
12963 xla_ae_lines_pkg.BflowUpgEntry
12964 (p_business_method_code => l_bflow_method_code
12968 NULL;
12965 ,p_business_class_code => l_bflow_class_code
12966 ,p_balance_type => l_balance_type_code);
12967 ELSE
12969 -- No business flow processing for business flow method of NONE.
12970 END IF;
12971
12972 --
12973 -- call analytical criteria
12974 --
12975
12976 --
12977 -- call description
12978 --
12979 -- No description or it is inherited.
12980 --
12981 -- call ADRs
12982 -- Bug 4922099
12983 --
12984 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12985 (NVL(l_actual_upg_option, 'N') = 'O') OR
12986 (NVL(l_enc_upg_option, 'N') = 'O')
12987 )
12988 THEN
12989 NULL;
12990 --
12991 --
12992
12993 l_ccid := AcctDerRule_3(
12994 p_application_id => p_application_id
12995 , p_ae_header_id => l_ae_header_id
12996 , p_source_1 => p_source_1
12997 , p_source_2 => p_source_2
12998 , x_transaction_coa_id => l_adr_transaction_coa_id
12999 , x_accounting_coa_id => l_adr_accounting_coa_id
13000 , x_value_type_code => l_adr_value_type_code
13001 , p_side => 'NA'
13002 );
13003
13004 xla_ae_lines_pkg.set_ccid(
13005 p_code_combination_id => l_ccid
13006 , p_value_type_code => l_adr_value_type_code
13007 , p_transaction_coa_id => l_adr_transaction_coa_id
13008 , p_accounting_coa_id => l_adr_accounting_coa_id
13009 , p_adr_code => 'ACV'
13010 , p_adr_type_code => 'S'
13011 , p_component_type => l_component_type
13012 , p_component_code => l_component_code
13013 , p_component_type_code => l_component_type_code
13014 , p_component_appl_id => l_component_appl_id
13015 , p_amb_context_code => l_amb_context_code
13016 , p_side => 'NA'
13017 );
13018
13019
13020 --
13021 --
13022 END IF;
13023 --
13024 -- Bug 4922099
13025 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13026 (NVL(l_enc_upg_option, 'N') = 'O')
13027 ) AND
13028 (l_bflow_method_code = 'PRIOR_ENTRY')
13029 )
13030 THEN
13031 IF
13032 --
13033 1 = 2
13034 --
13035 THEN
13036 xla_accounting_err_pkg.build_message
13037 (p_appli_s_name => 'XLA'
13038 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13039 ,p_token_1 => 'LINE_NUMBER'
13040 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
13041 ,p_token_2 => 'LINE_TYPE_NAME'
13042 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
13043 l_component_type
13044 ,l_component_code
13045 ,l_component_type_code
13046 ,l_component_appl_id
13047 ,l_amb_context_code
13048 ,l_entity_code
13049 ,l_event_class_code
13050 )
13051 ,p_token_3 => 'OWNER'
13052 ,p_value_3 => xla_lookups_pkg.get_meaning(
13053 p_lookup_type => 'XLA_OWNER_TYPE'
13054 ,p_lookup_code => l_component_type_code
13055 )
13056 ,p_token_4 => 'PRODUCT_NAME'
13057 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13058 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13059 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13060 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13061 ,p_ae_header_id => NULL
13062 );
13063
13064 IF (C_LEVEL_ERROR>= g_log_level) THEN
13065 trace
13066 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13067 ,p_level => C_LEVEL_ERROR
13068 ,p_module => l_log_module);
13069 END IF;
13070 END IF;
13071 END IF;
13072 --
13073 --
13074 ------------------------------------------------------------------------------------------------
13075 -- 4219869 Business Flow
13076 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13080
13077 -- Prior Entry. Currently, the following code is always generated.
13078 ------------------------------------------------------------------------------------------------
13079 XLA_AE_LINES_PKG.ValidateCurrentLine;
13081 ------------------------------------------------------------------------------------
13082 -- 4219869 Business Flow
13083 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13084 ------------------------------------------------------------------------------------
13085 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13086
13087 ----------------------------------------------------------------------------------
13088 -- 4219869 Business Flow
13089 -- Update journal entry status -- Need to generate this within IF <condition>
13090 ----------------------------------------------------------------------------------
13091 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13092 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13093 ,p_balance_type_code => l_balance_type_code
13094 );
13095
13096 -------------------------------------------------------------------------------------------
13097 -- 4262811 - Generate the Accrual Reversal lines
13098 -------------------------------------------------------------------------------------------
13099 BEGIN
13100 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13101 (g_array_event(p_event_id).array_value_num('header_index'));
13102 IF l_acc_rev_flag IS NULL THEN
13103 l_acc_rev_flag := 'N';
13104 END IF;
13105 EXCEPTION
13106 WHEN OTHERS THEN
13107 l_acc_rev_flag := 'N';
13108 END;
13109 --
13110 IF (l_acc_rev_flag = 'Y') THEN
13111
13112 -- 4645092 ------------------------------------------------------------------------------
13113 -- To allow MPA report to determine if it should generate report process
13114 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13115 ------------------------------------------------------------------------------------------
13116
13117 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13118 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13119 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
13120 -- call ADRs
13121 -- Bug 4922099
13122 --
13123 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13124 (NVL(l_actual_upg_option, 'N') = 'O') OR
13125 (NVL(l_enc_upg_option, 'N') = 'O')
13126 )
13127 THEN
13128 NULL;
13129 --
13130 --
13131
13132 l_ccid := AcctDerRule_3(
13133 p_application_id => p_application_id
13134 , p_ae_header_id => l_ae_header_id
13135 , p_source_1 => p_source_1
13136 , p_source_2 => p_source_2
13137 , x_transaction_coa_id => l_adr_transaction_coa_id
13138 , x_accounting_coa_id => l_adr_accounting_coa_id
13139 , x_value_type_code => l_adr_value_type_code
13140 , p_side => 'NA'
13141 );
13142
13143 xla_ae_lines_pkg.set_ccid(
13144 p_code_combination_id => l_ccid
13145 , p_value_type_code => l_adr_value_type_code
13146 , p_transaction_coa_id => l_adr_transaction_coa_id
13147 , p_accounting_coa_id => l_adr_accounting_coa_id
13148 , p_adr_code => 'ACV'
13149 , p_adr_type_code => 'S'
13150 , p_component_type => l_component_type
13151 , p_component_code => l_component_code
13152 , p_component_type_code => l_component_type_code
13153 , p_component_appl_id => l_component_appl_id
13154 , p_amb_context_code => l_amb_context_code
13155 , p_side => 'NA'
13156 );
13157
13158
13159 --
13160 --
13161 END IF;
13162
13163 --
13164 -- Update the line information that should be overwritten
13165 --
13166 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13167 p_header_num => 1);
13168 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
13169
13170 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13171
13172 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
13173 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13174 END IF;
13175
13176 --
13177 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13178 --
13179 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13180 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
13181 ELSE
13182 ---------------------------------------------------------------------------------------------------
13183 -- 4262811a Switch Sign
13184 ---------------------------------------------------------------------------------------------------
13185 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
13189 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13186 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13187 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13188 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13190 -- 5132302
13191 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13192 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13193
13194 END IF;
13195
13196 -- 4955764
13197 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13198 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13199
13200
13201 XLA_AE_LINES_PKG.ValidateCurrentLine;
13202 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13203
13204 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13205 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13206 ,p_balance_type_code => l_balance_type_code);
13207
13208 END IF;
13209
13210 -----------------------------------------------------------------------------------------
13211 -- 4262811 Multiperiod Accounting
13212 -----------------------------------------------------------------------------------------
13213 -- No MPA option is assigned.
13214
13215
13216 END IF;
13217 END IF;
13218 --
13219
13220 --
13221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13222 trace
13223 (p_msg => 'END of AcctLineType_56'
13224 ,p_level => C_LEVEL_PROCEDURE
13225 ,p_module => l_log_module);
13226 END IF;
13227 --
13228 EXCEPTION
13229 WHEN xla_exceptions_pkg.application_exception THEN
13230 RAISE;
13231 WHEN OTHERS THEN
13232 xla_exceptions_pkg.raise_message
13233 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_56');
13234 END AcctLineType_56;
13235 --
13236
13237 ---------------------------------------
13238 --
13239 -- PRIVATE FUNCTION
13240 -- AcctLineType_57
13241 --
13242 ---------------------------------------
13243 PROCEDURE AcctLineType_57 (
13244 p_application_id IN NUMBER
13245 ,p_event_id IN NUMBER
13246 ,p_calculate_acctd_flag IN VARCHAR2
13247 ,p_calculate_g_l_flag IN VARCHAR2
13248 ,p_actual_flag IN OUT VARCHAR2
13249 ,p_balance_type_code OUT VARCHAR2
13250 ,p_gain_or_loss_ref OUT VARCHAR2
13251
13252 --Transaction Account
13253 , p_source_1 IN NUMBER
13254 --Journal Line Type
13255 , p_source_2 IN VARCHAR2
13256 --Entered Amount
13257 , p_source_3 IN NUMBER
13258 --First Distribution Identifier
13259 , p_source_5 IN NUMBER
13260 --Distribution Type
13261 , p_source_6 IN VARCHAR2
13262 --Currency Code
13263 , p_source_7 IN VARCHAR2
13264 --Currency Conversion Date
13265 , p_source_8 IN DATE
13266 --Currency Conversion Rate
13267 , p_source_9 IN NUMBER
13268 --Currency Conversion Type
13269 , p_source_10 IN VARCHAR2
13270 --Accounted Amount
13271 , p_source_11 IN NUMBER
13272 )
13273 IS
13274
13275 l_component_type VARCHAR2(80);
13276 l_component_code VARCHAR2(30);
13277 l_component_type_code VARCHAR2(1);
13278 l_component_appl_id INTEGER;
13279 l_amb_context_code VARCHAR2(30);
13280 l_entity_code VARCHAR2(30);
13281 l_event_class_code VARCHAR2(30);
13282 l_ae_header_id NUMBER;
13283 l_event_type_code VARCHAR2(30);
13284 l_line_definition_code VARCHAR2(30);
13285 l_line_definition_owner_code VARCHAR2(1);
13286 --
13287 -- adr variables
13288 l_segment VARCHAR2(30);
13289 l_ccid NUMBER;
13290 l_adr_transaction_coa_id NUMBER;
13291 l_adr_accounting_coa_id NUMBER;
13292 l_adr_flexfield_segment_code VARCHAR2(30);
13293 l_adr_flex_value_set_id NUMBER;
13294 l_adr_value_type_code VARCHAR2(30);
13295 l_adr_value_combination_id NUMBER;
13296 l_adr_value_segment_code VARCHAR2(30);
13297
13298 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
13299 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
13300 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
13301 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
13302
13303 -- 4262811 Variables ------------------------------------------------------------------------------------------
13304 l_entered_amt_idx NUMBER;
13305 l_accted_amt_idx NUMBER;
13306 l_acc_rev_flag VARCHAR2(1);
13307 l_accrual_line_num NUMBER;
13308 l_tmp_amt NUMBER;
13309 l_acc_rev_natural_side_code VARCHAR2(1);
13310
13311 l_num_entries NUMBER;
13312 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
13313 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
13314 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
13318
13315 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
13316 l_recog_line_1 NUMBER;
13317 l_recog_line_2 NUMBER;
13319 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
13320 l_bflow_applied_to_amt NUMBER; -- 5132302
13321 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
13322
13323 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13324
13325 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
13326 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
13327
13328 ---------------------------------------------------------------------------------------------------------------
13329
13330
13331 --
13332 -- bulk performance
13333 --
13334 l_balance_type_code VARCHAR2(1);
13335 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13336 l_log_module VARCHAR2(240);
13337
13338 --
13339 -- Upgrade strategy
13340 --
13341 l_actual_upg_option VARCHAR2(1);
13342 l_enc_upg_option VARCHAR2(1);
13343
13344 --
13345 BEGIN
13346 --
13347 IF g_log_enabled THEN
13348 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
13349 END IF;
13350 --
13351 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13352
13353 trace
13354 (p_msg => 'BEGIN of AcctLineType_57'
13355 ,p_level => C_LEVEL_PROCEDURE
13356 ,p_module => l_log_module);
13357
13358 END IF;
13359 --
13360 l_component_type := 'AMB_JLT';
13361 l_component_code := 'ACV';
13362 l_component_type_code := 'S';
13363 l_component_appl_id := 555;
13364 l_amb_context_code := 'DEFAULT';
13365 l_entity_code := 'PURCHASING';
13366 l_event_class_code := 'DELIVER';
13367 l_event_type_code := 'INT_REQ_RECEIPT_ADJ';
13368 l_line_definition_owner_code := 'S';
13369 l_line_definition_code := 'INT_REQ_RCPT_ADJ';
13370 --
13371 l_balance_type_code := 'A';
13372 l_segment := NULL;
13373 l_ccid := NULL;
13374 l_adr_transaction_coa_id := NULL;
13375 l_adr_accounting_coa_id := NULL;
13376 l_adr_flexfield_segment_code := NULL;
13377 l_adr_flex_value_set_id := NULL;
13378 l_adr_value_type_code := NULL;
13379 l_adr_value_combination_id := NULL;
13380 l_adr_value_segment_code := NULL;
13381
13382 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
13383 l_bflow_class_code := ''; -- 4219869 Business Flow
13384 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
13385 l_budgetary_control_flag := 'N';
13386
13387 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13388 l_bflow_applied_to_amt := NULL; -- 5132302
13389 l_entered_amt_idx := NULL; -- 4262811
13390 l_accted_amt_idx := NULL; -- 4262811
13391 l_acc_rev_flag := NULL; -- 4262811
13392 l_accrual_line_num := NULL; -- 4262811
13393 l_tmp_amt := NULL; -- 4262811
13394 --
13395
13396 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13397 l_balance_type_code <> 'B' THEN
13398 IF NVL(p_source_2,'
13399 ') = 'ACV'
13400 THEN
13401
13402 --
13403 XLA_AE_LINES_PKG.SetNewLine;
13404
13405 p_balance_type_code := l_balance_type_code;
13406 -- set the flag so later we will know whether the gain loss line needs to be created
13407
13408 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13409 p_actual_flag :='A';
13410 END IF;
13411
13412 --
13413 -- bulk performance
13414 --
13415 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13416 p_header_num => 0); -- 4262811
13417 --
13418 -- set accounting line options
13419 --
13420 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13421 p_natural_side_code => 'D'
13422 , p_gain_or_loss_flag => 'N'
13423 , p_gl_transfer_mode_code => 'D'
13424 , p_acct_entry_type_code => 'A'
13425 , p_switch_side_flag => 'Y'
13426 , p_merge_duplicate_code => 'W'
13427 );
13428 --
13429 l_acc_rev_natural_side_code := 'C'; -- 4262811
13430 --
13431 --
13432 -- set accounting line type info
13433 --
13434 xla_ae_lines_pkg.SetAcctLineType
13435 (p_component_type => l_component_type
13436 ,p_event_type_code => l_event_type_code
13437 ,p_line_definition_owner_code => l_line_definition_owner_code
13438 ,p_line_definition_code => l_line_definition_code
13439 ,p_accounting_line_code => l_component_code
13440 ,p_accounting_line_type_code => l_component_type_code
13441 ,p_accounting_line_appl_id => l_component_appl_id
13442 ,p_amb_context_code => l_amb_context_code
13443 ,p_entity_code => l_entity_code
13447 --
13444 ,p_event_class_code => l_event_class_code);
13445 --
13446 -- set accounting class
13448 xla_ae_lines_pkg.SetAcctClass(
13449 p_accounting_class_code => 'ACV'
13450 , p_ae_header_id => l_ae_header_id
13451 );
13452
13453 --
13454 -- set rounding class
13455 --
13456 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13457 'ACV';
13458
13459 --
13460 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13461 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13462 --
13463 -- bulk performance
13464 --
13465 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13466
13467 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13468 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13469
13470 -- 4955764
13471 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13472 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13473
13474 -- 4458381 Public Sector Enh
13475
13476 --
13477 -- set accounting attributes for the line type
13478 --
13479 l_entered_amt_idx := 3;
13480 l_accted_amt_idx := 8;
13481 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13482 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13483 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
13484 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13485 l_rec_acct_attrs.array_char_value(2) := p_source_6;
13486 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13487 l_rec_acct_attrs.array_num_value(3) := p_source_3;
13488 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13489 l_rec_acct_attrs.array_char_value(4) := p_source_7;
13490 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13491 l_rec_acct_attrs.array_date_value(5) := p_source_8;
13492 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13493 l_rec_acct_attrs.array_num_value(6) := p_source_9;
13494 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13495 l_rec_acct_attrs.array_char_value(7) := p_source_10;
13496 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13497 l_rec_acct_attrs.array_num_value(8) := p_source_11;
13498
13499 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13500 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13501
13502 ---------------------------------------------------------------------------------------------------------------
13503 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13504 ---------------------------------------------------------------------------------------------------------------
13505 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13506
13507 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13508 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13509
13510 IF xla_accounting_cache_pkg.GetValueChar
13511 (p_source_code => 'LEDGER_CATEGORY_CODE'
13512 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13513 AND l_bflow_method_code = 'PRIOR_ENTRY'
13514 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13515 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13516 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13517 )
13518 THEN
13519 xla_ae_lines_pkg.BflowUpgEntry
13520 (p_business_method_code => l_bflow_method_code
13521 ,p_business_class_code => l_bflow_class_code
13522 ,p_balance_type => l_balance_type_code);
13523 ELSE
13524 NULL;
13525 -- No business flow processing for business flow method of NONE.
13526 END IF;
13527
13528 --
13529 -- call analytical criteria
13530 --
13531
13532 --
13533 -- call description
13534 --
13535 -- No description or it is inherited.
13536 --
13537 -- call ADRs
13538 -- Bug 4922099
13539 --
13540 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13541 (NVL(l_actual_upg_option, 'N') = 'O') OR
13542 (NVL(l_enc_upg_option, 'N') = 'O')
13543 )
13544 THEN
13545 NULL;
13546 --
13547 --
13548
13549 l_ccid := AcctDerRule_3(
13550 p_application_id => p_application_id
13551 , p_ae_header_id => l_ae_header_id
13552 , p_source_1 => p_source_1
13553 , p_source_2 => p_source_2
13554 , x_transaction_coa_id => l_adr_transaction_coa_id
13555 , x_accounting_coa_id => l_adr_accounting_coa_id
13556 , x_value_type_code => l_adr_value_type_code
13557 , p_side => 'NA'
13558 );
13559
13560 xla_ae_lines_pkg.set_ccid(
13561 p_code_combination_id => l_ccid
13562 , p_value_type_code => l_adr_value_type_code
13566 , p_adr_type_code => 'S'
13563 , p_transaction_coa_id => l_adr_transaction_coa_id
13564 , p_accounting_coa_id => l_adr_accounting_coa_id
13565 , p_adr_code => 'ACV'
13567 , p_component_type => l_component_type
13568 , p_component_code => l_component_code
13569 , p_component_type_code => l_component_type_code
13570 , p_component_appl_id => l_component_appl_id
13571 , p_amb_context_code => l_amb_context_code
13572 , p_side => 'NA'
13573 );
13574
13575
13576 --
13577 --
13578 END IF;
13579 --
13580 -- Bug 4922099
13581 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13582 (NVL(l_enc_upg_option, 'N') = 'O')
13583 ) AND
13584 (l_bflow_method_code = 'PRIOR_ENTRY')
13585 )
13586 THEN
13587 IF
13588 --
13589 1 = 2
13590 --
13591 THEN
13592 xla_accounting_err_pkg.build_message
13593 (p_appli_s_name => 'XLA'
13594 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13595 ,p_token_1 => 'LINE_NUMBER'
13596 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
13597 ,p_token_2 => 'LINE_TYPE_NAME'
13598 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
13599 l_component_type
13600 ,l_component_code
13601 ,l_component_type_code
13602 ,l_component_appl_id
13603 ,l_amb_context_code
13604 ,l_entity_code
13605 ,l_event_class_code
13606 )
13607 ,p_token_3 => 'OWNER'
13608 ,p_value_3 => xla_lookups_pkg.get_meaning(
13609 p_lookup_type => 'XLA_OWNER_TYPE'
13610 ,p_lookup_code => l_component_type_code
13611 )
13612 ,p_token_4 => 'PRODUCT_NAME'
13613 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13614 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13615 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13616 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13617 ,p_ae_header_id => NULL
13618 );
13619
13620 IF (C_LEVEL_ERROR>= g_log_level) THEN
13621 trace
13622 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13623 ,p_level => C_LEVEL_ERROR
13624 ,p_module => l_log_module);
13625 END IF;
13626 END IF;
13627 END IF;
13628 --
13629 --
13630 ------------------------------------------------------------------------------------------------
13631 -- 4219869 Business Flow
13632 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13633 -- Prior Entry. Currently, the following code is always generated.
13634 ------------------------------------------------------------------------------------------------
13635 XLA_AE_LINES_PKG.ValidateCurrentLine;
13636
13637 ------------------------------------------------------------------------------------
13638 -- 4219869 Business Flow
13639 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13640 ------------------------------------------------------------------------------------
13641 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13642
13643 ----------------------------------------------------------------------------------
13644 -- 4219869 Business Flow
13645 -- Update journal entry status -- Need to generate this within IF <condition>
13646 ----------------------------------------------------------------------------------
13647 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13648 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13649 ,p_balance_type_code => l_balance_type_code
13650 );
13651
13652 -------------------------------------------------------------------------------------------
13653 -- 4262811 - Generate the Accrual Reversal lines
13654 -------------------------------------------------------------------------------------------
13655 BEGIN
13659 l_acc_rev_flag := 'N';
13656 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13657 (g_array_event(p_event_id).array_value_num('header_index'));
13658 IF l_acc_rev_flag IS NULL THEN
13660 END IF;
13661 EXCEPTION
13662 WHEN OTHERS THEN
13663 l_acc_rev_flag := 'N';
13664 END;
13665 --
13666 IF (l_acc_rev_flag = 'Y') THEN
13667
13668 -- 4645092 ------------------------------------------------------------------------------
13669 -- To allow MPA report to determine if it should generate report process
13670 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13671 ------------------------------------------------------------------------------------------
13672
13673 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13674 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13675 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
13676 -- call ADRs
13677 -- Bug 4922099
13678 --
13679 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13680 (NVL(l_actual_upg_option, 'N') = 'O') OR
13681 (NVL(l_enc_upg_option, 'N') = 'O')
13682 )
13683 THEN
13684 NULL;
13685 --
13686 --
13687
13688 l_ccid := AcctDerRule_3(
13689 p_application_id => p_application_id
13690 , p_ae_header_id => l_ae_header_id
13691 , p_source_1 => p_source_1
13692 , p_source_2 => p_source_2
13693 , x_transaction_coa_id => l_adr_transaction_coa_id
13694 , x_accounting_coa_id => l_adr_accounting_coa_id
13695 , x_value_type_code => l_adr_value_type_code
13696 , p_side => 'NA'
13697 );
13698
13699 xla_ae_lines_pkg.set_ccid(
13700 p_code_combination_id => l_ccid
13701 , p_value_type_code => l_adr_value_type_code
13702 , p_transaction_coa_id => l_adr_transaction_coa_id
13703 , p_accounting_coa_id => l_adr_accounting_coa_id
13704 , p_adr_code => 'ACV'
13705 , p_adr_type_code => 'S'
13706 , p_component_type => l_component_type
13707 , p_component_code => l_component_code
13708 , p_component_type_code => l_component_type_code
13709 , p_component_appl_id => l_component_appl_id
13710 , p_amb_context_code => l_amb_context_code
13711 , p_side => 'NA'
13712 );
13713
13714
13715 --
13716 --
13717 END IF;
13718
13719 --
13720 -- Update the line information that should be overwritten
13721 --
13722 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13723 p_header_num => 1);
13724 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
13725
13726 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13727
13728 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
13729 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13730 END IF;
13731
13732 --
13733 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13734 --
13735 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13736 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
13737 ELSE
13738 ---------------------------------------------------------------------------------------------------
13739 -- 4262811a Switch Sign
13740 ---------------------------------------------------------------------------------------------------
13741 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
13742 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13743 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13744 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13745 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13746 -- 5132302
13747 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13748 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13749
13750 END IF;
13751
13752 -- 4955764
13753 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13754 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13755
13756
13757 XLA_AE_LINES_PKG.ValidateCurrentLine;
13758 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13759
13760 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13761 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13762 ,p_balance_type_code => l_balance_type_code);
13763
13764 END IF;
13765
13769 -- No MPA option is assigned.
13766 -----------------------------------------------------------------------------------------
13767 -- 4262811 Multiperiod Accounting
13768 -----------------------------------------------------------------------------------------
13770
13771
13772 END IF;
13773 END IF;
13774 --
13775
13776 --
13777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13778 trace
13779 (p_msg => 'END of AcctLineType_57'
13780 ,p_level => C_LEVEL_PROCEDURE
13781 ,p_module => l_log_module);
13782 END IF;
13783 --
13784 EXCEPTION
13785 WHEN xla_exceptions_pkg.application_exception THEN
13786 RAISE;
13787 WHEN OTHERS THEN
13788 xla_exceptions_pkg.raise_message
13789 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_57');
13790 END AcctLineType_57;
13791 --
13792
13793 ---------------------------------------
13794 --
13795 -- PRIVATE FUNCTION
13796 -- AcctLineType_58
13797 --
13798 ---------------------------------------
13799 PROCEDURE AcctLineType_58 (
13800 p_application_id IN NUMBER
13801 ,p_event_id IN NUMBER
13802 ,p_calculate_acctd_flag IN VARCHAR2
13803 ,p_calculate_g_l_flag IN VARCHAR2
13804 ,p_actual_flag IN OUT VARCHAR2
13805 ,p_balance_type_code OUT VARCHAR2
13806 ,p_gain_or_loss_ref OUT VARCHAR2
13807
13808 --Transaction Account
13809 , p_source_1 IN NUMBER
13810 --Journal Line Type
13811 , p_source_2 IN VARCHAR2
13812 --Entered Amount
13813 , p_source_3 IN NUMBER
13814 --First Distribution Identifier
13815 , p_source_5 IN NUMBER
13816 --Distribution Type
13817 , p_source_6 IN VARCHAR2
13818 --Currency Code
13819 , p_source_7 IN VARCHAR2
13820 --Currency Conversion Date
13821 , p_source_8 IN DATE
13822 --Currency Conversion Rate
13823 , p_source_9 IN NUMBER
13824 --Currency Conversion Type
13825 , p_source_10 IN VARCHAR2
13826 --Accounted Amount
13827 , p_source_11 IN NUMBER
13828 )
13829 IS
13830
13831 l_component_type VARCHAR2(80);
13832 l_component_code VARCHAR2(30);
13833 l_component_type_code VARCHAR2(1);
13834 l_component_appl_id INTEGER;
13835 l_amb_context_code VARCHAR2(30);
13836 l_entity_code VARCHAR2(30);
13837 l_event_class_code VARCHAR2(30);
13838 l_ae_header_id NUMBER;
13839 l_event_type_code VARCHAR2(30);
13840 l_line_definition_code VARCHAR2(30);
13841 l_line_definition_owner_code VARCHAR2(1);
13842 --
13843 -- adr variables
13844 l_segment VARCHAR2(30);
13845 l_ccid NUMBER;
13846 l_adr_transaction_coa_id NUMBER;
13847 l_adr_accounting_coa_id NUMBER;
13848 l_adr_flexfield_segment_code VARCHAR2(30);
13849 l_adr_flex_value_set_id NUMBER;
13850 l_adr_value_type_code VARCHAR2(30);
13851 l_adr_value_combination_id NUMBER;
13852 l_adr_value_segment_code VARCHAR2(30);
13853
13854 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
13855 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
13856 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
13857 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
13858
13859 -- 4262811 Variables ------------------------------------------------------------------------------------------
13860 l_entered_amt_idx NUMBER;
13861 l_accted_amt_idx NUMBER;
13862 l_acc_rev_flag VARCHAR2(1);
13863 l_accrual_line_num NUMBER;
13864 l_tmp_amt NUMBER;
13865 l_acc_rev_natural_side_code VARCHAR2(1);
13866
13867 l_num_entries NUMBER;
13868 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
13869 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
13870 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
13871 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
13872 l_recog_line_1 NUMBER;
13873 l_recog_line_2 NUMBER;
13874
13875 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
13876 l_bflow_applied_to_amt NUMBER; -- 5132302
13877 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
13878
13879 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13880
13881 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
13882 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
13883
13884 ---------------------------------------------------------------------------------------------------------------
13885
13886
13887 --
13888 -- bulk performance
13889 --
13890 l_balance_type_code VARCHAR2(1);
13891 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13892 l_log_module VARCHAR2(240);
13893
13894 --
13895 -- Upgrade strategy
13896 --
13897 l_actual_upg_option VARCHAR2(1);
13898 l_enc_upg_option VARCHAR2(1);
13899
13903 IF g_log_enabled THEN
13900 --
13901 BEGIN
13902 --
13904 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
13905 END IF;
13906 --
13907 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13908
13909 trace
13910 (p_msg => 'BEGIN of AcctLineType_58'
13911 ,p_level => C_LEVEL_PROCEDURE
13912 ,p_module => l_log_module);
13913
13914 END IF;
13915 --
13916 l_component_type := 'AMB_JLT';
13917 l_component_code := 'ACV';
13918 l_component_type_code := 'S';
13919 l_component_appl_id := 555;
13920 l_amb_context_code := 'DEFAULT';
13921 l_entity_code := 'PURCHASING';
13922 l_event_class_code := 'DELIVER';
13923 l_event_type_code := 'PO_RECEIPT';
13924 l_line_definition_owner_code := 'S';
13925 l_line_definition_code := 'DELIVER';
13926 --
13927 l_balance_type_code := 'A';
13928 l_segment := NULL;
13929 l_ccid := NULL;
13930 l_adr_transaction_coa_id := NULL;
13931 l_adr_accounting_coa_id := NULL;
13932 l_adr_flexfield_segment_code := NULL;
13933 l_adr_flex_value_set_id := NULL;
13934 l_adr_value_type_code := NULL;
13935 l_adr_value_combination_id := NULL;
13936 l_adr_value_segment_code := NULL;
13937
13938 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
13939 l_bflow_class_code := ''; -- 4219869 Business Flow
13940 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
13941 l_budgetary_control_flag := 'N';
13942
13943 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13944 l_bflow_applied_to_amt := NULL; -- 5132302
13945 l_entered_amt_idx := NULL; -- 4262811
13946 l_accted_amt_idx := NULL; -- 4262811
13947 l_acc_rev_flag := NULL; -- 4262811
13948 l_accrual_line_num := NULL; -- 4262811
13949 l_tmp_amt := NULL; -- 4262811
13950 --
13951
13952 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13953 l_balance_type_code <> 'B' THEN
13954 IF NVL(p_source_2,'
13955 ') = 'ACV'
13956 THEN
13957
13958 --
13959 XLA_AE_LINES_PKG.SetNewLine;
13960
13961 p_balance_type_code := l_balance_type_code;
13962 -- set the flag so later we will know whether the gain loss line needs to be created
13963
13964 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13965 p_actual_flag :='A';
13966 END IF;
13967
13968 --
13969 -- bulk performance
13970 --
13971 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13972 p_header_num => 0); -- 4262811
13973 --
13974 -- set accounting line options
13975 --
13976 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13977 p_natural_side_code => 'D'
13978 , p_gain_or_loss_flag => 'N'
13979 , p_gl_transfer_mode_code => 'D'
13980 , p_acct_entry_type_code => 'A'
13981 , p_switch_side_flag => 'Y'
13982 , p_merge_duplicate_code => 'W'
13983 );
13984 --
13985 l_acc_rev_natural_side_code := 'C'; -- 4262811
13986 --
13987 --
13988 -- set accounting line type info
13989 --
13990 xla_ae_lines_pkg.SetAcctLineType
13991 (p_component_type => l_component_type
13992 ,p_event_type_code => l_event_type_code
13993 ,p_line_definition_owner_code => l_line_definition_owner_code
13994 ,p_line_definition_code => l_line_definition_code
13995 ,p_accounting_line_code => l_component_code
13996 ,p_accounting_line_type_code => l_component_type_code
13997 ,p_accounting_line_appl_id => l_component_appl_id
13998 ,p_amb_context_code => l_amb_context_code
13999 ,p_entity_code => l_entity_code
14000 ,p_event_class_code => l_event_class_code);
14001 --
14002 -- set accounting class
14003 --
14004 xla_ae_lines_pkg.SetAcctClass(
14005 p_accounting_class_code => 'ACV'
14006 , p_ae_header_id => l_ae_header_id
14007 );
14008
14009 --
14010 -- set rounding class
14011 --
14012 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14013 'ACV';
14014
14015 --
14016 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14017 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14018 --
14019 -- bulk performance
14020 --
14021 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14022
14023 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14024 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14025
14026 -- 4955764
14027 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14028 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14029
14030 -- 4458381 Public Sector Enh
14034 --
14031
14032 --
14033 -- set accounting attributes for the line type
14035 l_entered_amt_idx := 3;
14036 l_accted_amt_idx := 8;
14037 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14038 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14039 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
14040 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14041 l_rec_acct_attrs.array_char_value(2) := p_source_6;
14042 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14043 l_rec_acct_attrs.array_num_value(3) := p_source_3;
14044 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14045 l_rec_acct_attrs.array_char_value(4) := p_source_7;
14046 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14047 l_rec_acct_attrs.array_date_value(5) := p_source_8;
14048 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14049 l_rec_acct_attrs.array_num_value(6) := p_source_9;
14050 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14051 l_rec_acct_attrs.array_char_value(7) := p_source_10;
14052 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
14053 l_rec_acct_attrs.array_num_value(8) := p_source_11;
14054
14055 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14056 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14057
14058 ---------------------------------------------------------------------------------------------------------------
14059 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14060 ---------------------------------------------------------------------------------------------------------------
14061 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14062
14063 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14064 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14065
14066 IF xla_accounting_cache_pkg.GetValueChar
14067 (p_source_code => 'LEDGER_CATEGORY_CODE'
14068 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14069 AND l_bflow_method_code = 'PRIOR_ENTRY'
14070 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14071 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14072 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14073 )
14074 THEN
14075 xla_ae_lines_pkg.BflowUpgEntry
14076 (p_business_method_code => l_bflow_method_code
14077 ,p_business_class_code => l_bflow_class_code
14078 ,p_balance_type => l_balance_type_code);
14079 ELSE
14080 NULL;
14081 -- No business flow processing for business flow method of NONE.
14082 END IF;
14083
14084 --
14085 -- call analytical criteria
14086 --
14087
14088 --
14089 -- call description
14090 --
14091 -- No description or it is inherited.
14092 --
14093 -- call ADRs
14094 -- Bug 4922099
14095 --
14096 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14097 (NVL(l_actual_upg_option, 'N') = 'O') OR
14098 (NVL(l_enc_upg_option, 'N') = 'O')
14099 )
14100 THEN
14101 NULL;
14102 --
14103 --
14104
14105 l_ccid := AcctDerRule_3(
14106 p_application_id => p_application_id
14107 , p_ae_header_id => l_ae_header_id
14108 , p_source_1 => p_source_1
14109 , p_source_2 => p_source_2
14110 , x_transaction_coa_id => l_adr_transaction_coa_id
14111 , x_accounting_coa_id => l_adr_accounting_coa_id
14112 , x_value_type_code => l_adr_value_type_code
14113 , p_side => 'NA'
14114 );
14115
14116 xla_ae_lines_pkg.set_ccid(
14117 p_code_combination_id => l_ccid
14118 , p_value_type_code => l_adr_value_type_code
14119 , p_transaction_coa_id => l_adr_transaction_coa_id
14120 , p_accounting_coa_id => l_adr_accounting_coa_id
14121 , p_adr_code => 'ACV'
14122 , p_adr_type_code => 'S'
14123 , p_component_type => l_component_type
14124 , p_component_code => l_component_code
14125 , p_component_type_code => l_component_type_code
14126 , p_component_appl_id => l_component_appl_id
14127 , p_amb_context_code => l_amb_context_code
14128 , p_side => 'NA'
14129 );
14130
14131
14132 --
14133 --
14134 END IF;
14135 --
14136 -- Bug 4922099
14137 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14138 (NVL(l_enc_upg_option, 'N') = 'O')
14139 ) AND
14140 (l_bflow_method_code = 'PRIOR_ENTRY')
14141 )
14142 THEN
14143 IF
14144 --
14145 1 = 2
14146 --
14147 THEN
14148 xla_accounting_err_pkg.build_message
14149 (p_appli_s_name => 'XLA'
14150 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14154 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
14151 ,p_token_1 => 'LINE_NUMBER'
14152 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
14153 ,p_token_2 => 'LINE_TYPE_NAME'
14155 l_component_type
14156 ,l_component_code
14157 ,l_component_type_code
14158 ,l_component_appl_id
14159 ,l_amb_context_code
14160 ,l_entity_code
14161 ,l_event_class_code
14162 )
14163 ,p_token_3 => 'OWNER'
14164 ,p_value_3 => xla_lookups_pkg.get_meaning(
14165 p_lookup_type => 'XLA_OWNER_TYPE'
14166 ,p_lookup_code => l_component_type_code
14167 )
14168 ,p_token_4 => 'PRODUCT_NAME'
14169 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14170 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14171 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14172 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14173 ,p_ae_header_id => NULL
14174 );
14175
14176 IF (C_LEVEL_ERROR>= g_log_level) THEN
14177 trace
14178 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14179 ,p_level => C_LEVEL_ERROR
14180 ,p_module => l_log_module);
14181 END IF;
14182 END IF;
14183 END IF;
14184 --
14185 --
14186 ------------------------------------------------------------------------------------------------
14187 -- 4219869 Business Flow
14188 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14189 -- Prior Entry. Currently, the following code is always generated.
14190 ------------------------------------------------------------------------------------------------
14191 XLA_AE_LINES_PKG.ValidateCurrentLine;
14192
14193 ------------------------------------------------------------------------------------
14194 -- 4219869 Business Flow
14195 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14196 ------------------------------------------------------------------------------------
14197 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14198
14199 ----------------------------------------------------------------------------------
14200 -- 4219869 Business Flow
14201 -- Update journal entry status -- Need to generate this within IF <condition>
14202 ----------------------------------------------------------------------------------
14203 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14204 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14205 ,p_balance_type_code => l_balance_type_code
14206 );
14207
14208 -------------------------------------------------------------------------------------------
14209 -- 4262811 - Generate the Accrual Reversal lines
14210 -------------------------------------------------------------------------------------------
14211 BEGIN
14212 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14213 (g_array_event(p_event_id).array_value_num('header_index'));
14214 IF l_acc_rev_flag IS NULL THEN
14215 l_acc_rev_flag := 'N';
14216 END IF;
14217 EXCEPTION
14218 WHEN OTHERS THEN
14219 l_acc_rev_flag := 'N';
14220 END;
14221 --
14222 IF (l_acc_rev_flag = 'Y') THEN
14223
14224 -- 4645092 ------------------------------------------------------------------------------
14225 -- To allow MPA report to determine if it should generate report process
14226 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14227 ------------------------------------------------------------------------------------------
14228
14229 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14230 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14231 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
14232 -- call ADRs
14233 -- Bug 4922099
14234 --
14235 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14236 (NVL(l_actual_upg_option, 'N') = 'O') OR
14237 (NVL(l_enc_upg_option, 'N') = 'O')
14238 )
14239 THEN
14240 NULL;
14241 --
14242 --
14243
14247 , p_source_1 => p_source_1
14244 l_ccid := AcctDerRule_3(
14245 p_application_id => p_application_id
14246 , p_ae_header_id => l_ae_header_id
14248 , p_source_2 => p_source_2
14249 , x_transaction_coa_id => l_adr_transaction_coa_id
14250 , x_accounting_coa_id => l_adr_accounting_coa_id
14251 , x_value_type_code => l_adr_value_type_code
14252 , p_side => 'NA'
14253 );
14254
14255 xla_ae_lines_pkg.set_ccid(
14256 p_code_combination_id => l_ccid
14257 , p_value_type_code => l_adr_value_type_code
14258 , p_transaction_coa_id => l_adr_transaction_coa_id
14259 , p_accounting_coa_id => l_adr_accounting_coa_id
14260 , p_adr_code => 'ACV'
14261 , p_adr_type_code => 'S'
14262 , p_component_type => l_component_type
14263 , p_component_code => l_component_code
14264 , p_component_type_code => l_component_type_code
14265 , p_component_appl_id => l_component_appl_id
14266 , p_amb_context_code => l_amb_context_code
14267 , p_side => 'NA'
14268 );
14269
14270
14271 --
14272 --
14273 END IF;
14274
14275 --
14276 -- Update the line information that should be overwritten
14277 --
14278 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14279 p_header_num => 1);
14280 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
14281
14282 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14283
14284 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
14285 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14286 END IF;
14287
14288 --
14289 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14290 --
14291 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14292 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
14293 ELSE
14294 ---------------------------------------------------------------------------------------------------
14295 -- 4262811a Switch Sign
14296 ---------------------------------------------------------------------------------------------------
14297 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
14298 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14299 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14300 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14301 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14302 -- 5132302
14303 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14304 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14305
14306 END IF;
14307
14308 -- 4955764
14309 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14310 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14311
14312
14313 XLA_AE_LINES_PKG.ValidateCurrentLine;
14314 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14315
14316 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14317 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14318 ,p_balance_type_code => l_balance_type_code);
14319
14320 END IF;
14321
14322 -----------------------------------------------------------------------------------------
14323 -- 4262811 Multiperiod Accounting
14324 -----------------------------------------------------------------------------------------
14325 -- No MPA option is assigned.
14326
14327
14328 END IF;
14329 END IF;
14330 --
14331
14332 --
14333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14334 trace
14335 (p_msg => 'END of AcctLineType_58'
14336 ,p_level => C_LEVEL_PROCEDURE
14337 ,p_module => l_log_module);
14338 END IF;
14339 --
14340 EXCEPTION
14341 WHEN xla_exceptions_pkg.application_exception THEN
14342 RAISE;
14343 WHEN OTHERS THEN
14344 xla_exceptions_pkg.raise_message
14345 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_58');
14346 END AcctLineType_58;
14347 --
14348
14349 ---------------------------------------
14350 --
14351 -- PRIVATE FUNCTION
14352 -- AcctLineType_59
14353 --
14354 ---------------------------------------
14355 PROCEDURE AcctLineType_59 (
14356 p_application_id IN NUMBER
14357 ,p_event_id IN NUMBER
14358 ,p_calculate_acctd_flag IN VARCHAR2
14359 ,p_calculate_g_l_flag IN VARCHAR2
14360 ,p_actual_flag IN OUT VARCHAR2
14361 ,p_balance_type_code OUT VARCHAR2
14362 ,p_gain_or_loss_ref OUT VARCHAR2
14366 --Journal Line Type
14363
14364 --Transaction Account
14365 , p_source_1 IN NUMBER
14367 , p_source_2 IN VARCHAR2
14368 --Entered Amount
14369 , p_source_3 IN NUMBER
14370 --First Distribution Identifier
14371 , p_source_5 IN NUMBER
14372 --Distribution Type
14373 , p_source_6 IN VARCHAR2
14374 --Currency Code
14375 , p_source_7 IN VARCHAR2
14376 --Currency Conversion Date
14377 , p_source_8 IN DATE
14378 --Currency Conversion Rate
14379 , p_source_9 IN NUMBER
14380 --Currency Conversion Type
14381 , p_source_10 IN VARCHAR2
14382 --Accounted Amount
14383 , p_source_11 IN NUMBER
14384 )
14385 IS
14386
14387 l_component_type VARCHAR2(80);
14388 l_component_code VARCHAR2(30);
14389 l_component_type_code VARCHAR2(1);
14390 l_component_appl_id INTEGER;
14391 l_amb_context_code VARCHAR2(30);
14392 l_entity_code VARCHAR2(30);
14393 l_event_class_code VARCHAR2(30);
14394 l_ae_header_id NUMBER;
14395 l_event_type_code VARCHAR2(30);
14396 l_line_definition_code VARCHAR2(30);
14397 l_line_definition_owner_code VARCHAR2(1);
14398 --
14399 -- adr variables
14400 l_segment VARCHAR2(30);
14401 l_ccid NUMBER;
14402 l_adr_transaction_coa_id NUMBER;
14403 l_adr_accounting_coa_id NUMBER;
14404 l_adr_flexfield_segment_code VARCHAR2(30);
14405 l_adr_flex_value_set_id NUMBER;
14406 l_adr_value_type_code VARCHAR2(30);
14407 l_adr_value_combination_id NUMBER;
14408 l_adr_value_segment_code VARCHAR2(30);
14409
14410 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
14411 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
14412 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
14413 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
14414
14415 -- 4262811 Variables ------------------------------------------------------------------------------------------
14416 l_entered_amt_idx NUMBER;
14417 l_accted_amt_idx NUMBER;
14418 l_acc_rev_flag VARCHAR2(1);
14419 l_accrual_line_num NUMBER;
14420 l_tmp_amt NUMBER;
14421 l_acc_rev_natural_side_code VARCHAR2(1);
14422
14423 l_num_entries NUMBER;
14424 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
14425 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
14426 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
14427 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
14428 l_recog_line_1 NUMBER;
14429 l_recog_line_2 NUMBER;
14430
14431 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
14432 l_bflow_applied_to_amt NUMBER; -- 5132302
14433 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
14434
14435 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14436
14437 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
14438 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
14439
14440 ---------------------------------------------------------------------------------------------------------------
14441
14442
14443 --
14444 -- bulk performance
14445 --
14446 l_balance_type_code VARCHAR2(1);
14447 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
14448 l_log_module VARCHAR2(240);
14449
14450 --
14451 -- Upgrade strategy
14452 --
14453 l_actual_upg_option VARCHAR2(1);
14454 l_enc_upg_option VARCHAR2(1);
14455
14456 --
14457 BEGIN
14458 --
14459 IF g_log_enabled THEN
14460 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
14461 END IF;
14462 --
14463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14464
14465 trace
14466 (p_msg => 'BEGIN of AcctLineType_59'
14467 ,p_level => C_LEVEL_PROCEDURE
14468 ,p_module => l_log_module);
14469
14470 END IF;
14471 --
14472 l_component_type := 'AMB_JLT';
14473 l_component_code := 'ALC';
14474 l_component_type_code := 'S';
14475 l_component_appl_id := 555;
14476 l_amb_context_code := 'DEFAULT';
14477 l_entity_code := 'PRODUCTION';
14478 l_event_class_code := 'BATCH_MATERIAL';
14479 l_event_type_code := 'CERT';
14480 l_line_definition_owner_code := 'S';
14481 l_line_definition_code := 'BATCH_COMPLETION';
14482 --
14483 l_balance_type_code := 'A';
14484 l_segment := NULL;
14485 l_ccid := NULL;
14486 l_adr_transaction_coa_id := NULL;
14487 l_adr_accounting_coa_id := NULL;
14488 l_adr_flexfield_segment_code := NULL;
14489 l_adr_flex_value_set_id := NULL;
14490 l_adr_value_type_code := NULL;
14491 l_adr_value_combination_id := NULL;
14492 l_adr_value_segment_code := NULL;
14493
14494 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
14498
14495 l_bflow_class_code := ''; -- 4219869 Business Flow
14496 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
14497 l_budgetary_control_flag := 'N';
14499 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14500 l_bflow_applied_to_amt := NULL; -- 5132302
14501 l_entered_amt_idx := NULL; -- 4262811
14502 l_accted_amt_idx := NULL; -- 4262811
14503 l_acc_rev_flag := NULL; -- 4262811
14504 l_accrual_line_num := NULL; -- 4262811
14505 l_tmp_amt := NULL; -- 4262811
14506 --
14507
14508 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14509 l_balance_type_code <> 'B' THEN
14510 IF NVL(p_source_2,'
14511 ') = 'ALC'
14512 THEN
14513
14514 --
14515 XLA_AE_LINES_PKG.SetNewLine;
14516
14517 p_balance_type_code := l_balance_type_code;
14518 -- set the flag so later we will know whether the gain loss line needs to be created
14519
14520 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14521 p_actual_flag :='A';
14522 END IF;
14523
14524 --
14525 -- bulk performance
14526 --
14527 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14528 p_header_num => 0); -- 4262811
14529 --
14530 -- set accounting line options
14531 --
14532 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14533 p_natural_side_code => 'D'
14534 , p_gain_or_loss_flag => 'N'
14535 , p_gl_transfer_mode_code => 'D'
14536 , p_acct_entry_type_code => 'A'
14537 , p_switch_side_flag => 'Y'
14538 , p_merge_duplicate_code => 'W'
14539 );
14540 --
14541 l_acc_rev_natural_side_code := 'C'; -- 4262811
14542 --
14543 --
14544 -- set accounting line type info
14545 --
14546 xla_ae_lines_pkg.SetAcctLineType
14547 (p_component_type => l_component_type
14548 ,p_event_type_code => l_event_type_code
14549 ,p_line_definition_owner_code => l_line_definition_owner_code
14550 ,p_line_definition_code => l_line_definition_code
14551 ,p_accounting_line_code => l_component_code
14552 ,p_accounting_line_type_code => l_component_type_code
14553 ,p_accounting_line_appl_id => l_component_appl_id
14554 ,p_amb_context_code => l_amb_context_code
14555 ,p_entity_code => l_entity_code
14556 ,p_event_class_code => l_event_class_code);
14557 --
14558 -- set accounting class
14559 --
14560 xla_ae_lines_pkg.SetAcctClass(
14561 p_accounting_class_code => 'ALC'
14562 , p_ae_header_id => l_ae_header_id
14563 );
14564
14565 --
14566 -- set rounding class
14567 --
14568 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14569 'ALC';
14570
14571 --
14572 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14573 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14574 --
14575 -- bulk performance
14576 --
14577 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14578
14579 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14580 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14581
14582 -- 4955764
14583 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14584 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14585
14586 -- 4458381 Public Sector Enh
14587
14588 --
14589 -- set accounting attributes for the line type
14590 --
14591 l_entered_amt_idx := 3;
14592 l_accted_amt_idx := 8;
14593 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14594 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14595 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
14596 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14597 l_rec_acct_attrs.array_char_value(2) := p_source_6;
14598 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14599 l_rec_acct_attrs.array_num_value(3) := p_source_3;
14600 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14601 l_rec_acct_attrs.array_char_value(4) := p_source_7;
14602 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14603 l_rec_acct_attrs.array_date_value(5) := p_source_8;
14604 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14605 l_rec_acct_attrs.array_num_value(6) := p_source_9;
14606 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14607 l_rec_acct_attrs.array_char_value(7) := p_source_10;
14608 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
14609 l_rec_acct_attrs.array_num_value(8) := p_source_11;
14610
14611 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14612 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14613
14617 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14614 ---------------------------------------------------------------------------------------------------------------
14615 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14616 ---------------------------------------------------------------------------------------------------------------
14618
14619 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14620 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14621
14622 IF xla_accounting_cache_pkg.GetValueChar
14623 (p_source_code => 'LEDGER_CATEGORY_CODE'
14624 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14625 AND l_bflow_method_code = 'PRIOR_ENTRY'
14626 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14627 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14628 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14629 )
14630 THEN
14631 xla_ae_lines_pkg.BflowUpgEntry
14632 (p_business_method_code => l_bflow_method_code
14633 ,p_business_class_code => l_bflow_class_code
14634 ,p_balance_type => l_balance_type_code);
14635 ELSE
14636 NULL;
14637 -- No business flow processing for business flow method of NONE.
14638 END IF;
14639
14640 --
14641 -- call analytical criteria
14642 --
14643
14644 --
14645 -- call description
14646 --
14647 -- No description or it is inherited.
14648 --
14649 -- call ADRs
14650 -- Bug 4922099
14651 --
14652 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14653 (NVL(l_actual_upg_option, 'N') = 'O') OR
14654 (NVL(l_enc_upg_option, 'N') = 'O')
14655 )
14656 THEN
14657 NULL;
14658 --
14659 --
14660
14661 l_ccid := AcctDerRule_4(
14662 p_application_id => p_application_id
14663 , p_ae_header_id => l_ae_header_id
14664 , p_source_1 => p_source_1
14665 , p_source_2 => p_source_2
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 => 'ALC'
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 -- Bug 4922099
14693 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14694 (NVL(l_enc_upg_option, 'N') = 'O')
14695 ) AND
14696 (l_bflow_method_code = 'PRIOR_ENTRY')
14697 )
14698 THEN
14699 IF
14700 --
14701 1 = 2
14702 --
14703 THEN
14704 xla_accounting_err_pkg.build_message
14705 (p_appli_s_name => 'XLA'
14706 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14707 ,p_token_1 => 'LINE_NUMBER'
14708 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
14709 ,p_token_2 => 'LINE_TYPE_NAME'
14710 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
14711 l_component_type
14712 ,l_component_code
14713 ,l_component_type_code
14714 ,l_component_appl_id
14715 ,l_amb_context_code
14716 ,l_entity_code
14717 ,l_event_class_code
14718 )
14719 ,p_token_3 => 'OWNER'
14720 ,p_value_3 => xla_lookups_pkg.get_meaning(
14721 p_lookup_type => 'XLA_OWNER_TYPE'
14722 ,p_lookup_code => l_component_type_code
14726 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14723 )
14724 ,p_token_4 => 'PRODUCT_NAME'
14725 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14727 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14728 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14729 ,p_ae_header_id => NULL
14730 );
14731
14732 IF (C_LEVEL_ERROR>= g_log_level) THEN
14733 trace
14734 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14735 ,p_level => C_LEVEL_ERROR
14736 ,p_module => l_log_module);
14737 END IF;
14738 END IF;
14739 END IF;
14740 --
14741 --
14742 ------------------------------------------------------------------------------------------------
14743 -- 4219869 Business Flow
14744 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14745 -- Prior Entry. Currently, the following code is always generated.
14746 ------------------------------------------------------------------------------------------------
14747 XLA_AE_LINES_PKG.ValidateCurrentLine;
14748
14749 ------------------------------------------------------------------------------------
14750 -- 4219869 Business Flow
14751 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14752 ------------------------------------------------------------------------------------
14753 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14754
14755 ----------------------------------------------------------------------------------
14756 -- 4219869 Business Flow
14757 -- Update journal entry status -- Need to generate this within IF <condition>
14758 ----------------------------------------------------------------------------------
14759 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14760 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14761 ,p_balance_type_code => l_balance_type_code
14762 );
14763
14764 -------------------------------------------------------------------------------------------
14765 -- 4262811 - Generate the Accrual Reversal lines
14766 -------------------------------------------------------------------------------------------
14767 BEGIN
14768 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14769 (g_array_event(p_event_id).array_value_num('header_index'));
14770 IF l_acc_rev_flag IS NULL THEN
14771 l_acc_rev_flag := 'N';
14772 END IF;
14773 EXCEPTION
14774 WHEN OTHERS THEN
14775 l_acc_rev_flag := 'N';
14776 END;
14777 --
14778 IF (l_acc_rev_flag = 'Y') THEN
14779
14780 -- 4645092 ------------------------------------------------------------------------------
14781 -- To allow MPA report to determine if it should generate report process
14782 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14783 ------------------------------------------------------------------------------------------
14784
14785 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14786 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14787 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
14788 -- call ADRs
14789 -- Bug 4922099
14790 --
14791 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14792 (NVL(l_actual_upg_option, 'N') = 'O') OR
14793 (NVL(l_enc_upg_option, 'N') = 'O')
14794 )
14795 THEN
14796 NULL;
14797 --
14798 --
14799
14800 l_ccid := AcctDerRule_4(
14801 p_application_id => p_application_id
14802 , p_ae_header_id => l_ae_header_id
14803 , p_source_1 => p_source_1
14804 , p_source_2 => p_source_2
14805 , x_transaction_coa_id => l_adr_transaction_coa_id
14806 , x_accounting_coa_id => l_adr_accounting_coa_id
14807 , x_value_type_code => l_adr_value_type_code
14808 , p_side => 'NA'
14809 );
14810
14811 xla_ae_lines_pkg.set_ccid(
14812 p_code_combination_id => l_ccid
14813 , p_value_type_code => l_adr_value_type_code
14814 , p_transaction_coa_id => l_adr_transaction_coa_id
14815 , p_accounting_coa_id => l_adr_accounting_coa_id
14816 , p_adr_code => 'ALC'
14817 , p_adr_type_code => 'S'
14818 , p_component_type => l_component_type
14819 , p_component_code => l_component_code
14820 , p_component_type_code => l_component_type_code
14821 , p_component_appl_id => l_component_appl_id
14822 , p_amb_context_code => l_amb_context_code
14823 , p_side => 'NA'
14824 );
14825
14826
14827 --
14828 --
14829 END IF;
14830
14831 --
14832 -- Update the line information that should be overwritten
14836 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
14833 --
14834 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14835 p_header_num => 1);
14837
14838 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14839
14840 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
14841 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14842 END IF;
14843
14844 --
14845 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14846 --
14847 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14848 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
14849 ELSE
14850 ---------------------------------------------------------------------------------------------------
14851 -- 4262811a Switch Sign
14852 ---------------------------------------------------------------------------------------------------
14853 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
14854 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14855 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14856 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14857 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14858 -- 5132302
14859 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14860 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14861
14862 END IF;
14863
14864 -- 4955764
14865 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14866 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14867
14868
14869 XLA_AE_LINES_PKG.ValidateCurrentLine;
14870 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14871
14872 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14873 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14874 ,p_balance_type_code => l_balance_type_code);
14875
14876 END IF;
14877
14878 -----------------------------------------------------------------------------------------
14879 -- 4262811 Multiperiod Accounting
14880 -----------------------------------------------------------------------------------------
14881 -- No MPA option is assigned.
14882
14883
14884 END IF;
14885 END IF;
14886 --
14887
14888 --
14889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14890 trace
14891 (p_msg => 'END of AcctLineType_59'
14892 ,p_level => C_LEVEL_PROCEDURE
14893 ,p_module => l_log_module);
14894 END IF;
14895 --
14896 EXCEPTION
14897 WHEN xla_exceptions_pkg.application_exception THEN
14898 RAISE;
14899 WHEN OTHERS THEN
14900 xla_exceptions_pkg.raise_message
14901 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_59');
14902 END AcctLineType_59;
14903 --
14904
14905 ---------------------------------------
14906 --
14907 -- PRIVATE FUNCTION
14908 -- AcctLineType_60
14909 --
14910 ---------------------------------------
14911 PROCEDURE AcctLineType_60 (
14912 p_application_id IN NUMBER
14913 ,p_event_id IN NUMBER
14914 ,p_calculate_acctd_flag IN VARCHAR2
14915 ,p_calculate_g_l_flag IN VARCHAR2
14916 ,p_actual_flag IN OUT VARCHAR2
14917 ,p_balance_type_code OUT VARCHAR2
14918 ,p_gain_or_loss_ref OUT VARCHAR2
14919
14920 --Transaction Account
14921 , p_source_1 IN NUMBER
14922 --Journal Line Type
14923 , p_source_2 IN VARCHAR2
14924 --Entered Amount
14925 , p_source_3 IN NUMBER
14926 --First Distribution Identifier
14927 , p_source_5 IN NUMBER
14928 --Distribution Type
14929 , p_source_6 IN VARCHAR2
14930 --Currency Code
14931 , p_source_7 IN VARCHAR2
14932 --Currency Conversion Date
14933 , p_source_8 IN DATE
14934 --Currency Conversion Rate
14935 , p_source_9 IN NUMBER
14936 --Currency Conversion Type
14937 , p_source_10 IN VARCHAR2
14938 --Accounted Amount
14939 , p_source_11 IN NUMBER
14940 )
14941 IS
14942
14943 l_component_type VARCHAR2(80);
14944 l_component_code VARCHAR2(30);
14945 l_component_type_code VARCHAR2(1);
14946 l_component_appl_id INTEGER;
14947 l_amb_context_code VARCHAR2(30);
14948 l_entity_code VARCHAR2(30);
14949 l_event_class_code VARCHAR2(30);
14950 l_ae_header_id NUMBER;
14951 l_event_type_code VARCHAR2(30);
14952 l_line_definition_code VARCHAR2(30);
14953 l_line_definition_owner_code VARCHAR2(1);
14954 --
14955 -- adr variables
14959 l_adr_accounting_coa_id NUMBER;
14956 l_segment VARCHAR2(30);
14957 l_ccid NUMBER;
14958 l_adr_transaction_coa_id NUMBER;
14960 l_adr_flexfield_segment_code VARCHAR2(30);
14961 l_adr_flex_value_set_id NUMBER;
14962 l_adr_value_type_code VARCHAR2(30);
14963 l_adr_value_combination_id NUMBER;
14964 l_adr_value_segment_code VARCHAR2(30);
14965
14966 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
14967 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
14968 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
14969 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
14970
14971 -- 4262811 Variables ------------------------------------------------------------------------------------------
14972 l_entered_amt_idx NUMBER;
14973 l_accted_amt_idx NUMBER;
14974 l_acc_rev_flag VARCHAR2(1);
14975 l_accrual_line_num NUMBER;
14976 l_tmp_amt NUMBER;
14977 l_acc_rev_natural_side_code VARCHAR2(1);
14978
14979 l_num_entries NUMBER;
14980 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
14981 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
14982 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
14983 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
14984 l_recog_line_1 NUMBER;
14985 l_recog_line_2 NUMBER;
14986
14987 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
14988 l_bflow_applied_to_amt NUMBER; -- 5132302
14989 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
14990
14991 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14992
14993 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
14994 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
14995
14996 ---------------------------------------------------------------------------------------------------------------
14997
14998
14999 --
15000 -- bulk performance
15001 --
15002 l_balance_type_code VARCHAR2(1);
15003 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
15004 l_log_module VARCHAR2(240);
15005
15006 --
15007 -- Upgrade strategy
15008 --
15009 l_actual_upg_option VARCHAR2(1);
15010 l_enc_upg_option VARCHAR2(1);
15011
15012 --
15013 BEGIN
15014 --
15015 IF g_log_enabled THEN
15016 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
15017 END IF;
15018 --
15019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15020
15021 trace
15022 (p_msg => 'BEGIN of AcctLineType_60'
15023 ,p_level => C_LEVEL_PROCEDURE
15024 ,p_module => l_log_module);
15025
15026 END IF;
15027 --
15028 l_component_type := 'AMB_JLT';
15029 l_component_code := 'ALC';
15030 l_component_type_code := 'S';
15031 l_component_appl_id := 555;
15032 l_amb_context_code := 'DEFAULT';
15033 l_entity_code := 'REVALUATION';
15034 l_event_class_code := 'GLCOSTALOC';
15035 l_event_type_code := 'GLCOSTALOC';
15036 l_line_definition_owner_code := 'S';
15037 l_line_definition_code := 'GLCOSTALOC';
15038 --
15039 l_balance_type_code := 'A';
15040 l_segment := NULL;
15041 l_ccid := NULL;
15042 l_adr_transaction_coa_id := NULL;
15043 l_adr_accounting_coa_id := NULL;
15044 l_adr_flexfield_segment_code := NULL;
15045 l_adr_flex_value_set_id := NULL;
15046 l_adr_value_type_code := NULL;
15047 l_adr_value_combination_id := NULL;
15048 l_adr_value_segment_code := NULL;
15049
15050 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
15051 l_bflow_class_code := ''; -- 4219869 Business Flow
15052 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
15053 l_budgetary_control_flag := 'N';
15054
15055 l_bflow_applied_to_amt_idx := NULL; -- 5132302
15056 l_bflow_applied_to_amt := NULL; -- 5132302
15057 l_entered_amt_idx := NULL; -- 4262811
15058 l_accted_amt_idx := NULL; -- 4262811
15059 l_acc_rev_flag := NULL; -- 4262811
15060 l_accrual_line_num := NULL; -- 4262811
15061 l_tmp_amt := NULL; -- 4262811
15062 --
15063
15064 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15065 l_balance_type_code <> 'B' THEN
15066 IF NVL(p_source_2,'
15067 ') = 'ALC'
15068 THEN
15069
15070 --
15071 XLA_AE_LINES_PKG.SetNewLine;
15072
15073 p_balance_type_code := l_balance_type_code;
15074 -- set the flag so later we will know whether the gain loss line needs to be created
15075
15076 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15077 p_actual_flag :='A';
15078 END IF;
15079
15080 --
15081 -- bulk performance
15082 --
15083 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15087 --
15084 p_header_num => 0); -- 4262811
15085 --
15086 -- set accounting line options
15088 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15089 p_natural_side_code => 'D'
15090 , p_gain_or_loss_flag => 'N'
15091 , p_gl_transfer_mode_code => 'D'
15092 , p_acct_entry_type_code => 'A'
15093 , p_switch_side_flag => 'Y'
15094 , p_merge_duplicate_code => 'W'
15095 );
15096 --
15097 l_acc_rev_natural_side_code := 'C'; -- 4262811
15098 --
15099 --
15100 -- set accounting line type info
15101 --
15102 xla_ae_lines_pkg.SetAcctLineType
15103 (p_component_type => l_component_type
15104 ,p_event_type_code => l_event_type_code
15105 ,p_line_definition_owner_code => l_line_definition_owner_code
15106 ,p_line_definition_code => l_line_definition_code
15107 ,p_accounting_line_code => l_component_code
15108 ,p_accounting_line_type_code => l_component_type_code
15109 ,p_accounting_line_appl_id => l_component_appl_id
15110 ,p_amb_context_code => l_amb_context_code
15111 ,p_entity_code => l_entity_code
15112 ,p_event_class_code => l_event_class_code);
15113 --
15114 -- set accounting class
15115 --
15116 xla_ae_lines_pkg.SetAcctClass(
15117 p_accounting_class_code => 'ALC'
15118 , p_ae_header_id => l_ae_header_id
15119 );
15120
15121 --
15122 -- set rounding class
15123 --
15124 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15125 'ALC';
15126
15127 --
15128 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15129 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15130 --
15131 -- bulk performance
15132 --
15133 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15134
15135 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15136 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15137
15138 -- 4955764
15139 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15140 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15141
15142 -- 4458381 Public Sector Enh
15143
15144 --
15145 -- set accounting attributes for the line type
15146 --
15147 l_entered_amt_idx := 3;
15148 l_accted_amt_idx := 8;
15149 l_bflow_applied_to_amt_idx := NULL; -- 5132302
15150 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15151 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
15152 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15153 l_rec_acct_attrs.array_char_value(2) := p_source_6;
15154 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15155 l_rec_acct_attrs.array_num_value(3) := p_source_3;
15156 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15157 l_rec_acct_attrs.array_char_value(4) := p_source_7;
15158 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15159 l_rec_acct_attrs.array_date_value(5) := p_source_8;
15160 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15161 l_rec_acct_attrs.array_num_value(6) := p_source_9;
15162 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15163 l_rec_acct_attrs.array_char_value(7) := p_source_10;
15164 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15165 l_rec_acct_attrs.array_num_value(8) := p_source_11;
15166
15167 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15168 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15169
15170 ---------------------------------------------------------------------------------------------------------------
15171 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15172 ---------------------------------------------------------------------------------------------------------------
15173 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15174
15175 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15176 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15177
15178 IF xla_accounting_cache_pkg.GetValueChar
15179 (p_source_code => 'LEDGER_CATEGORY_CODE'
15180 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15181 AND l_bflow_method_code = 'PRIOR_ENTRY'
15182 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15183 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15184 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15185 )
15186 THEN
15187 xla_ae_lines_pkg.BflowUpgEntry
15188 (p_business_method_code => l_bflow_method_code
15189 ,p_business_class_code => l_bflow_class_code
15193 -- No business flow processing for business flow method of NONE.
15190 ,p_balance_type => l_balance_type_code);
15191 ELSE
15192 NULL;
15194 END IF;
15195
15196 --
15197 -- call analytical criteria
15198 --
15199
15200 --
15201 -- call description
15202 --
15203 -- No description or it is inherited.
15204 --
15205 -- call ADRs
15206 -- Bug 4922099
15207 --
15208 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15209 (NVL(l_actual_upg_option, 'N') = 'O') OR
15210 (NVL(l_enc_upg_option, 'N') = 'O')
15211 )
15212 THEN
15213 NULL;
15214 --
15215 --
15216
15217 l_ccid := AcctDerRule_4(
15218 p_application_id => p_application_id
15219 , p_ae_header_id => l_ae_header_id
15220 , p_source_1 => p_source_1
15221 , p_source_2 => p_source_2
15222 , x_transaction_coa_id => l_adr_transaction_coa_id
15223 , x_accounting_coa_id => l_adr_accounting_coa_id
15224 , x_value_type_code => l_adr_value_type_code
15225 , p_side => 'NA'
15226 );
15227
15228 xla_ae_lines_pkg.set_ccid(
15229 p_code_combination_id => l_ccid
15230 , p_value_type_code => l_adr_value_type_code
15231 , p_transaction_coa_id => l_adr_transaction_coa_id
15232 , p_accounting_coa_id => l_adr_accounting_coa_id
15233 , p_adr_code => 'ALC'
15234 , p_adr_type_code => 'S'
15235 , p_component_type => l_component_type
15236 , p_component_code => l_component_code
15237 , p_component_type_code => l_component_type_code
15238 , p_component_appl_id => l_component_appl_id
15239 , p_amb_context_code => l_amb_context_code
15240 , p_side => 'NA'
15241 );
15242
15243
15244 --
15245 --
15246 END IF;
15247 --
15248 -- Bug 4922099
15249 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15250 (NVL(l_enc_upg_option, 'N') = 'O')
15251 ) AND
15252 (l_bflow_method_code = 'PRIOR_ENTRY')
15253 )
15254 THEN
15255 IF
15256 --
15257 1 = 2
15258 --
15259 THEN
15260 xla_accounting_err_pkg.build_message
15261 (p_appli_s_name => 'XLA'
15262 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15263 ,p_token_1 => 'LINE_NUMBER'
15264 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
15265 ,p_token_2 => 'LINE_TYPE_NAME'
15266 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
15267 l_component_type
15268 ,l_component_code
15269 ,l_component_type_code
15270 ,l_component_appl_id
15271 ,l_amb_context_code
15272 ,l_entity_code
15273 ,l_event_class_code
15274 )
15275 ,p_token_3 => 'OWNER'
15276 ,p_value_3 => xla_lookups_pkg.get_meaning(
15277 p_lookup_type => 'XLA_OWNER_TYPE'
15278 ,p_lookup_code => l_component_type_code
15279 )
15280 ,p_token_4 => 'PRODUCT_NAME'
15281 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15282 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15283 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15284 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15285 ,p_ae_header_id => NULL
15286 );
15287
15288 IF (C_LEVEL_ERROR>= g_log_level) THEN
15289 trace
15290 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15291 ,p_level => C_LEVEL_ERROR
15292 ,p_module => l_log_module);
15293 END IF;
15294 END IF;
15295 END IF;
15296 --
15297 --
15298 ------------------------------------------------------------------------------------------------
15299 -- 4219869 Business Flow
15300 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15301 -- Prior Entry. Currently, the following code is always generated.
15305 ------------------------------------------------------------------------------------
15302 ------------------------------------------------------------------------------------------------
15303 XLA_AE_LINES_PKG.ValidateCurrentLine;
15304
15306 -- 4219869 Business Flow
15307 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15308 ------------------------------------------------------------------------------------
15309 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15310
15311 ----------------------------------------------------------------------------------
15312 -- 4219869 Business Flow
15313 -- Update journal entry status -- Need to generate this within IF <condition>
15314 ----------------------------------------------------------------------------------
15315 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15316 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15317 ,p_balance_type_code => l_balance_type_code
15318 );
15319
15320 -------------------------------------------------------------------------------------------
15321 -- 4262811 - Generate the Accrual Reversal lines
15322 -------------------------------------------------------------------------------------------
15323 BEGIN
15324 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15325 (g_array_event(p_event_id).array_value_num('header_index'));
15326 IF l_acc_rev_flag IS NULL THEN
15327 l_acc_rev_flag := 'N';
15328 END IF;
15329 EXCEPTION
15330 WHEN OTHERS THEN
15331 l_acc_rev_flag := 'N';
15332 END;
15333 --
15334 IF (l_acc_rev_flag = 'Y') THEN
15335
15336 -- 4645092 ------------------------------------------------------------------------------
15337 -- To allow MPA report to determine if it should generate report process
15338 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15339 ------------------------------------------------------------------------------------------
15340
15341 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15342 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15343 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
15344 -- call ADRs
15345 -- Bug 4922099
15346 --
15347 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15348 (NVL(l_actual_upg_option, 'N') = 'O') OR
15349 (NVL(l_enc_upg_option, 'N') = 'O')
15350 )
15351 THEN
15352 NULL;
15353 --
15354 --
15355
15356 l_ccid := AcctDerRule_4(
15357 p_application_id => p_application_id
15358 , p_ae_header_id => l_ae_header_id
15359 , p_source_1 => p_source_1
15360 , p_source_2 => p_source_2
15361 , x_transaction_coa_id => l_adr_transaction_coa_id
15362 , x_accounting_coa_id => l_adr_accounting_coa_id
15363 , x_value_type_code => l_adr_value_type_code
15364 , p_side => 'NA'
15365 );
15366
15367 xla_ae_lines_pkg.set_ccid(
15368 p_code_combination_id => l_ccid
15369 , p_value_type_code => l_adr_value_type_code
15370 , p_transaction_coa_id => l_adr_transaction_coa_id
15371 , p_accounting_coa_id => l_adr_accounting_coa_id
15372 , p_adr_code => 'ALC'
15373 , p_adr_type_code => 'S'
15374 , p_component_type => l_component_type
15375 , p_component_code => l_component_code
15376 , p_component_type_code => l_component_type_code
15377 , p_component_appl_id => l_component_appl_id
15378 , p_amb_context_code => l_amb_context_code
15379 , p_side => 'NA'
15380 );
15381
15382
15383 --
15384 --
15385 END IF;
15386
15387 --
15388 -- Update the line information that should be overwritten
15389 --
15390 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15391 p_header_num => 1);
15392 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
15393
15394 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15395
15396 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
15397 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15398 END IF;
15399
15400 --
15401 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15402 --
15403 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15404 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
15405 ELSE
15406 ---------------------------------------------------------------------------------------------------
15407 -- 4262811a Switch Sign
15408 ---------------------------------------------------------------------------------------------------
15409 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
15410 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15414 -- 5132302
15411 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15412 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15413 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15415 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15416 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15417
15418 END IF;
15419
15420 -- 4955764
15421 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15422 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15423
15424
15425 XLA_AE_LINES_PKG.ValidateCurrentLine;
15426 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15427
15428 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15429 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15430 ,p_balance_type_code => l_balance_type_code);
15431
15432 END IF;
15433
15434 -----------------------------------------------------------------------------------------
15435 -- 4262811 Multiperiod Accounting
15436 -----------------------------------------------------------------------------------------
15437 -- No MPA option is assigned.
15438
15439
15440 END IF;
15441 END IF;
15442 --
15443
15444 --
15445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15446 trace
15447 (p_msg => 'END of AcctLineType_60'
15448 ,p_level => C_LEVEL_PROCEDURE
15449 ,p_module => l_log_module);
15450 END IF;
15451 --
15452 EXCEPTION
15453 WHEN xla_exceptions_pkg.application_exception THEN
15454 RAISE;
15455 WHEN OTHERS THEN
15456 xla_exceptions_pkg.raise_message
15457 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_60');
15458 END AcctLineType_60;
15459 --
15460
15461 ---------------------------------------
15462 --
15463 -- PRIVATE FUNCTION
15464 -- AcctLineType_61
15465 --
15466 ---------------------------------------
15467 PROCEDURE AcctLineType_61 (
15468 p_application_id IN NUMBER
15469 ,p_event_id IN NUMBER
15470 ,p_calculate_acctd_flag IN VARCHAR2
15471 ,p_calculate_g_l_flag IN VARCHAR2
15472 ,p_actual_flag IN OUT VARCHAR2
15473 ,p_balance_type_code OUT VARCHAR2
15474 ,p_gain_or_loss_ref OUT VARCHAR2
15475
15476 --Transaction Account
15477 , p_source_1 IN NUMBER
15478 --Journal Line Type
15479 , p_source_2 IN VARCHAR2
15480 --Entered Amount
15481 , p_source_3 IN NUMBER
15482 --First Distribution Identifier
15483 , p_source_5 IN NUMBER
15484 --Distribution Type
15485 , p_source_6 IN VARCHAR2
15486 --Currency Code
15487 , p_source_7 IN VARCHAR2
15488 --Currency Conversion Date
15489 , p_source_8 IN DATE
15490 --Currency Conversion Rate
15491 , p_source_9 IN NUMBER
15492 --Currency Conversion Type
15493 , p_source_10 IN VARCHAR2
15494 --Accounted Amount
15495 , p_source_11 IN NUMBER
15496 )
15497 IS
15498
15499 l_component_type VARCHAR2(80);
15500 l_component_code VARCHAR2(30);
15501 l_component_type_code VARCHAR2(1);
15502 l_component_appl_id INTEGER;
15503 l_amb_context_code VARCHAR2(30);
15504 l_entity_code VARCHAR2(30);
15505 l_event_class_code VARCHAR2(30);
15506 l_ae_header_id NUMBER;
15507 l_event_type_code VARCHAR2(30);
15508 l_line_definition_code VARCHAR2(30);
15509 l_line_definition_owner_code VARCHAR2(1);
15510 --
15511 -- adr variables
15512 l_segment VARCHAR2(30);
15513 l_ccid NUMBER;
15514 l_adr_transaction_coa_id NUMBER;
15515 l_adr_accounting_coa_id NUMBER;
15516 l_adr_flexfield_segment_code VARCHAR2(30);
15517 l_adr_flex_value_set_id NUMBER;
15518 l_adr_value_type_code VARCHAR2(30);
15519 l_adr_value_combination_id NUMBER;
15520 l_adr_value_segment_code VARCHAR2(30);
15521
15522 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
15523 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
15524 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
15525 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
15526
15527 -- 4262811 Variables ------------------------------------------------------------------------------------------
15528 l_entered_amt_idx NUMBER;
15529 l_accted_amt_idx NUMBER;
15530 l_acc_rev_flag VARCHAR2(1);
15531 l_accrual_line_num NUMBER;
15532 l_tmp_amt NUMBER;
15533 l_acc_rev_natural_side_code VARCHAR2(1);
15534
15535 l_num_entries NUMBER;
15536 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
15537 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
15538 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
15539 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
15540 l_recog_line_1 NUMBER;
15544 l_bflow_applied_to_amt NUMBER; -- 5132302
15541 l_recog_line_2 NUMBER;
15542
15543 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
15545 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
15546
15547 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15548
15549 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
15550 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
15551
15552 ---------------------------------------------------------------------------------------------------------------
15553
15554
15555 --
15556 -- bulk performance
15557 --
15558 l_balance_type_code VARCHAR2(1);
15559 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
15560 l_log_module VARCHAR2(240);
15561
15562 --
15563 -- Upgrade strategy
15564 --
15565 l_actual_upg_option VARCHAR2(1);
15566 l_enc_upg_option VARCHAR2(1);
15567
15568 --
15569 BEGIN
15570 --
15571 IF g_log_enabled THEN
15572 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
15573 END IF;
15574 --
15575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15576
15577 trace
15578 (p_msg => 'BEGIN of AcctLineType_61'
15579 ,p_level => C_LEVEL_PROCEDURE
15580 ,p_module => l_log_module);
15581
15582 END IF;
15583 --
15584 l_component_type := 'AMB_JLT';
15585 l_component_code := 'ALV';
15586 l_component_type_code := 'S';
15587 l_component_appl_id := 555;
15588 l_amb_context_code := 'DEFAULT';
15589 l_entity_code := 'PRODUCTION';
15590 l_event_class_code := 'BATCH_CLOSE';
15591 l_event_type_code := 'CLOS';
15592 l_line_definition_owner_code := 'S';
15593 l_line_definition_code := 'BATCH_CLOSE';
15594 --
15595 l_balance_type_code := 'A';
15596 l_segment := NULL;
15597 l_ccid := NULL;
15598 l_adr_transaction_coa_id := NULL;
15599 l_adr_accounting_coa_id := NULL;
15600 l_adr_flexfield_segment_code := NULL;
15601 l_adr_flex_value_set_id := NULL;
15602 l_adr_value_type_code := NULL;
15603 l_adr_value_combination_id := NULL;
15604 l_adr_value_segment_code := NULL;
15605
15606 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
15607 l_bflow_class_code := ''; -- 4219869 Business Flow
15608 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
15609 l_budgetary_control_flag := 'N';
15610
15611 l_bflow_applied_to_amt_idx := NULL; -- 5132302
15612 l_bflow_applied_to_amt := NULL; -- 5132302
15613 l_entered_amt_idx := NULL; -- 4262811
15614 l_accted_amt_idx := NULL; -- 4262811
15615 l_acc_rev_flag := NULL; -- 4262811
15616 l_accrual_line_num := NULL; -- 4262811
15617 l_tmp_amt := NULL; -- 4262811
15618 --
15619
15620 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15621 l_balance_type_code <> 'B' THEN
15622 IF NVL(p_source_2,'
15623 ') = 'ALV'
15624 THEN
15625
15626 --
15627 XLA_AE_LINES_PKG.SetNewLine;
15628
15629 p_balance_type_code := l_balance_type_code;
15630 -- set the flag so later we will know whether the gain loss line needs to be created
15631
15632 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15633 p_actual_flag :='A';
15634 END IF;
15635
15636 --
15637 -- bulk performance
15638 --
15639 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15640 p_header_num => 0); -- 4262811
15641 --
15642 -- set accounting line options
15643 --
15644 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15645 p_natural_side_code => 'D'
15646 , p_gain_or_loss_flag => 'N'
15647 , p_gl_transfer_mode_code => 'D'
15648 , p_acct_entry_type_code => 'A'
15649 , p_switch_side_flag => 'Y'
15650 , p_merge_duplicate_code => 'W'
15651 );
15652 --
15653 l_acc_rev_natural_side_code := 'C'; -- 4262811
15654 --
15655 --
15656 -- set accounting line type info
15657 --
15658 xla_ae_lines_pkg.SetAcctLineType
15659 (p_component_type => l_component_type
15660 ,p_event_type_code => l_event_type_code
15661 ,p_line_definition_owner_code => l_line_definition_owner_code
15662 ,p_line_definition_code => l_line_definition_code
15663 ,p_accounting_line_code => l_component_code
15664 ,p_accounting_line_type_code => l_component_type_code
15665 ,p_accounting_line_appl_id => l_component_appl_id
15666 ,p_amb_context_code => l_amb_context_code
15667 ,p_entity_code => l_entity_code
15668 ,p_event_class_code => l_event_class_code);
15669 --
15670 -- set accounting class
15671 --
15672 xla_ae_lines_pkg.SetAcctClass(
15676
15673 p_accounting_class_code => 'ALV'
15674 , p_ae_header_id => l_ae_header_id
15675 );
15677 --
15678 -- set rounding class
15679 --
15680 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15681 'ALV';
15682
15683 --
15684 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15685 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15686 --
15687 -- bulk performance
15688 --
15689 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15690
15691 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15692 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15693
15694 -- 4955764
15695 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15696 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15697
15698 -- 4458381 Public Sector Enh
15699
15700 --
15701 -- set accounting attributes for the line type
15702 --
15703 l_entered_amt_idx := 3;
15704 l_accted_amt_idx := 8;
15705 l_bflow_applied_to_amt_idx := NULL; -- 5132302
15706 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15707 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
15708 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15709 l_rec_acct_attrs.array_char_value(2) := p_source_6;
15710 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15711 l_rec_acct_attrs.array_num_value(3) := p_source_3;
15712 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15713 l_rec_acct_attrs.array_char_value(4) := p_source_7;
15714 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15715 l_rec_acct_attrs.array_date_value(5) := p_source_8;
15716 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15717 l_rec_acct_attrs.array_num_value(6) := p_source_9;
15718 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15719 l_rec_acct_attrs.array_char_value(7) := p_source_10;
15720 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
15721 l_rec_acct_attrs.array_num_value(8) := p_source_11;
15722
15723 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15724 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15725
15726 ---------------------------------------------------------------------------------------------------------------
15727 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15728 ---------------------------------------------------------------------------------------------------------------
15729 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15730
15731 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15732 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15733
15734 IF xla_accounting_cache_pkg.GetValueChar
15735 (p_source_code => 'LEDGER_CATEGORY_CODE'
15736 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15737 AND l_bflow_method_code = 'PRIOR_ENTRY'
15738 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15739 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15740 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15741 )
15742 THEN
15743 xla_ae_lines_pkg.BflowUpgEntry
15744 (p_business_method_code => l_bflow_method_code
15745 ,p_business_class_code => l_bflow_class_code
15746 ,p_balance_type => l_balance_type_code);
15747 ELSE
15748 NULL;
15749 -- No business flow processing for business flow method of NONE.
15750 END IF;
15751
15752 --
15753 -- call analytical criteria
15754 --
15755
15756 --
15757 -- call description
15758 --
15759 -- No description or it is inherited.
15760 --
15761 -- call ADRs
15762 -- Bug 4922099
15763 --
15764 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15765 (NVL(l_actual_upg_option, 'N') = 'O') OR
15766 (NVL(l_enc_upg_option, 'N') = 'O')
15767 )
15768 THEN
15769 NULL;
15770 --
15771 --
15772
15773 l_ccid := AcctDerRule_5(
15774 p_application_id => p_application_id
15775 , p_ae_header_id => l_ae_header_id
15776 , p_source_1 => p_source_1
15777 , p_source_2 => p_source_2
15778 , x_transaction_coa_id => l_adr_transaction_coa_id
15779 , x_accounting_coa_id => l_adr_accounting_coa_id
15780 , x_value_type_code => l_adr_value_type_code
15781 , p_side => 'NA'
15782 );
15783
15784 xla_ae_lines_pkg.set_ccid(
15785 p_code_combination_id => l_ccid
15786 , p_value_type_code => l_adr_value_type_code
15787 , p_transaction_coa_id => l_adr_transaction_coa_id
15788 , p_accounting_coa_id => l_adr_accounting_coa_id
15789 , p_adr_code => 'ALV'
15790 , p_adr_type_code => 'S'
15794 , p_component_appl_id => l_component_appl_id
15791 , p_component_type => l_component_type
15792 , p_component_code => l_component_code
15793 , p_component_type_code => l_component_type_code
15795 , p_amb_context_code => l_amb_context_code
15796 , p_side => 'NA'
15797 );
15798
15799
15800 --
15801 --
15802 END IF;
15803 --
15804 -- Bug 4922099
15805 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15806 (NVL(l_enc_upg_option, 'N') = 'O')
15807 ) AND
15808 (l_bflow_method_code = 'PRIOR_ENTRY')
15809 )
15810 THEN
15811 IF
15812 --
15813 1 = 2
15814 --
15815 THEN
15816 xla_accounting_err_pkg.build_message
15817 (p_appli_s_name => 'XLA'
15818 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15819 ,p_token_1 => 'LINE_NUMBER'
15820 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
15821 ,p_token_2 => 'LINE_TYPE_NAME'
15822 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
15823 l_component_type
15824 ,l_component_code
15825 ,l_component_type_code
15826 ,l_component_appl_id
15827 ,l_amb_context_code
15828 ,l_entity_code
15829 ,l_event_class_code
15830 )
15831 ,p_token_3 => 'OWNER'
15832 ,p_value_3 => xla_lookups_pkg.get_meaning(
15833 p_lookup_type => 'XLA_OWNER_TYPE'
15834 ,p_lookup_code => l_component_type_code
15835 )
15836 ,p_token_4 => 'PRODUCT_NAME'
15837 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15838 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15839 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15840 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15841 ,p_ae_header_id => NULL
15842 );
15843
15844 IF (C_LEVEL_ERROR>= g_log_level) THEN
15845 trace
15846 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15847 ,p_level => C_LEVEL_ERROR
15848 ,p_module => l_log_module);
15849 END IF;
15850 END IF;
15851 END IF;
15852 --
15853 --
15854 ------------------------------------------------------------------------------------------------
15855 -- 4219869 Business Flow
15856 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15857 -- Prior Entry. Currently, the following code is always generated.
15858 ------------------------------------------------------------------------------------------------
15859 XLA_AE_LINES_PKG.ValidateCurrentLine;
15860
15861 ------------------------------------------------------------------------------------
15862 -- 4219869 Business Flow
15863 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15864 ------------------------------------------------------------------------------------
15865 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15866
15867 ----------------------------------------------------------------------------------
15868 -- 4219869 Business Flow
15869 -- Update journal entry status -- Need to generate this within IF <condition>
15870 ----------------------------------------------------------------------------------
15871 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15872 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15873 ,p_balance_type_code => l_balance_type_code
15874 );
15875
15876 -------------------------------------------------------------------------------------------
15877 -- 4262811 - Generate the Accrual Reversal lines
15878 -------------------------------------------------------------------------------------------
15879 BEGIN
15880 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15881 (g_array_event(p_event_id).array_value_num('header_index'));
15882 IF l_acc_rev_flag IS NULL THEN
15883 l_acc_rev_flag := 'N';
15884 END IF;
15885 EXCEPTION
15886 WHEN OTHERS THEN
15890 IF (l_acc_rev_flag = 'Y') THEN
15887 l_acc_rev_flag := 'N';
15888 END;
15889 --
15891
15892 -- 4645092 ------------------------------------------------------------------------------
15893 -- To allow MPA report to determine if it should generate report process
15894 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15895 ------------------------------------------------------------------------------------------
15896
15897 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15898 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15899 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
15900 -- call ADRs
15901 -- Bug 4922099
15902 --
15903 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15904 (NVL(l_actual_upg_option, 'N') = 'O') OR
15905 (NVL(l_enc_upg_option, 'N') = 'O')
15906 )
15907 THEN
15908 NULL;
15909 --
15910 --
15911
15912 l_ccid := AcctDerRule_5(
15913 p_application_id => p_application_id
15914 , p_ae_header_id => l_ae_header_id
15915 , p_source_1 => p_source_1
15916 , p_source_2 => p_source_2
15917 , x_transaction_coa_id => l_adr_transaction_coa_id
15918 , x_accounting_coa_id => l_adr_accounting_coa_id
15919 , x_value_type_code => l_adr_value_type_code
15920 , p_side => 'NA'
15921 );
15922
15923 xla_ae_lines_pkg.set_ccid(
15924 p_code_combination_id => l_ccid
15925 , p_value_type_code => l_adr_value_type_code
15926 , p_transaction_coa_id => l_adr_transaction_coa_id
15927 , p_accounting_coa_id => l_adr_accounting_coa_id
15928 , p_adr_code => 'ALV'
15929 , p_adr_type_code => 'S'
15930 , p_component_type => l_component_type
15931 , p_component_code => l_component_code
15932 , p_component_type_code => l_component_type_code
15933 , p_component_appl_id => l_component_appl_id
15934 , p_amb_context_code => l_amb_context_code
15935 , p_side => 'NA'
15936 );
15937
15938
15939 --
15940 --
15941 END IF;
15942
15943 --
15944 -- Update the line information that should be overwritten
15945 --
15946 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15947 p_header_num => 1);
15948 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
15949
15950 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15951
15952 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
15953 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15954 END IF;
15955
15956 --
15957 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15958 --
15959 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15960 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
15961 ELSE
15962 ---------------------------------------------------------------------------------------------------
15963 -- 4262811a Switch Sign
15964 ---------------------------------------------------------------------------------------------------
15965 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
15966 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15967 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15968 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15969 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15970 -- 5132302
15971 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15972 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15973
15974 END IF;
15975
15976 -- 4955764
15977 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15978 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15979
15980
15981 XLA_AE_LINES_PKG.ValidateCurrentLine;
15982 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15983
15984 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15985 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15986 ,p_balance_type_code => l_balance_type_code);
15987
15988 END IF;
15989
15990 -----------------------------------------------------------------------------------------
15991 -- 4262811 Multiperiod Accounting
15992 -----------------------------------------------------------------------------------------
15993 -- No MPA option is assigned.
15994
15995
15996 END IF;
15997 END IF;
15998 --
15999
16000 --
16001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16002 trace
16006 END IF;
16003 (p_msg => 'END of AcctLineType_61'
16004 ,p_level => C_LEVEL_PROCEDURE
16005 ,p_module => l_log_module);
16007 --
16008 EXCEPTION
16009 WHEN xla_exceptions_pkg.application_exception THEN
16010 RAISE;
16011 WHEN OTHERS THEN
16012 xla_exceptions_pkg.raise_message
16013 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_61');
16014 END AcctLineType_61;
16015 --
16016
16017 ---------------------------------------
16018 --
16019 -- PRIVATE FUNCTION
16020 -- AcctLineType_62
16021 --
16022 ---------------------------------------
16023 PROCEDURE AcctLineType_62 (
16024 p_application_id IN NUMBER
16025 ,p_event_id IN NUMBER
16026 ,p_calculate_acctd_flag IN VARCHAR2
16027 ,p_calculate_g_l_flag IN VARCHAR2
16028 ,p_actual_flag IN OUT VARCHAR2
16029 ,p_balance_type_code OUT VARCHAR2
16030 ,p_gain_or_loss_ref OUT VARCHAR2
16031
16032 --Transaction Account
16033 , p_source_1 IN NUMBER
16034 --Journal Line Type
16035 , p_source_2 IN VARCHAR2
16036 --Entered Amount
16037 , p_source_3 IN NUMBER
16038 --First Distribution Identifier
16039 , p_source_5 IN NUMBER
16040 --Distribution Type
16041 , p_source_6 IN VARCHAR2
16042 --Currency Code
16043 , p_source_7 IN VARCHAR2
16044 --Currency Conversion Date
16045 , p_source_8 IN DATE
16046 --Currency Conversion Rate
16047 , p_source_9 IN NUMBER
16048 --Currency Conversion Type
16049 , p_source_10 IN VARCHAR2
16050 --Accounted Amount
16051 , p_source_11 IN NUMBER
16052 )
16053 IS
16054
16055 l_component_type VARCHAR2(80);
16056 l_component_code VARCHAR2(30);
16057 l_component_type_code VARCHAR2(1);
16058 l_component_appl_id INTEGER;
16059 l_amb_context_code VARCHAR2(30);
16060 l_entity_code VARCHAR2(30);
16061 l_event_class_code VARCHAR2(30);
16062 l_ae_header_id NUMBER;
16063 l_event_type_code VARCHAR2(30);
16064 l_line_definition_code VARCHAR2(30);
16065 l_line_definition_owner_code VARCHAR2(1);
16066 --
16067 -- adr variables
16068 l_segment VARCHAR2(30);
16069 l_ccid NUMBER;
16070 l_adr_transaction_coa_id NUMBER;
16071 l_adr_accounting_coa_id NUMBER;
16072 l_adr_flexfield_segment_code VARCHAR2(30);
16073 l_adr_flex_value_set_id NUMBER;
16074 l_adr_value_type_code VARCHAR2(30);
16075 l_adr_value_combination_id NUMBER;
16076 l_adr_value_segment_code VARCHAR2(30);
16077
16078 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
16079 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
16080 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
16081 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
16082
16083 -- 4262811 Variables ------------------------------------------------------------------------------------------
16084 l_entered_amt_idx NUMBER;
16085 l_accted_amt_idx NUMBER;
16086 l_acc_rev_flag VARCHAR2(1);
16087 l_accrual_line_num NUMBER;
16088 l_tmp_amt NUMBER;
16089 l_acc_rev_natural_side_code VARCHAR2(1);
16090
16091 l_num_entries NUMBER;
16092 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
16093 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
16094 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
16095 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
16096 l_recog_line_1 NUMBER;
16097 l_recog_line_2 NUMBER;
16098
16099 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
16100 l_bflow_applied_to_amt NUMBER; -- 5132302
16101 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
16102
16103 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16104
16105 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
16106 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
16107
16108 ---------------------------------------------------------------------------------------------------------------
16109
16110
16111 --
16112 -- bulk performance
16113 --
16114 l_balance_type_code VARCHAR2(1);
16115 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
16116 l_log_module VARCHAR2(240);
16117
16118 --
16119 -- Upgrade strategy
16120 --
16121 l_actual_upg_option VARCHAR2(1);
16122 l_enc_upg_option VARCHAR2(1);
16123
16124 --
16125 BEGIN
16126 --
16127 IF g_log_enabled THEN
16128 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
16129 END IF;
16130 --
16131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16132
16133 trace
16134 (p_msg => 'BEGIN of AcctLineType_62'
16135 ,p_level => C_LEVEL_PROCEDURE
16136 ,p_module => l_log_module);
16137
16138 END IF;
16139 --
16140 l_component_type := 'AMB_JLT';
16144 l_amb_context_code := 'DEFAULT';
16141 l_component_code := 'CAD';
16142 l_component_type_code := 'S';
16143 l_component_appl_id := 555;
16145 l_entity_code := 'REVALUATION';
16146 l_event_class_code := 'ACTCOSTADJ';
16147 l_event_type_code := 'ACTCOSTADJ';
16148 l_line_definition_owner_code := 'S';
16149 l_line_definition_code := 'ACTCOSTADJ';
16150 --
16151 l_balance_type_code := 'A';
16152 l_segment := NULL;
16153 l_ccid := NULL;
16154 l_adr_transaction_coa_id := NULL;
16155 l_adr_accounting_coa_id := NULL;
16156 l_adr_flexfield_segment_code := NULL;
16157 l_adr_flex_value_set_id := NULL;
16158 l_adr_value_type_code := NULL;
16159 l_adr_value_combination_id := NULL;
16160 l_adr_value_segment_code := NULL;
16161
16162 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
16163 l_bflow_class_code := ''; -- 4219869 Business Flow
16164 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
16165 l_budgetary_control_flag := 'N';
16166
16167 l_bflow_applied_to_amt_idx := NULL; -- 5132302
16168 l_bflow_applied_to_amt := NULL; -- 5132302
16169 l_entered_amt_idx := NULL; -- 4262811
16170 l_accted_amt_idx := NULL; -- 4262811
16171 l_acc_rev_flag := NULL; -- 4262811
16172 l_accrual_line_num := NULL; -- 4262811
16173 l_tmp_amt := NULL; -- 4262811
16174 --
16175
16176 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16177 l_balance_type_code <> 'B' THEN
16178 IF NVL(p_source_2,'
16179 ') = 'CAD'
16180 THEN
16181
16182 --
16183 XLA_AE_LINES_PKG.SetNewLine;
16184
16185 p_balance_type_code := l_balance_type_code;
16186 -- set the flag so later we will know whether the gain loss line needs to be created
16187
16188 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16189 p_actual_flag :='A';
16190 END IF;
16191
16192 --
16193 -- bulk performance
16194 --
16195 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16196 p_header_num => 0); -- 4262811
16197 --
16198 -- set accounting line options
16199 --
16200 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16201 p_natural_side_code => 'D'
16202 , p_gain_or_loss_flag => 'N'
16203 , p_gl_transfer_mode_code => 'D'
16204 , p_acct_entry_type_code => 'A'
16205 , p_switch_side_flag => 'Y'
16206 , p_merge_duplicate_code => 'W'
16207 );
16208 --
16209 l_acc_rev_natural_side_code := 'C'; -- 4262811
16210 --
16211 --
16212 -- set accounting line type info
16213 --
16214 xla_ae_lines_pkg.SetAcctLineType
16215 (p_component_type => l_component_type
16216 ,p_event_type_code => l_event_type_code
16217 ,p_line_definition_owner_code => l_line_definition_owner_code
16218 ,p_line_definition_code => l_line_definition_code
16219 ,p_accounting_line_code => l_component_code
16220 ,p_accounting_line_type_code => l_component_type_code
16221 ,p_accounting_line_appl_id => l_component_appl_id
16222 ,p_amb_context_code => l_amb_context_code
16223 ,p_entity_code => l_entity_code
16224 ,p_event_class_code => l_event_class_code);
16225 --
16226 -- set accounting class
16227 --
16228 xla_ae_lines_pkg.SetAcctClass(
16229 p_accounting_class_code => 'IRV'
16230 , p_ae_header_id => l_ae_header_id
16231 );
16232
16233 --
16234 -- set rounding class
16235 --
16236 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16237 'IRV';
16238
16239 --
16240 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16241 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16242 --
16243 -- bulk performance
16244 --
16245 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16246
16247 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16248 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16249
16250 -- 4955764
16251 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16252 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16253
16254 -- 4458381 Public Sector Enh
16255
16256 --
16257 -- set accounting attributes for the line type
16258 --
16259 l_entered_amt_idx := 3;
16260 l_accted_amt_idx := 8;
16261 l_bflow_applied_to_amt_idx := NULL; -- 5132302
16262 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16263 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
16264 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16265 l_rec_acct_attrs.array_char_value(2) := p_source_6;
16269 l_rec_acct_attrs.array_char_value(4) := p_source_7;
16266 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16267 l_rec_acct_attrs.array_num_value(3) := p_source_3;
16268 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16270 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16271 l_rec_acct_attrs.array_date_value(5) := p_source_8;
16272 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16273 l_rec_acct_attrs.array_num_value(6) := p_source_9;
16274 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16275 l_rec_acct_attrs.array_char_value(7) := p_source_10;
16276 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16277 l_rec_acct_attrs.array_num_value(8) := p_source_11;
16278
16279 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16280 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16281
16282 ---------------------------------------------------------------------------------------------------------------
16283 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16284 ---------------------------------------------------------------------------------------------------------------
16285 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16286
16287 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16288 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16289
16290 IF xla_accounting_cache_pkg.GetValueChar
16291 (p_source_code => 'LEDGER_CATEGORY_CODE'
16292 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16293 AND l_bflow_method_code = 'PRIOR_ENTRY'
16294 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16295 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16296 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16297 )
16298 THEN
16299 xla_ae_lines_pkg.BflowUpgEntry
16300 (p_business_method_code => l_bflow_method_code
16301 ,p_business_class_code => l_bflow_class_code
16302 ,p_balance_type => l_balance_type_code);
16303 ELSE
16304 NULL;
16305 -- No business flow processing for business flow method of NONE.
16306 END IF;
16307
16308 --
16309 -- call analytical criteria
16310 --
16311
16312 --
16313 -- call description
16314 --
16315 -- No description or it is inherited.
16316 --
16317 -- call ADRs
16318 -- Bug 4922099
16319 --
16320 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16321 (NVL(l_actual_upg_option, 'N') = 'O') OR
16322 (NVL(l_enc_upg_option, 'N') = 'O')
16323 )
16324 THEN
16325 NULL;
16326 --
16327 --
16328
16329 l_ccid := AcctDerRule_6(
16330 p_application_id => p_application_id
16331 , p_ae_header_id => l_ae_header_id
16332 , p_source_1 => p_source_1
16333 , p_source_2 => p_source_2
16334 , x_transaction_coa_id => l_adr_transaction_coa_id
16335 , x_accounting_coa_id => l_adr_accounting_coa_id
16336 , x_value_type_code => l_adr_value_type_code
16337 , p_side => 'NA'
16338 );
16339
16340 xla_ae_lines_pkg.set_ccid(
16341 p_code_combination_id => l_ccid
16342 , p_value_type_code => l_adr_value_type_code
16343 , p_transaction_coa_id => l_adr_transaction_coa_id
16344 , p_accounting_coa_id => l_adr_accounting_coa_id
16345 , p_adr_code => 'CAD'
16346 , p_adr_type_code => 'S'
16347 , p_component_type => l_component_type
16348 , p_component_code => l_component_code
16349 , p_component_type_code => l_component_type_code
16350 , p_component_appl_id => l_component_appl_id
16351 , p_amb_context_code => l_amb_context_code
16352 , p_side => 'NA'
16353 );
16354
16355
16356 --
16357 --
16358 END IF;
16359 --
16360 -- Bug 4922099
16361 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16362 (NVL(l_enc_upg_option, 'N') = 'O')
16363 ) AND
16364 (l_bflow_method_code = 'PRIOR_ENTRY')
16365 )
16366 THEN
16367 IF
16368 --
16369 1 = 2
16370 --
16371 THEN
16372 xla_accounting_err_pkg.build_message
16373 (p_appli_s_name => 'XLA'
16374 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16375 ,p_token_1 => 'LINE_NUMBER'
16376 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
16377 ,p_token_2 => 'LINE_TYPE_NAME'
16378 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
16379 l_component_type
16380 ,l_component_code
16384 ,l_entity_code
16381 ,l_component_type_code
16382 ,l_component_appl_id
16383 ,l_amb_context_code
16385 ,l_event_class_code
16386 )
16387 ,p_token_3 => 'OWNER'
16388 ,p_value_3 => xla_lookups_pkg.get_meaning(
16389 p_lookup_type => 'XLA_OWNER_TYPE'
16390 ,p_lookup_code => l_component_type_code
16391 )
16392 ,p_token_4 => 'PRODUCT_NAME'
16393 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16394 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16395 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16396 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16397 ,p_ae_header_id => NULL
16398 );
16399
16400 IF (C_LEVEL_ERROR>= g_log_level) THEN
16401 trace
16402 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16403 ,p_level => C_LEVEL_ERROR
16404 ,p_module => l_log_module);
16405 END IF;
16406 END IF;
16407 END IF;
16408 --
16409 --
16410 ------------------------------------------------------------------------------------------------
16411 -- 4219869 Business Flow
16412 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16413 -- Prior Entry. Currently, the following code is always generated.
16414 ------------------------------------------------------------------------------------------------
16415 XLA_AE_LINES_PKG.ValidateCurrentLine;
16416
16417 ------------------------------------------------------------------------------------
16418 -- 4219869 Business Flow
16419 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16420 ------------------------------------------------------------------------------------
16421 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16422
16423 ----------------------------------------------------------------------------------
16424 -- 4219869 Business Flow
16425 -- Update journal entry status -- Need to generate this within IF <condition>
16426 ----------------------------------------------------------------------------------
16427 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16428 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16429 ,p_balance_type_code => l_balance_type_code
16430 );
16431
16432 -------------------------------------------------------------------------------------------
16433 -- 4262811 - Generate the Accrual Reversal lines
16434 -------------------------------------------------------------------------------------------
16435 BEGIN
16436 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16437 (g_array_event(p_event_id).array_value_num('header_index'));
16438 IF l_acc_rev_flag IS NULL THEN
16439 l_acc_rev_flag := 'N';
16440 END IF;
16441 EXCEPTION
16442 WHEN OTHERS THEN
16443 l_acc_rev_flag := 'N';
16444 END;
16445 --
16446 IF (l_acc_rev_flag = 'Y') THEN
16447
16448 -- 4645092 ------------------------------------------------------------------------------
16449 -- To allow MPA report to determine if it should generate report process
16450 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16451 ------------------------------------------------------------------------------------------
16452
16453 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16454 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16455 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
16456 -- call ADRs
16457 -- Bug 4922099
16458 --
16459 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16460 (NVL(l_actual_upg_option, 'N') = 'O') OR
16461 (NVL(l_enc_upg_option, 'N') = 'O')
16462 )
16463 THEN
16464 NULL;
16465 --
16466 --
16467
16468 l_ccid := AcctDerRule_6(
16469 p_application_id => p_application_id
16470 , p_ae_header_id => l_ae_header_id
16471 , p_source_1 => p_source_1
16472 , p_source_2 => p_source_2
16473 , x_transaction_coa_id => l_adr_transaction_coa_id
16474 , x_accounting_coa_id => l_adr_accounting_coa_id
16475 , x_value_type_code => l_adr_value_type_code
16476 , p_side => 'NA'
16477 );
16481 , p_value_type_code => l_adr_value_type_code
16478
16479 xla_ae_lines_pkg.set_ccid(
16480 p_code_combination_id => l_ccid
16482 , p_transaction_coa_id => l_adr_transaction_coa_id
16483 , p_accounting_coa_id => l_adr_accounting_coa_id
16484 , p_adr_code => 'CAD'
16485 , p_adr_type_code => 'S'
16486 , p_component_type => l_component_type
16487 , p_component_code => l_component_code
16488 , p_component_type_code => l_component_type_code
16489 , p_component_appl_id => l_component_appl_id
16490 , p_amb_context_code => l_amb_context_code
16491 , p_side => 'NA'
16492 );
16493
16494
16495 --
16496 --
16497 END IF;
16498
16499 --
16500 -- Update the line information that should be overwritten
16501 --
16502 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16503 p_header_num => 1);
16504 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
16505
16506 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16507
16508 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
16509 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16510 END IF;
16511
16512 --
16513 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16514 --
16515 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16516 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
16517 ELSE
16518 ---------------------------------------------------------------------------------------------------
16519 -- 4262811a Switch Sign
16520 ---------------------------------------------------------------------------------------------------
16521 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
16522 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16523 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16524 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16525 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16526 -- 5132302
16527 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16528 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16529
16530 END IF;
16531
16532 -- 4955764
16533 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16534 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16535
16536
16537 XLA_AE_LINES_PKG.ValidateCurrentLine;
16538 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16539
16540 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16541 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16542 ,p_balance_type_code => l_balance_type_code);
16543
16544 END IF;
16545
16546 -----------------------------------------------------------------------------------------
16547 -- 4262811 Multiperiod Accounting
16548 -----------------------------------------------------------------------------------------
16549 -- No MPA option is assigned.
16550
16551
16552 END IF;
16553 END IF;
16554 --
16555
16556 --
16557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16558 trace
16559 (p_msg => 'END of AcctLineType_62'
16560 ,p_level => C_LEVEL_PROCEDURE
16561 ,p_module => l_log_module);
16562 END IF;
16563 --
16564 EXCEPTION
16565 WHEN xla_exceptions_pkg.application_exception THEN
16566 RAISE;
16567 WHEN OTHERS THEN
16568 xla_exceptions_pkg.raise_message
16569 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_62');
16570 END AcctLineType_62;
16571 --
16572
16573 ---------------------------------------
16574 --
16575 -- PRIVATE FUNCTION
16576 -- AcctLineType_63
16577 --
16578 ---------------------------------------
16579 PROCEDURE AcctLineType_63 (
16580 p_application_id IN NUMBER
16581 ,p_event_id IN NUMBER
16582 ,p_calculate_acctd_flag IN VARCHAR2
16583 ,p_calculate_g_l_flag IN VARCHAR2
16584 ,p_actual_flag IN OUT VARCHAR2
16585 ,p_balance_type_code OUT VARCHAR2
16586 ,p_gain_or_loss_ref OUT VARCHAR2
16587
16588 --Transaction Account
16589 , p_source_1 IN NUMBER
16590 --Journal Line Type
16591 , p_source_2 IN VARCHAR2
16592 --Entered Amount
16593 , p_source_3 IN NUMBER
16594 --First Distribution Identifier
16595 , p_source_5 IN NUMBER
16596 --Distribution Type
16597 , p_source_6 IN VARCHAR2
16598 --Currency Code
16599 , p_source_7 IN VARCHAR2
16600 --Currency Conversion Date
16601 , p_source_8 IN DATE
16602 --Currency Conversion Rate
16603 , p_source_9 IN NUMBER
16607 , p_source_11 IN NUMBER
16604 --Currency Conversion Type
16605 , p_source_10 IN VARCHAR2
16606 --Accounted Amount
16608 )
16609 IS
16610
16611 l_component_type VARCHAR2(80);
16612 l_component_code VARCHAR2(30);
16613 l_component_type_code VARCHAR2(1);
16614 l_component_appl_id INTEGER;
16615 l_amb_context_code VARCHAR2(30);
16616 l_entity_code VARCHAR2(30);
16617 l_event_class_code VARCHAR2(30);
16618 l_ae_header_id NUMBER;
16619 l_event_type_code VARCHAR2(30);
16620 l_line_definition_code VARCHAR2(30);
16621 l_line_definition_owner_code VARCHAR2(1);
16622 --
16623 -- adr variables
16624 l_segment VARCHAR2(30);
16625 l_ccid NUMBER;
16626 l_adr_transaction_coa_id NUMBER;
16627 l_adr_accounting_coa_id NUMBER;
16628 l_adr_flexfield_segment_code VARCHAR2(30);
16629 l_adr_flex_value_set_id NUMBER;
16630 l_adr_value_type_code VARCHAR2(30);
16631 l_adr_value_combination_id NUMBER;
16632 l_adr_value_segment_code VARCHAR2(30);
16633
16634 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
16635 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
16636 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
16637 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
16638
16639 -- 4262811 Variables ------------------------------------------------------------------------------------------
16640 l_entered_amt_idx NUMBER;
16641 l_accted_amt_idx NUMBER;
16642 l_acc_rev_flag VARCHAR2(1);
16643 l_accrual_line_num NUMBER;
16644 l_tmp_amt NUMBER;
16645 l_acc_rev_natural_side_code VARCHAR2(1);
16646
16647 l_num_entries NUMBER;
16648 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
16649 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
16650 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
16651 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
16652 l_recog_line_1 NUMBER;
16653 l_recog_line_2 NUMBER;
16654
16655 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
16656 l_bflow_applied_to_amt NUMBER; -- 5132302
16657 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
16658
16659 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16660
16661 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
16662 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
16663
16664 ---------------------------------------------------------------------------------------------------------------
16665
16666
16667 --
16668 -- bulk performance
16669 --
16670 l_balance_type_code VARCHAR2(1);
16671 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
16672 l_log_module VARCHAR2(240);
16673
16674 --
16675 -- Upgrade strategy
16676 --
16677 l_actual_upg_option VARCHAR2(1);
16678 l_enc_upg_option VARCHAR2(1);
16679
16680 --
16681 BEGIN
16682 --
16683 IF g_log_enabled THEN
16684 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
16685 END IF;
16686 --
16687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16688
16689 trace
16690 (p_msg => 'BEGIN of AcctLineType_63'
16691 ,p_level => C_LEVEL_PROCEDURE
16692 ,p_module => l_log_module);
16693
16694 END IF;
16695 --
16696 l_component_type := 'AMB_JLT';
16697 l_component_code := 'CLEARING';
16698 l_component_type_code := 'S';
16699 l_component_appl_id := 555;
16700 l_amb_context_code := 'DEFAULT';
16701 l_entity_code := 'PURCHASING';
16702 l_event_class_code := 'DELIVER';
16703 l_event_type_code := 'LOG_PO_RECEIPT';
16704 l_line_definition_owner_code := 'S';
16705 l_line_definition_code := 'LOGICAL_PO_RECEIPT';
16706 --
16707 l_balance_type_code := 'A';
16708 l_segment := NULL;
16709 l_ccid := NULL;
16710 l_adr_transaction_coa_id := NULL;
16711 l_adr_accounting_coa_id := NULL;
16712 l_adr_flexfield_segment_code := NULL;
16713 l_adr_flex_value_set_id := NULL;
16714 l_adr_value_type_code := NULL;
16715 l_adr_value_combination_id := NULL;
16716 l_adr_value_segment_code := NULL;
16717
16718 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
16719 l_bflow_class_code := ''; -- 4219869 Business Flow
16720 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
16721 l_budgetary_control_flag := 'N';
16722
16723 l_bflow_applied_to_amt_idx := NULL; -- 5132302
16724 l_bflow_applied_to_amt := NULL; -- 5132302
16725 l_entered_amt_idx := NULL; -- 4262811
16726 l_accted_amt_idx := NULL; -- 4262811
16727 l_acc_rev_flag := NULL; -- 4262811
16728 l_accrual_line_num := NULL; -- 4262811
16729 l_tmp_amt := NULL; -- 4262811
16733 l_balance_type_code <> 'B' THEN
16730 --
16731
16732 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16734 IF NVL(p_source_2,'
16735 ') = 'CLR'
16736 THEN
16737
16738 --
16739 XLA_AE_LINES_PKG.SetNewLine;
16740
16741 p_balance_type_code := l_balance_type_code;
16742 -- set the flag so later we will know whether the gain loss line needs to be created
16743
16744 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16745 p_actual_flag :='A';
16746 END IF;
16747
16748 --
16749 -- bulk performance
16750 --
16751 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16752 p_header_num => 0); -- 4262811
16753 --
16754 -- set accounting line options
16755 --
16756 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16757 p_natural_side_code => 'D'
16758 , p_gain_or_loss_flag => 'N'
16759 , p_gl_transfer_mode_code => 'D'
16760 , p_acct_entry_type_code => 'A'
16761 , p_switch_side_flag => 'Y'
16762 , p_merge_duplicate_code => 'W'
16763 );
16764 --
16765 l_acc_rev_natural_side_code := 'C'; -- 4262811
16766 --
16767 --
16768 -- set accounting line type info
16769 --
16770 xla_ae_lines_pkg.SetAcctLineType
16771 (p_component_type => l_component_type
16772 ,p_event_type_code => l_event_type_code
16773 ,p_line_definition_owner_code => l_line_definition_owner_code
16774 ,p_line_definition_code => l_line_definition_code
16775 ,p_accounting_line_code => l_component_code
16776 ,p_accounting_line_type_code => l_component_type_code
16777 ,p_accounting_line_appl_id => l_component_appl_id
16778 ,p_amb_context_code => l_amb_context_code
16779 ,p_entity_code => l_entity_code
16780 ,p_event_class_code => l_event_class_code);
16781 --
16782 -- set accounting class
16783 --
16784 xla_ae_lines_pkg.SetAcctClass(
16785 p_accounting_class_code => 'CLEARING'
16786 , p_ae_header_id => l_ae_header_id
16787 );
16788
16789 --
16790 -- set rounding class
16791 --
16792 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16793 'CLEARING';
16794
16795 --
16796 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16797 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16798 --
16799 -- bulk performance
16800 --
16801 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16802
16803 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16804 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16805
16806 -- 4955764
16807 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16808 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16809
16810 -- 4458381 Public Sector Enh
16811
16812 --
16813 -- set accounting attributes for the line type
16814 --
16815 l_entered_amt_idx := 3;
16816 l_accted_amt_idx := 8;
16817 l_bflow_applied_to_amt_idx := NULL; -- 5132302
16818 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16819 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
16820 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16821 l_rec_acct_attrs.array_char_value(2) := p_source_6;
16822 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16823 l_rec_acct_attrs.array_num_value(3) := p_source_3;
16824 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16825 l_rec_acct_attrs.array_char_value(4) := p_source_7;
16826 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16827 l_rec_acct_attrs.array_date_value(5) := p_source_8;
16828 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16829 l_rec_acct_attrs.array_num_value(6) := p_source_9;
16830 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16831 l_rec_acct_attrs.array_char_value(7) := p_source_10;
16832 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
16833 l_rec_acct_attrs.array_num_value(8) := p_source_11;
16834
16835 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16836 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16837
16838 ---------------------------------------------------------------------------------------------------------------
16839 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16840 ---------------------------------------------------------------------------------------------------------------
16841 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16842
16843 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16847 (p_source_code => 'LEDGER_CATEGORY_CODE'
16844 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16845
16846 IF xla_accounting_cache_pkg.GetValueChar
16848 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16849 AND l_bflow_method_code = 'PRIOR_ENTRY'
16850 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16851 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16852 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16853 )
16854 THEN
16855 xla_ae_lines_pkg.BflowUpgEntry
16856 (p_business_method_code => l_bflow_method_code
16857 ,p_business_class_code => l_bflow_class_code
16858 ,p_balance_type => l_balance_type_code);
16859 ELSE
16860 NULL;
16861 -- No business flow processing for business flow method of NONE.
16862 END IF;
16863
16864 --
16865 -- call analytical criteria
16866 --
16867
16868 --
16869 -- call description
16870 --
16871 -- No description or it is inherited.
16872 --
16873 -- call ADRs
16874 -- Bug 4922099
16875 --
16876 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16877 (NVL(l_actual_upg_option, 'N') = 'O') OR
16878 (NVL(l_enc_upg_option, 'N') = 'O')
16879 )
16880 THEN
16881 NULL;
16882 --
16883 --
16884
16885 l_ccid := AcctDerRule_7(
16886 p_application_id => p_application_id
16887 , p_ae_header_id => l_ae_header_id
16888 , p_source_1 => p_source_1
16889 , p_source_2 => p_source_2
16890 , x_transaction_coa_id => l_adr_transaction_coa_id
16891 , x_accounting_coa_id => l_adr_accounting_coa_id
16892 , x_value_type_code => l_adr_value_type_code
16893 , p_side => 'NA'
16894 );
16895
16896 xla_ae_lines_pkg.set_ccid(
16897 p_code_combination_id => l_ccid
16898 , p_value_type_code => l_adr_value_type_code
16899 , p_transaction_coa_id => l_adr_transaction_coa_id
16900 , p_accounting_coa_id => l_adr_accounting_coa_id
16901 , p_adr_code => 'CLEARING'
16902 , p_adr_type_code => 'S'
16903 , p_component_type => l_component_type
16904 , p_component_code => l_component_code
16905 , p_component_type_code => l_component_type_code
16906 , p_component_appl_id => l_component_appl_id
16907 , p_amb_context_code => l_amb_context_code
16908 , p_side => 'NA'
16909 );
16910
16911
16912 --
16913 --
16914 END IF;
16915 --
16916 -- Bug 4922099
16917 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16918 (NVL(l_enc_upg_option, 'N') = 'O')
16919 ) AND
16920 (l_bflow_method_code = 'PRIOR_ENTRY')
16921 )
16922 THEN
16923 IF
16924 --
16925 1 = 2
16926 --
16927 THEN
16928 xla_accounting_err_pkg.build_message
16929 (p_appli_s_name => 'XLA'
16930 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16931 ,p_token_1 => 'LINE_NUMBER'
16932 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
16933 ,p_token_2 => 'LINE_TYPE_NAME'
16934 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
16935 l_component_type
16936 ,l_component_code
16937 ,l_component_type_code
16938 ,l_component_appl_id
16939 ,l_amb_context_code
16940 ,l_entity_code
16941 ,l_event_class_code
16942 )
16943 ,p_token_3 => 'OWNER'
16944 ,p_value_3 => xla_lookups_pkg.get_meaning(
16945 p_lookup_type => 'XLA_OWNER_TYPE'
16946 ,p_lookup_code => l_component_type_code
16947 )
16948 ,p_token_4 => 'PRODUCT_NAME'
16949 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16950 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16951 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16955
16952 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16953 ,p_ae_header_id => NULL
16954 );
16956 IF (C_LEVEL_ERROR>= g_log_level) THEN
16957 trace
16958 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16959 ,p_level => C_LEVEL_ERROR
16960 ,p_module => l_log_module);
16961 END IF;
16962 END IF;
16963 END IF;
16964 --
16965 --
16966 ------------------------------------------------------------------------------------------------
16967 -- 4219869 Business Flow
16968 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16969 -- Prior Entry. Currently, the following code is always generated.
16970 ------------------------------------------------------------------------------------------------
16971 XLA_AE_LINES_PKG.ValidateCurrentLine;
16972
16973 ------------------------------------------------------------------------------------
16974 -- 4219869 Business Flow
16975 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16976 ------------------------------------------------------------------------------------
16977 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16978
16979 ----------------------------------------------------------------------------------
16980 -- 4219869 Business Flow
16981 -- Update journal entry status -- Need to generate this within IF <condition>
16982 ----------------------------------------------------------------------------------
16983 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16984 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16985 ,p_balance_type_code => l_balance_type_code
16986 );
16987
16988 -------------------------------------------------------------------------------------------
16989 -- 4262811 - Generate the Accrual Reversal lines
16990 -------------------------------------------------------------------------------------------
16991 BEGIN
16992 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16993 (g_array_event(p_event_id).array_value_num('header_index'));
16994 IF l_acc_rev_flag IS NULL THEN
16995 l_acc_rev_flag := 'N';
16996 END IF;
16997 EXCEPTION
16998 WHEN OTHERS THEN
16999 l_acc_rev_flag := 'N';
17000 END;
17001 --
17002 IF (l_acc_rev_flag = 'Y') THEN
17003
17004 -- 4645092 ------------------------------------------------------------------------------
17005 -- To allow MPA report to determine if it should generate report process
17006 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17007 ------------------------------------------------------------------------------------------
17008
17009 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17010 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17011 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
17012 -- call ADRs
17013 -- Bug 4922099
17014 --
17015 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17016 (NVL(l_actual_upg_option, 'N') = 'O') OR
17017 (NVL(l_enc_upg_option, 'N') = 'O')
17018 )
17019 THEN
17020 NULL;
17021 --
17022 --
17023
17024 l_ccid := AcctDerRule_7(
17025 p_application_id => p_application_id
17026 , p_ae_header_id => l_ae_header_id
17027 , p_source_1 => p_source_1
17028 , p_source_2 => p_source_2
17029 , x_transaction_coa_id => l_adr_transaction_coa_id
17030 , x_accounting_coa_id => l_adr_accounting_coa_id
17031 , x_value_type_code => l_adr_value_type_code
17032 , p_side => 'NA'
17033 );
17034
17035 xla_ae_lines_pkg.set_ccid(
17036 p_code_combination_id => l_ccid
17037 , p_value_type_code => l_adr_value_type_code
17038 , p_transaction_coa_id => l_adr_transaction_coa_id
17039 , p_accounting_coa_id => l_adr_accounting_coa_id
17040 , p_adr_code => 'CLEARING'
17041 , p_adr_type_code => 'S'
17042 , p_component_type => l_component_type
17043 , p_component_code => l_component_code
17044 , p_component_type_code => l_component_type_code
17045 , p_component_appl_id => l_component_appl_id
17046 , p_amb_context_code => l_amb_context_code
17047 , p_side => 'NA'
17048 );
17049
17050
17051 --
17052 --
17053 END IF;
17054
17055 --
17056 -- Update the line information that should be overwritten
17057 --
17058 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17059 p_header_num => 1);
17060 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
17061
17062 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17063
17064 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
17068 --
17065 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17066 END IF;
17067
17069 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17070 --
17071 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17072 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
17073 ELSE
17074 ---------------------------------------------------------------------------------------------------
17075 -- 4262811a Switch Sign
17076 ---------------------------------------------------------------------------------------------------
17077 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
17078 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17079 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17080 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17081 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17082 -- 5132302
17083 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17084 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17085
17086 END IF;
17087
17088 -- 4955764
17089 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17090 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17091
17092
17093 XLA_AE_LINES_PKG.ValidateCurrentLine;
17094 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17095
17096 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17097 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17098 ,p_balance_type_code => l_balance_type_code);
17099
17100 END IF;
17101
17102 -----------------------------------------------------------------------------------------
17103 -- 4262811 Multiperiod Accounting
17104 -----------------------------------------------------------------------------------------
17105 -- No MPA option is assigned.
17106
17107
17108 END IF;
17109 END IF;
17110 --
17111
17112 --
17113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17114 trace
17115 (p_msg => 'END of AcctLineType_63'
17116 ,p_level => C_LEVEL_PROCEDURE
17117 ,p_module => l_log_module);
17118 END IF;
17119 --
17120 EXCEPTION
17121 WHEN xla_exceptions_pkg.application_exception THEN
17122 RAISE;
17123 WHEN OTHERS THEN
17124 xla_exceptions_pkg.raise_message
17125 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_63');
17126 END AcctLineType_63;
17127 --
17128
17129 ---------------------------------------
17130 --
17131 -- PRIVATE FUNCTION
17132 -- AcctLineType_64
17133 --
17134 ---------------------------------------
17135 PROCEDURE AcctLineType_64 (
17136 p_application_id IN NUMBER
17137 ,p_event_id IN NUMBER
17138 ,p_calculate_acctd_flag IN VARCHAR2
17139 ,p_calculate_g_l_flag IN VARCHAR2
17140 ,p_actual_flag IN OUT VARCHAR2
17141 ,p_balance_type_code OUT VARCHAR2
17142 ,p_gain_or_loss_ref OUT VARCHAR2
17143
17144 --Transaction Account
17145 , p_source_1 IN NUMBER
17146 --Journal Line Type
17147 , p_source_2 IN VARCHAR2
17148 --Entered Amount
17149 , p_source_3 IN NUMBER
17150 --First Distribution Identifier
17151 , p_source_5 IN NUMBER
17152 --Distribution Type
17153 , p_source_6 IN VARCHAR2
17154 --Currency Code
17155 , p_source_7 IN VARCHAR2
17156 --Currency Conversion Date
17157 , p_source_8 IN DATE
17158 --Currency Conversion Rate
17159 , p_source_9 IN NUMBER
17160 --Currency Conversion Type
17161 , p_source_10 IN VARCHAR2
17162 --Accounted Amount
17163 , p_source_11 IN NUMBER
17164 )
17165 IS
17166
17167 l_component_type VARCHAR2(80);
17168 l_component_code VARCHAR2(30);
17169 l_component_type_code VARCHAR2(1);
17170 l_component_appl_id INTEGER;
17171 l_amb_context_code VARCHAR2(30);
17172 l_entity_code VARCHAR2(30);
17173 l_event_class_code VARCHAR2(30);
17174 l_ae_header_id NUMBER;
17175 l_event_type_code VARCHAR2(30);
17176 l_line_definition_code VARCHAR2(30);
17177 l_line_definition_owner_code VARCHAR2(1);
17178 --
17179 -- adr variables
17180 l_segment VARCHAR2(30);
17181 l_ccid NUMBER;
17182 l_adr_transaction_coa_id NUMBER;
17183 l_adr_accounting_coa_id NUMBER;
17184 l_adr_flexfield_segment_code VARCHAR2(30);
17185 l_adr_flex_value_set_id NUMBER;
17186 l_adr_value_type_code VARCHAR2(30);
17187 l_adr_value_combination_id NUMBER;
17188 l_adr_value_segment_code VARCHAR2(30);
17189
17190 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
17194
17191 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
17192 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
17193 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
17195 -- 4262811 Variables ------------------------------------------------------------------------------------------
17196 l_entered_amt_idx NUMBER;
17197 l_accted_amt_idx NUMBER;
17198 l_acc_rev_flag VARCHAR2(1);
17199 l_accrual_line_num NUMBER;
17200 l_tmp_amt NUMBER;
17201 l_acc_rev_natural_side_code VARCHAR2(1);
17202
17203 l_num_entries NUMBER;
17204 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
17205 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
17206 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
17207 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
17208 l_recog_line_1 NUMBER;
17209 l_recog_line_2 NUMBER;
17210
17211 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
17212 l_bflow_applied_to_amt NUMBER; -- 5132302
17213 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
17214
17215 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17216
17217 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
17218 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
17219
17220 ---------------------------------------------------------------------------------------------------------------
17221
17222
17223 --
17224 -- bulk performance
17225 --
17226 l_balance_type_code VARCHAR2(1);
17227 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
17228 l_log_module VARCHAR2(240);
17229
17230 --
17231 -- Upgrade strategy
17232 --
17233 l_actual_upg_option VARCHAR2(1);
17234 l_enc_upg_option VARCHAR2(1);
17235
17236 --
17237 BEGIN
17238 --
17239 IF g_log_enabled THEN
17240 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
17241 END IF;
17242 --
17243 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17244
17245 trace
17246 (p_msg => 'BEGIN of AcctLineType_64'
17247 ,p_level => C_LEVEL_PROCEDURE
17248 ,p_module => l_log_module);
17249
17250 END IF;
17251 --
17252 l_component_type := 'AMB_JLT';
17253 l_component_code := 'CLEARING';
17254 l_component_type_code := 'S';
17255 l_component_appl_id := 555;
17256 l_amb_context_code := 'DEFAULT';
17257 l_entity_code := 'PURCHASING';
17258 l_event_class_code := 'RECEIVE';
17259 l_event_type_code := 'LOG_RECEIVE';
17260 l_line_definition_owner_code := 'S';
17261 l_line_definition_code := 'LOG_RECEIVE';
17262 --
17263 l_balance_type_code := 'A';
17264 l_segment := NULL;
17265 l_ccid := NULL;
17266 l_adr_transaction_coa_id := NULL;
17267 l_adr_accounting_coa_id := NULL;
17268 l_adr_flexfield_segment_code := NULL;
17269 l_adr_flex_value_set_id := NULL;
17270 l_adr_value_type_code := NULL;
17271 l_adr_value_combination_id := NULL;
17272 l_adr_value_segment_code := NULL;
17273
17274 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
17275 l_bflow_class_code := ''; -- 4219869 Business Flow
17276 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
17277 l_budgetary_control_flag := 'N';
17278
17279 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17280 l_bflow_applied_to_amt := NULL; -- 5132302
17281 l_entered_amt_idx := NULL; -- 4262811
17282 l_accted_amt_idx := NULL; -- 4262811
17283 l_acc_rev_flag := NULL; -- 4262811
17284 l_accrual_line_num := NULL; -- 4262811
17285 l_tmp_amt := NULL; -- 4262811
17286 --
17287
17288 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17289 l_balance_type_code <> 'B' THEN
17290 IF NVL(p_source_2,'
17291 ') = 'CLR'
17292 THEN
17293
17294 --
17295 XLA_AE_LINES_PKG.SetNewLine;
17296
17297 p_balance_type_code := l_balance_type_code;
17298 -- set the flag so later we will know whether the gain loss line needs to be created
17299
17300 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17301 p_actual_flag :='A';
17302 END IF;
17303
17304 --
17305 -- bulk performance
17306 --
17307 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17308 p_header_num => 0); -- 4262811
17309 --
17310 -- set accounting line options
17311 --
17312 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17313 p_natural_side_code => 'D'
17314 , p_gain_or_loss_flag => 'N'
17315 , p_gl_transfer_mode_code => 'D'
17316 , p_acct_entry_type_code => 'A'
17317 , p_switch_side_flag => 'Y'
17318 , p_merge_duplicate_code => 'W'
17319 );
17320 --
17324 -- set accounting line type info
17321 l_acc_rev_natural_side_code := 'C'; -- 4262811
17322 --
17323 --
17325 --
17326 xla_ae_lines_pkg.SetAcctLineType
17327 (p_component_type => l_component_type
17328 ,p_event_type_code => l_event_type_code
17329 ,p_line_definition_owner_code => l_line_definition_owner_code
17330 ,p_line_definition_code => l_line_definition_code
17331 ,p_accounting_line_code => l_component_code
17332 ,p_accounting_line_type_code => l_component_type_code
17333 ,p_accounting_line_appl_id => l_component_appl_id
17334 ,p_amb_context_code => l_amb_context_code
17335 ,p_entity_code => l_entity_code
17336 ,p_event_class_code => l_event_class_code);
17337 --
17338 -- set accounting class
17339 --
17340 xla_ae_lines_pkg.SetAcctClass(
17341 p_accounting_class_code => 'CLEARING'
17342 , p_ae_header_id => l_ae_header_id
17343 );
17344
17345 --
17346 -- set rounding class
17347 --
17348 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17349 'CLEARING';
17350
17351 --
17352 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17353 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17354 --
17355 -- bulk performance
17356 --
17357 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17358
17359 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17360 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17361
17362 -- 4955764
17363 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17364 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17365
17366 -- 4458381 Public Sector Enh
17367
17368 --
17369 -- set accounting attributes for the line type
17370 --
17371 l_entered_amt_idx := 3;
17372 l_accted_amt_idx := 8;
17373 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17374 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17375 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
17376 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17377 l_rec_acct_attrs.array_char_value(2) := p_source_6;
17378 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17379 l_rec_acct_attrs.array_num_value(3) := p_source_3;
17380 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17381 l_rec_acct_attrs.array_char_value(4) := p_source_7;
17382 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17383 l_rec_acct_attrs.array_date_value(5) := p_source_8;
17384 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17385 l_rec_acct_attrs.array_num_value(6) := p_source_9;
17386 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17387 l_rec_acct_attrs.array_char_value(7) := p_source_10;
17388 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17389 l_rec_acct_attrs.array_num_value(8) := p_source_11;
17390
17391 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17392 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17393
17394 ---------------------------------------------------------------------------------------------------------------
17395 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17396 ---------------------------------------------------------------------------------------------------------------
17397 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17398
17399 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17400 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17401
17402 IF xla_accounting_cache_pkg.GetValueChar
17403 (p_source_code => 'LEDGER_CATEGORY_CODE'
17404 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17405 AND l_bflow_method_code = 'PRIOR_ENTRY'
17406 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17407 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17408 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17409 )
17410 THEN
17411 xla_ae_lines_pkg.BflowUpgEntry
17412 (p_business_method_code => l_bflow_method_code
17413 ,p_business_class_code => l_bflow_class_code
17414 ,p_balance_type => l_balance_type_code);
17415 ELSE
17416 NULL;
17417 -- No business flow processing for business flow method of NONE.
17418 END IF;
17419
17420 --
17421 -- call analytical criteria
17422 --
17423
17424 --
17425 -- call description
17426 --
17427 -- No description or it is inherited.
17428 --
17429 -- call ADRs
17430 -- Bug 4922099
17431 --
17432 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17436 THEN
17433 (NVL(l_actual_upg_option, 'N') = 'O') OR
17434 (NVL(l_enc_upg_option, 'N') = 'O')
17435 )
17437 NULL;
17438 --
17439 --
17440
17441 l_ccid := AcctDerRule_7(
17442 p_application_id => p_application_id
17443 , p_ae_header_id => l_ae_header_id
17444 , p_source_1 => p_source_1
17445 , p_source_2 => p_source_2
17446 , x_transaction_coa_id => l_adr_transaction_coa_id
17447 , x_accounting_coa_id => l_adr_accounting_coa_id
17448 , x_value_type_code => l_adr_value_type_code
17449 , p_side => 'NA'
17450 );
17451
17452 xla_ae_lines_pkg.set_ccid(
17453 p_code_combination_id => l_ccid
17454 , p_value_type_code => l_adr_value_type_code
17455 , p_transaction_coa_id => l_adr_transaction_coa_id
17456 , p_accounting_coa_id => l_adr_accounting_coa_id
17457 , p_adr_code => 'CLEARING'
17458 , p_adr_type_code => 'S'
17459 , p_component_type => l_component_type
17460 , p_component_code => l_component_code
17461 , p_component_type_code => l_component_type_code
17462 , p_component_appl_id => l_component_appl_id
17463 , p_amb_context_code => l_amb_context_code
17464 , p_side => 'NA'
17465 );
17466
17467
17468 --
17469 --
17470 END IF;
17471 --
17472 -- Bug 4922099
17473 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17474 (NVL(l_enc_upg_option, 'N') = 'O')
17475 ) AND
17476 (l_bflow_method_code = 'PRIOR_ENTRY')
17477 )
17478 THEN
17479 IF
17480 --
17481 1 = 2
17482 --
17483 THEN
17484 xla_accounting_err_pkg.build_message
17485 (p_appli_s_name => 'XLA'
17486 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17487 ,p_token_1 => 'LINE_NUMBER'
17488 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
17489 ,p_token_2 => 'LINE_TYPE_NAME'
17490 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
17491 l_component_type
17492 ,l_component_code
17493 ,l_component_type_code
17494 ,l_component_appl_id
17495 ,l_amb_context_code
17496 ,l_entity_code
17497 ,l_event_class_code
17498 )
17499 ,p_token_3 => 'OWNER'
17500 ,p_value_3 => xla_lookups_pkg.get_meaning(
17501 p_lookup_type => 'XLA_OWNER_TYPE'
17502 ,p_lookup_code => l_component_type_code
17503 )
17504 ,p_token_4 => 'PRODUCT_NAME'
17505 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17506 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17507 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17508 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17509 ,p_ae_header_id => NULL
17510 );
17511
17512 IF (C_LEVEL_ERROR>= g_log_level) THEN
17513 trace
17514 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17515 ,p_level => C_LEVEL_ERROR
17516 ,p_module => l_log_module);
17517 END IF;
17518 END IF;
17519 END IF;
17520 --
17521 --
17522 ------------------------------------------------------------------------------------------------
17523 -- 4219869 Business Flow
17524 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17525 -- Prior Entry. Currently, the following code is always generated.
17526 ------------------------------------------------------------------------------------------------
17527 XLA_AE_LINES_PKG.ValidateCurrentLine;
17528
17529 ------------------------------------------------------------------------------------
17530 -- 4219869 Business Flow
17531 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17532 ------------------------------------------------------------------------------------
17533 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17537 -- Update journal entry status -- Need to generate this within IF <condition>
17534
17535 ----------------------------------------------------------------------------------
17536 -- 4219869 Business Flow
17538 ----------------------------------------------------------------------------------
17539 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17540 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17541 ,p_balance_type_code => l_balance_type_code
17542 );
17543
17544 -------------------------------------------------------------------------------------------
17545 -- 4262811 - Generate the Accrual Reversal lines
17546 -------------------------------------------------------------------------------------------
17547 BEGIN
17548 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17549 (g_array_event(p_event_id).array_value_num('header_index'));
17550 IF l_acc_rev_flag IS NULL THEN
17551 l_acc_rev_flag := 'N';
17552 END IF;
17553 EXCEPTION
17554 WHEN OTHERS THEN
17555 l_acc_rev_flag := 'N';
17556 END;
17557 --
17558 IF (l_acc_rev_flag = 'Y') THEN
17559
17560 -- 4645092 ------------------------------------------------------------------------------
17561 -- To allow MPA report to determine if it should generate report process
17562 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17563 ------------------------------------------------------------------------------------------
17564
17565 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17566 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17567 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
17568 -- call ADRs
17569 -- Bug 4922099
17570 --
17571 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17572 (NVL(l_actual_upg_option, 'N') = 'O') OR
17573 (NVL(l_enc_upg_option, 'N') = 'O')
17574 )
17575 THEN
17576 NULL;
17577 --
17578 --
17579
17580 l_ccid := AcctDerRule_7(
17581 p_application_id => p_application_id
17582 , p_ae_header_id => l_ae_header_id
17583 , p_source_1 => p_source_1
17584 , p_source_2 => p_source_2
17585 , x_transaction_coa_id => l_adr_transaction_coa_id
17586 , x_accounting_coa_id => l_adr_accounting_coa_id
17587 , x_value_type_code => l_adr_value_type_code
17588 , p_side => 'NA'
17589 );
17590
17591 xla_ae_lines_pkg.set_ccid(
17592 p_code_combination_id => l_ccid
17593 , p_value_type_code => l_adr_value_type_code
17594 , p_transaction_coa_id => l_adr_transaction_coa_id
17595 , p_accounting_coa_id => l_adr_accounting_coa_id
17596 , p_adr_code => 'CLEARING'
17597 , p_adr_type_code => 'S'
17598 , p_component_type => l_component_type
17599 , p_component_code => l_component_code
17600 , p_component_type_code => l_component_type_code
17601 , p_component_appl_id => l_component_appl_id
17602 , p_amb_context_code => l_amb_context_code
17603 , p_side => 'NA'
17604 );
17605
17606
17607 --
17608 --
17609 END IF;
17610
17611 --
17612 -- Update the line information that should be overwritten
17613 --
17614 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17615 p_header_num => 1);
17616 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
17617
17618 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17619
17620 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
17621 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17622 END IF;
17623
17624 --
17625 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17626 --
17627 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17628 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
17629 ELSE
17630 ---------------------------------------------------------------------------------------------------
17631 -- 4262811a Switch Sign
17632 ---------------------------------------------------------------------------------------------------
17633 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
17634 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17635 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17636 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17637 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17638 -- 5132302
17639 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17640 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17641
17642 END IF;
17643
17647
17644 -- 4955764
17645 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17646 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17648
17649 XLA_AE_LINES_PKG.ValidateCurrentLine;
17650 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17651
17652 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17653 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17654 ,p_balance_type_code => l_balance_type_code);
17655
17656 END IF;
17657
17658 -----------------------------------------------------------------------------------------
17659 -- 4262811 Multiperiod Accounting
17660 -----------------------------------------------------------------------------------------
17661 -- No MPA option is assigned.
17662
17663
17664 END IF;
17665 END IF;
17666 --
17667
17668 --
17669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17670 trace
17671 (p_msg => 'END of AcctLineType_64'
17672 ,p_level => C_LEVEL_PROCEDURE
17673 ,p_module => l_log_module);
17674 END IF;
17675 --
17676 EXCEPTION
17677 WHEN xla_exceptions_pkg.application_exception THEN
17678 RAISE;
17679 WHEN OTHERS THEN
17680 xla_exceptions_pkg.raise_message
17681 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_64');
17682 END AcctLineType_64;
17683 --
17684
17685 ---------------------------------------
17686 --
17687 -- PRIVATE FUNCTION
17688 -- AcctLineType_65
17689 --
17690 ---------------------------------------
17691 PROCEDURE AcctLineType_65 (
17692 p_application_id IN NUMBER
17693 ,p_event_id IN NUMBER
17694 ,p_calculate_acctd_flag IN VARCHAR2
17695 ,p_calculate_g_l_flag IN VARCHAR2
17696 ,p_actual_flag IN OUT VARCHAR2
17697 ,p_balance_type_code OUT VARCHAR2
17698 ,p_gain_or_loss_ref OUT VARCHAR2
17699
17700 --Transaction Account
17701 , p_source_1 IN NUMBER
17702 --Journal Line Type
17703 , p_source_2 IN VARCHAR2
17704 --Entered Amount
17705 , p_source_3 IN NUMBER
17706 --First Distribution Identifier
17707 , p_source_5 IN NUMBER
17708 --Distribution Type
17709 , p_source_6 IN VARCHAR2
17710 --Currency Code
17711 , p_source_7 IN VARCHAR2
17712 --Currency Conversion Date
17713 , p_source_8 IN DATE
17714 --Currency Conversion Rate
17715 , p_source_9 IN NUMBER
17716 --Currency Conversion Type
17717 , p_source_10 IN VARCHAR2
17718 --Accounted Amount
17719 , p_source_11 IN NUMBER
17720 )
17721 IS
17722
17723 l_component_type VARCHAR2(80);
17724 l_component_code VARCHAR2(30);
17725 l_component_type_code VARCHAR2(1);
17726 l_component_appl_id INTEGER;
17727 l_amb_context_code VARCHAR2(30);
17728 l_entity_code VARCHAR2(30);
17729 l_event_class_code VARCHAR2(30);
17730 l_ae_header_id NUMBER;
17731 l_event_type_code VARCHAR2(30);
17732 l_line_definition_code VARCHAR2(30);
17733 l_line_definition_owner_code VARCHAR2(1);
17734 --
17735 -- adr variables
17736 l_segment VARCHAR2(30);
17737 l_ccid NUMBER;
17738 l_adr_transaction_coa_id NUMBER;
17739 l_adr_accounting_coa_id NUMBER;
17740 l_adr_flexfield_segment_code VARCHAR2(30);
17741 l_adr_flex_value_set_id NUMBER;
17742 l_adr_value_type_code VARCHAR2(30);
17743 l_adr_value_combination_id NUMBER;
17744 l_adr_value_segment_code VARCHAR2(30);
17745
17746 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
17747 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
17748 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
17749 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
17750
17751 -- 4262811 Variables ------------------------------------------------------------------------------------------
17752 l_entered_amt_idx NUMBER;
17753 l_accted_amt_idx NUMBER;
17754 l_acc_rev_flag VARCHAR2(1);
17755 l_accrual_line_num NUMBER;
17756 l_tmp_amt NUMBER;
17757 l_acc_rev_natural_side_code VARCHAR2(1);
17758
17759 l_num_entries NUMBER;
17760 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
17761 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
17762 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
17763 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
17764 l_recog_line_1 NUMBER;
17765 l_recog_line_2 NUMBER;
17766
17767 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
17768 l_bflow_applied_to_amt NUMBER; -- 5132302
17769 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
17770
17771 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17772
17773 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
17777
17774 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
17775
17776 ---------------------------------------------------------------------------------------------------------------
17778
17779 --
17780 -- bulk performance
17781 --
17782 l_balance_type_code VARCHAR2(1);
17783 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
17784 l_log_module VARCHAR2(240);
17785
17786 --
17787 -- Upgrade strategy
17788 --
17789 l_actual_upg_option VARCHAR2(1);
17790 l_enc_upg_option VARCHAR2(1);
17791
17792 --
17793 BEGIN
17794 --
17795 IF g_log_enabled THEN
17796 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
17797 END IF;
17798 --
17799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17800
17801 trace
17802 (p_msg => 'BEGIN of AcctLineType_65'
17803 ,p_level => C_LEVEL_PROCEDURE
17804 ,p_module => l_log_module);
17805
17806 END IF;
17807 --
17808 l_component_type := 'AMB_JLT';
17809 l_component_code := 'CLEARING';
17810 l_component_type_code := 'S';
17811 l_component_appl_id := 555;
17812 l_amb_context_code := 'DEFAULT';
17813 l_entity_code := 'PURCHASING';
17814 l_event_class_code := 'RECEIVE';
17815 l_event_type_code := 'LOG_RET_TO_VENDOR';
17816 l_line_definition_owner_code := 'S';
17817 l_line_definition_code := 'LOG_RET_TO_VENDOR';
17818 --
17819 l_balance_type_code := 'A';
17820 l_segment := NULL;
17821 l_ccid := NULL;
17822 l_adr_transaction_coa_id := NULL;
17823 l_adr_accounting_coa_id := NULL;
17824 l_adr_flexfield_segment_code := NULL;
17825 l_adr_flex_value_set_id := NULL;
17826 l_adr_value_type_code := NULL;
17827 l_adr_value_combination_id := NULL;
17828 l_adr_value_segment_code := NULL;
17829
17830 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
17831 l_bflow_class_code := ''; -- 4219869 Business Flow
17832 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
17833 l_budgetary_control_flag := 'N';
17834
17835 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17836 l_bflow_applied_to_amt := NULL; -- 5132302
17837 l_entered_amt_idx := NULL; -- 4262811
17838 l_accted_amt_idx := NULL; -- 4262811
17839 l_acc_rev_flag := NULL; -- 4262811
17840 l_accrual_line_num := NULL; -- 4262811
17841 l_tmp_amt := NULL; -- 4262811
17842 --
17843
17844 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17845 l_balance_type_code <> 'B' THEN
17846 IF NVL(p_source_2,'
17847 ') = 'CLR'
17848 THEN
17849
17850 --
17851 XLA_AE_LINES_PKG.SetNewLine;
17852
17853 p_balance_type_code := l_balance_type_code;
17854 -- set the flag so later we will know whether the gain loss line needs to be created
17855
17856 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17857 p_actual_flag :='A';
17858 END IF;
17859
17860 --
17861 -- bulk performance
17862 --
17863 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17864 p_header_num => 0); -- 4262811
17865 --
17866 -- set accounting line options
17867 --
17868 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17869 p_natural_side_code => 'D'
17870 , p_gain_or_loss_flag => 'N'
17871 , p_gl_transfer_mode_code => 'D'
17872 , p_acct_entry_type_code => 'A'
17873 , p_switch_side_flag => 'Y'
17874 , p_merge_duplicate_code => 'W'
17875 );
17876 --
17877 l_acc_rev_natural_side_code := 'C'; -- 4262811
17878 --
17879 --
17880 -- set accounting line type info
17881 --
17882 xla_ae_lines_pkg.SetAcctLineType
17883 (p_component_type => l_component_type
17884 ,p_event_type_code => l_event_type_code
17885 ,p_line_definition_owner_code => l_line_definition_owner_code
17886 ,p_line_definition_code => l_line_definition_code
17887 ,p_accounting_line_code => l_component_code
17888 ,p_accounting_line_type_code => l_component_type_code
17889 ,p_accounting_line_appl_id => l_component_appl_id
17890 ,p_amb_context_code => l_amb_context_code
17891 ,p_entity_code => l_entity_code
17892 ,p_event_class_code => l_event_class_code);
17893 --
17894 -- set accounting class
17895 --
17896 xla_ae_lines_pkg.SetAcctClass(
17897 p_accounting_class_code => 'CLEARING'
17898 , p_ae_header_id => l_ae_header_id
17899 );
17900
17901 --
17902 -- set rounding class
17903 --
17904 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17905 'CLEARING';
17906
17907 --
17908 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17912 --
17909 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17910 --
17911 -- bulk performance
17913 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17914
17915 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17916 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17917
17918 -- 4955764
17919 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17920 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17921
17922 -- 4458381 Public Sector Enh
17923
17924 --
17925 -- set accounting attributes for the line type
17926 --
17927 l_entered_amt_idx := 3;
17928 l_accted_amt_idx := 8;
17929 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17930 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17931 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
17932 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17933 l_rec_acct_attrs.array_char_value(2) := p_source_6;
17934 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17935 l_rec_acct_attrs.array_num_value(3) := p_source_3;
17936 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17937 l_rec_acct_attrs.array_char_value(4) := p_source_7;
17938 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17939 l_rec_acct_attrs.array_date_value(5) := p_source_8;
17940 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17941 l_rec_acct_attrs.array_num_value(6) := p_source_9;
17942 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17943 l_rec_acct_attrs.array_char_value(7) := p_source_10;
17944 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17945 l_rec_acct_attrs.array_num_value(8) := p_source_11;
17946
17947 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17948 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17949
17950 ---------------------------------------------------------------------------------------------------------------
17951 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17952 ---------------------------------------------------------------------------------------------------------------
17953 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17954
17955 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17956 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17957
17958 IF xla_accounting_cache_pkg.GetValueChar
17959 (p_source_code => 'LEDGER_CATEGORY_CODE'
17960 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17961 AND l_bflow_method_code = 'PRIOR_ENTRY'
17962 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17963 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17964 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17965 )
17966 THEN
17967 xla_ae_lines_pkg.BflowUpgEntry
17968 (p_business_method_code => l_bflow_method_code
17969 ,p_business_class_code => l_bflow_class_code
17970 ,p_balance_type => l_balance_type_code);
17971 ELSE
17972 NULL;
17973 -- No business flow processing for business flow method of NONE.
17974 END IF;
17975
17976 --
17977 -- call analytical criteria
17978 --
17979
17980 --
17981 -- call description
17982 --
17983 -- No description or it is inherited.
17984 --
17985 -- call ADRs
17986 -- Bug 4922099
17987 --
17988 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17989 (NVL(l_actual_upg_option, 'N') = 'O') OR
17990 (NVL(l_enc_upg_option, 'N') = 'O')
17991 )
17992 THEN
17993 NULL;
17994 --
17995 --
17996
17997 l_ccid := AcctDerRule_7(
17998 p_application_id => p_application_id
17999 , p_ae_header_id => l_ae_header_id
18000 , p_source_1 => p_source_1
18001 , p_source_2 => p_source_2
18002 , x_transaction_coa_id => l_adr_transaction_coa_id
18003 , x_accounting_coa_id => l_adr_accounting_coa_id
18004 , x_value_type_code => l_adr_value_type_code
18005 , p_side => 'NA'
18006 );
18007
18008 xla_ae_lines_pkg.set_ccid(
18009 p_code_combination_id => l_ccid
18010 , p_value_type_code => l_adr_value_type_code
18011 , p_transaction_coa_id => l_adr_transaction_coa_id
18012 , p_accounting_coa_id => l_adr_accounting_coa_id
18013 , p_adr_code => 'CLEARING'
18014 , p_adr_type_code => 'S'
18015 , p_component_type => l_component_type
18016 , p_component_code => l_component_code
18017 , p_component_type_code => l_component_type_code
18018 , p_component_appl_id => l_component_appl_id
18019 , p_amb_context_code => l_amb_context_code
18023
18020 , p_side => 'NA'
18021 );
18022
18024 --
18025 --
18026 END IF;
18027 --
18028 -- Bug 4922099
18029 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18030 (NVL(l_enc_upg_option, 'N') = 'O')
18031 ) AND
18032 (l_bflow_method_code = 'PRIOR_ENTRY')
18033 )
18034 THEN
18035 IF
18036 --
18037 1 = 2
18038 --
18039 THEN
18040 xla_accounting_err_pkg.build_message
18041 (p_appli_s_name => 'XLA'
18042 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18043 ,p_token_1 => 'LINE_NUMBER'
18044 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
18045 ,p_token_2 => 'LINE_TYPE_NAME'
18046 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
18047 l_component_type
18048 ,l_component_code
18049 ,l_component_type_code
18050 ,l_component_appl_id
18051 ,l_amb_context_code
18052 ,l_entity_code
18053 ,l_event_class_code
18054 )
18055 ,p_token_3 => 'OWNER'
18056 ,p_value_3 => xla_lookups_pkg.get_meaning(
18057 p_lookup_type => 'XLA_OWNER_TYPE'
18058 ,p_lookup_code => l_component_type_code
18059 )
18060 ,p_token_4 => 'PRODUCT_NAME'
18061 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18062 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18063 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18064 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18065 ,p_ae_header_id => NULL
18066 );
18067
18068 IF (C_LEVEL_ERROR>= g_log_level) THEN
18069 trace
18070 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18071 ,p_level => C_LEVEL_ERROR
18072 ,p_module => l_log_module);
18073 END IF;
18074 END IF;
18075 END IF;
18076 --
18077 --
18078 ------------------------------------------------------------------------------------------------
18079 -- 4219869 Business Flow
18080 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18081 -- Prior Entry. Currently, the following code is always generated.
18082 ------------------------------------------------------------------------------------------------
18083 XLA_AE_LINES_PKG.ValidateCurrentLine;
18084
18085 ------------------------------------------------------------------------------------
18086 -- 4219869 Business Flow
18087 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18088 ------------------------------------------------------------------------------------
18089 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18090
18091 ----------------------------------------------------------------------------------
18092 -- 4219869 Business Flow
18093 -- Update journal entry status -- Need to generate this within IF <condition>
18094 ----------------------------------------------------------------------------------
18095 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18096 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18097 ,p_balance_type_code => l_balance_type_code
18098 );
18099
18100 -------------------------------------------------------------------------------------------
18101 -- 4262811 - Generate the Accrual Reversal lines
18102 -------------------------------------------------------------------------------------------
18103 BEGIN
18104 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18105 (g_array_event(p_event_id).array_value_num('header_index'));
18106 IF l_acc_rev_flag IS NULL THEN
18107 l_acc_rev_flag := 'N';
18108 END IF;
18109 EXCEPTION
18110 WHEN OTHERS THEN
18111 l_acc_rev_flag := 'N';
18112 END;
18113 --
18114 IF (l_acc_rev_flag = 'Y') THEN
18115
18116 -- 4645092 ------------------------------------------------------------------------------
18117 -- To allow MPA report to determine if it should generate report process
18121 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18118 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18119 ------------------------------------------------------------------------------------------
18120
18122 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18123 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
18124 -- call ADRs
18125 -- Bug 4922099
18126 --
18127 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18128 (NVL(l_actual_upg_option, 'N') = 'O') OR
18129 (NVL(l_enc_upg_option, 'N') = 'O')
18130 )
18131 THEN
18132 NULL;
18133 --
18134 --
18135
18136 l_ccid := AcctDerRule_7(
18137 p_application_id => p_application_id
18138 , p_ae_header_id => l_ae_header_id
18139 , p_source_1 => p_source_1
18140 , p_source_2 => p_source_2
18141 , x_transaction_coa_id => l_adr_transaction_coa_id
18142 , x_accounting_coa_id => l_adr_accounting_coa_id
18143 , x_value_type_code => l_adr_value_type_code
18144 , p_side => 'NA'
18145 );
18146
18147 xla_ae_lines_pkg.set_ccid(
18148 p_code_combination_id => l_ccid
18149 , p_value_type_code => l_adr_value_type_code
18150 , p_transaction_coa_id => l_adr_transaction_coa_id
18151 , p_accounting_coa_id => l_adr_accounting_coa_id
18152 , p_adr_code => 'CLEARING'
18153 , p_adr_type_code => 'S'
18154 , p_component_type => l_component_type
18155 , p_component_code => l_component_code
18156 , p_component_type_code => l_component_type_code
18157 , p_component_appl_id => l_component_appl_id
18158 , p_amb_context_code => l_amb_context_code
18159 , p_side => 'NA'
18160 );
18161
18162
18163 --
18164 --
18165 END IF;
18166
18167 --
18168 -- Update the line information that should be overwritten
18169 --
18170 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18171 p_header_num => 1);
18172 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
18173
18174 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18175
18176 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
18177 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18178 END IF;
18179
18180 --
18181 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18182 --
18183 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18184 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
18185 ELSE
18186 ---------------------------------------------------------------------------------------------------
18187 -- 4262811a Switch Sign
18188 ---------------------------------------------------------------------------------------------------
18189 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
18190 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18191 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18192 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18193 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18194 -- 5132302
18195 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18196 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18197
18198 END IF;
18199
18200 -- 4955764
18201 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18202 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18203
18204
18205 XLA_AE_LINES_PKG.ValidateCurrentLine;
18206 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18207
18208 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18209 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18210 ,p_balance_type_code => l_balance_type_code);
18211
18212 END IF;
18213
18214 -----------------------------------------------------------------------------------------
18215 -- 4262811 Multiperiod Accounting
18216 -----------------------------------------------------------------------------------------
18217 -- No MPA option is assigned.
18218
18219
18220 END IF;
18221 END IF;
18222 --
18223
18224 --
18225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18226 trace
18227 (p_msg => 'END of AcctLineType_65'
18228 ,p_level => C_LEVEL_PROCEDURE
18229 ,p_module => l_log_module);
18230 END IF;
18231 --
18232 EXCEPTION
18236 xla_exceptions_pkg.raise_message
18233 WHEN xla_exceptions_pkg.application_exception THEN
18234 RAISE;
18235 WHEN OTHERS THEN
18237 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_65');
18238 END AcctLineType_65;
18239 --
18240
18241 ---------------------------------------
18242 --
18243 -- PRIVATE FUNCTION
18244 -- AcctLineType_66
18245 --
18246 ---------------------------------------
18247 PROCEDURE AcctLineType_66 (
18248 p_application_id IN NUMBER
18249 ,p_event_id IN NUMBER
18250 ,p_calculate_acctd_flag IN VARCHAR2
18251 ,p_calculate_g_l_flag IN VARCHAR2
18252 ,p_actual_flag IN OUT VARCHAR2
18253 ,p_balance_type_code OUT VARCHAR2
18254 ,p_gain_or_loss_ref OUT VARCHAR2
18255
18256 --Transaction Account
18257 , p_source_1 IN NUMBER
18258 --Journal Line Type
18259 , p_source_2 IN VARCHAR2
18260 --Entered Amount
18261 , p_source_3 IN NUMBER
18262 --First Distribution Identifier
18263 , p_source_5 IN NUMBER
18264 --Distribution Type
18265 , p_source_6 IN VARCHAR2
18266 --Currency Code
18267 , p_source_7 IN VARCHAR2
18268 --Currency Conversion Date
18269 , p_source_8 IN DATE
18270 --Currency Conversion Rate
18271 , p_source_9 IN NUMBER
18272 --Currency Conversion Type
18273 , p_source_10 IN VARCHAR2
18274 --Accounted Amount
18275 , p_source_11 IN NUMBER
18276 )
18277 IS
18278
18279 l_component_type VARCHAR2(80);
18280 l_component_code VARCHAR2(30);
18281 l_component_type_code VARCHAR2(1);
18282 l_component_appl_id INTEGER;
18283 l_amb_context_code VARCHAR2(30);
18284 l_entity_code VARCHAR2(30);
18285 l_event_class_code VARCHAR2(30);
18286 l_ae_header_id NUMBER;
18287 l_event_type_code VARCHAR2(30);
18288 l_line_definition_code VARCHAR2(30);
18289 l_line_definition_owner_code VARCHAR2(1);
18290 --
18291 -- adr variables
18292 l_segment VARCHAR2(30);
18293 l_ccid NUMBER;
18294 l_adr_transaction_coa_id NUMBER;
18295 l_adr_accounting_coa_id NUMBER;
18296 l_adr_flexfield_segment_code VARCHAR2(30);
18297 l_adr_flex_value_set_id NUMBER;
18298 l_adr_value_type_code VARCHAR2(30);
18299 l_adr_value_combination_id NUMBER;
18300 l_adr_value_segment_code VARCHAR2(30);
18301
18302 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
18303 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
18304 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
18305 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
18306
18307 -- 4262811 Variables ------------------------------------------------------------------------------------------
18308 l_entered_amt_idx NUMBER;
18309 l_accted_amt_idx NUMBER;
18310 l_acc_rev_flag VARCHAR2(1);
18311 l_accrual_line_num NUMBER;
18312 l_tmp_amt NUMBER;
18313 l_acc_rev_natural_side_code VARCHAR2(1);
18314
18315 l_num_entries NUMBER;
18316 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
18317 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
18318 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
18319 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
18320 l_recog_line_1 NUMBER;
18321 l_recog_line_2 NUMBER;
18322
18323 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
18324 l_bflow_applied_to_amt NUMBER; -- 5132302
18325 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
18326
18327 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18328
18329 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
18330 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
18331
18332 ---------------------------------------------------------------------------------------------------------------
18333
18334
18335 --
18336 -- bulk performance
18337 --
18338 l_balance_type_code VARCHAR2(1);
18339 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
18340 l_log_module VARCHAR2(240);
18341
18342 --
18343 -- Upgrade strategy
18344 --
18345 l_actual_upg_option VARCHAR2(1);
18346 l_enc_upg_option VARCHAR2(1);
18347
18348 --
18349 BEGIN
18350 --
18351 IF g_log_enabled THEN
18352 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
18353 END IF;
18354 --
18355 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18356
18357 trace
18358 (p_msg => 'BEGIN of AcctLineType_66'
18359 ,p_level => C_LEVEL_PROCEDURE
18360 ,p_module => l_log_module);
18361
18362 END IF;
18363 --
18364 l_component_type := 'AMB_JLT';
18365 l_component_code := 'CLEARING';
18366 l_component_type_code := 'S';
18367 l_component_appl_id := 555;
18368 l_amb_context_code := 'DEFAULT';
18369 l_entity_code := 'PURCHASING';
18370 l_event_class_code := 'DELIVER';
18374 --
18371 l_event_type_code := 'LOG_RET_TO_RECEIVING';
18372 l_line_definition_owner_code := 'S';
18373 l_line_definition_code := 'LOG_RET_TO_RECEIVING';
18375 l_balance_type_code := 'A';
18376 l_segment := NULL;
18377 l_ccid := NULL;
18378 l_adr_transaction_coa_id := NULL;
18379 l_adr_accounting_coa_id := NULL;
18380 l_adr_flexfield_segment_code := NULL;
18381 l_adr_flex_value_set_id := NULL;
18382 l_adr_value_type_code := NULL;
18383 l_adr_value_combination_id := NULL;
18384 l_adr_value_segment_code := NULL;
18385
18386 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
18387 l_bflow_class_code := ''; -- 4219869 Business Flow
18388 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
18389 l_budgetary_control_flag := 'N';
18390
18391 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18392 l_bflow_applied_to_amt := NULL; -- 5132302
18393 l_entered_amt_idx := NULL; -- 4262811
18394 l_accted_amt_idx := NULL; -- 4262811
18395 l_acc_rev_flag := NULL; -- 4262811
18396 l_accrual_line_num := NULL; -- 4262811
18397 l_tmp_amt := NULL; -- 4262811
18398 --
18399
18400 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18401 l_balance_type_code <> 'B' THEN
18402 IF NVL(p_source_2,'
18403 ') = 'CLR'
18404 THEN
18405
18406 --
18407 XLA_AE_LINES_PKG.SetNewLine;
18408
18409 p_balance_type_code := l_balance_type_code;
18410 -- set the flag so later we will know whether the gain loss line needs to be created
18411
18412 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18413 p_actual_flag :='A';
18414 END IF;
18415
18416 --
18417 -- bulk performance
18418 --
18419 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18420 p_header_num => 0); -- 4262811
18421 --
18422 -- set accounting line options
18423 --
18424 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18425 p_natural_side_code => 'D'
18426 , p_gain_or_loss_flag => 'N'
18427 , p_gl_transfer_mode_code => 'D'
18428 , p_acct_entry_type_code => 'A'
18429 , p_switch_side_flag => 'Y'
18430 , p_merge_duplicate_code => 'W'
18431 );
18432 --
18433 l_acc_rev_natural_side_code := 'C'; -- 4262811
18434 --
18435 --
18436 -- set accounting line type info
18437 --
18438 xla_ae_lines_pkg.SetAcctLineType
18439 (p_component_type => l_component_type
18440 ,p_event_type_code => l_event_type_code
18441 ,p_line_definition_owner_code => l_line_definition_owner_code
18442 ,p_line_definition_code => l_line_definition_code
18443 ,p_accounting_line_code => l_component_code
18444 ,p_accounting_line_type_code => l_component_type_code
18445 ,p_accounting_line_appl_id => l_component_appl_id
18446 ,p_amb_context_code => l_amb_context_code
18447 ,p_entity_code => l_entity_code
18448 ,p_event_class_code => l_event_class_code);
18449 --
18450 -- set accounting class
18451 --
18452 xla_ae_lines_pkg.SetAcctClass(
18453 p_accounting_class_code => 'CLEARING'
18454 , p_ae_header_id => l_ae_header_id
18455 );
18456
18457 --
18458 -- set rounding class
18459 --
18460 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18461 'CLEARING';
18462
18463 --
18464 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18465 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18466 --
18467 -- bulk performance
18468 --
18469 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18470
18471 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18472 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18473
18474 -- 4955764
18475 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18476 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18477
18478 -- 4458381 Public Sector Enh
18479
18480 --
18481 -- set accounting attributes for the line type
18482 --
18483 l_entered_amt_idx := 3;
18484 l_accted_amt_idx := 8;
18485 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18486 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18487 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
18488 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18489 l_rec_acct_attrs.array_char_value(2) := p_source_6;
18490 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18491 l_rec_acct_attrs.array_num_value(3) := p_source_3;
18492 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18496 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18493 l_rec_acct_attrs.array_char_value(4) := p_source_7;
18494 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18495 l_rec_acct_attrs.array_date_value(5) := p_source_8;
18497 l_rec_acct_attrs.array_num_value(6) := p_source_9;
18498 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18499 l_rec_acct_attrs.array_char_value(7) := p_source_10;
18500 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
18501 l_rec_acct_attrs.array_num_value(8) := p_source_11;
18502
18503 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18504 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18505
18506 ---------------------------------------------------------------------------------------------------------------
18507 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18508 ---------------------------------------------------------------------------------------------------------------
18509 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18510
18511 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18512 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18513
18514 IF xla_accounting_cache_pkg.GetValueChar
18515 (p_source_code => 'LEDGER_CATEGORY_CODE'
18516 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18517 AND l_bflow_method_code = 'PRIOR_ENTRY'
18518 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18519 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18520 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18521 )
18522 THEN
18523 xla_ae_lines_pkg.BflowUpgEntry
18524 (p_business_method_code => l_bflow_method_code
18525 ,p_business_class_code => l_bflow_class_code
18526 ,p_balance_type => l_balance_type_code);
18527 ELSE
18528 NULL;
18529 -- No business flow processing for business flow method of NONE.
18530 END IF;
18531
18532 --
18533 -- call analytical criteria
18534 --
18535
18536 --
18537 -- call description
18538 --
18539 -- No description or it is inherited.
18540 --
18541 -- call ADRs
18542 -- Bug 4922099
18543 --
18544 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18545 (NVL(l_actual_upg_option, 'N') = 'O') OR
18546 (NVL(l_enc_upg_option, 'N') = 'O')
18547 )
18548 THEN
18549 NULL;
18550 --
18551 --
18552
18553 l_ccid := AcctDerRule_7(
18554 p_application_id => p_application_id
18555 , p_ae_header_id => l_ae_header_id
18556 , p_source_1 => p_source_1
18557 , p_source_2 => p_source_2
18558 , x_transaction_coa_id => l_adr_transaction_coa_id
18559 , x_accounting_coa_id => l_adr_accounting_coa_id
18560 , x_value_type_code => l_adr_value_type_code
18561 , p_side => 'NA'
18562 );
18563
18564 xla_ae_lines_pkg.set_ccid(
18565 p_code_combination_id => l_ccid
18566 , p_value_type_code => l_adr_value_type_code
18567 , p_transaction_coa_id => l_adr_transaction_coa_id
18568 , p_accounting_coa_id => l_adr_accounting_coa_id
18569 , p_adr_code => 'CLEARING'
18570 , p_adr_type_code => 'S'
18571 , p_component_type => l_component_type
18572 , p_component_code => l_component_code
18573 , p_component_type_code => l_component_type_code
18574 , p_component_appl_id => l_component_appl_id
18575 , p_amb_context_code => l_amb_context_code
18576 , p_side => 'NA'
18577 );
18578
18579
18580 --
18581 --
18582 END IF;
18583 --
18584 -- Bug 4922099
18585 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18586 (NVL(l_enc_upg_option, 'N') = 'O')
18587 ) AND
18588 (l_bflow_method_code = 'PRIOR_ENTRY')
18589 )
18590 THEN
18591 IF
18592 --
18593 1 = 2
18594 --
18595 THEN
18596 xla_accounting_err_pkg.build_message
18597 (p_appli_s_name => 'XLA'
18598 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18599 ,p_token_1 => 'LINE_NUMBER'
18600 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
18601 ,p_token_2 => 'LINE_TYPE_NAME'
18602 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
18603 l_component_type
18604 ,l_component_code
18605 ,l_component_type_code
18606 ,l_component_appl_id
18610 )
18607 ,l_amb_context_code
18608 ,l_entity_code
18609 ,l_event_class_code
18611 ,p_token_3 => 'OWNER'
18612 ,p_value_3 => xla_lookups_pkg.get_meaning(
18613 p_lookup_type => 'XLA_OWNER_TYPE'
18614 ,p_lookup_code => l_component_type_code
18615 )
18616 ,p_token_4 => 'PRODUCT_NAME'
18617 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18618 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18619 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18620 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18621 ,p_ae_header_id => NULL
18622 );
18623
18624 IF (C_LEVEL_ERROR>= g_log_level) THEN
18625 trace
18626 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18627 ,p_level => C_LEVEL_ERROR
18628 ,p_module => l_log_module);
18629 END IF;
18630 END IF;
18631 END IF;
18632 --
18633 --
18634 ------------------------------------------------------------------------------------------------
18635 -- 4219869 Business Flow
18636 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18637 -- Prior Entry. Currently, the following code is always generated.
18638 ------------------------------------------------------------------------------------------------
18639 XLA_AE_LINES_PKG.ValidateCurrentLine;
18640
18641 ------------------------------------------------------------------------------------
18642 -- 4219869 Business Flow
18643 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18644 ------------------------------------------------------------------------------------
18645 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18646
18647 ----------------------------------------------------------------------------------
18648 -- 4219869 Business Flow
18649 -- Update journal entry status -- Need to generate this within IF <condition>
18650 ----------------------------------------------------------------------------------
18651 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18652 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18653 ,p_balance_type_code => l_balance_type_code
18654 );
18655
18656 -------------------------------------------------------------------------------------------
18657 -- 4262811 - Generate the Accrual Reversal lines
18658 -------------------------------------------------------------------------------------------
18659 BEGIN
18660 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18661 (g_array_event(p_event_id).array_value_num('header_index'));
18662 IF l_acc_rev_flag IS NULL THEN
18663 l_acc_rev_flag := 'N';
18664 END IF;
18665 EXCEPTION
18666 WHEN OTHERS THEN
18667 l_acc_rev_flag := 'N';
18668 END;
18669 --
18670 IF (l_acc_rev_flag = 'Y') THEN
18671
18672 -- 4645092 ------------------------------------------------------------------------------
18673 -- To allow MPA report to determine if it should generate report process
18674 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18675 ------------------------------------------------------------------------------------------
18676
18677 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18678 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18679 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
18680 -- call ADRs
18681 -- Bug 4922099
18682 --
18683 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18684 (NVL(l_actual_upg_option, 'N') = 'O') OR
18685 (NVL(l_enc_upg_option, 'N') = 'O')
18686 )
18687 THEN
18688 NULL;
18689 --
18690 --
18691
18692 l_ccid := AcctDerRule_7(
18693 p_application_id => p_application_id
18694 , p_ae_header_id => l_ae_header_id
18695 , p_source_1 => p_source_1
18696 , p_source_2 => p_source_2
18697 , x_transaction_coa_id => l_adr_transaction_coa_id
18698 , x_accounting_coa_id => l_adr_accounting_coa_id
18699 , x_value_type_code => l_adr_value_type_code
18700 , p_side => 'NA'
18701 );
18702
18703 xla_ae_lines_pkg.set_ccid(
18704 p_code_combination_id => l_ccid
18705 , p_value_type_code => l_adr_value_type_code
18706 , p_transaction_coa_id => l_adr_transaction_coa_id
18710 , p_component_type => l_component_type
18707 , p_accounting_coa_id => l_adr_accounting_coa_id
18708 , p_adr_code => 'CLEARING'
18709 , p_adr_type_code => 'S'
18711 , p_component_code => l_component_code
18712 , p_component_type_code => l_component_type_code
18713 , p_component_appl_id => l_component_appl_id
18714 , p_amb_context_code => l_amb_context_code
18715 , p_side => 'NA'
18716 );
18717
18718
18719 --
18720 --
18721 END IF;
18722
18723 --
18724 -- Update the line information that should be overwritten
18725 --
18726 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18727 p_header_num => 1);
18728 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
18729
18730 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18731
18732 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
18733 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18734 END IF;
18735
18736 --
18737 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18738 --
18739 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18740 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
18741 ELSE
18742 ---------------------------------------------------------------------------------------------------
18743 -- 4262811a Switch Sign
18744 ---------------------------------------------------------------------------------------------------
18745 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
18746 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18747 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18748 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18749 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18750 -- 5132302
18751 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18752 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18753
18754 END IF;
18755
18756 -- 4955764
18757 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18758 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18759
18760
18761 XLA_AE_LINES_PKG.ValidateCurrentLine;
18762 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18763
18764 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18765 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18766 ,p_balance_type_code => l_balance_type_code);
18767
18768 END IF;
18769
18770 -----------------------------------------------------------------------------------------
18771 -- 4262811 Multiperiod Accounting
18772 -----------------------------------------------------------------------------------------
18773 -- No MPA option is assigned.
18774
18775
18776 END IF;
18777 END IF;
18778 --
18779
18780 --
18781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18782 trace
18783 (p_msg => 'END of AcctLineType_66'
18784 ,p_level => C_LEVEL_PROCEDURE
18785 ,p_module => l_log_module);
18786 END IF;
18787 --
18788 EXCEPTION
18789 WHEN xla_exceptions_pkg.application_exception THEN
18790 RAISE;
18791 WHEN OTHERS THEN
18792 xla_exceptions_pkg.raise_message
18793 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_66');
18794 END AcctLineType_66;
18795 --
18796
18797 ---------------------------------------
18798 --
18799 -- PRIVATE FUNCTION
18800 -- AcctLineType_67
18801 --
18802 ---------------------------------------
18803 PROCEDURE AcctLineType_67 (
18804 p_application_id IN NUMBER
18805 ,p_event_id IN NUMBER
18806 ,p_calculate_acctd_flag IN VARCHAR2
18807 ,p_calculate_g_l_flag IN VARCHAR2
18808 ,p_actual_flag IN OUT VARCHAR2
18809 ,p_balance_type_code OUT VARCHAR2
18810 ,p_gain_or_loss_ref OUT VARCHAR2
18811
18812 --Transaction Account
18813 , p_source_1 IN NUMBER
18814 --Journal Line Type
18815 , p_source_2 IN VARCHAR2
18816 --Entered Amount
18817 , p_source_3 IN NUMBER
18818 --First Distribution Identifier
18819 , p_source_5 IN NUMBER
18820 --Distribution Type
18821 , p_source_6 IN VARCHAR2
18822 --Currency Code
18823 , p_source_7 IN VARCHAR2
18824 --Currency Conversion Date
18825 , p_source_8 IN DATE
18826 --Currency Conversion Rate
18827 , p_source_9 IN NUMBER
18828 --Currency Conversion Type
18829 , p_source_10 IN VARCHAR2
18833 IS
18830 --Accounted Amount
18831 , p_source_11 IN NUMBER
18832 )
18834
18835 l_component_type VARCHAR2(80);
18836 l_component_code VARCHAR2(30);
18837 l_component_type_code VARCHAR2(1);
18838 l_component_appl_id INTEGER;
18839 l_amb_context_code VARCHAR2(30);
18840 l_entity_code VARCHAR2(30);
18841 l_event_class_code VARCHAR2(30);
18842 l_ae_header_id NUMBER;
18843 l_event_type_code VARCHAR2(30);
18844 l_line_definition_code VARCHAR2(30);
18845 l_line_definition_owner_code VARCHAR2(1);
18846 --
18847 -- adr variables
18848 l_segment VARCHAR2(30);
18849 l_ccid NUMBER;
18850 l_adr_transaction_coa_id NUMBER;
18851 l_adr_accounting_coa_id NUMBER;
18852 l_adr_flexfield_segment_code VARCHAR2(30);
18853 l_adr_flex_value_set_id NUMBER;
18854 l_adr_value_type_code VARCHAR2(30);
18855 l_adr_value_combination_id NUMBER;
18856 l_adr_value_segment_code VARCHAR2(30);
18857
18858 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
18859 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
18860 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
18861 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
18862
18863 -- 4262811 Variables ------------------------------------------------------------------------------------------
18864 l_entered_amt_idx NUMBER;
18865 l_accted_amt_idx NUMBER;
18866 l_acc_rev_flag VARCHAR2(1);
18867 l_accrual_line_num NUMBER;
18868 l_tmp_amt NUMBER;
18869 l_acc_rev_natural_side_code VARCHAR2(1);
18870
18871 l_num_entries NUMBER;
18872 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
18873 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
18874 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
18875 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
18876 l_recog_line_1 NUMBER;
18877 l_recog_line_2 NUMBER;
18878
18879 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
18880 l_bflow_applied_to_amt NUMBER; -- 5132302
18881 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
18882
18883 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18884
18885 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
18886 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
18887
18888 ---------------------------------------------------------------------------------------------------------------
18889
18890
18891 --
18892 -- bulk performance
18893 --
18894 l_balance_type_code VARCHAR2(1);
18895 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
18896 l_log_module VARCHAR2(240);
18897
18898 --
18899 -- Upgrade strategy
18900 --
18901 l_actual_upg_option VARCHAR2(1);
18902 l_enc_upg_option VARCHAR2(1);
18903
18904 --
18905 BEGIN
18906 --
18907 IF g_log_enabled THEN
18908 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
18909 END IF;
18910 --
18911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18912
18913 trace
18914 (p_msg => 'BEGIN of AcctLineType_67'
18915 ,p_level => C_LEVEL_PROCEDURE
18916 ,p_module => l_log_module);
18917
18918 END IF;
18919 --
18920 l_component_type := 'AMB_JLT';
18921 l_component_code := 'CLEARING';
18922 l_component_type_code := 'S';
18923 l_component_appl_id := 555;
18924 l_amb_context_code := 'DEFAULT';
18925 l_entity_code := 'PURCHASING';
18926 l_event_class_code := 'DELIVER';
18927 l_event_type_code := 'LOG_PO_RCV_ADJ';
18928 l_line_definition_owner_code := 'S';
18929 l_line_definition_code := 'LOG_PO_RCV_ADJ';
18930 --
18931 l_balance_type_code := 'A';
18932 l_segment := NULL;
18933 l_ccid := NULL;
18934 l_adr_transaction_coa_id := NULL;
18935 l_adr_accounting_coa_id := NULL;
18936 l_adr_flexfield_segment_code := NULL;
18937 l_adr_flex_value_set_id := NULL;
18938 l_adr_value_type_code := NULL;
18939 l_adr_value_combination_id := NULL;
18940 l_adr_value_segment_code := NULL;
18941
18942 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
18943 l_bflow_class_code := ''; -- 4219869 Business Flow
18944 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
18945 l_budgetary_control_flag := 'N';
18946
18947 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18948 l_bflow_applied_to_amt := NULL; -- 5132302
18949 l_entered_amt_idx := NULL; -- 4262811
18950 l_accted_amt_idx := NULL; -- 4262811
18951 l_acc_rev_flag := NULL; -- 4262811
18952 l_accrual_line_num := NULL; -- 4262811
18953 l_tmp_amt := NULL; -- 4262811
18954 --
18955
18959 ') = 'CLR'
18956 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18957 l_balance_type_code <> 'B' THEN
18958 IF NVL(p_source_2,'
18960 THEN
18961
18962 --
18963 XLA_AE_LINES_PKG.SetNewLine;
18964
18965 p_balance_type_code := l_balance_type_code;
18966 -- set the flag so later we will know whether the gain loss line needs to be created
18967
18968 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18969 p_actual_flag :='A';
18970 END IF;
18971
18972 --
18973 -- bulk performance
18974 --
18975 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18976 p_header_num => 0); -- 4262811
18977 --
18978 -- set accounting line options
18979 --
18980 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18981 p_natural_side_code => 'D'
18982 , p_gain_or_loss_flag => 'N'
18983 , p_gl_transfer_mode_code => 'D'
18984 , p_acct_entry_type_code => 'A'
18985 , p_switch_side_flag => 'Y'
18986 , p_merge_duplicate_code => 'W'
18987 );
18988 --
18989 l_acc_rev_natural_side_code := 'C'; -- 4262811
18990 --
18991 --
18992 -- set accounting line type info
18993 --
18994 xla_ae_lines_pkg.SetAcctLineType
18995 (p_component_type => l_component_type
18996 ,p_event_type_code => l_event_type_code
18997 ,p_line_definition_owner_code => l_line_definition_owner_code
18998 ,p_line_definition_code => l_line_definition_code
18999 ,p_accounting_line_code => l_component_code
19000 ,p_accounting_line_type_code => l_component_type_code
19001 ,p_accounting_line_appl_id => l_component_appl_id
19002 ,p_amb_context_code => l_amb_context_code
19003 ,p_entity_code => l_entity_code
19004 ,p_event_class_code => l_event_class_code);
19005 --
19006 -- set accounting class
19007 --
19008 xla_ae_lines_pkg.SetAcctClass(
19009 p_accounting_class_code => 'CLEARING'
19010 , p_ae_header_id => l_ae_header_id
19011 );
19012
19013 --
19014 -- set rounding class
19015 --
19016 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19017 'CLEARING';
19018
19019 --
19020 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19021 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19022 --
19023 -- bulk performance
19024 --
19025 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19026
19027 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19028 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19029
19030 -- 4955764
19031 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19032 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19033
19034 -- 4458381 Public Sector Enh
19035
19036 --
19037 -- set accounting attributes for the line type
19038 --
19039 l_entered_amt_idx := 3;
19040 l_accted_amt_idx := 8;
19041 l_bflow_applied_to_amt_idx := NULL; -- 5132302
19042 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19043 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
19044 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19045 l_rec_acct_attrs.array_char_value(2) := p_source_6;
19046 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19047 l_rec_acct_attrs.array_num_value(3) := p_source_3;
19048 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19049 l_rec_acct_attrs.array_char_value(4) := p_source_7;
19050 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19051 l_rec_acct_attrs.array_date_value(5) := p_source_8;
19052 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19053 l_rec_acct_attrs.array_num_value(6) := p_source_9;
19054 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19055 l_rec_acct_attrs.array_char_value(7) := p_source_10;
19056 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
19057 l_rec_acct_attrs.array_num_value(8) := p_source_11;
19058
19059 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19060 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19061
19062 ---------------------------------------------------------------------------------------------------------------
19063 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19064 ---------------------------------------------------------------------------------------------------------------
19065 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19066
19067 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19071 (p_source_code => 'LEDGER_CATEGORY_CODE'
19068 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19069
19070 IF xla_accounting_cache_pkg.GetValueChar
19072 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19073 AND l_bflow_method_code = 'PRIOR_ENTRY'
19074 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19075 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19076 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19077 )
19078 THEN
19079 xla_ae_lines_pkg.BflowUpgEntry
19080 (p_business_method_code => l_bflow_method_code
19081 ,p_business_class_code => l_bflow_class_code
19082 ,p_balance_type => l_balance_type_code);
19083 ELSE
19084 NULL;
19085 -- No business flow processing for business flow method of NONE.
19086 END IF;
19087
19088 --
19089 -- call analytical criteria
19090 --
19091
19092 --
19093 -- call description
19094 --
19095 -- No description or it is inherited.
19096 --
19097 -- call ADRs
19098 -- Bug 4922099
19099 --
19100 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19101 (NVL(l_actual_upg_option, 'N') = 'O') OR
19102 (NVL(l_enc_upg_option, 'N') = 'O')
19103 )
19104 THEN
19105 NULL;
19106 --
19107 --
19108
19109 l_ccid := AcctDerRule_7(
19110 p_application_id => p_application_id
19111 , p_ae_header_id => l_ae_header_id
19112 , p_source_1 => p_source_1
19113 , p_source_2 => p_source_2
19114 , x_transaction_coa_id => l_adr_transaction_coa_id
19115 , x_accounting_coa_id => l_adr_accounting_coa_id
19116 , x_value_type_code => l_adr_value_type_code
19117 , p_side => 'NA'
19118 );
19119
19120 xla_ae_lines_pkg.set_ccid(
19121 p_code_combination_id => l_ccid
19122 , p_value_type_code => l_adr_value_type_code
19123 , p_transaction_coa_id => l_adr_transaction_coa_id
19124 , p_accounting_coa_id => l_adr_accounting_coa_id
19125 , p_adr_code => 'CLEARING'
19126 , p_adr_type_code => 'S'
19127 , p_component_type => l_component_type
19128 , p_component_code => l_component_code
19129 , p_component_type_code => l_component_type_code
19130 , p_component_appl_id => l_component_appl_id
19131 , p_amb_context_code => l_amb_context_code
19132 , p_side => 'NA'
19133 );
19134
19135
19136 --
19137 --
19138 END IF;
19139 --
19140 -- Bug 4922099
19141 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19142 (NVL(l_enc_upg_option, 'N') = 'O')
19143 ) AND
19144 (l_bflow_method_code = 'PRIOR_ENTRY')
19145 )
19146 THEN
19147 IF
19148 --
19149 1 = 2
19150 --
19151 THEN
19152 xla_accounting_err_pkg.build_message
19153 (p_appli_s_name => 'XLA'
19154 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19155 ,p_token_1 => 'LINE_NUMBER'
19156 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
19157 ,p_token_2 => 'LINE_TYPE_NAME'
19158 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
19159 l_component_type
19160 ,l_component_code
19161 ,l_component_type_code
19162 ,l_component_appl_id
19163 ,l_amb_context_code
19164 ,l_entity_code
19165 ,l_event_class_code
19166 )
19167 ,p_token_3 => 'OWNER'
19168 ,p_value_3 => xla_lookups_pkg.get_meaning(
19169 p_lookup_type => 'XLA_OWNER_TYPE'
19170 ,p_lookup_code => l_component_type_code
19171 )
19172 ,p_token_4 => 'PRODUCT_NAME'
19173 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19174 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19175 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19176 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19180 IF (C_LEVEL_ERROR>= g_log_level) THEN
19177 ,p_ae_header_id => NULL
19178 );
19179
19181 trace
19182 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19183 ,p_level => C_LEVEL_ERROR
19184 ,p_module => l_log_module);
19185 END IF;
19186 END IF;
19187 END IF;
19188 --
19189 --
19190 ------------------------------------------------------------------------------------------------
19191 -- 4219869 Business Flow
19192 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19193 -- Prior Entry. Currently, the following code is always generated.
19194 ------------------------------------------------------------------------------------------------
19195 XLA_AE_LINES_PKG.ValidateCurrentLine;
19196
19197 ------------------------------------------------------------------------------------
19198 -- 4219869 Business Flow
19199 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19200 ------------------------------------------------------------------------------------
19201 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19202
19203 ----------------------------------------------------------------------------------
19204 -- 4219869 Business Flow
19205 -- Update journal entry status -- Need to generate this within IF <condition>
19206 ----------------------------------------------------------------------------------
19207 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19208 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19209 ,p_balance_type_code => l_balance_type_code
19210 );
19211
19212 -------------------------------------------------------------------------------------------
19213 -- 4262811 - Generate the Accrual Reversal lines
19214 -------------------------------------------------------------------------------------------
19215 BEGIN
19216 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19217 (g_array_event(p_event_id).array_value_num('header_index'));
19218 IF l_acc_rev_flag IS NULL THEN
19219 l_acc_rev_flag := 'N';
19220 END IF;
19221 EXCEPTION
19222 WHEN OTHERS THEN
19223 l_acc_rev_flag := 'N';
19224 END;
19225 --
19226 IF (l_acc_rev_flag = 'Y') THEN
19227
19228 -- 4645092 ------------------------------------------------------------------------------
19229 -- To allow MPA report to determine if it should generate report process
19230 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19231 ------------------------------------------------------------------------------------------
19232
19233 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19234 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19235 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
19236 -- call ADRs
19237 -- Bug 4922099
19238 --
19239 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19240 (NVL(l_actual_upg_option, 'N') = 'O') OR
19241 (NVL(l_enc_upg_option, 'N') = 'O')
19242 )
19243 THEN
19244 NULL;
19245 --
19246 --
19247
19248 l_ccid := AcctDerRule_7(
19249 p_application_id => p_application_id
19250 , p_ae_header_id => l_ae_header_id
19251 , p_source_1 => p_source_1
19252 , p_source_2 => p_source_2
19253 , x_transaction_coa_id => l_adr_transaction_coa_id
19254 , x_accounting_coa_id => l_adr_accounting_coa_id
19255 , x_value_type_code => l_adr_value_type_code
19256 , p_side => 'NA'
19257 );
19258
19259 xla_ae_lines_pkg.set_ccid(
19260 p_code_combination_id => l_ccid
19261 , p_value_type_code => l_adr_value_type_code
19262 , p_transaction_coa_id => l_adr_transaction_coa_id
19263 , p_accounting_coa_id => l_adr_accounting_coa_id
19264 , p_adr_code => 'CLEARING'
19265 , p_adr_type_code => 'S'
19266 , p_component_type => l_component_type
19267 , p_component_code => l_component_code
19268 , p_component_type_code => l_component_type_code
19269 , p_component_appl_id => l_component_appl_id
19270 , p_amb_context_code => l_amb_context_code
19271 , p_side => 'NA'
19272 );
19273
19274
19275 --
19276 --
19277 END IF;
19278
19279 --
19280 -- Update the line information that should be overwritten
19281 --
19282 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19283 p_header_num => 1);
19284 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
19285
19286 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19287
19288 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
19292 --
19289 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19290 END IF;
19291
19293 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19294 --
19295 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19296 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
19297 ELSE
19298 ---------------------------------------------------------------------------------------------------
19299 -- 4262811a Switch Sign
19300 ---------------------------------------------------------------------------------------------------
19301 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
19302 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19303 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19304 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19305 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19306 -- 5132302
19307 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19308 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19309
19310 END IF;
19311
19312 -- 4955764
19313 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19314 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19315
19316
19317 XLA_AE_LINES_PKG.ValidateCurrentLine;
19318 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19319
19320 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19321 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19322 ,p_balance_type_code => l_balance_type_code);
19323
19324 END IF;
19325
19326 -----------------------------------------------------------------------------------------
19327 -- 4262811 Multiperiod Accounting
19328 -----------------------------------------------------------------------------------------
19329 -- No MPA option is assigned.
19330
19331
19332 END IF;
19333 END IF;
19334 --
19335
19336 --
19337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19338 trace
19339 (p_msg => 'END of AcctLineType_67'
19340 ,p_level => C_LEVEL_PROCEDURE
19341 ,p_module => l_log_module);
19342 END IF;
19343 --
19344 EXCEPTION
19345 WHEN xla_exceptions_pkg.application_exception THEN
19346 RAISE;
19347 WHEN OTHERS THEN
19348 xla_exceptions_pkg.raise_message
19349 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_67');
19350 END AcctLineType_67;
19351 --
19352
19353 ---------------------------------------
19354 --
19355 -- PRIVATE FUNCTION
19356 -- AcctLineType_68
19357 --
19358 ---------------------------------------
19359 PROCEDURE AcctLineType_68 (
19360 p_application_id IN NUMBER
19361 ,p_event_id IN NUMBER
19362 ,p_calculate_acctd_flag IN VARCHAR2
19363 ,p_calculate_g_l_flag IN VARCHAR2
19364 ,p_actual_flag IN OUT VARCHAR2
19365 ,p_balance_type_code OUT VARCHAR2
19366 ,p_gain_or_loss_ref OUT VARCHAR2
19367
19368 --Transaction Account
19369 , p_source_1 IN NUMBER
19370 --Journal Line Type
19371 , p_source_2 IN VARCHAR2
19372 --Entered Amount
19373 , p_source_3 IN NUMBER
19374 --First Distribution Identifier
19375 , p_source_5 IN NUMBER
19376 --Distribution Type
19377 , p_source_6 IN VARCHAR2
19378 --Currency Code
19379 , p_source_7 IN VARCHAR2
19380 --Currency Conversion Date
19381 , p_source_8 IN DATE
19382 --Currency Conversion Rate
19383 , p_source_9 IN NUMBER
19384 --Currency Conversion Type
19385 , p_source_10 IN VARCHAR2
19386 --Accounted Amount
19387 , p_source_11 IN NUMBER
19388 )
19389 IS
19390
19391 l_component_type VARCHAR2(80);
19392 l_component_code VARCHAR2(30);
19393 l_component_type_code VARCHAR2(1);
19394 l_component_appl_id INTEGER;
19395 l_amb_context_code VARCHAR2(30);
19396 l_entity_code VARCHAR2(30);
19397 l_event_class_code VARCHAR2(30);
19398 l_ae_header_id NUMBER;
19399 l_event_type_code VARCHAR2(30);
19400 l_line_definition_code VARCHAR2(30);
19401 l_line_definition_owner_code VARCHAR2(1);
19402 --
19403 -- adr variables
19404 l_segment VARCHAR2(30);
19405 l_ccid NUMBER;
19406 l_adr_transaction_coa_id NUMBER;
19407 l_adr_accounting_coa_id NUMBER;
19408 l_adr_flexfield_segment_code VARCHAR2(30);
19409 l_adr_flex_value_set_id NUMBER;
19410 l_adr_value_type_code VARCHAR2(30);
19411 l_adr_value_combination_id NUMBER;
19412 l_adr_value_segment_code VARCHAR2(30);
19413
19414 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
19415 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
19419 -- 4262811 Variables ------------------------------------------------------------------------------------------
19416 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
19417 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
19418
19420 l_entered_amt_idx NUMBER;
19421 l_accted_amt_idx NUMBER;
19422 l_acc_rev_flag VARCHAR2(1);
19423 l_accrual_line_num NUMBER;
19424 l_tmp_amt NUMBER;
19425 l_acc_rev_natural_side_code VARCHAR2(1);
19426
19427 l_num_entries NUMBER;
19428 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
19429 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
19430 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
19431 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
19432 l_recog_line_1 NUMBER;
19433 l_recog_line_2 NUMBER;
19434
19435 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
19436 l_bflow_applied_to_amt NUMBER; -- 5132302
19437 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
19438
19439 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19440
19441 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
19442 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
19443
19444 ---------------------------------------------------------------------------------------------------------------
19445
19446
19447 --
19448 -- bulk performance
19449 --
19450 l_balance_type_code VARCHAR2(1);
19451 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
19452 l_log_module VARCHAR2(240);
19453
19454 --
19455 -- Upgrade strategy
19456 --
19457 l_actual_upg_option VARCHAR2(1);
19458 l_enc_upg_option VARCHAR2(1);
19459
19460 --
19461 BEGIN
19462 --
19463 IF g_log_enabled THEN
19464 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
19465 END IF;
19466 --
19467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19468
19469 trace
19470 (p_msg => 'BEGIN of AcctLineType_68'
19471 ,p_level => C_LEVEL_PROCEDURE
19472 ,p_module => l_log_module);
19473
19474 END IF;
19475 --
19476 l_component_type := 'AMB_JLT';
19477 l_component_code := 'CLS';
19478 l_component_type_code := 'S';
19479 l_component_appl_id := 555;
19480 l_amb_context_code := 'DEFAULT';
19481 l_entity_code := 'PRODUCTION';
19482 l_event_class_code := 'BATCH_CLOSE';
19483 l_event_type_code := 'CLOS';
19484 l_line_definition_owner_code := 'S';
19485 l_line_definition_code := 'BATCH_CLOSE';
19486 --
19487 l_balance_type_code := 'A';
19488 l_segment := NULL;
19489 l_ccid := NULL;
19490 l_adr_transaction_coa_id := NULL;
19491 l_adr_accounting_coa_id := NULL;
19492 l_adr_flexfield_segment_code := NULL;
19493 l_adr_flex_value_set_id := NULL;
19494 l_adr_value_type_code := NULL;
19495 l_adr_value_combination_id := NULL;
19496 l_adr_value_segment_code := NULL;
19497
19498 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
19499 l_bflow_class_code := ''; -- 4219869 Business Flow
19500 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
19501 l_budgetary_control_flag := 'N';
19502
19503 l_bflow_applied_to_amt_idx := NULL; -- 5132302
19504 l_bflow_applied_to_amt := NULL; -- 5132302
19505 l_entered_amt_idx := NULL; -- 4262811
19506 l_accted_amt_idx := NULL; -- 4262811
19507 l_acc_rev_flag := NULL; -- 4262811
19508 l_accrual_line_num := NULL; -- 4262811
19509 l_tmp_amt := NULL; -- 4262811
19510 --
19511
19512 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19513 l_balance_type_code <> 'B' THEN
19514 IF NVL(p_source_2,'
19515 ') = 'CLS'
19516 THEN
19517
19518 --
19519 XLA_AE_LINES_PKG.SetNewLine;
19520
19521 p_balance_type_code := l_balance_type_code;
19522 -- set the flag so later we will know whether the gain loss line needs to be created
19523
19524 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19525 p_actual_flag :='A';
19526 END IF;
19527
19528 --
19529 -- bulk performance
19530 --
19531 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19532 p_header_num => 0); -- 4262811
19533 --
19534 -- set accounting line options
19535 --
19536 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19537 p_natural_side_code => 'D'
19538 , p_gain_or_loss_flag => 'N'
19539 , p_gl_transfer_mode_code => 'D'
19540 , p_acct_entry_type_code => 'A'
19541 , p_switch_side_flag => 'Y'
19542 , p_merge_duplicate_code => 'W'
19543 );
19544 --
19548 -- set accounting line type info
19545 l_acc_rev_natural_side_code := 'C'; -- 4262811
19546 --
19547 --
19549 --
19550 xla_ae_lines_pkg.SetAcctLineType
19551 (p_component_type => l_component_type
19552 ,p_event_type_code => l_event_type_code
19553 ,p_line_definition_owner_code => l_line_definition_owner_code
19554 ,p_line_definition_code => l_line_definition_code
19555 ,p_accounting_line_code => l_component_code
19556 ,p_accounting_line_type_code => l_component_type_code
19557 ,p_accounting_line_appl_id => l_component_appl_id
19558 ,p_amb_context_code => l_amb_context_code
19559 ,p_entity_code => l_entity_code
19560 ,p_event_class_code => l_event_class_code);
19561 --
19562 -- set accounting class
19563 --
19564 xla_ae_lines_pkg.SetAcctClass(
19565 p_accounting_class_code => 'CLS'
19566 , p_ae_header_id => l_ae_header_id
19567 );
19568
19569 --
19570 -- set rounding class
19571 --
19572 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19573 'CLS';
19574
19575 --
19576 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19577 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19578 --
19579 -- bulk performance
19580 --
19581 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19582
19583 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19584 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19585
19586 -- 4955764
19587 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19588 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19589
19590 -- 4458381 Public Sector Enh
19591
19592 --
19593 -- set accounting attributes for the line type
19594 --
19595 l_entered_amt_idx := 3;
19596 l_accted_amt_idx := 8;
19597 l_bflow_applied_to_amt_idx := NULL; -- 5132302
19598 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19599 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
19600 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19601 l_rec_acct_attrs.array_char_value(2) := p_source_6;
19602 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19603 l_rec_acct_attrs.array_num_value(3) := p_source_3;
19604 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19605 l_rec_acct_attrs.array_char_value(4) := p_source_7;
19606 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19607 l_rec_acct_attrs.array_date_value(5) := p_source_8;
19608 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19609 l_rec_acct_attrs.array_num_value(6) := p_source_9;
19610 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19611 l_rec_acct_attrs.array_char_value(7) := p_source_10;
19612 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
19613 l_rec_acct_attrs.array_num_value(8) := p_source_11;
19614
19615 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19616 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19617
19618 ---------------------------------------------------------------------------------------------------------------
19619 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19620 ---------------------------------------------------------------------------------------------------------------
19621 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19622
19623 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19624 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19625
19626 IF xla_accounting_cache_pkg.GetValueChar
19627 (p_source_code => 'LEDGER_CATEGORY_CODE'
19628 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19629 AND l_bflow_method_code = 'PRIOR_ENTRY'
19630 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19631 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19632 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19633 )
19634 THEN
19635 xla_ae_lines_pkg.BflowUpgEntry
19636 (p_business_method_code => l_bflow_method_code
19637 ,p_business_class_code => l_bflow_class_code
19638 ,p_balance_type => l_balance_type_code);
19639 ELSE
19640 NULL;
19641 -- No business flow processing for business flow method of NONE.
19642 END IF;
19643
19644 --
19645 -- call analytical criteria
19646 --
19647
19648 --
19649 -- call description
19650 --
19651 -- No description or it is inherited.
19652 --
19653 -- call ADRs
19654 -- Bug 4922099
19655 --
19656 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19657 (NVL(l_actual_upg_option, 'N') = 'O') OR
19661 NULL;
19658 (NVL(l_enc_upg_option, 'N') = 'O')
19659 )
19660 THEN
19662 --
19663 --
19664
19665 l_ccid := AcctDerRule_8(
19666 p_application_id => p_application_id
19667 , p_ae_header_id => l_ae_header_id
19668 , p_source_1 => p_source_1
19669 , p_source_2 => p_source_2
19670 , x_transaction_coa_id => l_adr_transaction_coa_id
19671 , x_accounting_coa_id => l_adr_accounting_coa_id
19672 , x_value_type_code => l_adr_value_type_code
19673 , p_side => 'NA'
19674 );
19675
19676 xla_ae_lines_pkg.set_ccid(
19677 p_code_combination_id => l_ccid
19678 , p_value_type_code => l_adr_value_type_code
19679 , p_transaction_coa_id => l_adr_transaction_coa_id
19680 , p_accounting_coa_id => l_adr_accounting_coa_id
19681 , p_adr_code => 'CLS'
19682 , p_adr_type_code => 'S'
19683 , p_component_type => l_component_type
19684 , p_component_code => l_component_code
19685 , p_component_type_code => l_component_type_code
19686 , p_component_appl_id => l_component_appl_id
19687 , p_amb_context_code => l_amb_context_code
19688 , p_side => 'NA'
19689 );
19690
19691
19692 --
19693 --
19694 END IF;
19695 --
19696 -- Bug 4922099
19697 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19698 (NVL(l_enc_upg_option, 'N') = 'O')
19699 ) AND
19700 (l_bflow_method_code = 'PRIOR_ENTRY')
19701 )
19702 THEN
19703 IF
19704 --
19705 1 = 2
19706 --
19707 THEN
19708 xla_accounting_err_pkg.build_message
19709 (p_appli_s_name => 'XLA'
19710 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19711 ,p_token_1 => 'LINE_NUMBER'
19712 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
19713 ,p_token_2 => 'LINE_TYPE_NAME'
19714 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
19715 l_component_type
19716 ,l_component_code
19717 ,l_component_type_code
19718 ,l_component_appl_id
19719 ,l_amb_context_code
19720 ,l_entity_code
19721 ,l_event_class_code
19722 )
19723 ,p_token_3 => 'OWNER'
19724 ,p_value_3 => xla_lookups_pkg.get_meaning(
19725 p_lookup_type => 'XLA_OWNER_TYPE'
19726 ,p_lookup_code => l_component_type_code
19727 )
19728 ,p_token_4 => 'PRODUCT_NAME'
19729 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19730 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19731 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19732 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19733 ,p_ae_header_id => NULL
19734 );
19735
19736 IF (C_LEVEL_ERROR>= g_log_level) THEN
19737 trace
19738 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19739 ,p_level => C_LEVEL_ERROR
19740 ,p_module => l_log_module);
19741 END IF;
19742 END IF;
19743 END IF;
19744 --
19745 --
19746 ------------------------------------------------------------------------------------------------
19747 -- 4219869 Business Flow
19748 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19749 -- Prior Entry. Currently, the following code is always generated.
19750 ------------------------------------------------------------------------------------------------
19751 XLA_AE_LINES_PKG.ValidateCurrentLine;
19752
19753 ------------------------------------------------------------------------------------
19754 -- 4219869 Business Flow
19755 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19756 ------------------------------------------------------------------------------------
19757 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19758
19759 ----------------------------------------------------------------------------------
19763 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19760 -- 4219869 Business Flow
19761 -- Update journal entry status -- Need to generate this within IF <condition>
19762 ----------------------------------------------------------------------------------
19764 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19765 ,p_balance_type_code => l_balance_type_code
19766 );
19767
19768 -------------------------------------------------------------------------------------------
19769 -- 4262811 - Generate the Accrual Reversal lines
19770 -------------------------------------------------------------------------------------------
19771 BEGIN
19772 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19773 (g_array_event(p_event_id).array_value_num('header_index'));
19774 IF l_acc_rev_flag IS NULL THEN
19775 l_acc_rev_flag := 'N';
19776 END IF;
19777 EXCEPTION
19778 WHEN OTHERS THEN
19779 l_acc_rev_flag := 'N';
19780 END;
19781 --
19782 IF (l_acc_rev_flag = 'Y') THEN
19783
19784 -- 4645092 ------------------------------------------------------------------------------
19785 -- To allow MPA report to determine if it should generate report process
19786 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19787 ------------------------------------------------------------------------------------------
19788
19789 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19790 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19791 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
19792 -- call ADRs
19793 -- Bug 4922099
19794 --
19795 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19796 (NVL(l_actual_upg_option, 'N') = 'O') OR
19797 (NVL(l_enc_upg_option, 'N') = 'O')
19798 )
19799 THEN
19800 NULL;
19801 --
19802 --
19803
19804 l_ccid := AcctDerRule_8(
19805 p_application_id => p_application_id
19806 , p_ae_header_id => l_ae_header_id
19807 , p_source_1 => p_source_1
19808 , p_source_2 => p_source_2
19809 , x_transaction_coa_id => l_adr_transaction_coa_id
19810 , x_accounting_coa_id => l_adr_accounting_coa_id
19811 , x_value_type_code => l_adr_value_type_code
19812 , p_side => 'NA'
19813 );
19814
19815 xla_ae_lines_pkg.set_ccid(
19816 p_code_combination_id => l_ccid
19817 , p_value_type_code => l_adr_value_type_code
19818 , p_transaction_coa_id => l_adr_transaction_coa_id
19819 , p_accounting_coa_id => l_adr_accounting_coa_id
19820 , p_adr_code => 'CLS'
19821 , p_adr_type_code => 'S'
19822 , p_component_type => l_component_type
19823 , p_component_code => l_component_code
19824 , p_component_type_code => l_component_type_code
19825 , p_component_appl_id => l_component_appl_id
19826 , p_amb_context_code => l_amb_context_code
19827 , p_side => 'NA'
19828 );
19829
19830
19831 --
19832 --
19833 END IF;
19834
19835 --
19836 -- Update the line information that should be overwritten
19837 --
19838 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19839 p_header_num => 1);
19840 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
19841
19842 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19843
19844 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
19845 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19846 END IF;
19847
19848 --
19849 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19850 --
19851 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19852 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
19853 ELSE
19854 ---------------------------------------------------------------------------------------------------
19855 -- 4262811a Switch Sign
19856 ---------------------------------------------------------------------------------------------------
19857 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
19858 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19859 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19860 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19861 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19862 -- 5132302
19863 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19864 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19865
19866 END IF;
19867
19871
19868 -- 4955764
19869 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19870 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19872
19873 XLA_AE_LINES_PKG.ValidateCurrentLine;
19874 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19875
19876 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19877 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19878 ,p_balance_type_code => l_balance_type_code);
19879
19880 END IF;
19881
19882 -----------------------------------------------------------------------------------------
19883 -- 4262811 Multiperiod Accounting
19884 -----------------------------------------------------------------------------------------
19885 -- No MPA option is assigned.
19886
19887
19888 END IF;
19889 END IF;
19890 --
19891
19892 --
19893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19894 trace
19895 (p_msg => 'END of AcctLineType_68'
19896 ,p_level => C_LEVEL_PROCEDURE
19897 ,p_module => l_log_module);
19898 END IF;
19899 --
19900 EXCEPTION
19901 WHEN xla_exceptions_pkg.application_exception THEN
19902 RAISE;
19903 WHEN OTHERS THEN
19904 xla_exceptions_pkg.raise_message
19905 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_68');
19906 END AcctLineType_68;
19907 --
19908
19909 ---------------------------------------
19910 --
19911 -- PRIVATE FUNCTION
19912 -- AcctLineType_69
19913 --
19914 ---------------------------------------
19915 PROCEDURE AcctLineType_69 (
19916 p_application_id IN NUMBER
19917 ,p_event_id IN NUMBER
19918 ,p_calculate_acctd_flag IN VARCHAR2
19919 ,p_calculate_g_l_flag IN VARCHAR2
19920 ,p_actual_flag IN OUT VARCHAR2
19921 ,p_balance_type_code OUT VARCHAR2
19922 ,p_gain_or_loss_ref OUT VARCHAR2
19923
19924 --Transaction Account
19925 , p_source_1 IN NUMBER
19926 --Journal Line Type
19927 , p_source_2 IN VARCHAR2
19928 --Entered Amount
19929 , p_source_3 IN NUMBER
19930 --First Distribution Identifier
19931 , p_source_5 IN NUMBER
19932 --Distribution Type
19933 , p_source_6 IN VARCHAR2
19934 --Currency Code
19935 , p_source_7 IN VARCHAR2
19936 --Currency Conversion Date
19937 , p_source_8 IN DATE
19938 --Currency Conversion Rate
19939 , p_source_9 IN NUMBER
19940 --Currency Conversion Type
19941 , p_source_10 IN VARCHAR2
19942 --Accounted Amount
19943 , p_source_11 IN NUMBER
19944 )
19945 IS
19946
19947 l_component_type VARCHAR2(80);
19948 l_component_code VARCHAR2(30);
19949 l_component_type_code VARCHAR2(1);
19950 l_component_appl_id INTEGER;
19951 l_amb_context_code VARCHAR2(30);
19952 l_entity_code VARCHAR2(30);
19953 l_event_class_code VARCHAR2(30);
19954 l_ae_header_id NUMBER;
19955 l_event_type_code VARCHAR2(30);
19956 l_line_definition_code VARCHAR2(30);
19957 l_line_definition_owner_code VARCHAR2(1);
19958 --
19959 -- adr variables
19960 l_segment VARCHAR2(30);
19961 l_ccid NUMBER;
19962 l_adr_transaction_coa_id NUMBER;
19963 l_adr_accounting_coa_id NUMBER;
19964 l_adr_flexfield_segment_code VARCHAR2(30);
19965 l_adr_flex_value_set_id NUMBER;
19966 l_adr_value_type_code VARCHAR2(30);
19967 l_adr_value_combination_id NUMBER;
19968 l_adr_value_segment_code VARCHAR2(30);
19969
19970 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
19971 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
19972 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
19973 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
19974
19975 -- 4262811 Variables ------------------------------------------------------------------------------------------
19976 l_entered_amt_idx NUMBER;
19977 l_accted_amt_idx NUMBER;
19978 l_acc_rev_flag VARCHAR2(1);
19979 l_accrual_line_num NUMBER;
19980 l_tmp_amt NUMBER;
19981 l_acc_rev_natural_side_code VARCHAR2(1);
19982
19983 l_num_entries NUMBER;
19984 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
19985 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
19986 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
19987 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
19988 l_recog_line_1 NUMBER;
19989 l_recog_line_2 NUMBER;
19990
19991 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
19992 l_bflow_applied_to_amt NUMBER; -- 5132302
19993 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
19994
19995 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19996
19997 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
20001
19998 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
19999
20000 ---------------------------------------------------------------------------------------------------------------
20002
20003 --
20004 -- bulk performance
20005 --
20006 l_balance_type_code VARCHAR2(1);
20007 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
20008 l_log_module VARCHAR2(240);
20009
20010 --
20011 -- Upgrade strategy
20012 --
20013 l_actual_upg_option VARCHAR2(1);
20014 l_enc_upg_option VARCHAR2(1);
20015
20016 --
20017 BEGIN
20018 --
20019 IF g_log_enabled THEN
20020 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
20021 END IF;
20022 --
20023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20024
20025 trace
20026 (p_msg => 'BEGIN of AcctLineType_69'
20027 ,p_level => C_LEVEL_PROCEDURE
20028 ,p_module => l_log_module);
20029
20030 END IF;
20031 --
20032 l_component_type := 'AMB_JLT';
20033 l_component_code := 'COGS';
20034 l_component_type_code := 'S';
20035 l_component_appl_id := 555;
20036 l_amb_context_code := 'DEFAULT';
20037 l_entity_code := 'ORDERMANAGEMENT';
20038 l_event_class_code := 'SHIPPING';
20039 l_event_type_code := 'COGS_RECOGNITION_ADJ';
20040 l_line_definition_owner_code := 'S';
20041 l_line_definition_code := 'COGS_RECOGNITION_ADJ';
20042 --
20043 l_balance_type_code := 'A';
20044 l_segment := NULL;
20045 l_ccid := NULL;
20046 l_adr_transaction_coa_id := NULL;
20047 l_adr_accounting_coa_id := NULL;
20048 l_adr_flexfield_segment_code := NULL;
20049 l_adr_flex_value_set_id := NULL;
20050 l_adr_value_type_code := NULL;
20051 l_adr_value_combination_id := NULL;
20052 l_adr_value_segment_code := NULL;
20053
20054 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
20055 l_bflow_class_code := ''; -- 4219869 Business Flow
20056 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
20057 l_budgetary_control_flag := 'N';
20058
20059 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20060 l_bflow_applied_to_amt := NULL; -- 5132302
20061 l_entered_amt_idx := NULL; -- 4262811
20062 l_accted_amt_idx := NULL; -- 4262811
20063 l_acc_rev_flag := NULL; -- 4262811
20064 l_accrual_line_num := NULL; -- 4262811
20065 l_tmp_amt := NULL; -- 4262811
20066 --
20067
20068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20069 l_balance_type_code <> 'B' THEN
20070 IF NVL(p_source_2,'
20071 ') = 'COGS'
20072 THEN
20073
20074 --
20075 XLA_AE_LINES_PKG.SetNewLine;
20076
20077 p_balance_type_code := l_balance_type_code;
20078 -- set the flag so later we will know whether the gain loss line needs to be created
20079
20080 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20081 p_actual_flag :='A';
20082 END IF;
20083
20084 --
20085 -- bulk performance
20086 --
20087 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20088 p_header_num => 0); -- 4262811
20089 --
20090 -- set accounting line options
20091 --
20092 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20093 p_natural_side_code => 'D'
20094 , p_gain_or_loss_flag => 'N'
20095 , p_gl_transfer_mode_code => 'D'
20096 , p_acct_entry_type_code => 'A'
20097 , p_switch_side_flag => 'Y'
20098 , p_merge_duplicate_code => 'W'
20099 );
20100 --
20101 l_acc_rev_natural_side_code := 'C'; -- 4262811
20102 --
20103 --
20104 -- set accounting line type info
20105 --
20106 xla_ae_lines_pkg.SetAcctLineType
20107 (p_component_type => l_component_type
20108 ,p_event_type_code => l_event_type_code
20109 ,p_line_definition_owner_code => l_line_definition_owner_code
20110 ,p_line_definition_code => l_line_definition_code
20111 ,p_accounting_line_code => l_component_code
20112 ,p_accounting_line_type_code => l_component_type_code
20113 ,p_accounting_line_appl_id => l_component_appl_id
20114 ,p_amb_context_code => l_amb_context_code
20115 ,p_entity_code => l_entity_code
20116 ,p_event_class_code => l_event_class_code);
20117 --
20118 -- set accounting class
20119 --
20120 xla_ae_lines_pkg.SetAcctClass(
20121 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
20122 , p_ae_header_id => l_ae_header_id
20123 );
20124
20125 --
20126 -- set rounding class
20127 --
20128 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20129 'COST_OF_GOODS_SOLD';
20130
20131 --
20132 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20136 --
20133 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20134 --
20135 -- bulk performance
20137 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20138
20139 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20140 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20141
20142 -- 4955764
20143 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20144 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20145
20146 -- 4458381 Public Sector Enh
20147
20148 --
20149 -- set accounting attributes for the line type
20150 --
20151 l_entered_amt_idx := 3;
20152 l_accted_amt_idx := 8;
20153 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20154 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20155 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
20156 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20157 l_rec_acct_attrs.array_char_value(2) := p_source_6;
20158 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20159 l_rec_acct_attrs.array_num_value(3) := p_source_3;
20160 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20161 l_rec_acct_attrs.array_char_value(4) := p_source_7;
20162 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20163 l_rec_acct_attrs.array_date_value(5) := p_source_8;
20164 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20165 l_rec_acct_attrs.array_num_value(6) := p_source_9;
20166 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20167 l_rec_acct_attrs.array_char_value(7) := p_source_10;
20168 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20169 l_rec_acct_attrs.array_num_value(8) := p_source_11;
20170
20171 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20172 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20173
20174 ---------------------------------------------------------------------------------------------------------------
20175 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20176 ---------------------------------------------------------------------------------------------------------------
20177 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20178
20179 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20180 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20181
20182 IF xla_accounting_cache_pkg.GetValueChar
20183 (p_source_code => 'LEDGER_CATEGORY_CODE'
20184 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20185 AND l_bflow_method_code = 'PRIOR_ENTRY'
20186 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20187 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20188 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20189 )
20190 THEN
20191 xla_ae_lines_pkg.BflowUpgEntry
20192 (p_business_method_code => l_bflow_method_code
20193 ,p_business_class_code => l_bflow_class_code
20194 ,p_balance_type => l_balance_type_code);
20195 ELSE
20196 NULL;
20197 -- No business flow processing for business flow method of NONE.
20198 END IF;
20199
20200 --
20201 -- call analytical criteria
20202 --
20203
20204 --
20205 -- call description
20206 --
20207 -- No description or it is inherited.
20208 --
20209 -- call ADRs
20210 -- Bug 4922099
20211 --
20212 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20213 (NVL(l_actual_upg_option, 'N') = 'O') OR
20214 (NVL(l_enc_upg_option, 'N') = 'O')
20215 )
20216 THEN
20217 NULL;
20218 --
20219 --
20220
20221 l_ccid := AcctDerRule_9(
20222 p_application_id => p_application_id
20223 , p_ae_header_id => l_ae_header_id
20224 , p_source_1 => p_source_1
20225 , p_source_2 => p_source_2
20226 , x_transaction_coa_id => l_adr_transaction_coa_id
20227 , x_accounting_coa_id => l_adr_accounting_coa_id
20228 , x_value_type_code => l_adr_value_type_code
20229 , p_side => 'NA'
20230 );
20231
20232 xla_ae_lines_pkg.set_ccid(
20233 p_code_combination_id => l_ccid
20234 , p_value_type_code => l_adr_value_type_code
20235 , p_transaction_coa_id => l_adr_transaction_coa_id
20236 , p_accounting_coa_id => l_adr_accounting_coa_id
20237 , p_adr_code => 'COGS'
20238 , p_adr_type_code => 'S'
20239 , p_component_type => l_component_type
20240 , p_component_code => l_component_code
20241 , p_component_type_code => l_component_type_code
20242 , p_component_appl_id => l_component_appl_id
20243 , p_amb_context_code => l_amb_context_code
20244 , p_side => 'NA'
20245 );
20246
20247
20248 --
20249 --
20253 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20250 END IF;
20251 --
20252 -- Bug 4922099
20254 (NVL(l_enc_upg_option, 'N') = 'O')
20255 ) AND
20256 (l_bflow_method_code = 'PRIOR_ENTRY')
20257 )
20258 THEN
20259 IF
20260 --
20261 1 = 2
20262 --
20263 THEN
20264 xla_accounting_err_pkg.build_message
20265 (p_appli_s_name => 'XLA'
20266 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20267 ,p_token_1 => 'LINE_NUMBER'
20268 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
20269 ,p_token_2 => 'LINE_TYPE_NAME'
20270 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
20271 l_component_type
20272 ,l_component_code
20273 ,l_component_type_code
20274 ,l_component_appl_id
20275 ,l_amb_context_code
20276 ,l_entity_code
20277 ,l_event_class_code
20278 )
20279 ,p_token_3 => 'OWNER'
20280 ,p_value_3 => xla_lookups_pkg.get_meaning(
20281 p_lookup_type => 'XLA_OWNER_TYPE'
20282 ,p_lookup_code => l_component_type_code
20283 )
20284 ,p_token_4 => 'PRODUCT_NAME'
20285 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20286 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20287 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20288 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20289 ,p_ae_header_id => NULL
20290 );
20291
20292 IF (C_LEVEL_ERROR>= g_log_level) THEN
20293 trace
20294 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20295 ,p_level => C_LEVEL_ERROR
20296 ,p_module => l_log_module);
20297 END IF;
20298 END IF;
20299 END IF;
20300 --
20301 --
20302 ------------------------------------------------------------------------------------------------
20303 -- 4219869 Business Flow
20304 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20305 -- Prior Entry. Currently, the following code is always generated.
20306 ------------------------------------------------------------------------------------------------
20307 XLA_AE_LINES_PKG.ValidateCurrentLine;
20308
20309 ------------------------------------------------------------------------------------
20310 -- 4219869 Business Flow
20311 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20312 ------------------------------------------------------------------------------------
20313 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20314
20315 ----------------------------------------------------------------------------------
20316 -- 4219869 Business Flow
20317 -- Update journal entry status -- Need to generate this within IF <condition>
20318 ----------------------------------------------------------------------------------
20319 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20320 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20321 ,p_balance_type_code => l_balance_type_code
20322 );
20323
20324 -------------------------------------------------------------------------------------------
20325 -- 4262811 - Generate the Accrual Reversal lines
20326 -------------------------------------------------------------------------------------------
20327 BEGIN
20328 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20329 (g_array_event(p_event_id).array_value_num('header_index'));
20330 IF l_acc_rev_flag IS NULL THEN
20331 l_acc_rev_flag := 'N';
20332 END IF;
20333 EXCEPTION
20334 WHEN OTHERS THEN
20335 l_acc_rev_flag := 'N';
20336 END;
20337 --
20338 IF (l_acc_rev_flag = 'Y') THEN
20339
20340 -- 4645092 ------------------------------------------------------------------------------
20341 -- To allow MPA report to determine if it should generate report process
20342 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20346 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20343 ------------------------------------------------------------------------------------------
20344
20345 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20347 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
20348 -- call ADRs
20349 -- Bug 4922099
20350 --
20351 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20352 (NVL(l_actual_upg_option, 'N') = 'O') OR
20353 (NVL(l_enc_upg_option, 'N') = 'O')
20354 )
20355 THEN
20356 NULL;
20357 --
20358 --
20359
20360 l_ccid := AcctDerRule_9(
20361 p_application_id => p_application_id
20362 , p_ae_header_id => l_ae_header_id
20363 , p_source_1 => p_source_1
20364 , p_source_2 => p_source_2
20365 , x_transaction_coa_id => l_adr_transaction_coa_id
20366 , x_accounting_coa_id => l_adr_accounting_coa_id
20367 , x_value_type_code => l_adr_value_type_code
20368 , p_side => 'NA'
20369 );
20370
20371 xla_ae_lines_pkg.set_ccid(
20372 p_code_combination_id => l_ccid
20373 , p_value_type_code => l_adr_value_type_code
20374 , p_transaction_coa_id => l_adr_transaction_coa_id
20375 , p_accounting_coa_id => l_adr_accounting_coa_id
20376 , p_adr_code => 'COGS'
20377 , p_adr_type_code => 'S'
20378 , p_component_type => l_component_type
20379 , p_component_code => l_component_code
20380 , p_component_type_code => l_component_type_code
20381 , p_component_appl_id => l_component_appl_id
20382 , p_amb_context_code => l_amb_context_code
20383 , p_side => 'NA'
20384 );
20385
20386
20387 --
20388 --
20389 END IF;
20390
20391 --
20392 -- Update the line information that should be overwritten
20393 --
20394 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20395 p_header_num => 1);
20396 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
20397
20398 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20399
20400 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
20401 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20402 END IF;
20403
20404 --
20405 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20406 --
20407 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20408 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
20409 ELSE
20410 ---------------------------------------------------------------------------------------------------
20411 -- 4262811a Switch Sign
20412 ---------------------------------------------------------------------------------------------------
20413 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
20414 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20415 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20416 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20417 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20418 -- 5132302
20419 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20420 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20421
20422 END IF;
20423
20424 -- 4955764
20425 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20426 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20427
20428
20429 XLA_AE_LINES_PKG.ValidateCurrentLine;
20430 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20431
20432 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20433 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20434 ,p_balance_type_code => l_balance_type_code);
20435
20436 END IF;
20437
20438 -----------------------------------------------------------------------------------------
20439 -- 4262811 Multiperiod Accounting
20440 -----------------------------------------------------------------------------------------
20441 -- No MPA option is assigned.
20442
20443
20444 END IF;
20445 END IF;
20446 --
20447
20448 --
20449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20450 trace
20451 (p_msg => 'END of AcctLineType_69'
20452 ,p_level => C_LEVEL_PROCEDURE
20453 ,p_module => l_log_module);
20454 END IF;
20455 --
20456 EXCEPTION
20457 WHEN xla_exceptions_pkg.application_exception THEN
20458 RAISE;
20459 WHEN OTHERS THEN
20460 xla_exceptions_pkg.raise_message
20461 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_69');
20465 ---------------------------------------
20462 END AcctLineType_69;
20463 --
20464
20466 --
20467 -- PRIVATE FUNCTION
20468 -- AcctLineType_70
20469 --
20470 ---------------------------------------
20471 PROCEDURE AcctLineType_70 (
20472 p_application_id IN NUMBER
20473 ,p_event_id IN NUMBER
20474 ,p_calculate_acctd_flag IN VARCHAR2
20475 ,p_calculate_g_l_flag IN VARCHAR2
20476 ,p_actual_flag IN OUT VARCHAR2
20477 ,p_balance_type_code OUT VARCHAR2
20478 ,p_gain_or_loss_ref OUT VARCHAR2
20479
20480 --Transaction Account
20481 , p_source_1 IN NUMBER
20482 --Journal Line Type
20483 , p_source_2 IN VARCHAR2
20484 --Entered Amount
20485 , p_source_3 IN NUMBER
20486 --First Distribution Identifier
20487 , p_source_5 IN NUMBER
20488 --Distribution Type
20489 , p_source_6 IN VARCHAR2
20490 --Currency Code
20491 , p_source_7 IN VARCHAR2
20492 --Currency Conversion Date
20493 , p_source_8 IN DATE
20494 --Currency Conversion Rate
20495 , p_source_9 IN NUMBER
20496 --Currency Conversion Type
20497 , p_source_10 IN VARCHAR2
20498 --Accounted Amount
20499 , p_source_11 IN NUMBER
20500 )
20501 IS
20502
20503 l_component_type VARCHAR2(80);
20504 l_component_code VARCHAR2(30);
20505 l_component_type_code VARCHAR2(1);
20506 l_component_appl_id INTEGER;
20507 l_amb_context_code VARCHAR2(30);
20508 l_entity_code VARCHAR2(30);
20509 l_event_class_code VARCHAR2(30);
20510 l_ae_header_id NUMBER;
20511 l_event_type_code VARCHAR2(30);
20512 l_line_definition_code VARCHAR2(30);
20513 l_line_definition_owner_code VARCHAR2(1);
20514 --
20515 -- adr variables
20516 l_segment VARCHAR2(30);
20517 l_ccid NUMBER;
20518 l_adr_transaction_coa_id NUMBER;
20519 l_adr_accounting_coa_id NUMBER;
20520 l_adr_flexfield_segment_code VARCHAR2(30);
20521 l_adr_flex_value_set_id NUMBER;
20522 l_adr_value_type_code VARCHAR2(30);
20523 l_adr_value_combination_id NUMBER;
20524 l_adr_value_segment_code VARCHAR2(30);
20525
20526 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
20527 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
20528 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
20529 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
20530
20531 -- 4262811 Variables ------------------------------------------------------------------------------------------
20532 l_entered_amt_idx NUMBER;
20533 l_accted_amt_idx NUMBER;
20534 l_acc_rev_flag VARCHAR2(1);
20535 l_accrual_line_num NUMBER;
20536 l_tmp_amt NUMBER;
20537 l_acc_rev_natural_side_code VARCHAR2(1);
20538
20539 l_num_entries NUMBER;
20540 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
20541 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
20542 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
20543 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
20544 l_recog_line_1 NUMBER;
20545 l_recog_line_2 NUMBER;
20546
20547 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
20548 l_bflow_applied_to_amt NUMBER; -- 5132302
20549 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
20550
20551 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20552
20553 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
20554 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
20555
20556 ---------------------------------------------------------------------------------------------------------------
20557
20558
20559 --
20560 -- bulk performance
20561 --
20562 l_balance_type_code VARCHAR2(1);
20563 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
20564 l_log_module VARCHAR2(240);
20565
20566 --
20567 -- Upgrade strategy
20568 --
20569 l_actual_upg_option VARCHAR2(1);
20570 l_enc_upg_option VARCHAR2(1);
20571
20572 --
20573 BEGIN
20574 --
20575 IF g_log_enabled THEN
20576 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
20577 END IF;
20578 --
20579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20580
20581 trace
20582 (p_msg => 'BEGIN of AcctLineType_70'
20583 ,p_level => C_LEVEL_PROCEDURE
20584 ,p_module => l_log_module);
20585
20586 END IF;
20587 --
20588 l_component_type := 'AMB_JLT';
20589 l_component_code := 'COGS';
20590 l_component_type_code := 'S';
20591 l_component_appl_id := 555;
20592 l_amb_context_code := 'DEFAULT';
20593 l_entity_code := 'INVENTORY';
20594 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
20595 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_TP';
20599 l_balance_type_code := 'A';
20596 l_line_definition_owner_code := 'S';
20597 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_TP';
20598 --
20600 l_segment := NULL;
20601 l_ccid := NULL;
20602 l_adr_transaction_coa_id := NULL;
20603 l_adr_accounting_coa_id := NULL;
20604 l_adr_flexfield_segment_code := NULL;
20605 l_adr_flex_value_set_id := NULL;
20606 l_adr_value_type_code := NULL;
20607 l_adr_value_combination_id := NULL;
20608 l_adr_value_segment_code := NULL;
20609
20610 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
20611 l_bflow_class_code := ''; -- 4219869 Business Flow
20612 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
20613 l_budgetary_control_flag := 'N';
20614
20615 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20616 l_bflow_applied_to_amt := NULL; -- 5132302
20617 l_entered_amt_idx := NULL; -- 4262811
20618 l_accted_amt_idx := NULL; -- 4262811
20619 l_acc_rev_flag := NULL; -- 4262811
20620 l_accrual_line_num := NULL; -- 4262811
20621 l_tmp_amt := NULL; -- 4262811
20622 --
20623
20624 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20625 l_balance_type_code <> 'B' THEN
20626 IF NVL(p_source_2,'
20627 ') = 'COGS'
20628 THEN
20629
20630 --
20631 XLA_AE_LINES_PKG.SetNewLine;
20632
20633 p_balance_type_code := l_balance_type_code;
20634 -- set the flag so later we will know whether the gain loss line needs to be created
20635
20636 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20637 p_actual_flag :='A';
20638 END IF;
20639
20640 --
20641 -- bulk performance
20642 --
20643 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20644 p_header_num => 0); -- 4262811
20645 --
20646 -- set accounting line options
20647 --
20648 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20649 p_natural_side_code => 'D'
20650 , p_gain_or_loss_flag => 'N'
20651 , p_gl_transfer_mode_code => 'D'
20652 , p_acct_entry_type_code => 'A'
20653 , p_switch_side_flag => 'Y'
20654 , p_merge_duplicate_code => 'W'
20655 );
20656 --
20657 l_acc_rev_natural_side_code := 'C'; -- 4262811
20658 --
20659 --
20660 -- set accounting line type info
20661 --
20662 xla_ae_lines_pkg.SetAcctLineType
20663 (p_component_type => l_component_type
20664 ,p_event_type_code => l_event_type_code
20665 ,p_line_definition_owner_code => l_line_definition_owner_code
20666 ,p_line_definition_code => l_line_definition_code
20667 ,p_accounting_line_code => l_component_code
20668 ,p_accounting_line_type_code => l_component_type_code
20669 ,p_accounting_line_appl_id => l_component_appl_id
20670 ,p_amb_context_code => l_amb_context_code
20671 ,p_entity_code => l_entity_code
20672 ,p_event_class_code => l_event_class_code);
20673 --
20674 -- set accounting class
20675 --
20676 xla_ae_lines_pkg.SetAcctClass(
20677 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
20678 , p_ae_header_id => l_ae_header_id
20679 );
20680
20681 --
20682 -- set rounding class
20683 --
20684 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20685 'COST_OF_GOODS_SOLD';
20686
20687 --
20688 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20689 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20690 --
20691 -- bulk performance
20692 --
20693 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20694
20695 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20696 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20697
20698 -- 4955764
20699 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20700 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20701
20702 -- 4458381 Public Sector Enh
20703
20704 --
20705 -- set accounting attributes for the line type
20706 --
20707 l_entered_amt_idx := 3;
20708 l_accted_amt_idx := 8;
20709 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20710 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20711 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
20712 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20713 l_rec_acct_attrs.array_char_value(2) := p_source_6;
20714 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20715 l_rec_acct_attrs.array_num_value(3) := p_source_3;
20716 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20717 l_rec_acct_attrs.array_char_value(4) := p_source_7;
20718 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20722 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20719 l_rec_acct_attrs.array_date_value(5) := p_source_8;
20720 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20721 l_rec_acct_attrs.array_num_value(6) := p_source_9;
20723 l_rec_acct_attrs.array_char_value(7) := p_source_10;
20724 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20725 l_rec_acct_attrs.array_num_value(8) := p_source_11;
20726
20727 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20728 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20729
20730 ---------------------------------------------------------------------------------------------------------------
20731 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20732 ---------------------------------------------------------------------------------------------------------------
20733 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20734
20735 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20736 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20737
20738 IF xla_accounting_cache_pkg.GetValueChar
20739 (p_source_code => 'LEDGER_CATEGORY_CODE'
20740 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20741 AND l_bflow_method_code = 'PRIOR_ENTRY'
20742 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20743 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20744 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20745 )
20746 THEN
20747 xla_ae_lines_pkg.BflowUpgEntry
20748 (p_business_method_code => l_bflow_method_code
20749 ,p_business_class_code => l_bflow_class_code
20750 ,p_balance_type => l_balance_type_code);
20751 ELSE
20752 NULL;
20753 -- No business flow processing for business flow method of NONE.
20754 END IF;
20755
20756 --
20757 -- call analytical criteria
20758 --
20759
20760 --
20761 -- call description
20762 --
20763 -- No description or it is inherited.
20764 --
20765 -- call ADRs
20766 -- Bug 4922099
20767 --
20768 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20769 (NVL(l_actual_upg_option, 'N') = 'O') OR
20770 (NVL(l_enc_upg_option, 'N') = 'O')
20771 )
20772 THEN
20773 NULL;
20774 --
20775 --
20776
20777 l_ccid := AcctDerRule_9(
20778 p_application_id => p_application_id
20779 , p_ae_header_id => l_ae_header_id
20780 , p_source_1 => p_source_1
20781 , p_source_2 => p_source_2
20782 , x_transaction_coa_id => l_adr_transaction_coa_id
20783 , x_accounting_coa_id => l_adr_accounting_coa_id
20784 , x_value_type_code => l_adr_value_type_code
20785 , p_side => 'NA'
20786 );
20787
20788 xla_ae_lines_pkg.set_ccid(
20789 p_code_combination_id => l_ccid
20790 , p_value_type_code => l_adr_value_type_code
20791 , p_transaction_coa_id => l_adr_transaction_coa_id
20792 , p_accounting_coa_id => l_adr_accounting_coa_id
20793 , p_adr_code => 'COGS'
20794 , p_adr_type_code => 'S'
20795 , p_component_type => l_component_type
20796 , p_component_code => l_component_code
20797 , p_component_type_code => l_component_type_code
20798 , p_component_appl_id => l_component_appl_id
20799 , p_amb_context_code => l_amb_context_code
20800 , p_side => 'NA'
20801 );
20802
20803
20804 --
20805 --
20806 END IF;
20807 --
20808 -- Bug 4922099
20809 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20810 (NVL(l_enc_upg_option, 'N') = 'O')
20811 ) AND
20812 (l_bflow_method_code = 'PRIOR_ENTRY')
20813 )
20814 THEN
20815 IF
20816 --
20817 1 = 2
20818 --
20819 THEN
20820 xla_accounting_err_pkg.build_message
20821 (p_appli_s_name => 'XLA'
20822 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20823 ,p_token_1 => 'LINE_NUMBER'
20824 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
20825 ,p_token_2 => 'LINE_TYPE_NAME'
20826 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
20827 l_component_type
20828 ,l_component_code
20829 ,l_component_type_code
20830 ,l_component_appl_id
20831 ,l_amb_context_code
20832 ,l_entity_code
20836 ,p_value_3 => xla_lookups_pkg.get_meaning(
20833 ,l_event_class_code
20834 )
20835 ,p_token_3 => 'OWNER'
20837 p_lookup_type => 'XLA_OWNER_TYPE'
20838 ,p_lookup_code => l_component_type_code
20839 )
20840 ,p_token_4 => 'PRODUCT_NAME'
20841 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20842 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20843 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20844 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20845 ,p_ae_header_id => NULL
20846 );
20847
20848 IF (C_LEVEL_ERROR>= g_log_level) THEN
20849 trace
20850 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20851 ,p_level => C_LEVEL_ERROR
20852 ,p_module => l_log_module);
20853 END IF;
20854 END IF;
20855 END IF;
20856 --
20857 --
20858 ------------------------------------------------------------------------------------------------
20859 -- 4219869 Business Flow
20860 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20861 -- Prior Entry. Currently, the following code is always generated.
20862 ------------------------------------------------------------------------------------------------
20863 XLA_AE_LINES_PKG.ValidateCurrentLine;
20864
20865 ------------------------------------------------------------------------------------
20866 -- 4219869 Business Flow
20867 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20868 ------------------------------------------------------------------------------------
20869 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20870
20871 ----------------------------------------------------------------------------------
20872 -- 4219869 Business Flow
20873 -- Update journal entry status -- Need to generate this within IF <condition>
20874 ----------------------------------------------------------------------------------
20875 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20876 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20877 ,p_balance_type_code => l_balance_type_code
20878 );
20879
20880 -------------------------------------------------------------------------------------------
20881 -- 4262811 - Generate the Accrual Reversal lines
20882 -------------------------------------------------------------------------------------------
20883 BEGIN
20884 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20885 (g_array_event(p_event_id).array_value_num('header_index'));
20886 IF l_acc_rev_flag IS NULL THEN
20887 l_acc_rev_flag := 'N';
20888 END IF;
20889 EXCEPTION
20890 WHEN OTHERS THEN
20891 l_acc_rev_flag := 'N';
20892 END;
20893 --
20894 IF (l_acc_rev_flag = 'Y') THEN
20895
20896 -- 4645092 ------------------------------------------------------------------------------
20897 -- To allow MPA report to determine if it should generate report process
20898 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20899 ------------------------------------------------------------------------------------------
20900
20901 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20902 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20903 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
20904 -- call ADRs
20905 -- Bug 4922099
20906 --
20907 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20908 (NVL(l_actual_upg_option, 'N') = 'O') OR
20909 (NVL(l_enc_upg_option, 'N') = 'O')
20910 )
20911 THEN
20912 NULL;
20913 --
20914 --
20915
20916 l_ccid := AcctDerRule_9(
20917 p_application_id => p_application_id
20918 , p_ae_header_id => l_ae_header_id
20919 , p_source_1 => p_source_1
20920 , p_source_2 => p_source_2
20921 , x_transaction_coa_id => l_adr_transaction_coa_id
20922 , x_accounting_coa_id => l_adr_accounting_coa_id
20923 , x_value_type_code => l_adr_value_type_code
20924 , p_side => 'NA'
20925 );
20926
20927 xla_ae_lines_pkg.set_ccid(
20928 p_code_combination_id => l_ccid
20929 , p_value_type_code => l_adr_value_type_code
20930 , p_transaction_coa_id => l_adr_transaction_coa_id
20931 , p_accounting_coa_id => l_adr_accounting_coa_id
20932 , p_adr_code => 'COGS'
20936 , p_component_type_code => l_component_type_code
20933 , p_adr_type_code => 'S'
20934 , p_component_type => l_component_type
20935 , p_component_code => l_component_code
20937 , p_component_appl_id => l_component_appl_id
20938 , p_amb_context_code => l_amb_context_code
20939 , p_side => 'NA'
20940 );
20941
20942
20943 --
20944 --
20945 END IF;
20946
20947 --
20948 -- Update the line information that should be overwritten
20949 --
20950 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20951 p_header_num => 1);
20952 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
20953
20954 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20955
20956 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
20957 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20958 END IF;
20959
20960 --
20961 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20962 --
20963 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20964 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
20965 ELSE
20966 ---------------------------------------------------------------------------------------------------
20967 -- 4262811a Switch Sign
20968 ---------------------------------------------------------------------------------------------------
20969 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
20970 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20971 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20972 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20973 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20974 -- 5132302
20975 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20976 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20977
20978 END IF;
20979
20980 -- 4955764
20981 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20982 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20983
20984
20985 XLA_AE_LINES_PKG.ValidateCurrentLine;
20986 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20987
20988 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20989 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20990 ,p_balance_type_code => l_balance_type_code);
20991
20992 END IF;
20993
20994 -----------------------------------------------------------------------------------------
20995 -- 4262811 Multiperiod Accounting
20996 -----------------------------------------------------------------------------------------
20997 -- No MPA option is assigned.
20998
20999
21000 END IF;
21001 END IF;
21002 --
21003
21004 --
21005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21006 trace
21007 (p_msg => 'END of AcctLineType_70'
21008 ,p_level => C_LEVEL_PROCEDURE
21009 ,p_module => l_log_module);
21010 END IF;
21011 --
21012 EXCEPTION
21013 WHEN xla_exceptions_pkg.application_exception THEN
21014 RAISE;
21015 WHEN OTHERS THEN
21016 xla_exceptions_pkg.raise_message
21017 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_70');
21018 END AcctLineType_70;
21019 --
21020
21021 ---------------------------------------
21022 --
21023 -- PRIVATE FUNCTION
21024 -- AcctLineType_71
21025 --
21026 ---------------------------------------
21027 PROCEDURE AcctLineType_71 (
21028 p_application_id IN NUMBER
21029 ,p_event_id IN NUMBER
21030 ,p_calculate_acctd_flag IN VARCHAR2
21031 ,p_calculate_g_l_flag IN VARCHAR2
21032 ,p_actual_flag IN OUT VARCHAR2
21033 ,p_balance_type_code OUT VARCHAR2
21034 ,p_gain_or_loss_ref OUT VARCHAR2
21035
21036 --Transaction Account
21037 , p_source_1 IN NUMBER
21038 --Journal Line Type
21039 , p_source_2 IN VARCHAR2
21040 --Entered Amount
21041 , p_source_3 IN NUMBER
21042 --First Distribution Identifier
21043 , p_source_5 IN NUMBER
21044 --Distribution Type
21045 , p_source_6 IN VARCHAR2
21046 --Currency Code
21047 , p_source_7 IN VARCHAR2
21048 --Currency Conversion Date
21049 , p_source_8 IN DATE
21050 --Currency Conversion Rate
21051 , p_source_9 IN NUMBER
21052 --Currency Conversion Type
21053 , p_source_10 IN VARCHAR2
21054 --Accounted Amount
21055 , p_source_11 IN NUMBER
21059 l_component_type VARCHAR2(80);
21056 )
21057 IS
21058
21060 l_component_code VARCHAR2(30);
21061 l_component_type_code VARCHAR2(1);
21062 l_component_appl_id INTEGER;
21063 l_amb_context_code VARCHAR2(30);
21064 l_entity_code VARCHAR2(30);
21065 l_event_class_code VARCHAR2(30);
21066 l_ae_header_id NUMBER;
21067 l_event_type_code VARCHAR2(30);
21068 l_line_definition_code VARCHAR2(30);
21069 l_line_definition_owner_code VARCHAR2(1);
21070 --
21071 -- adr variables
21072 l_segment VARCHAR2(30);
21073 l_ccid NUMBER;
21074 l_adr_transaction_coa_id NUMBER;
21075 l_adr_accounting_coa_id NUMBER;
21076 l_adr_flexfield_segment_code VARCHAR2(30);
21077 l_adr_flex_value_set_id NUMBER;
21078 l_adr_value_type_code VARCHAR2(30);
21079 l_adr_value_combination_id NUMBER;
21080 l_adr_value_segment_code VARCHAR2(30);
21081
21082 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
21083 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
21084 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
21085 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
21086
21087 -- 4262811 Variables ------------------------------------------------------------------------------------------
21088 l_entered_amt_idx NUMBER;
21089 l_accted_amt_idx NUMBER;
21090 l_acc_rev_flag VARCHAR2(1);
21091 l_accrual_line_num NUMBER;
21092 l_tmp_amt NUMBER;
21093 l_acc_rev_natural_side_code VARCHAR2(1);
21094
21095 l_num_entries NUMBER;
21096 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
21097 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
21098 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
21099 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
21100 l_recog_line_1 NUMBER;
21101 l_recog_line_2 NUMBER;
21102
21103 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
21104 l_bflow_applied_to_amt NUMBER; -- 5132302
21105 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
21106
21107 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21108
21109 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
21110 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
21111
21112 ---------------------------------------------------------------------------------------------------------------
21113
21114
21115 --
21116 -- bulk performance
21117 --
21118 l_balance_type_code VARCHAR2(1);
21119 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
21120 l_log_module VARCHAR2(240);
21121
21122 --
21123 -- Upgrade strategy
21124 --
21125 l_actual_upg_option VARCHAR2(1);
21126 l_enc_upg_option VARCHAR2(1);
21127
21128 --
21129 BEGIN
21130 --
21131 IF g_log_enabled THEN
21132 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
21133 END IF;
21134 --
21135 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21136
21137 trace
21138 (p_msg => 'BEGIN of AcctLineType_71'
21139 ,p_level => C_LEVEL_PROCEDURE
21140 ,p_module => l_log_module);
21141
21142 END IF;
21143 --
21144 l_component_type := 'AMB_JLT';
21145 l_component_code := 'COGS';
21146 l_component_type_code := 'S';
21147 l_component_appl_id := 555;
21148 l_amb_context_code := 'DEFAULT';
21149 l_entity_code := 'ORDERMANAGEMENT';
21150 l_event_class_code := 'SHIPPING';
21151 l_event_type_code := 'COGS_RECOGNITION';
21152 l_line_definition_owner_code := 'S';
21153 l_line_definition_code := 'COGS_RECOGNITION';
21154 --
21155 l_balance_type_code := 'A';
21156 l_segment := NULL;
21157 l_ccid := NULL;
21158 l_adr_transaction_coa_id := NULL;
21159 l_adr_accounting_coa_id := NULL;
21160 l_adr_flexfield_segment_code := NULL;
21161 l_adr_flex_value_set_id := NULL;
21162 l_adr_value_type_code := NULL;
21163 l_adr_value_combination_id := NULL;
21164 l_adr_value_segment_code := NULL;
21165
21166 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
21167 l_bflow_class_code := ''; -- 4219869 Business Flow
21168 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
21169 l_budgetary_control_flag := 'N';
21170
21171 l_bflow_applied_to_amt_idx := NULL; -- 5132302
21172 l_bflow_applied_to_amt := NULL; -- 5132302
21173 l_entered_amt_idx := NULL; -- 4262811
21174 l_accted_amt_idx := NULL; -- 4262811
21175 l_acc_rev_flag := NULL; -- 4262811
21176 l_accrual_line_num := NULL; -- 4262811
21177 l_tmp_amt := NULL; -- 4262811
21178 --
21179
21180 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21181 l_balance_type_code <> 'B' THEN
21185
21182 IF NVL(p_source_2,'
21183 ') = 'COGS'
21184 THEN
21186 --
21187 XLA_AE_LINES_PKG.SetNewLine;
21188
21189 p_balance_type_code := l_balance_type_code;
21190 -- set the flag so later we will know whether the gain loss line needs to be created
21191
21192 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21193 p_actual_flag :='A';
21194 END IF;
21195
21196 --
21197 -- bulk performance
21198 --
21199 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21200 p_header_num => 0); -- 4262811
21201 --
21202 -- set accounting line options
21203 --
21204 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21205 p_natural_side_code => 'D'
21206 , p_gain_or_loss_flag => 'N'
21207 , p_gl_transfer_mode_code => 'D'
21208 , p_acct_entry_type_code => 'A'
21209 , p_switch_side_flag => 'Y'
21210 , p_merge_duplicate_code => 'W'
21211 );
21212 --
21213 l_acc_rev_natural_side_code := 'C'; -- 4262811
21214 --
21215 --
21216 -- set accounting line type info
21217 --
21218 xla_ae_lines_pkg.SetAcctLineType
21219 (p_component_type => l_component_type
21220 ,p_event_type_code => l_event_type_code
21221 ,p_line_definition_owner_code => l_line_definition_owner_code
21222 ,p_line_definition_code => l_line_definition_code
21223 ,p_accounting_line_code => l_component_code
21224 ,p_accounting_line_type_code => l_component_type_code
21225 ,p_accounting_line_appl_id => l_component_appl_id
21226 ,p_amb_context_code => l_amb_context_code
21227 ,p_entity_code => l_entity_code
21228 ,p_event_class_code => l_event_class_code);
21229 --
21230 -- set accounting class
21231 --
21232 xla_ae_lines_pkg.SetAcctClass(
21233 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
21234 , p_ae_header_id => l_ae_header_id
21235 );
21236
21237 --
21238 -- set rounding class
21239 --
21240 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21241 'COST_OF_GOODS_SOLD';
21242
21243 --
21244 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21245 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21246 --
21247 -- bulk performance
21248 --
21249 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21250
21251 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21252 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21253
21254 -- 4955764
21255 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21256 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21257
21258 -- 4458381 Public Sector Enh
21259
21260 --
21261 -- set accounting attributes for the line type
21262 --
21263 l_entered_amt_idx := 3;
21264 l_accted_amt_idx := 8;
21265 l_bflow_applied_to_amt_idx := NULL; -- 5132302
21266 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21267 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
21268 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21269 l_rec_acct_attrs.array_char_value(2) := p_source_6;
21270 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21271 l_rec_acct_attrs.array_num_value(3) := p_source_3;
21272 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21273 l_rec_acct_attrs.array_char_value(4) := p_source_7;
21274 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21275 l_rec_acct_attrs.array_date_value(5) := p_source_8;
21276 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21277 l_rec_acct_attrs.array_num_value(6) := p_source_9;
21278 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21279 l_rec_acct_attrs.array_char_value(7) := p_source_10;
21280 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21281 l_rec_acct_attrs.array_num_value(8) := p_source_11;
21282
21283 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21284 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21285
21286 ---------------------------------------------------------------------------------------------------------------
21287 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21288 ---------------------------------------------------------------------------------------------------------------
21289 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21290
21291 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21292 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21293
21294 IF xla_accounting_cache_pkg.GetValueChar
21295 (p_source_code => 'LEDGER_CATEGORY_CODE'
21299 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21296 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21297 AND l_bflow_method_code = 'PRIOR_ENTRY'
21298 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21300 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21301 )
21302 THEN
21303 xla_ae_lines_pkg.BflowUpgEntry
21304 (p_business_method_code => l_bflow_method_code
21305 ,p_business_class_code => l_bflow_class_code
21306 ,p_balance_type => l_balance_type_code);
21307 ELSE
21308 NULL;
21309 -- No business flow processing for business flow method of NONE.
21310 END IF;
21311
21312 --
21313 -- call analytical criteria
21314 --
21315
21316 --
21317 -- call description
21318 --
21319 -- No description or it is inherited.
21320 --
21321 -- call ADRs
21322 -- Bug 4922099
21323 --
21324 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21325 (NVL(l_actual_upg_option, 'N') = 'O') OR
21326 (NVL(l_enc_upg_option, 'N') = 'O')
21327 )
21328 THEN
21329 NULL;
21330 --
21331 --
21332
21333 l_ccid := AcctDerRule_9(
21334 p_application_id => p_application_id
21335 , p_ae_header_id => l_ae_header_id
21336 , p_source_1 => p_source_1
21337 , p_source_2 => p_source_2
21338 , x_transaction_coa_id => l_adr_transaction_coa_id
21339 , x_accounting_coa_id => l_adr_accounting_coa_id
21340 , x_value_type_code => l_adr_value_type_code
21341 , p_side => 'NA'
21342 );
21343
21344 xla_ae_lines_pkg.set_ccid(
21345 p_code_combination_id => l_ccid
21346 , p_value_type_code => l_adr_value_type_code
21347 , p_transaction_coa_id => l_adr_transaction_coa_id
21348 , p_accounting_coa_id => l_adr_accounting_coa_id
21349 , p_adr_code => 'COGS'
21350 , p_adr_type_code => 'S'
21351 , p_component_type => l_component_type
21352 , p_component_code => l_component_code
21353 , p_component_type_code => l_component_type_code
21354 , p_component_appl_id => l_component_appl_id
21355 , p_amb_context_code => l_amb_context_code
21356 , p_side => 'NA'
21357 );
21358
21359
21360 --
21361 --
21362 END IF;
21363 --
21364 -- Bug 4922099
21365 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21366 (NVL(l_enc_upg_option, 'N') = 'O')
21367 ) AND
21368 (l_bflow_method_code = 'PRIOR_ENTRY')
21369 )
21370 THEN
21371 IF
21372 --
21373 1 = 2
21374 --
21375 THEN
21376 xla_accounting_err_pkg.build_message
21377 (p_appli_s_name => 'XLA'
21378 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21379 ,p_token_1 => 'LINE_NUMBER'
21380 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
21381 ,p_token_2 => 'LINE_TYPE_NAME'
21382 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
21383 l_component_type
21384 ,l_component_code
21385 ,l_component_type_code
21386 ,l_component_appl_id
21387 ,l_amb_context_code
21388 ,l_entity_code
21389 ,l_event_class_code
21390 )
21391 ,p_token_3 => 'OWNER'
21392 ,p_value_3 => xla_lookups_pkg.get_meaning(
21393 p_lookup_type => 'XLA_OWNER_TYPE'
21394 ,p_lookup_code => l_component_type_code
21395 )
21396 ,p_token_4 => 'PRODUCT_NAME'
21397 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21398 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21399 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21400 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21401 ,p_ae_header_id => NULL
21402 );
21403
21407 ,p_level => C_LEVEL_ERROR
21404 IF (C_LEVEL_ERROR>= g_log_level) THEN
21405 trace
21406 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21408 ,p_module => l_log_module);
21409 END IF;
21410 END IF;
21411 END IF;
21412 --
21413 --
21414 ------------------------------------------------------------------------------------------------
21415 -- 4219869 Business Flow
21416 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21417 -- Prior Entry. Currently, the following code is always generated.
21418 ------------------------------------------------------------------------------------------------
21419 XLA_AE_LINES_PKG.ValidateCurrentLine;
21420
21421 ------------------------------------------------------------------------------------
21422 -- 4219869 Business Flow
21423 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21424 ------------------------------------------------------------------------------------
21425 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21426
21427 ----------------------------------------------------------------------------------
21428 -- 4219869 Business Flow
21429 -- Update journal entry status -- Need to generate this within IF <condition>
21430 ----------------------------------------------------------------------------------
21431 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21432 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21433 ,p_balance_type_code => l_balance_type_code
21434 );
21435
21436 -------------------------------------------------------------------------------------------
21437 -- 4262811 - Generate the Accrual Reversal lines
21438 -------------------------------------------------------------------------------------------
21439 BEGIN
21440 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21441 (g_array_event(p_event_id).array_value_num('header_index'));
21442 IF l_acc_rev_flag IS NULL THEN
21443 l_acc_rev_flag := 'N';
21444 END IF;
21445 EXCEPTION
21446 WHEN OTHERS THEN
21447 l_acc_rev_flag := 'N';
21448 END;
21449 --
21450 IF (l_acc_rev_flag = 'Y') THEN
21451
21452 -- 4645092 ------------------------------------------------------------------------------
21453 -- To allow MPA report to determine if it should generate report process
21454 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21455 ------------------------------------------------------------------------------------------
21456
21457 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21458 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21459 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
21460 -- call ADRs
21461 -- Bug 4922099
21462 --
21463 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21464 (NVL(l_actual_upg_option, 'N') = 'O') OR
21465 (NVL(l_enc_upg_option, 'N') = 'O')
21466 )
21467 THEN
21468 NULL;
21469 --
21470 --
21471
21472 l_ccid := AcctDerRule_9(
21473 p_application_id => p_application_id
21474 , p_ae_header_id => l_ae_header_id
21475 , p_source_1 => p_source_1
21476 , p_source_2 => p_source_2
21477 , x_transaction_coa_id => l_adr_transaction_coa_id
21478 , x_accounting_coa_id => l_adr_accounting_coa_id
21479 , x_value_type_code => l_adr_value_type_code
21480 , p_side => 'NA'
21481 );
21482
21483 xla_ae_lines_pkg.set_ccid(
21484 p_code_combination_id => l_ccid
21485 , p_value_type_code => l_adr_value_type_code
21486 , p_transaction_coa_id => l_adr_transaction_coa_id
21487 , p_accounting_coa_id => l_adr_accounting_coa_id
21488 , p_adr_code => 'COGS'
21489 , p_adr_type_code => 'S'
21490 , p_component_type => l_component_type
21491 , p_component_code => l_component_code
21492 , p_component_type_code => l_component_type_code
21493 , p_component_appl_id => l_component_appl_id
21494 , p_amb_context_code => l_amb_context_code
21495 , p_side => 'NA'
21496 );
21497
21498
21499 --
21500 --
21501 END IF;
21502
21503 --
21504 -- Update the line information that should be overwritten
21505 --
21506 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21507 p_header_num => 1);
21508 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
21509
21510 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21511
21512 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
21513 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21514 END IF;
21515
21516 --
21517 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21518 --
21522 ---------------------------------------------------------------------------------------------------
21519 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21520 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
21521 ELSE
21523 -- 4262811a Switch Sign
21524 ---------------------------------------------------------------------------------------------------
21525 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
21526 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21527 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21528 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21529 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21530 -- 5132302
21531 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21532 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21533
21534 END IF;
21535
21536 -- 4955764
21537 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21538 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21539
21540
21541 XLA_AE_LINES_PKG.ValidateCurrentLine;
21542 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21543
21544 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21545 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21546 ,p_balance_type_code => l_balance_type_code);
21547
21548 END IF;
21549
21550 -----------------------------------------------------------------------------------------
21551 -- 4262811 Multiperiod Accounting
21552 -----------------------------------------------------------------------------------------
21553 -- No MPA option is assigned.
21554
21555
21556 END IF;
21557 END IF;
21558 --
21559
21560 --
21561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21562 trace
21563 (p_msg => 'END of AcctLineType_71'
21564 ,p_level => C_LEVEL_PROCEDURE
21565 ,p_module => l_log_module);
21566 END IF;
21567 --
21568 EXCEPTION
21569 WHEN xla_exceptions_pkg.application_exception THEN
21570 RAISE;
21571 WHEN OTHERS THEN
21572 xla_exceptions_pkg.raise_message
21573 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_71');
21574 END AcctLineType_71;
21575 --
21576
21577 ---------------------------------------
21578 --
21579 -- PRIVATE FUNCTION
21580 -- AcctLineType_72
21581 --
21582 ---------------------------------------
21583 PROCEDURE AcctLineType_72 (
21584 p_application_id IN NUMBER
21585 ,p_event_id IN NUMBER
21586 ,p_calculate_acctd_flag IN VARCHAR2
21587 ,p_calculate_g_l_flag IN VARCHAR2
21588 ,p_actual_flag IN OUT VARCHAR2
21589 ,p_balance_type_code OUT VARCHAR2
21590 ,p_gain_or_loss_ref OUT VARCHAR2
21591
21592 --Transaction Account
21593 , p_source_1 IN NUMBER
21594 --Journal Line Type
21595 , p_source_2 IN VARCHAR2
21596 --Entered Amount
21597 , p_source_3 IN NUMBER
21598 --First Distribution Identifier
21599 , p_source_5 IN NUMBER
21600 --Distribution Type
21601 , p_source_6 IN VARCHAR2
21602 --Currency Code
21603 , p_source_7 IN VARCHAR2
21604 --Currency Conversion Date
21605 , p_source_8 IN DATE
21606 --Currency Conversion Rate
21607 , p_source_9 IN NUMBER
21608 --Currency Conversion Type
21609 , p_source_10 IN VARCHAR2
21610 --Accounted Amount
21611 , p_source_11 IN NUMBER
21612 )
21613 IS
21614
21615 l_component_type VARCHAR2(80);
21616 l_component_code VARCHAR2(30);
21617 l_component_type_code VARCHAR2(1);
21618 l_component_appl_id INTEGER;
21619 l_amb_context_code VARCHAR2(30);
21620 l_entity_code VARCHAR2(30);
21621 l_event_class_code VARCHAR2(30);
21622 l_ae_header_id NUMBER;
21623 l_event_type_code VARCHAR2(30);
21624 l_line_definition_code VARCHAR2(30);
21625 l_line_definition_owner_code VARCHAR2(1);
21626 --
21627 -- adr variables
21628 l_segment VARCHAR2(30);
21629 l_ccid NUMBER;
21630 l_adr_transaction_coa_id NUMBER;
21631 l_adr_accounting_coa_id NUMBER;
21632 l_adr_flexfield_segment_code VARCHAR2(30);
21633 l_adr_flex_value_set_id NUMBER;
21634 l_adr_value_type_code VARCHAR2(30);
21635 l_adr_value_combination_id NUMBER;
21636 l_adr_value_segment_code VARCHAR2(30);
21637
21638 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
21639 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
21640 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
21641 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
21642
21646 l_acc_rev_flag VARCHAR2(1);
21643 -- 4262811 Variables ------------------------------------------------------------------------------------------
21644 l_entered_amt_idx NUMBER;
21645 l_accted_amt_idx NUMBER;
21647 l_accrual_line_num NUMBER;
21648 l_tmp_amt NUMBER;
21649 l_acc_rev_natural_side_code VARCHAR2(1);
21650
21651 l_num_entries NUMBER;
21652 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
21653 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
21654 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
21655 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
21656 l_recog_line_1 NUMBER;
21657 l_recog_line_2 NUMBER;
21658
21659 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
21660 l_bflow_applied_to_amt NUMBER; -- 5132302
21661 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
21662
21663 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21664
21665 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
21666 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
21667
21668 ---------------------------------------------------------------------------------------------------------------
21669
21670
21671 --
21672 -- bulk performance
21673 --
21674 l_balance_type_code VARCHAR2(1);
21675 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
21676 l_log_module VARCHAR2(240);
21677
21678 --
21679 -- Upgrade strategy
21680 --
21681 l_actual_upg_option VARCHAR2(1);
21682 l_enc_upg_option VARCHAR2(1);
21683
21684 --
21685 BEGIN
21686 --
21687 IF g_log_enabled THEN
21688 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
21689 END IF;
21690 --
21691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21692
21693 trace
21694 (p_msg => 'BEGIN of AcctLineType_72'
21695 ,p_level => C_LEVEL_PROCEDURE
21696 ,p_module => l_log_module);
21697
21698 END IF;
21699 --
21700 l_component_type := 'AMB_JLT';
21701 l_component_code := 'COGS';
21702 l_component_type_code := 'S';
21703 l_component_appl_id := 555;
21704 l_amb_context_code := 'DEFAULT';
21705 l_entity_code := 'ORDERMANAGEMENT';
21706 l_event_class_code := 'RMA';
21707 l_event_type_code := 'RMA_ALL';
21708 l_line_definition_owner_code := 'S';
21709 l_line_definition_code := 'RMA';
21710 --
21711 l_balance_type_code := 'A';
21712 l_segment := NULL;
21713 l_ccid := NULL;
21714 l_adr_transaction_coa_id := NULL;
21715 l_adr_accounting_coa_id := NULL;
21716 l_adr_flexfield_segment_code := NULL;
21717 l_adr_flex_value_set_id := NULL;
21718 l_adr_value_type_code := NULL;
21719 l_adr_value_combination_id := NULL;
21720 l_adr_value_segment_code := NULL;
21721
21722 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
21723 l_bflow_class_code := ''; -- 4219869 Business Flow
21724 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
21725 l_budgetary_control_flag := 'N';
21726
21727 l_bflow_applied_to_amt_idx := NULL; -- 5132302
21728 l_bflow_applied_to_amt := NULL; -- 5132302
21729 l_entered_amt_idx := NULL; -- 4262811
21730 l_accted_amt_idx := NULL; -- 4262811
21731 l_acc_rev_flag := NULL; -- 4262811
21732 l_accrual_line_num := NULL; -- 4262811
21733 l_tmp_amt := NULL; -- 4262811
21734 --
21735
21736 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21737 l_balance_type_code <> 'B' THEN
21738 IF NVL(p_source_2,'
21739 ') = 'COGS'
21740 THEN
21741
21742 --
21743 XLA_AE_LINES_PKG.SetNewLine;
21744
21745 p_balance_type_code := l_balance_type_code;
21746 -- set the flag so later we will know whether the gain loss line needs to be created
21747
21748 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21749 p_actual_flag :='A';
21750 END IF;
21751
21752 --
21753 -- bulk performance
21754 --
21755 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21756 p_header_num => 0); -- 4262811
21757 --
21758 -- set accounting line options
21759 --
21760 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21761 p_natural_side_code => 'D'
21762 , p_gain_or_loss_flag => 'N'
21763 , p_gl_transfer_mode_code => 'D'
21764 , p_acct_entry_type_code => 'A'
21765 , p_switch_side_flag => 'Y'
21766 , p_merge_duplicate_code => 'W'
21767 );
21768 --
21769 l_acc_rev_natural_side_code := 'C'; -- 4262811
21770 --
21771 --
21772 -- set accounting line type info
21773 --
21774 xla_ae_lines_pkg.SetAcctLineType
21775 (p_component_type => l_component_type
21779 ,p_accounting_line_code => l_component_code
21776 ,p_event_type_code => l_event_type_code
21777 ,p_line_definition_owner_code => l_line_definition_owner_code
21778 ,p_line_definition_code => l_line_definition_code
21780 ,p_accounting_line_type_code => l_component_type_code
21781 ,p_accounting_line_appl_id => l_component_appl_id
21782 ,p_amb_context_code => l_amb_context_code
21783 ,p_entity_code => l_entity_code
21784 ,p_event_class_code => l_event_class_code);
21785 --
21786 -- set accounting class
21787 --
21788 xla_ae_lines_pkg.SetAcctClass(
21789 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
21790 , p_ae_header_id => l_ae_header_id
21791 );
21792
21793 --
21794 -- set rounding class
21795 --
21796 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21797 'COST_OF_GOODS_SOLD';
21798
21799 --
21800 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21801 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21802 --
21803 -- bulk performance
21804 --
21805 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21806
21807 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21808 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21809
21810 -- 4955764
21811 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21812 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21813
21814 -- 4458381 Public Sector Enh
21815
21816 --
21817 -- set accounting attributes for the line type
21818 --
21819 l_entered_amt_idx := 3;
21820 l_accted_amt_idx := 8;
21821 l_bflow_applied_to_amt_idx := NULL; -- 5132302
21822 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21823 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
21824 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21825 l_rec_acct_attrs.array_char_value(2) := p_source_6;
21826 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21827 l_rec_acct_attrs.array_num_value(3) := p_source_3;
21828 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21829 l_rec_acct_attrs.array_char_value(4) := p_source_7;
21830 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21831 l_rec_acct_attrs.array_date_value(5) := p_source_8;
21832 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21833 l_rec_acct_attrs.array_num_value(6) := p_source_9;
21834 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21835 l_rec_acct_attrs.array_char_value(7) := p_source_10;
21836 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
21837 l_rec_acct_attrs.array_num_value(8) := p_source_11;
21838
21839 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21840 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21841
21842 ---------------------------------------------------------------------------------------------------------------
21843 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21844 ---------------------------------------------------------------------------------------------------------------
21845 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21846
21847 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21848 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21849
21850 IF xla_accounting_cache_pkg.GetValueChar
21851 (p_source_code => 'LEDGER_CATEGORY_CODE'
21852 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21853 AND l_bflow_method_code = 'PRIOR_ENTRY'
21854 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21855 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21856 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21857 )
21858 THEN
21859 xla_ae_lines_pkg.BflowUpgEntry
21860 (p_business_method_code => l_bflow_method_code
21861 ,p_business_class_code => l_bflow_class_code
21862 ,p_balance_type => l_balance_type_code);
21863 ELSE
21864 NULL;
21865 -- No business flow processing for business flow method of NONE.
21866 END IF;
21867
21868 --
21869 -- call analytical criteria
21870 --
21871
21872 --
21873 -- call description
21874 --
21875 -- No description or it is inherited.
21876 --
21877 -- call ADRs
21878 -- Bug 4922099
21879 --
21880 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21881 (NVL(l_actual_upg_option, 'N') = 'O') OR
21882 (NVL(l_enc_upg_option, 'N') = 'O')
21883 )
21884 THEN
21885 NULL;
21886 --
21887 --
21888
21889 l_ccid := AcctDerRule_9(
21893 , p_source_2 => p_source_2
21890 p_application_id => p_application_id
21891 , p_ae_header_id => l_ae_header_id
21892 , p_source_1 => p_source_1
21894 , x_transaction_coa_id => l_adr_transaction_coa_id
21895 , x_accounting_coa_id => l_adr_accounting_coa_id
21896 , x_value_type_code => l_adr_value_type_code
21897 , p_side => 'NA'
21898 );
21899
21900 xla_ae_lines_pkg.set_ccid(
21901 p_code_combination_id => l_ccid
21902 , p_value_type_code => l_adr_value_type_code
21903 , p_transaction_coa_id => l_adr_transaction_coa_id
21904 , p_accounting_coa_id => l_adr_accounting_coa_id
21905 , p_adr_code => 'COGS'
21906 , p_adr_type_code => 'S'
21907 , p_component_type => l_component_type
21908 , p_component_code => l_component_code
21909 , p_component_type_code => l_component_type_code
21910 , p_component_appl_id => l_component_appl_id
21911 , p_amb_context_code => l_amb_context_code
21912 , p_side => 'NA'
21913 );
21914
21915
21916 --
21917 --
21918 END IF;
21919 --
21920 -- Bug 4922099
21921 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21922 (NVL(l_enc_upg_option, 'N') = 'O')
21923 ) AND
21924 (l_bflow_method_code = 'PRIOR_ENTRY')
21925 )
21926 THEN
21927 IF
21928 --
21929 1 = 2
21930 --
21931 THEN
21932 xla_accounting_err_pkg.build_message
21933 (p_appli_s_name => 'XLA'
21934 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21935 ,p_token_1 => 'LINE_NUMBER'
21936 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
21937 ,p_token_2 => 'LINE_TYPE_NAME'
21938 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
21939 l_component_type
21940 ,l_component_code
21941 ,l_component_type_code
21942 ,l_component_appl_id
21943 ,l_amb_context_code
21944 ,l_entity_code
21945 ,l_event_class_code
21946 )
21947 ,p_token_3 => 'OWNER'
21948 ,p_value_3 => xla_lookups_pkg.get_meaning(
21949 p_lookup_type => 'XLA_OWNER_TYPE'
21950 ,p_lookup_code => l_component_type_code
21951 )
21952 ,p_token_4 => 'PRODUCT_NAME'
21953 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21954 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21955 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21956 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21957 ,p_ae_header_id => NULL
21958 );
21959
21960 IF (C_LEVEL_ERROR>= g_log_level) THEN
21961 trace
21962 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21963 ,p_level => C_LEVEL_ERROR
21964 ,p_module => l_log_module);
21965 END IF;
21966 END IF;
21967 END IF;
21968 --
21969 --
21970 ------------------------------------------------------------------------------------------------
21971 -- 4219869 Business Flow
21972 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21973 -- Prior Entry. Currently, the following code is always generated.
21974 ------------------------------------------------------------------------------------------------
21975 XLA_AE_LINES_PKG.ValidateCurrentLine;
21976
21977 ------------------------------------------------------------------------------------
21978 -- 4219869 Business Flow
21979 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21980 ------------------------------------------------------------------------------------
21981 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21982
21983 ----------------------------------------------------------------------------------
21984 -- 4219869 Business Flow
21985 -- Update journal entry status -- Need to generate this within IF <condition>
21989 ,p_balance_type_code => l_balance_type_code
21986 ----------------------------------------------------------------------------------
21987 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21988 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21990 );
21991
21992 -------------------------------------------------------------------------------------------
21993 -- 4262811 - Generate the Accrual Reversal lines
21994 -------------------------------------------------------------------------------------------
21995 BEGIN
21996 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21997 (g_array_event(p_event_id).array_value_num('header_index'));
21998 IF l_acc_rev_flag IS NULL THEN
21999 l_acc_rev_flag := 'N';
22000 END IF;
22001 EXCEPTION
22002 WHEN OTHERS THEN
22003 l_acc_rev_flag := 'N';
22004 END;
22005 --
22006 IF (l_acc_rev_flag = 'Y') THEN
22007
22008 -- 4645092 ------------------------------------------------------------------------------
22009 -- To allow MPA report to determine if it should generate report process
22010 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22011 ------------------------------------------------------------------------------------------
22012
22013 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22014 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22015 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
22016 -- call ADRs
22017 -- Bug 4922099
22018 --
22019 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22020 (NVL(l_actual_upg_option, 'N') = 'O') OR
22021 (NVL(l_enc_upg_option, 'N') = 'O')
22022 )
22023 THEN
22024 NULL;
22025 --
22026 --
22027
22028 l_ccid := AcctDerRule_9(
22029 p_application_id => p_application_id
22030 , p_ae_header_id => l_ae_header_id
22031 , p_source_1 => p_source_1
22032 , p_source_2 => p_source_2
22033 , x_transaction_coa_id => l_adr_transaction_coa_id
22034 , x_accounting_coa_id => l_adr_accounting_coa_id
22035 , x_value_type_code => l_adr_value_type_code
22036 , p_side => 'NA'
22037 );
22038
22039 xla_ae_lines_pkg.set_ccid(
22040 p_code_combination_id => l_ccid
22041 , p_value_type_code => l_adr_value_type_code
22042 , p_transaction_coa_id => l_adr_transaction_coa_id
22043 , p_accounting_coa_id => l_adr_accounting_coa_id
22044 , p_adr_code => 'COGS'
22045 , p_adr_type_code => 'S'
22046 , p_component_type => l_component_type
22047 , p_component_code => l_component_code
22048 , p_component_type_code => l_component_type_code
22049 , p_component_appl_id => l_component_appl_id
22050 , p_amb_context_code => l_amb_context_code
22051 , p_side => 'NA'
22052 );
22053
22054
22055 --
22056 --
22057 END IF;
22058
22059 --
22060 -- Update the line information that should be overwritten
22061 --
22062 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22063 p_header_num => 1);
22064 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
22065
22066 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22067
22068 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
22069 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22070 END IF;
22071
22072 --
22073 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22074 --
22075 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22076 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
22077 ELSE
22078 ---------------------------------------------------------------------------------------------------
22079 -- 4262811a Switch Sign
22080 ---------------------------------------------------------------------------------------------------
22081 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
22082 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22083 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22084 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22085 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22086 -- 5132302
22087 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22088 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22089
22090 END IF;
22091
22092 -- 4955764
22096
22093 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22094 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22095
22097 XLA_AE_LINES_PKG.ValidateCurrentLine;
22098 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22099
22100 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22101 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22102 ,p_balance_type_code => l_balance_type_code);
22103
22104 END IF;
22105
22106 -----------------------------------------------------------------------------------------
22107 -- 4262811 Multiperiod Accounting
22108 -----------------------------------------------------------------------------------------
22109 -- No MPA option is assigned.
22110
22111
22112 END IF;
22113 END IF;
22114 --
22115
22116 --
22117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22118 trace
22119 (p_msg => 'END of AcctLineType_72'
22120 ,p_level => C_LEVEL_PROCEDURE
22121 ,p_module => l_log_module);
22122 END IF;
22123 --
22124 EXCEPTION
22125 WHEN xla_exceptions_pkg.application_exception THEN
22126 RAISE;
22127 WHEN OTHERS THEN
22128 xla_exceptions_pkg.raise_message
22129 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_72');
22130 END AcctLineType_72;
22131 --
22132
22133 ---------------------------------------
22134 --
22135 -- PRIVATE FUNCTION
22136 -- AcctLineType_73
22137 --
22138 ---------------------------------------
22139 PROCEDURE AcctLineType_73 (
22140 p_application_id IN NUMBER
22141 ,p_event_id IN NUMBER
22142 ,p_calculate_acctd_flag IN VARCHAR2
22143 ,p_calculate_g_l_flag IN VARCHAR2
22144 ,p_actual_flag IN OUT VARCHAR2
22145 ,p_balance_type_code OUT VARCHAR2
22146 ,p_gain_or_loss_ref OUT VARCHAR2
22147
22148 --Transaction Account
22149 , p_source_1 IN NUMBER
22150 --Journal Line Type
22151 , p_source_2 IN VARCHAR2
22152 --Entered Amount
22153 , p_source_3 IN NUMBER
22154 --First Distribution Identifier
22155 , p_source_5 IN NUMBER
22156 --Distribution Type
22157 , p_source_6 IN VARCHAR2
22158 --Currency Code
22159 , p_source_7 IN VARCHAR2
22160 --Currency Conversion Date
22161 , p_source_8 IN DATE
22162 --Currency Conversion Rate
22163 , p_source_9 IN NUMBER
22164 --Currency Conversion Type
22165 , p_source_10 IN VARCHAR2
22166 --Accounted Amount
22167 , p_source_11 IN NUMBER
22168 )
22169 IS
22170
22171 l_component_type VARCHAR2(80);
22172 l_component_code VARCHAR2(30);
22173 l_component_type_code VARCHAR2(1);
22174 l_component_appl_id INTEGER;
22175 l_amb_context_code VARCHAR2(30);
22176 l_entity_code VARCHAR2(30);
22177 l_event_class_code VARCHAR2(30);
22178 l_ae_header_id NUMBER;
22179 l_event_type_code VARCHAR2(30);
22180 l_line_definition_code VARCHAR2(30);
22181 l_line_definition_owner_code VARCHAR2(1);
22182 --
22183 -- adr variables
22184 l_segment VARCHAR2(30);
22185 l_ccid NUMBER;
22186 l_adr_transaction_coa_id NUMBER;
22187 l_adr_accounting_coa_id NUMBER;
22188 l_adr_flexfield_segment_code VARCHAR2(30);
22189 l_adr_flex_value_set_id NUMBER;
22190 l_adr_value_type_code VARCHAR2(30);
22191 l_adr_value_combination_id NUMBER;
22192 l_adr_value_segment_code VARCHAR2(30);
22193
22194 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
22195 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
22196 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
22197 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
22198
22199 -- 4262811 Variables ------------------------------------------------------------------------------------------
22200 l_entered_amt_idx NUMBER;
22201 l_accted_amt_idx NUMBER;
22202 l_acc_rev_flag VARCHAR2(1);
22203 l_accrual_line_num NUMBER;
22204 l_tmp_amt NUMBER;
22205 l_acc_rev_natural_side_code VARCHAR2(1);
22206
22207 l_num_entries NUMBER;
22208 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
22209 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
22210 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
22211 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
22212 l_recog_line_1 NUMBER;
22213 l_recog_line_2 NUMBER;
22214
22215 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
22216 l_bflow_applied_to_amt NUMBER; -- 5132302
22217 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
22218
22219 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22220
22221 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
22222 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
22223
22227 --
22224 ---------------------------------------------------------------------------------------------------------------
22225
22226
22228 -- bulk performance
22229 --
22230 l_balance_type_code VARCHAR2(1);
22231 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
22232 l_log_module VARCHAR2(240);
22233
22234 --
22235 -- Upgrade strategy
22236 --
22237 l_actual_upg_option VARCHAR2(1);
22238 l_enc_upg_option VARCHAR2(1);
22239
22240 --
22241 BEGIN
22242 --
22243 IF g_log_enabled THEN
22244 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
22245 END IF;
22246 --
22247 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22248
22249 trace
22250 (p_msg => 'BEGIN of AcctLineType_73'
22251 ,p_level => C_LEVEL_PROCEDURE
22252 ,p_module => l_log_module);
22253
22254 END IF;
22255 --
22256 l_component_type := 'AMB_JLT';
22257 l_component_code := 'COGS';
22258 l_component_type_code := 'S';
22259 l_component_appl_id := 555;
22260 l_amb_context_code := 'DEFAULT';
22261 l_entity_code := 'INVENTORY';
22262 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
22263 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_TP';
22264 l_line_definition_owner_code := 'S';
22265 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_TP';
22266 --
22267 l_balance_type_code := 'A';
22268 l_segment := NULL;
22269 l_ccid := NULL;
22270 l_adr_transaction_coa_id := NULL;
22271 l_adr_accounting_coa_id := NULL;
22272 l_adr_flexfield_segment_code := NULL;
22273 l_adr_flex_value_set_id := NULL;
22274 l_adr_value_type_code := NULL;
22275 l_adr_value_combination_id := NULL;
22276 l_adr_value_segment_code := NULL;
22277
22278 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
22279 l_bflow_class_code := ''; -- 4219869 Business Flow
22280 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
22281 l_budgetary_control_flag := 'N';
22282
22283 l_bflow_applied_to_amt_idx := NULL; -- 5132302
22284 l_bflow_applied_to_amt := NULL; -- 5132302
22285 l_entered_amt_idx := NULL; -- 4262811
22286 l_accted_amt_idx := NULL; -- 4262811
22287 l_acc_rev_flag := NULL; -- 4262811
22288 l_accrual_line_num := NULL; -- 4262811
22289 l_tmp_amt := NULL; -- 4262811
22290 --
22291
22292 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22293 l_balance_type_code <> 'B' THEN
22294 IF NVL(p_source_2,'
22295 ') = 'COGS'
22296 THEN
22297
22298 --
22299 XLA_AE_LINES_PKG.SetNewLine;
22300
22301 p_balance_type_code := l_balance_type_code;
22302 -- set the flag so later we will know whether the gain loss line needs to be created
22303
22304 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22305 p_actual_flag :='A';
22306 END IF;
22307
22308 --
22309 -- bulk performance
22310 --
22311 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22312 p_header_num => 0); -- 4262811
22313 --
22314 -- set accounting line options
22315 --
22316 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22317 p_natural_side_code => 'D'
22318 , p_gain_or_loss_flag => 'N'
22319 , p_gl_transfer_mode_code => 'D'
22320 , p_acct_entry_type_code => 'A'
22321 , p_switch_side_flag => 'Y'
22322 , p_merge_duplicate_code => 'W'
22323 );
22324 --
22325 l_acc_rev_natural_side_code := 'C'; -- 4262811
22326 --
22327 --
22328 -- set accounting line type info
22329 --
22330 xla_ae_lines_pkg.SetAcctLineType
22331 (p_component_type => l_component_type
22332 ,p_event_type_code => l_event_type_code
22333 ,p_line_definition_owner_code => l_line_definition_owner_code
22334 ,p_line_definition_code => l_line_definition_code
22335 ,p_accounting_line_code => l_component_code
22336 ,p_accounting_line_type_code => l_component_type_code
22337 ,p_accounting_line_appl_id => l_component_appl_id
22338 ,p_amb_context_code => l_amb_context_code
22339 ,p_entity_code => l_entity_code
22340 ,p_event_class_code => l_event_class_code);
22341 --
22342 -- set accounting class
22343 --
22344 xla_ae_lines_pkg.SetAcctClass(
22345 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
22346 , p_ae_header_id => l_ae_header_id
22347 );
22348
22349 --
22350 -- set rounding class
22351 --
22352 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22353 'COST_OF_GOODS_SOLD';
22354
22355 --
22356 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22357 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22358 --
22359 -- bulk performance
22360 --
22364 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22361 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22362
22363 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22365
22366 -- 4955764
22367 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22368 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22369
22370 -- 4458381 Public Sector Enh
22371
22372 --
22373 -- set accounting attributes for the line type
22374 --
22375 l_entered_amt_idx := 3;
22376 l_accted_amt_idx := 8;
22377 l_bflow_applied_to_amt_idx := NULL; -- 5132302
22378 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22379 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
22380 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22381 l_rec_acct_attrs.array_char_value(2) := p_source_6;
22382 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22383 l_rec_acct_attrs.array_num_value(3) := p_source_3;
22384 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22385 l_rec_acct_attrs.array_char_value(4) := p_source_7;
22386 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22387 l_rec_acct_attrs.array_date_value(5) := p_source_8;
22388 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22389 l_rec_acct_attrs.array_num_value(6) := p_source_9;
22390 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22391 l_rec_acct_attrs.array_char_value(7) := p_source_10;
22392 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22393 l_rec_acct_attrs.array_num_value(8) := p_source_11;
22394
22395 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22396 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22397
22398 ---------------------------------------------------------------------------------------------------------------
22399 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22400 ---------------------------------------------------------------------------------------------------------------
22401 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22402
22403 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22404 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22405
22406 IF xla_accounting_cache_pkg.GetValueChar
22407 (p_source_code => 'LEDGER_CATEGORY_CODE'
22408 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22409 AND l_bflow_method_code = 'PRIOR_ENTRY'
22410 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22411 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22412 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22413 )
22414 THEN
22415 xla_ae_lines_pkg.BflowUpgEntry
22416 (p_business_method_code => l_bflow_method_code
22417 ,p_business_class_code => l_bflow_class_code
22418 ,p_balance_type => l_balance_type_code);
22419 ELSE
22420 NULL;
22421 -- No business flow processing for business flow method of NONE.
22422 END IF;
22423
22424 --
22425 -- call analytical criteria
22426 --
22427
22428 --
22429 -- call description
22430 --
22431 -- No description or it is inherited.
22432 --
22433 -- call ADRs
22434 -- Bug 4922099
22435 --
22436 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22437 (NVL(l_actual_upg_option, 'N') = 'O') OR
22438 (NVL(l_enc_upg_option, 'N') = 'O')
22439 )
22440 THEN
22441 NULL;
22442 --
22443 --
22444
22445 l_ccid := AcctDerRule_9(
22446 p_application_id => p_application_id
22447 , p_ae_header_id => l_ae_header_id
22448 , p_source_1 => p_source_1
22449 , p_source_2 => p_source_2
22450 , x_transaction_coa_id => l_adr_transaction_coa_id
22451 , x_accounting_coa_id => l_adr_accounting_coa_id
22452 , x_value_type_code => l_adr_value_type_code
22453 , p_side => 'NA'
22454 );
22455
22456 xla_ae_lines_pkg.set_ccid(
22457 p_code_combination_id => l_ccid
22458 , p_value_type_code => l_adr_value_type_code
22459 , p_transaction_coa_id => l_adr_transaction_coa_id
22460 , p_accounting_coa_id => l_adr_accounting_coa_id
22461 , p_adr_code => 'COGS'
22462 , p_adr_type_code => 'S'
22463 , p_component_type => l_component_type
22464 , p_component_code => l_component_code
22465 , p_component_type_code => l_component_type_code
22466 , p_component_appl_id => l_component_appl_id
22467 , p_amb_context_code => l_amb_context_code
22468 , p_side => 'NA'
22469 );
22470
22471
22472 --
22473 --
22474 END IF;
22475 --
22476 -- Bug 4922099
22480 (l_bflow_method_code = 'PRIOR_ENTRY')
22477 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22478 (NVL(l_enc_upg_option, 'N') = 'O')
22479 ) AND
22481 )
22482 THEN
22483 IF
22484 --
22485 1 = 2
22486 --
22487 THEN
22488 xla_accounting_err_pkg.build_message
22489 (p_appli_s_name => 'XLA'
22490 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22491 ,p_token_1 => 'LINE_NUMBER'
22492 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
22493 ,p_token_2 => 'LINE_TYPE_NAME'
22494 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
22495 l_component_type
22496 ,l_component_code
22497 ,l_component_type_code
22498 ,l_component_appl_id
22499 ,l_amb_context_code
22500 ,l_entity_code
22501 ,l_event_class_code
22502 )
22503 ,p_token_3 => 'OWNER'
22504 ,p_value_3 => xla_lookups_pkg.get_meaning(
22505 p_lookup_type => 'XLA_OWNER_TYPE'
22506 ,p_lookup_code => l_component_type_code
22507 )
22508 ,p_token_4 => 'PRODUCT_NAME'
22509 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22510 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22511 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22512 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22513 ,p_ae_header_id => NULL
22514 );
22515
22516 IF (C_LEVEL_ERROR>= g_log_level) THEN
22517 trace
22518 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22519 ,p_level => C_LEVEL_ERROR
22520 ,p_module => l_log_module);
22521 END IF;
22522 END IF;
22523 END IF;
22524 --
22525 --
22526 ------------------------------------------------------------------------------------------------
22527 -- 4219869 Business Flow
22528 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22529 -- Prior Entry. Currently, the following code is always generated.
22530 ------------------------------------------------------------------------------------------------
22531 XLA_AE_LINES_PKG.ValidateCurrentLine;
22532
22533 ------------------------------------------------------------------------------------
22534 -- 4219869 Business Flow
22535 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22536 ------------------------------------------------------------------------------------
22537 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22538
22539 ----------------------------------------------------------------------------------
22540 -- 4219869 Business Flow
22541 -- Update journal entry status -- Need to generate this within IF <condition>
22542 ----------------------------------------------------------------------------------
22543 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22544 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22545 ,p_balance_type_code => l_balance_type_code
22546 );
22547
22548 -------------------------------------------------------------------------------------------
22549 -- 4262811 - Generate the Accrual Reversal lines
22550 -------------------------------------------------------------------------------------------
22551 BEGIN
22552 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22553 (g_array_event(p_event_id).array_value_num('header_index'));
22554 IF l_acc_rev_flag IS NULL THEN
22555 l_acc_rev_flag := 'N';
22556 END IF;
22557 EXCEPTION
22558 WHEN OTHERS THEN
22559 l_acc_rev_flag := 'N';
22560 END;
22561 --
22562 IF (l_acc_rev_flag = 'Y') THEN
22563
22564 -- 4645092 ------------------------------------------------------------------------------
22565 -- To allow MPA report to determine if it should generate report process
22566 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22567 ------------------------------------------------------------------------------------------
22568
22572 -- call ADRs
22569 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22570 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22571 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
22573 -- Bug 4922099
22574 --
22575 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22576 (NVL(l_actual_upg_option, 'N') = 'O') OR
22577 (NVL(l_enc_upg_option, 'N') = 'O')
22578 )
22579 THEN
22580 NULL;
22581 --
22582 --
22583
22584 l_ccid := AcctDerRule_9(
22585 p_application_id => p_application_id
22586 , p_ae_header_id => l_ae_header_id
22587 , p_source_1 => p_source_1
22588 , p_source_2 => p_source_2
22589 , x_transaction_coa_id => l_adr_transaction_coa_id
22590 , x_accounting_coa_id => l_adr_accounting_coa_id
22591 , x_value_type_code => l_adr_value_type_code
22592 , p_side => 'NA'
22593 );
22594
22595 xla_ae_lines_pkg.set_ccid(
22596 p_code_combination_id => l_ccid
22597 , p_value_type_code => l_adr_value_type_code
22598 , p_transaction_coa_id => l_adr_transaction_coa_id
22599 , p_accounting_coa_id => l_adr_accounting_coa_id
22600 , p_adr_code => 'COGS'
22601 , p_adr_type_code => 'S'
22602 , p_component_type => l_component_type
22603 , p_component_code => l_component_code
22604 , p_component_type_code => l_component_type_code
22605 , p_component_appl_id => l_component_appl_id
22606 , p_amb_context_code => l_amb_context_code
22607 , p_side => 'NA'
22608 );
22609
22610
22611 --
22612 --
22613 END IF;
22614
22615 --
22616 -- Update the line information that should be overwritten
22617 --
22618 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22619 p_header_num => 1);
22620 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
22621
22622 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22623
22624 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
22625 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22626 END IF;
22627
22628 --
22629 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22630 --
22631 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22632 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
22633 ELSE
22634 ---------------------------------------------------------------------------------------------------
22635 -- 4262811a Switch Sign
22636 ---------------------------------------------------------------------------------------------------
22637 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
22638 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22639 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22640 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22641 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22642 -- 5132302
22643 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22644 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22645
22646 END IF;
22647
22648 -- 4955764
22649 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22650 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22651
22652
22653 XLA_AE_LINES_PKG.ValidateCurrentLine;
22654 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22655
22656 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22657 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22658 ,p_balance_type_code => l_balance_type_code);
22659
22660 END IF;
22661
22662 -----------------------------------------------------------------------------------------
22663 -- 4262811 Multiperiod Accounting
22664 -----------------------------------------------------------------------------------------
22665 -- No MPA option is assigned.
22666
22667
22668 END IF;
22669 END IF;
22670 --
22671
22672 --
22673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22674 trace
22675 (p_msg => 'END of AcctLineType_73'
22676 ,p_level => C_LEVEL_PROCEDURE
22677 ,p_module => l_log_module);
22678 END IF;
22679 --
22680 EXCEPTION
22681 WHEN xla_exceptions_pkg.application_exception THEN
22682 RAISE;
22683 WHEN OTHERS THEN
22684 xla_exceptions_pkg.raise_message
22688
22685 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_73');
22686 END AcctLineType_73;
22687 --
22689 ---------------------------------------
22690 --
22691 -- PRIVATE FUNCTION
22692 -- AcctLineType_74
22693 --
22694 ---------------------------------------
22695 PROCEDURE AcctLineType_74 (
22696 p_application_id IN NUMBER
22697 ,p_event_id IN NUMBER
22698 ,p_calculate_acctd_flag IN VARCHAR2
22699 ,p_calculate_g_l_flag IN VARCHAR2
22700 ,p_actual_flag IN OUT VARCHAR2
22701 ,p_balance_type_code OUT VARCHAR2
22702 ,p_gain_or_loss_ref OUT VARCHAR2
22703
22704 --Transaction Account
22705 , p_source_1 IN NUMBER
22706 --Journal Line Type
22707 , p_source_2 IN VARCHAR2
22708 --Entered Amount
22709 , p_source_3 IN NUMBER
22710 --First Distribution Identifier
22711 , p_source_5 IN NUMBER
22712 --Distribution Type
22713 , p_source_6 IN VARCHAR2
22714 --Currency Code
22715 , p_source_7 IN VARCHAR2
22716 --Currency Conversion Date
22717 , p_source_8 IN DATE
22718 --Currency Conversion Rate
22719 , p_source_9 IN NUMBER
22720 --Currency Conversion Type
22721 , p_source_10 IN VARCHAR2
22722 --Accounted Amount
22723 , p_source_11 IN NUMBER
22724 )
22725 IS
22726
22727 l_component_type VARCHAR2(80);
22728 l_component_code VARCHAR2(30);
22729 l_component_type_code VARCHAR2(1);
22730 l_component_appl_id INTEGER;
22731 l_amb_context_code VARCHAR2(30);
22732 l_entity_code VARCHAR2(30);
22733 l_event_class_code VARCHAR2(30);
22734 l_ae_header_id NUMBER;
22735 l_event_type_code VARCHAR2(30);
22736 l_line_definition_code VARCHAR2(30);
22737 l_line_definition_owner_code VARCHAR2(1);
22738 --
22739 -- adr variables
22740 l_segment VARCHAR2(30);
22741 l_ccid NUMBER;
22742 l_adr_transaction_coa_id NUMBER;
22743 l_adr_accounting_coa_id NUMBER;
22744 l_adr_flexfield_segment_code VARCHAR2(30);
22745 l_adr_flex_value_set_id NUMBER;
22746 l_adr_value_type_code VARCHAR2(30);
22747 l_adr_value_combination_id NUMBER;
22748 l_adr_value_segment_code VARCHAR2(30);
22749
22750 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
22751 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
22752 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
22753 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
22754
22755 -- 4262811 Variables ------------------------------------------------------------------------------------------
22756 l_entered_amt_idx NUMBER;
22757 l_accted_amt_idx NUMBER;
22758 l_acc_rev_flag VARCHAR2(1);
22759 l_accrual_line_num NUMBER;
22760 l_tmp_amt NUMBER;
22761 l_acc_rev_natural_side_code VARCHAR2(1);
22762
22763 l_num_entries NUMBER;
22764 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
22765 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
22766 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
22767 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
22768 l_recog_line_1 NUMBER;
22769 l_recog_line_2 NUMBER;
22770
22771 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
22772 l_bflow_applied_to_amt NUMBER; -- 5132302
22773 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
22774
22775 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22776
22777 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
22778 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
22779
22780 ---------------------------------------------------------------------------------------------------------------
22781
22782
22783 --
22784 -- bulk performance
22785 --
22786 l_balance_type_code VARCHAR2(1);
22787 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
22788 l_log_module VARCHAR2(240);
22789
22790 --
22791 -- Upgrade strategy
22792 --
22793 l_actual_upg_option VARCHAR2(1);
22794 l_enc_upg_option VARCHAR2(1);
22795
22796 --
22797 BEGIN
22798 --
22799 IF g_log_enabled THEN
22800 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
22801 END IF;
22802 --
22803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22804
22805 trace
22806 (p_msg => 'BEGIN of AcctLineType_74'
22807 ,p_level => C_LEVEL_PROCEDURE
22808 ,p_module => l_log_module);
22809
22810 END IF;
22811 --
22812 l_component_type := 'AMB_JLT';
22813 l_component_code := 'COGS';
22814 l_component_type_code := 'S';
22815 l_component_appl_id := 555;
22816 l_amb_context_code := 'DEFAULT';
22817 l_entity_code := 'ORDERMANAGEMENT';
22818 l_event_class_code := 'SHIPPING';
22819 l_event_type_code := 'LOG_SO_ISSUE';
22820 l_line_definition_owner_code := 'S';
22821 l_line_definition_code := 'LOGICAL_SO_ISSUE';
22822 --
22826 l_adr_transaction_coa_id := NULL;
22823 l_balance_type_code := 'A';
22824 l_segment := NULL;
22825 l_ccid := NULL;
22827 l_adr_accounting_coa_id := NULL;
22828 l_adr_flexfield_segment_code := NULL;
22829 l_adr_flex_value_set_id := NULL;
22830 l_adr_value_type_code := NULL;
22831 l_adr_value_combination_id := NULL;
22832 l_adr_value_segment_code := NULL;
22833
22834 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
22835 l_bflow_class_code := ''; -- 4219869 Business Flow
22836 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
22837 l_budgetary_control_flag := 'N';
22838
22839 l_bflow_applied_to_amt_idx := NULL; -- 5132302
22840 l_bflow_applied_to_amt := NULL; -- 5132302
22841 l_entered_amt_idx := NULL; -- 4262811
22842 l_accted_amt_idx := NULL; -- 4262811
22843 l_acc_rev_flag := NULL; -- 4262811
22844 l_accrual_line_num := NULL; -- 4262811
22845 l_tmp_amt := NULL; -- 4262811
22846 --
22847
22848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22849 l_balance_type_code <> 'B' THEN
22850 IF NVL(p_source_2,'
22851 ') = 'COGS'
22852 THEN
22853
22854 --
22855 XLA_AE_LINES_PKG.SetNewLine;
22856
22857 p_balance_type_code := l_balance_type_code;
22858 -- set the flag so later we will know whether the gain loss line needs to be created
22859
22860 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22861 p_actual_flag :='A';
22862 END IF;
22863
22864 --
22865 -- bulk performance
22866 --
22867 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22868 p_header_num => 0); -- 4262811
22869 --
22870 -- set accounting line options
22871 --
22872 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22873 p_natural_side_code => 'D'
22874 , p_gain_or_loss_flag => 'N'
22875 , p_gl_transfer_mode_code => 'D'
22876 , p_acct_entry_type_code => 'A'
22877 , p_switch_side_flag => 'Y'
22878 , p_merge_duplicate_code => 'W'
22879 );
22880 --
22881 l_acc_rev_natural_side_code := 'C'; -- 4262811
22882 --
22883 --
22884 -- set accounting line type info
22885 --
22886 xla_ae_lines_pkg.SetAcctLineType
22887 (p_component_type => l_component_type
22888 ,p_event_type_code => l_event_type_code
22889 ,p_line_definition_owner_code => l_line_definition_owner_code
22890 ,p_line_definition_code => l_line_definition_code
22891 ,p_accounting_line_code => l_component_code
22892 ,p_accounting_line_type_code => l_component_type_code
22893 ,p_accounting_line_appl_id => l_component_appl_id
22894 ,p_amb_context_code => l_amb_context_code
22895 ,p_entity_code => l_entity_code
22896 ,p_event_class_code => l_event_class_code);
22897 --
22898 -- set accounting class
22899 --
22900 xla_ae_lines_pkg.SetAcctClass(
22901 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
22902 , p_ae_header_id => l_ae_header_id
22903 );
22904
22905 --
22906 -- set rounding class
22907 --
22908 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22909 'COST_OF_GOODS_SOLD';
22910
22911 --
22912 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22913 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22914 --
22915 -- bulk performance
22916 --
22917 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22918
22919 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22920 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22921
22922 -- 4955764
22923 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22924 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22925
22926 -- 4458381 Public Sector Enh
22927
22928 --
22929 -- set accounting attributes for the line type
22930 --
22931 l_entered_amt_idx := 3;
22932 l_accted_amt_idx := 8;
22933 l_bflow_applied_to_amt_idx := NULL; -- 5132302
22934 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22935 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
22936 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
22937 l_rec_acct_attrs.array_char_value(2) := p_source_6;
22938 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
22939 l_rec_acct_attrs.array_num_value(3) := p_source_3;
22940 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
22941 l_rec_acct_attrs.array_char_value(4) := p_source_7;
22942 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
22943 l_rec_acct_attrs.array_date_value(5) := p_source_8;
22947 l_rec_acct_attrs.array_char_value(7) := p_source_10;
22944 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
22945 l_rec_acct_attrs.array_num_value(6) := p_source_9;
22946 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
22948 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
22949 l_rec_acct_attrs.array_num_value(8) := p_source_11;
22950
22951 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22952 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22953
22954 ---------------------------------------------------------------------------------------------------------------
22955 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22956 ---------------------------------------------------------------------------------------------------------------
22957 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22958
22959 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22960 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22961
22962 IF xla_accounting_cache_pkg.GetValueChar
22963 (p_source_code => 'LEDGER_CATEGORY_CODE'
22964 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22965 AND l_bflow_method_code = 'PRIOR_ENTRY'
22966 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22967 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22968 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22969 )
22970 THEN
22971 xla_ae_lines_pkg.BflowUpgEntry
22972 (p_business_method_code => l_bflow_method_code
22973 ,p_business_class_code => l_bflow_class_code
22974 ,p_balance_type => l_balance_type_code);
22975 ELSE
22976 NULL;
22977 -- No business flow processing for business flow method of NONE.
22978 END IF;
22979
22980 --
22981 -- call analytical criteria
22982 --
22983
22984 --
22985 -- call description
22986 --
22987 -- No description or it is inherited.
22988 --
22989 -- call ADRs
22990 -- Bug 4922099
22991 --
22992 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22993 (NVL(l_actual_upg_option, 'N') = 'O') OR
22994 (NVL(l_enc_upg_option, 'N') = 'O')
22995 )
22996 THEN
22997 NULL;
22998 --
22999 --
23000
23001 l_ccid := AcctDerRule_9(
23002 p_application_id => p_application_id
23003 , p_ae_header_id => l_ae_header_id
23004 , p_source_1 => p_source_1
23005 , p_source_2 => p_source_2
23006 , x_transaction_coa_id => l_adr_transaction_coa_id
23007 , x_accounting_coa_id => l_adr_accounting_coa_id
23008 , x_value_type_code => l_adr_value_type_code
23009 , p_side => 'NA'
23010 );
23011
23012 xla_ae_lines_pkg.set_ccid(
23013 p_code_combination_id => l_ccid
23014 , p_value_type_code => l_adr_value_type_code
23015 , p_transaction_coa_id => l_adr_transaction_coa_id
23016 , p_accounting_coa_id => l_adr_accounting_coa_id
23017 , p_adr_code => 'COGS'
23018 , p_adr_type_code => 'S'
23019 , p_component_type => l_component_type
23020 , p_component_code => l_component_code
23021 , p_component_type_code => l_component_type_code
23022 , p_component_appl_id => l_component_appl_id
23023 , p_amb_context_code => l_amb_context_code
23024 , p_side => 'NA'
23025 );
23026
23027
23028 --
23029 --
23030 END IF;
23031 --
23032 -- Bug 4922099
23033 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23034 (NVL(l_enc_upg_option, 'N') = 'O')
23035 ) AND
23036 (l_bflow_method_code = 'PRIOR_ENTRY')
23037 )
23038 THEN
23039 IF
23040 --
23041 1 = 2
23042 --
23043 THEN
23044 xla_accounting_err_pkg.build_message
23045 (p_appli_s_name => 'XLA'
23046 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23047 ,p_token_1 => 'LINE_NUMBER'
23048 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
23049 ,p_token_2 => 'LINE_TYPE_NAME'
23050 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
23051 l_component_type
23052 ,l_component_code
23053 ,l_component_type_code
23054 ,l_component_appl_id
23055 ,l_amb_context_code
23056 ,l_entity_code
23060 ,p_value_3 => xla_lookups_pkg.get_meaning(
23057 ,l_event_class_code
23058 )
23059 ,p_token_3 => 'OWNER'
23061 p_lookup_type => 'XLA_OWNER_TYPE'
23062 ,p_lookup_code => l_component_type_code
23063 )
23064 ,p_token_4 => 'PRODUCT_NAME'
23065 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23066 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23067 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23068 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23069 ,p_ae_header_id => NULL
23070 );
23071
23072 IF (C_LEVEL_ERROR>= g_log_level) THEN
23073 trace
23074 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23075 ,p_level => C_LEVEL_ERROR
23076 ,p_module => l_log_module);
23077 END IF;
23078 END IF;
23079 END IF;
23080 --
23081 --
23082 ------------------------------------------------------------------------------------------------
23083 -- 4219869 Business Flow
23084 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23085 -- Prior Entry. Currently, the following code is always generated.
23086 ------------------------------------------------------------------------------------------------
23087 XLA_AE_LINES_PKG.ValidateCurrentLine;
23088
23089 ------------------------------------------------------------------------------------
23090 -- 4219869 Business Flow
23091 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23092 ------------------------------------------------------------------------------------
23093 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23094
23095 ----------------------------------------------------------------------------------
23096 -- 4219869 Business Flow
23097 -- Update journal entry status -- Need to generate this within IF <condition>
23098 ----------------------------------------------------------------------------------
23099 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23100 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23101 ,p_balance_type_code => l_balance_type_code
23102 );
23103
23104 -------------------------------------------------------------------------------------------
23105 -- 4262811 - Generate the Accrual Reversal lines
23106 -------------------------------------------------------------------------------------------
23107 BEGIN
23108 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23109 (g_array_event(p_event_id).array_value_num('header_index'));
23110 IF l_acc_rev_flag IS NULL THEN
23111 l_acc_rev_flag := 'N';
23112 END IF;
23113 EXCEPTION
23114 WHEN OTHERS THEN
23115 l_acc_rev_flag := 'N';
23116 END;
23117 --
23118 IF (l_acc_rev_flag = 'Y') THEN
23119
23120 -- 4645092 ------------------------------------------------------------------------------
23121 -- To allow MPA report to determine if it should generate report process
23122 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23123 ------------------------------------------------------------------------------------------
23124
23125 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23126 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23127 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
23128 -- call ADRs
23129 -- Bug 4922099
23130 --
23131 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23132 (NVL(l_actual_upg_option, 'N') = 'O') OR
23133 (NVL(l_enc_upg_option, 'N') = 'O')
23134 )
23135 THEN
23136 NULL;
23137 --
23138 --
23139
23140 l_ccid := AcctDerRule_9(
23141 p_application_id => p_application_id
23142 , p_ae_header_id => l_ae_header_id
23143 , p_source_1 => p_source_1
23144 , p_source_2 => p_source_2
23145 , x_transaction_coa_id => l_adr_transaction_coa_id
23146 , x_accounting_coa_id => l_adr_accounting_coa_id
23147 , x_value_type_code => l_adr_value_type_code
23148 , p_side => 'NA'
23149 );
23150
23151 xla_ae_lines_pkg.set_ccid(
23152 p_code_combination_id => l_ccid
23153 , p_value_type_code => l_adr_value_type_code
23154 , p_transaction_coa_id => l_adr_transaction_coa_id
23155 , p_accounting_coa_id => l_adr_accounting_coa_id
23156 , p_adr_code => 'COGS'
23160 , p_component_type_code => l_component_type_code
23157 , p_adr_type_code => 'S'
23158 , p_component_type => l_component_type
23159 , p_component_code => l_component_code
23161 , p_component_appl_id => l_component_appl_id
23162 , p_amb_context_code => l_amb_context_code
23163 , p_side => 'NA'
23164 );
23165
23166
23167 --
23168 --
23169 END IF;
23170
23171 --
23172 -- Update the line information that should be overwritten
23173 --
23174 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23175 p_header_num => 1);
23176 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
23177
23178 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23179
23180 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
23181 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23182 END IF;
23183
23184 --
23185 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23186 --
23187 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23188 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
23189 ELSE
23190 ---------------------------------------------------------------------------------------------------
23191 -- 4262811a Switch Sign
23192 ---------------------------------------------------------------------------------------------------
23193 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
23194 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23195 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23196 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23197 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23198 -- 5132302
23199 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23200 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23201
23202 END IF;
23203
23204 -- 4955764
23205 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23206 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23207
23208
23209 XLA_AE_LINES_PKG.ValidateCurrentLine;
23210 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23211
23212 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23213 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23214 ,p_balance_type_code => l_balance_type_code);
23215
23216 END IF;
23217
23218 -----------------------------------------------------------------------------------------
23219 -- 4262811 Multiperiod Accounting
23220 -----------------------------------------------------------------------------------------
23221 -- No MPA option is assigned.
23222
23223
23224 END IF;
23225 END IF;
23226 --
23227
23228 --
23229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23230 trace
23231 (p_msg => 'END of AcctLineType_74'
23232 ,p_level => C_LEVEL_PROCEDURE
23233 ,p_module => l_log_module);
23234 END IF;
23235 --
23236 EXCEPTION
23237 WHEN xla_exceptions_pkg.application_exception THEN
23238 RAISE;
23239 WHEN OTHERS THEN
23240 xla_exceptions_pkg.raise_message
23241 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_74');
23242 END AcctLineType_74;
23243 --
23244
23245 ---------------------------------------
23246 --
23247 -- PRIVATE FUNCTION
23248 -- AcctLineType_75
23249 --
23250 ---------------------------------------
23251 PROCEDURE AcctLineType_75 (
23252 p_application_id IN NUMBER
23253 ,p_event_id IN NUMBER
23254 ,p_calculate_acctd_flag IN VARCHAR2
23255 ,p_calculate_g_l_flag IN VARCHAR2
23256 ,p_actual_flag IN OUT VARCHAR2
23257 ,p_balance_type_code OUT VARCHAR2
23258 ,p_gain_or_loss_ref OUT VARCHAR2
23259
23260 --Transaction Account
23261 , p_source_1 IN NUMBER
23262 --Journal Line Type
23263 , p_source_2 IN VARCHAR2
23264 --Entered Amount
23265 , p_source_3 IN NUMBER
23266 --First Distribution Identifier
23267 , p_source_5 IN NUMBER
23268 --Distribution Type
23269 , p_source_6 IN VARCHAR2
23270 --Currency Code
23271 , p_source_7 IN VARCHAR2
23272 --Currency Conversion Date
23273 , p_source_8 IN DATE
23274 --Currency Conversion Rate
23275 , p_source_9 IN NUMBER
23276 --Currency Conversion Type
23277 , p_source_10 IN VARCHAR2
23278 --Accounted Amount
23279 , p_source_11 IN NUMBER
23280 )
23281 IS
23282
23283 l_component_type VARCHAR2(80);
23287 l_amb_context_code VARCHAR2(30);
23284 l_component_code VARCHAR2(30);
23285 l_component_type_code VARCHAR2(1);
23286 l_component_appl_id INTEGER;
23288 l_entity_code VARCHAR2(30);
23289 l_event_class_code VARCHAR2(30);
23290 l_ae_header_id NUMBER;
23291 l_event_type_code VARCHAR2(30);
23292 l_line_definition_code VARCHAR2(30);
23293 l_line_definition_owner_code VARCHAR2(1);
23294 --
23295 -- adr variables
23296 l_segment VARCHAR2(30);
23297 l_ccid NUMBER;
23298 l_adr_transaction_coa_id NUMBER;
23299 l_adr_accounting_coa_id NUMBER;
23300 l_adr_flexfield_segment_code VARCHAR2(30);
23301 l_adr_flex_value_set_id NUMBER;
23302 l_adr_value_type_code VARCHAR2(30);
23303 l_adr_value_combination_id NUMBER;
23304 l_adr_value_segment_code VARCHAR2(30);
23305
23306 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
23307 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
23308 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
23309 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
23310
23311 -- 4262811 Variables ------------------------------------------------------------------------------------------
23312 l_entered_amt_idx NUMBER;
23313 l_accted_amt_idx NUMBER;
23314 l_acc_rev_flag VARCHAR2(1);
23315 l_accrual_line_num NUMBER;
23316 l_tmp_amt NUMBER;
23317 l_acc_rev_natural_side_code VARCHAR2(1);
23318
23319 l_num_entries NUMBER;
23320 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
23321 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
23322 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
23323 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
23324 l_recog_line_1 NUMBER;
23325 l_recog_line_2 NUMBER;
23326
23327 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
23328 l_bflow_applied_to_amt NUMBER; -- 5132302
23329 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
23330
23331 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23332
23333 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
23334 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
23335
23336 ---------------------------------------------------------------------------------------------------------------
23337
23338
23339 --
23340 -- bulk performance
23341 --
23342 l_balance_type_code VARCHAR2(1);
23343 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
23344 l_log_module VARCHAR2(240);
23345
23346 --
23347 -- Upgrade strategy
23348 --
23349 l_actual_upg_option VARCHAR2(1);
23350 l_enc_upg_option VARCHAR2(1);
23351
23352 --
23353 BEGIN
23354 --
23355 IF g_log_enabled THEN
23356 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
23357 END IF;
23358 --
23359 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23360
23361 trace
23362 (p_msg => 'BEGIN of AcctLineType_75'
23363 ,p_level => C_LEVEL_PROCEDURE
23364 ,p_module => l_log_module);
23365
23366 END IF;
23367 --
23368 l_component_type := 'AMB_JLT';
23369 l_component_code := 'COGS';
23370 l_component_type_code := 'S';
23371 l_component_appl_id := 555;
23372 l_amb_context_code := 'DEFAULT';
23373 l_entity_code := 'INVENTORY';
23374 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
23375 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
23376 l_line_definition_owner_code := 'S';
23377 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
23378 --
23379 l_balance_type_code := 'A';
23380 l_segment := NULL;
23381 l_ccid := NULL;
23382 l_adr_transaction_coa_id := NULL;
23383 l_adr_accounting_coa_id := NULL;
23384 l_adr_flexfield_segment_code := NULL;
23385 l_adr_flex_value_set_id := NULL;
23386 l_adr_value_type_code := NULL;
23387 l_adr_value_combination_id := NULL;
23388 l_adr_value_segment_code := NULL;
23389
23390 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
23391 l_bflow_class_code := ''; -- 4219869 Business Flow
23392 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
23393 l_budgetary_control_flag := 'N';
23394
23395 l_bflow_applied_to_amt_idx := NULL; -- 5132302
23396 l_bflow_applied_to_amt := NULL; -- 5132302
23397 l_entered_amt_idx := NULL; -- 4262811
23398 l_accted_amt_idx := NULL; -- 4262811
23399 l_acc_rev_flag := NULL; -- 4262811
23400 l_accrual_line_num := NULL; -- 4262811
23401 l_tmp_amt := NULL; -- 4262811
23402 --
23403
23404 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23405 l_balance_type_code <> 'B' THEN
23406 IF NVL(p_source_2,'
23407 ') = 'COGS'
23408 THEN
23409
23413 p_balance_type_code := l_balance_type_code;
23410 --
23411 XLA_AE_LINES_PKG.SetNewLine;
23412
23414 -- set the flag so later we will know whether the gain loss line needs to be created
23415
23416 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23417 p_actual_flag :='A';
23418 END IF;
23419
23420 --
23421 -- bulk performance
23422 --
23423 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23424 p_header_num => 0); -- 4262811
23425 --
23426 -- set accounting line options
23427 --
23428 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23429 p_natural_side_code => 'D'
23430 , p_gain_or_loss_flag => 'N'
23431 , p_gl_transfer_mode_code => 'D'
23432 , p_acct_entry_type_code => 'A'
23433 , p_switch_side_flag => 'Y'
23434 , p_merge_duplicate_code => 'W'
23435 );
23436 --
23437 l_acc_rev_natural_side_code := 'C'; -- 4262811
23438 --
23439 --
23440 -- set accounting line type info
23441 --
23442 xla_ae_lines_pkg.SetAcctLineType
23443 (p_component_type => l_component_type
23444 ,p_event_type_code => l_event_type_code
23445 ,p_line_definition_owner_code => l_line_definition_owner_code
23446 ,p_line_definition_code => l_line_definition_code
23447 ,p_accounting_line_code => l_component_code
23448 ,p_accounting_line_type_code => l_component_type_code
23449 ,p_accounting_line_appl_id => l_component_appl_id
23450 ,p_amb_context_code => l_amb_context_code
23451 ,p_entity_code => l_entity_code
23452 ,p_event_class_code => l_event_class_code);
23453 --
23454 -- set accounting class
23455 --
23456 xla_ae_lines_pkg.SetAcctClass(
23457 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
23458 , p_ae_header_id => l_ae_header_id
23459 );
23460
23461 --
23462 -- set rounding class
23463 --
23464 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23465 'COST_OF_GOODS_SOLD';
23466
23467 --
23468 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23469 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23470 --
23471 -- bulk performance
23472 --
23473 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23474
23475 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23476 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23477
23478 -- 4955764
23479 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23480 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23481
23482 -- 4458381 Public Sector Enh
23483
23484 --
23485 -- set accounting attributes for the line type
23486 --
23487 l_entered_amt_idx := 3;
23488 l_accted_amt_idx := 8;
23489 l_bflow_applied_to_amt_idx := NULL; -- 5132302
23490 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23491 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
23492 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23493 l_rec_acct_attrs.array_char_value(2) := p_source_6;
23494 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23495 l_rec_acct_attrs.array_num_value(3) := p_source_3;
23496 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23497 l_rec_acct_attrs.array_char_value(4) := p_source_7;
23498 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23499 l_rec_acct_attrs.array_date_value(5) := p_source_8;
23500 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23501 l_rec_acct_attrs.array_num_value(6) := p_source_9;
23502 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23503 l_rec_acct_attrs.array_char_value(7) := p_source_10;
23504 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23505 l_rec_acct_attrs.array_num_value(8) := p_source_11;
23506
23507 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23508 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23509
23510 ---------------------------------------------------------------------------------------------------------------
23511 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23512 ---------------------------------------------------------------------------------------------------------------
23513 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23514
23515 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23516 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23517
23518 IF xla_accounting_cache_pkg.GetValueChar
23519 (p_source_code => 'LEDGER_CATEGORY_CODE'
23523 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23520 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23521 AND l_bflow_method_code = 'PRIOR_ENTRY'
23522 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23524 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23525 )
23526 THEN
23527 xla_ae_lines_pkg.BflowUpgEntry
23528 (p_business_method_code => l_bflow_method_code
23529 ,p_business_class_code => l_bflow_class_code
23530 ,p_balance_type => l_balance_type_code);
23531 ELSE
23532 NULL;
23533 -- No business flow processing for business flow method of NONE.
23534 END IF;
23535
23536 --
23537 -- call analytical criteria
23538 --
23539
23540 --
23541 -- call description
23542 --
23543 -- No description or it is inherited.
23544 --
23545 -- call ADRs
23546 -- Bug 4922099
23547 --
23548 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23549 (NVL(l_actual_upg_option, 'N') = 'O') OR
23550 (NVL(l_enc_upg_option, 'N') = 'O')
23551 )
23552 THEN
23553 NULL;
23554 --
23555 --
23556
23557 l_ccid := AcctDerRule_9(
23558 p_application_id => p_application_id
23559 , p_ae_header_id => l_ae_header_id
23560 , p_source_1 => p_source_1
23561 , p_source_2 => p_source_2
23562 , x_transaction_coa_id => l_adr_transaction_coa_id
23563 , x_accounting_coa_id => l_adr_accounting_coa_id
23564 , x_value_type_code => l_adr_value_type_code
23565 , p_side => 'NA'
23566 );
23567
23568 xla_ae_lines_pkg.set_ccid(
23569 p_code_combination_id => l_ccid
23570 , p_value_type_code => l_adr_value_type_code
23571 , p_transaction_coa_id => l_adr_transaction_coa_id
23572 , p_accounting_coa_id => l_adr_accounting_coa_id
23573 , p_adr_code => 'COGS'
23574 , p_adr_type_code => 'S'
23575 , p_component_type => l_component_type
23576 , p_component_code => l_component_code
23577 , p_component_type_code => l_component_type_code
23578 , p_component_appl_id => l_component_appl_id
23579 , p_amb_context_code => l_amb_context_code
23580 , p_side => 'NA'
23581 );
23582
23583
23584 --
23585 --
23586 END IF;
23587 --
23588 -- Bug 4922099
23589 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23590 (NVL(l_enc_upg_option, 'N') = 'O')
23591 ) AND
23592 (l_bflow_method_code = 'PRIOR_ENTRY')
23593 )
23594 THEN
23595 IF
23596 --
23597 1 = 2
23598 --
23599 THEN
23600 xla_accounting_err_pkg.build_message
23601 (p_appli_s_name => 'XLA'
23602 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23603 ,p_token_1 => 'LINE_NUMBER'
23604 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
23605 ,p_token_2 => 'LINE_TYPE_NAME'
23606 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
23607 l_component_type
23608 ,l_component_code
23609 ,l_component_type_code
23610 ,l_component_appl_id
23611 ,l_amb_context_code
23612 ,l_entity_code
23613 ,l_event_class_code
23614 )
23615 ,p_token_3 => 'OWNER'
23616 ,p_value_3 => xla_lookups_pkg.get_meaning(
23617 p_lookup_type => 'XLA_OWNER_TYPE'
23618 ,p_lookup_code => l_component_type_code
23619 )
23620 ,p_token_4 => 'PRODUCT_NAME'
23621 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23622 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23623 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23624 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23625 ,p_ae_header_id => NULL
23626 );
23627
23628 IF (C_LEVEL_ERROR>= g_log_level) THEN
23629 trace
23633 END IF;
23630 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23631 ,p_level => C_LEVEL_ERROR
23632 ,p_module => l_log_module);
23634 END IF;
23635 END IF;
23636 --
23637 --
23638 ------------------------------------------------------------------------------------------------
23639 -- 4219869 Business Flow
23640 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23641 -- Prior Entry. Currently, the following code is always generated.
23642 ------------------------------------------------------------------------------------------------
23643 XLA_AE_LINES_PKG.ValidateCurrentLine;
23644
23645 ------------------------------------------------------------------------------------
23646 -- 4219869 Business Flow
23647 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23648 ------------------------------------------------------------------------------------
23649 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23650
23651 ----------------------------------------------------------------------------------
23652 -- 4219869 Business Flow
23653 -- Update journal entry status -- Need to generate this within IF <condition>
23654 ----------------------------------------------------------------------------------
23655 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23656 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23657 ,p_balance_type_code => l_balance_type_code
23658 );
23659
23660 -------------------------------------------------------------------------------------------
23661 -- 4262811 - Generate the Accrual Reversal lines
23662 -------------------------------------------------------------------------------------------
23663 BEGIN
23664 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23665 (g_array_event(p_event_id).array_value_num('header_index'));
23666 IF l_acc_rev_flag IS NULL THEN
23667 l_acc_rev_flag := 'N';
23668 END IF;
23669 EXCEPTION
23670 WHEN OTHERS THEN
23671 l_acc_rev_flag := 'N';
23672 END;
23673 --
23674 IF (l_acc_rev_flag = 'Y') THEN
23675
23676 -- 4645092 ------------------------------------------------------------------------------
23677 -- To allow MPA report to determine if it should generate report process
23678 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23679 ------------------------------------------------------------------------------------------
23680
23681 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23682 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23683 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
23684 -- call ADRs
23685 -- Bug 4922099
23686 --
23687 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23688 (NVL(l_actual_upg_option, 'N') = 'O') OR
23689 (NVL(l_enc_upg_option, 'N') = 'O')
23690 )
23691 THEN
23692 NULL;
23693 --
23694 --
23695
23696 l_ccid := AcctDerRule_9(
23697 p_application_id => p_application_id
23698 , p_ae_header_id => l_ae_header_id
23699 , p_source_1 => p_source_1
23700 , p_source_2 => p_source_2
23701 , x_transaction_coa_id => l_adr_transaction_coa_id
23702 , x_accounting_coa_id => l_adr_accounting_coa_id
23703 , x_value_type_code => l_adr_value_type_code
23704 , p_side => 'NA'
23705 );
23706
23707 xla_ae_lines_pkg.set_ccid(
23708 p_code_combination_id => l_ccid
23709 , p_value_type_code => l_adr_value_type_code
23710 , p_transaction_coa_id => l_adr_transaction_coa_id
23711 , p_accounting_coa_id => l_adr_accounting_coa_id
23712 , p_adr_code => 'COGS'
23713 , p_adr_type_code => 'S'
23714 , p_component_type => l_component_type
23715 , p_component_code => l_component_code
23716 , p_component_type_code => l_component_type_code
23717 , p_component_appl_id => l_component_appl_id
23718 , p_amb_context_code => l_amb_context_code
23719 , p_side => 'NA'
23720 );
23721
23722
23723 --
23724 --
23725 END IF;
23726
23727 --
23728 -- Update the line information that should be overwritten
23729 --
23730 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23731 p_header_num => 1);
23732 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
23733
23734 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23735
23736 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
23737 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23738 END IF;
23739
23740 --
23741 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23742 --
23746 ---------------------------------------------------------------------------------------------------
23743 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23744 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
23745 ELSE
23747 -- 4262811a Switch Sign
23748 ---------------------------------------------------------------------------------------------------
23749 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
23750 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23751 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23752 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23753 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23754 -- 5132302
23755 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23756 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23757
23758 END IF;
23759
23760 -- 4955764
23761 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23762 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23763
23764
23765 XLA_AE_LINES_PKG.ValidateCurrentLine;
23766 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23767
23768 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23769 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23770 ,p_balance_type_code => l_balance_type_code);
23771
23772 END IF;
23773
23774 -----------------------------------------------------------------------------------------
23775 -- 4262811 Multiperiod Accounting
23776 -----------------------------------------------------------------------------------------
23777 -- No MPA option is assigned.
23778
23779
23780 END IF;
23781 END IF;
23782 --
23783
23784 --
23785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23786 trace
23787 (p_msg => 'END of AcctLineType_75'
23788 ,p_level => C_LEVEL_PROCEDURE
23789 ,p_module => l_log_module);
23790 END IF;
23791 --
23792 EXCEPTION
23793 WHEN xla_exceptions_pkg.application_exception THEN
23794 RAISE;
23795 WHEN OTHERS THEN
23796 xla_exceptions_pkg.raise_message
23797 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_75');
23798 END AcctLineType_75;
23799 --
23800
23801 ---------------------------------------
23802 --
23803 -- PRIVATE FUNCTION
23804 -- AcctLineType_76
23805 --
23806 ---------------------------------------
23807 PROCEDURE AcctLineType_76 (
23808 p_application_id IN NUMBER
23809 ,p_event_id IN NUMBER
23810 ,p_calculate_acctd_flag IN VARCHAR2
23811 ,p_calculate_g_l_flag IN VARCHAR2
23812 ,p_actual_flag IN OUT VARCHAR2
23813 ,p_balance_type_code OUT VARCHAR2
23814 ,p_gain_or_loss_ref OUT VARCHAR2
23815
23816 --Transaction Account
23817 , p_source_1 IN NUMBER
23818 --Journal Line Type
23819 , p_source_2 IN VARCHAR2
23820 --Entered Amount
23821 , p_source_3 IN NUMBER
23822 --First Distribution Identifier
23823 , p_source_5 IN NUMBER
23824 --Distribution Type
23825 , p_source_6 IN VARCHAR2
23826 --Currency Code
23827 , p_source_7 IN VARCHAR2
23828 --Currency Conversion Date
23829 , p_source_8 IN DATE
23830 --Currency Conversion Rate
23831 , p_source_9 IN NUMBER
23832 --Currency Conversion Type
23833 , p_source_10 IN VARCHAR2
23834 --Accounted Amount
23835 , p_source_11 IN NUMBER
23836 )
23837 IS
23838
23839 l_component_type VARCHAR2(80);
23840 l_component_code VARCHAR2(30);
23841 l_component_type_code VARCHAR2(1);
23842 l_component_appl_id INTEGER;
23843 l_amb_context_code VARCHAR2(30);
23844 l_entity_code VARCHAR2(30);
23845 l_event_class_code VARCHAR2(30);
23846 l_ae_header_id NUMBER;
23847 l_event_type_code VARCHAR2(30);
23848 l_line_definition_code VARCHAR2(30);
23849 l_line_definition_owner_code VARCHAR2(1);
23850 --
23851 -- adr variables
23852 l_segment VARCHAR2(30);
23853 l_ccid NUMBER;
23854 l_adr_transaction_coa_id NUMBER;
23855 l_adr_accounting_coa_id NUMBER;
23856 l_adr_flexfield_segment_code VARCHAR2(30);
23857 l_adr_flex_value_set_id NUMBER;
23858 l_adr_value_type_code VARCHAR2(30);
23859 l_adr_value_combination_id NUMBER;
23860 l_adr_value_segment_code VARCHAR2(30);
23861
23862 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
23863 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
23864 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
23865 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
23866
23867 -- 4262811 Variables ------------------------------------------------------------------------------------------
23868 l_entered_amt_idx NUMBER;
23872 l_tmp_amt NUMBER;
23869 l_accted_amt_idx NUMBER;
23870 l_acc_rev_flag VARCHAR2(1);
23871 l_accrual_line_num NUMBER;
23873 l_acc_rev_natural_side_code VARCHAR2(1);
23874
23875 l_num_entries NUMBER;
23876 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
23877 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
23878 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
23879 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
23880 l_recog_line_1 NUMBER;
23881 l_recog_line_2 NUMBER;
23882
23883 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
23884 l_bflow_applied_to_amt NUMBER; -- 5132302
23885 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
23886
23887 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23888
23889 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
23890 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
23891
23892 ---------------------------------------------------------------------------------------------------------------
23893
23894
23895 --
23896 -- bulk performance
23897 --
23898 l_balance_type_code VARCHAR2(1);
23899 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
23900 l_log_module VARCHAR2(240);
23901
23902 --
23903 -- Upgrade strategy
23904 --
23905 l_actual_upg_option VARCHAR2(1);
23906 l_enc_upg_option VARCHAR2(1);
23907
23908 --
23909 BEGIN
23910 --
23911 IF g_log_enabled THEN
23912 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
23913 END IF;
23914 --
23915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23916
23917 trace
23918 (p_msg => 'BEGIN of AcctLineType_76'
23919 ,p_level => C_LEVEL_PROCEDURE
23920 ,p_module => l_log_module);
23921
23922 END IF;
23923 --
23924 l_component_type := 'AMB_JLT';
23925 l_component_code := 'COGS';
23926 l_component_type_code := 'S';
23927 l_component_appl_id := 555;
23928 l_amb_context_code := 'DEFAULT';
23929 l_entity_code := 'INVENTORY';
23930 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
23931 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
23932 l_line_definition_owner_code := 'S';
23933 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
23934 --
23935 l_balance_type_code := 'A';
23936 l_segment := NULL;
23937 l_ccid := NULL;
23938 l_adr_transaction_coa_id := NULL;
23939 l_adr_accounting_coa_id := NULL;
23940 l_adr_flexfield_segment_code := NULL;
23941 l_adr_flex_value_set_id := NULL;
23942 l_adr_value_type_code := NULL;
23943 l_adr_value_combination_id := NULL;
23944 l_adr_value_segment_code := NULL;
23945
23946 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
23947 l_bflow_class_code := ''; -- 4219869 Business Flow
23948 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
23949 l_budgetary_control_flag := 'N';
23950
23951 l_bflow_applied_to_amt_idx := NULL; -- 5132302
23952 l_bflow_applied_to_amt := NULL; -- 5132302
23953 l_entered_amt_idx := NULL; -- 4262811
23954 l_accted_amt_idx := NULL; -- 4262811
23955 l_acc_rev_flag := NULL; -- 4262811
23956 l_accrual_line_num := NULL; -- 4262811
23957 l_tmp_amt := NULL; -- 4262811
23958 --
23959
23960 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23961 l_balance_type_code <> 'B' THEN
23962 IF NVL(p_source_2,'
23963 ') = 'COGS'
23964 THEN
23965
23966 --
23967 XLA_AE_LINES_PKG.SetNewLine;
23968
23969 p_balance_type_code := l_balance_type_code;
23970 -- set the flag so later we will know whether the gain loss line needs to be created
23971
23972 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23973 p_actual_flag :='A';
23974 END IF;
23975
23976 --
23977 -- bulk performance
23978 --
23979 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23980 p_header_num => 0); -- 4262811
23981 --
23982 -- set accounting line options
23983 --
23984 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23985 p_natural_side_code => 'D'
23986 , p_gain_or_loss_flag => 'N'
23987 , p_gl_transfer_mode_code => 'D'
23988 , p_acct_entry_type_code => 'A'
23989 , p_switch_side_flag => 'Y'
23990 , p_merge_duplicate_code => 'W'
23991 );
23992 --
23993 l_acc_rev_natural_side_code := 'C'; -- 4262811
23994 --
23995 --
23996 -- set accounting line type info
23997 --
23998 xla_ae_lines_pkg.SetAcctLineType
23999 (p_component_type => l_component_type
24000 ,p_event_type_code => l_event_type_code
24004 ,p_accounting_line_type_code => l_component_type_code
24001 ,p_line_definition_owner_code => l_line_definition_owner_code
24002 ,p_line_definition_code => l_line_definition_code
24003 ,p_accounting_line_code => l_component_code
24005 ,p_accounting_line_appl_id => l_component_appl_id
24006 ,p_amb_context_code => l_amb_context_code
24007 ,p_entity_code => l_entity_code
24008 ,p_event_class_code => l_event_class_code);
24009 --
24010 -- set accounting class
24011 --
24012 xla_ae_lines_pkg.SetAcctClass(
24013 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
24014 , p_ae_header_id => l_ae_header_id
24015 );
24016
24017 --
24018 -- set rounding class
24019 --
24020 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24021 'COST_OF_GOODS_SOLD';
24022
24023 --
24024 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24025 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24026 --
24027 -- bulk performance
24028 --
24029 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24030
24031 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24032 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24033
24034 -- 4955764
24035 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24036 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24037
24038 -- 4458381 Public Sector Enh
24039
24040 --
24041 -- set accounting attributes for the line type
24042 --
24043 l_entered_amt_idx := 3;
24044 l_accted_amt_idx := 8;
24045 l_bflow_applied_to_amt_idx := NULL; -- 5132302
24046 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24047 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
24048 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24049 l_rec_acct_attrs.array_char_value(2) := p_source_6;
24050 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24051 l_rec_acct_attrs.array_num_value(3) := p_source_3;
24052 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24053 l_rec_acct_attrs.array_char_value(4) := p_source_7;
24054 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24055 l_rec_acct_attrs.array_date_value(5) := p_source_8;
24056 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24057 l_rec_acct_attrs.array_num_value(6) := p_source_9;
24058 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24059 l_rec_acct_attrs.array_char_value(7) := p_source_10;
24060 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24061 l_rec_acct_attrs.array_num_value(8) := p_source_11;
24062
24063 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24064 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24065
24066 ---------------------------------------------------------------------------------------------------------------
24067 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24068 ---------------------------------------------------------------------------------------------------------------
24069 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24070
24071 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24072 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24073
24074 IF xla_accounting_cache_pkg.GetValueChar
24075 (p_source_code => 'LEDGER_CATEGORY_CODE'
24076 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24077 AND l_bflow_method_code = 'PRIOR_ENTRY'
24078 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24079 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24080 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24081 )
24082 THEN
24083 xla_ae_lines_pkg.BflowUpgEntry
24084 (p_business_method_code => l_bflow_method_code
24085 ,p_business_class_code => l_bflow_class_code
24086 ,p_balance_type => l_balance_type_code);
24087 ELSE
24088 NULL;
24089 -- No business flow processing for business flow method of NONE.
24090 END IF;
24091
24092 --
24093 -- call analytical criteria
24094 --
24095
24096 --
24097 -- call description
24098 --
24099 -- No description or it is inherited.
24100 --
24101 -- call ADRs
24102 -- Bug 4922099
24103 --
24104 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24105 (NVL(l_actual_upg_option, 'N') = 'O') OR
24106 (NVL(l_enc_upg_option, 'N') = 'O')
24107 )
24108 THEN
24109 NULL;
24110 --
24111 --
24112
24113 l_ccid := AcctDerRule_9(
24114 p_application_id => p_application_id
24118 , x_transaction_coa_id => l_adr_transaction_coa_id
24115 , p_ae_header_id => l_ae_header_id
24116 , p_source_1 => p_source_1
24117 , p_source_2 => p_source_2
24119 , x_accounting_coa_id => l_adr_accounting_coa_id
24120 , x_value_type_code => l_adr_value_type_code
24121 , p_side => 'NA'
24122 );
24123
24124 xla_ae_lines_pkg.set_ccid(
24125 p_code_combination_id => l_ccid
24126 , p_value_type_code => l_adr_value_type_code
24127 , p_transaction_coa_id => l_adr_transaction_coa_id
24128 , p_accounting_coa_id => l_adr_accounting_coa_id
24129 , p_adr_code => 'COGS'
24130 , p_adr_type_code => 'S'
24131 , p_component_type => l_component_type
24132 , p_component_code => l_component_code
24133 , p_component_type_code => l_component_type_code
24134 , p_component_appl_id => l_component_appl_id
24135 , p_amb_context_code => l_amb_context_code
24136 , p_side => 'NA'
24137 );
24138
24139
24140 --
24141 --
24142 END IF;
24143 --
24144 -- Bug 4922099
24145 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24146 (NVL(l_enc_upg_option, 'N') = 'O')
24147 ) AND
24148 (l_bflow_method_code = 'PRIOR_ENTRY')
24149 )
24150 THEN
24151 IF
24152 --
24153 1 = 2
24154 --
24155 THEN
24156 xla_accounting_err_pkg.build_message
24157 (p_appli_s_name => 'XLA'
24158 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24159 ,p_token_1 => 'LINE_NUMBER'
24160 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
24161 ,p_token_2 => 'LINE_TYPE_NAME'
24162 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
24163 l_component_type
24164 ,l_component_code
24165 ,l_component_type_code
24166 ,l_component_appl_id
24167 ,l_amb_context_code
24168 ,l_entity_code
24169 ,l_event_class_code
24170 )
24171 ,p_token_3 => 'OWNER'
24172 ,p_value_3 => xla_lookups_pkg.get_meaning(
24173 p_lookup_type => 'XLA_OWNER_TYPE'
24174 ,p_lookup_code => l_component_type_code
24175 )
24176 ,p_token_4 => 'PRODUCT_NAME'
24177 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24178 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24179 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24180 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24181 ,p_ae_header_id => NULL
24182 );
24183
24184 IF (C_LEVEL_ERROR>= g_log_level) THEN
24185 trace
24186 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24187 ,p_level => C_LEVEL_ERROR
24188 ,p_module => l_log_module);
24189 END IF;
24190 END IF;
24191 END IF;
24192 --
24193 --
24194 ------------------------------------------------------------------------------------------------
24195 -- 4219869 Business Flow
24196 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24197 -- Prior Entry. Currently, the following code is always generated.
24198 ------------------------------------------------------------------------------------------------
24199 XLA_AE_LINES_PKG.ValidateCurrentLine;
24200
24201 ------------------------------------------------------------------------------------
24202 -- 4219869 Business Flow
24203 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24204 ------------------------------------------------------------------------------------
24205 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24206
24207 ----------------------------------------------------------------------------------
24208 -- 4219869 Business Flow
24209 -- Update journal entry status -- Need to generate this within IF <condition>
24213 ,p_balance_type_code => l_balance_type_code
24210 ----------------------------------------------------------------------------------
24211 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24212 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24214 );
24215
24216 -------------------------------------------------------------------------------------------
24217 -- 4262811 - Generate the Accrual Reversal lines
24218 -------------------------------------------------------------------------------------------
24219 BEGIN
24220 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24221 (g_array_event(p_event_id).array_value_num('header_index'));
24222 IF l_acc_rev_flag IS NULL THEN
24223 l_acc_rev_flag := 'N';
24224 END IF;
24225 EXCEPTION
24226 WHEN OTHERS THEN
24227 l_acc_rev_flag := 'N';
24228 END;
24229 --
24230 IF (l_acc_rev_flag = 'Y') THEN
24231
24232 -- 4645092 ------------------------------------------------------------------------------
24233 -- To allow MPA report to determine if it should generate report process
24234 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24235 ------------------------------------------------------------------------------------------
24236
24237 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24238 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24239 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
24240 -- call ADRs
24241 -- Bug 4922099
24242 --
24243 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24244 (NVL(l_actual_upg_option, 'N') = 'O') OR
24245 (NVL(l_enc_upg_option, 'N') = 'O')
24246 )
24247 THEN
24248 NULL;
24249 --
24250 --
24251
24252 l_ccid := AcctDerRule_9(
24253 p_application_id => p_application_id
24254 , p_ae_header_id => l_ae_header_id
24255 , p_source_1 => p_source_1
24256 , p_source_2 => p_source_2
24257 , x_transaction_coa_id => l_adr_transaction_coa_id
24258 , x_accounting_coa_id => l_adr_accounting_coa_id
24259 , x_value_type_code => l_adr_value_type_code
24260 , p_side => 'NA'
24261 );
24262
24263 xla_ae_lines_pkg.set_ccid(
24264 p_code_combination_id => l_ccid
24265 , p_value_type_code => l_adr_value_type_code
24266 , p_transaction_coa_id => l_adr_transaction_coa_id
24267 , p_accounting_coa_id => l_adr_accounting_coa_id
24268 , p_adr_code => 'COGS'
24269 , p_adr_type_code => 'S'
24270 , p_component_type => l_component_type
24271 , p_component_code => l_component_code
24272 , p_component_type_code => l_component_type_code
24273 , p_component_appl_id => l_component_appl_id
24274 , p_amb_context_code => l_amb_context_code
24275 , p_side => 'NA'
24276 );
24277
24278
24279 --
24280 --
24281 END IF;
24282
24283 --
24284 -- Update the line information that should be overwritten
24285 --
24286 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24287 p_header_num => 1);
24288 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
24289
24290 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24291
24292 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
24293 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24294 END IF;
24295
24296 --
24297 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24298 --
24299 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24300 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
24301 ELSE
24302 ---------------------------------------------------------------------------------------------------
24303 -- 4262811a Switch Sign
24304 ---------------------------------------------------------------------------------------------------
24305 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
24306 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24307 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24308 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24309 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24310 -- 5132302
24311 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24312 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24313
24314 END IF;
24315
24316 -- 4955764
24317 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24321 XLA_AE_LINES_PKG.ValidateCurrentLine;
24318 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24319
24320
24322 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24323
24324 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24325 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24326 ,p_balance_type_code => l_balance_type_code);
24327
24328 END IF;
24329
24330 -----------------------------------------------------------------------------------------
24331 -- 4262811 Multiperiod Accounting
24332 -----------------------------------------------------------------------------------------
24333 -- No MPA option is assigned.
24334
24335
24336 END IF;
24337 END IF;
24338 --
24339
24340 --
24341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24342 trace
24343 (p_msg => 'END of AcctLineType_76'
24344 ,p_level => C_LEVEL_PROCEDURE
24345 ,p_module => l_log_module);
24346 END IF;
24347 --
24348 EXCEPTION
24349 WHEN xla_exceptions_pkg.application_exception THEN
24350 RAISE;
24351 WHEN OTHERS THEN
24352 xla_exceptions_pkg.raise_message
24353 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_76');
24354 END AcctLineType_76;
24355 --
24356
24357 ---------------------------------------
24358 --
24359 -- PRIVATE FUNCTION
24360 -- AcctLineType_77
24361 --
24362 ---------------------------------------
24363 PROCEDURE AcctLineType_77 (
24364 p_application_id IN NUMBER
24365 ,p_event_id IN NUMBER
24366 ,p_calculate_acctd_flag IN VARCHAR2
24367 ,p_calculate_g_l_flag IN VARCHAR2
24368 ,p_actual_flag IN OUT VARCHAR2
24369 ,p_balance_type_code OUT VARCHAR2
24370 ,p_gain_or_loss_ref OUT VARCHAR2
24371
24372 --Transaction Account
24373 , p_source_1 IN NUMBER
24374 --Journal Line Type
24375 , p_source_2 IN VARCHAR2
24376 --Entered Amount
24377 , p_source_3 IN NUMBER
24378 --First Distribution Identifier
24379 , p_source_5 IN NUMBER
24380 --Distribution Type
24381 , p_source_6 IN VARCHAR2
24382 --Currency Code
24383 , p_source_7 IN VARCHAR2
24384 --Currency Conversion Date
24385 , p_source_8 IN DATE
24386 --Currency Conversion Rate
24387 , p_source_9 IN NUMBER
24388 --Currency Conversion Type
24389 , p_source_10 IN VARCHAR2
24390 --Accounted Amount
24391 , p_source_11 IN NUMBER
24392 )
24393 IS
24394
24395 l_component_type VARCHAR2(80);
24396 l_component_code VARCHAR2(30);
24397 l_component_type_code VARCHAR2(1);
24398 l_component_appl_id INTEGER;
24399 l_amb_context_code VARCHAR2(30);
24400 l_entity_code VARCHAR2(30);
24401 l_event_class_code VARCHAR2(30);
24402 l_ae_header_id NUMBER;
24403 l_event_type_code VARCHAR2(30);
24404 l_line_definition_code VARCHAR2(30);
24405 l_line_definition_owner_code VARCHAR2(1);
24406 --
24407 -- adr variables
24408 l_segment VARCHAR2(30);
24409 l_ccid NUMBER;
24410 l_adr_transaction_coa_id NUMBER;
24411 l_adr_accounting_coa_id NUMBER;
24412 l_adr_flexfield_segment_code VARCHAR2(30);
24413 l_adr_flex_value_set_id NUMBER;
24414 l_adr_value_type_code VARCHAR2(30);
24415 l_adr_value_combination_id NUMBER;
24416 l_adr_value_segment_code VARCHAR2(30);
24417
24418 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
24419 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
24420 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
24421 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
24422
24423 -- 4262811 Variables ------------------------------------------------------------------------------------------
24424 l_entered_amt_idx NUMBER;
24425 l_accted_amt_idx NUMBER;
24426 l_acc_rev_flag VARCHAR2(1);
24427 l_accrual_line_num NUMBER;
24428 l_tmp_amt NUMBER;
24429 l_acc_rev_natural_side_code VARCHAR2(1);
24430
24431 l_num_entries NUMBER;
24432 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
24433 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
24434 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
24435 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
24436 l_recog_line_1 NUMBER;
24437 l_recog_line_2 NUMBER;
24438
24439 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
24440 l_bflow_applied_to_amt NUMBER; -- 5132302
24441 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
24442
24443 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24444
24445 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
24446 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
24447
24448 ---------------------------------------------------------------------------------------------------------------
24449
24453 --
24450
24451 --
24452 -- bulk performance
24454 l_balance_type_code VARCHAR2(1);
24455 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
24456 l_log_module VARCHAR2(240);
24457
24458 --
24459 -- Upgrade strategy
24460 --
24461 l_actual_upg_option VARCHAR2(1);
24462 l_enc_upg_option VARCHAR2(1);
24463
24464 --
24465 BEGIN
24466 --
24467 IF g_log_enabled THEN
24468 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
24469 END IF;
24470 --
24471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24472
24473 trace
24474 (p_msg => 'BEGIN of AcctLineType_77'
24475 ,p_level => C_LEVEL_PROCEDURE
24476 ,p_module => l_log_module);
24477
24478 END IF;
24479 --
24480 l_component_type := 'AMB_JLT';
24481 l_component_code := 'DCOGS';
24482 l_component_type_code := 'S';
24483 l_component_appl_id := 555;
24484 l_amb_context_code := 'DEFAULT';
24485 l_entity_code := 'ORDERMANAGEMENT';
24486 l_event_class_code := 'SHIPPING';
24487 l_event_type_code := 'COGS_RECOGNITION';
24488 l_line_definition_owner_code := 'S';
24489 l_line_definition_code := 'COGS_RECOGNITION';
24490 --
24491 l_balance_type_code := 'A';
24492 l_segment := NULL;
24493 l_ccid := NULL;
24494 l_adr_transaction_coa_id := NULL;
24495 l_adr_accounting_coa_id := NULL;
24496 l_adr_flexfield_segment_code := NULL;
24497 l_adr_flex_value_set_id := NULL;
24498 l_adr_value_type_code := NULL;
24499 l_adr_value_combination_id := NULL;
24500 l_adr_value_segment_code := NULL;
24501
24502 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
24503 l_bflow_class_code := ''; -- 4219869 Business Flow
24504 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
24505 l_budgetary_control_flag := 'N';
24506
24507 l_bflow_applied_to_amt_idx := NULL; -- 5132302
24508 l_bflow_applied_to_amt := NULL; -- 5132302
24509 l_entered_amt_idx := NULL; -- 4262811
24510 l_accted_amt_idx := NULL; -- 4262811
24511 l_acc_rev_flag := NULL; -- 4262811
24512 l_accrual_line_num := NULL; -- 4262811
24513 l_tmp_amt := NULL; -- 4262811
24514 --
24515
24516 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24517 l_balance_type_code <> 'B' THEN
24518 IF NVL(p_source_2,'
24519 ') = 'DCOGS'
24520 THEN
24521
24522 --
24523 XLA_AE_LINES_PKG.SetNewLine;
24524
24525 p_balance_type_code := l_balance_type_code;
24526 -- set the flag so later we will know whether the gain loss line needs to be created
24527
24528 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24529 p_actual_flag :='A';
24530 END IF;
24531
24532 --
24533 -- bulk performance
24534 --
24535 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24536 p_header_num => 0); -- 4262811
24537 --
24538 -- set accounting line options
24539 --
24540 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24541 p_natural_side_code => 'D'
24542 , p_gain_or_loss_flag => 'N'
24543 , p_gl_transfer_mode_code => 'D'
24544 , p_acct_entry_type_code => 'A'
24545 , p_switch_side_flag => 'Y'
24546 , p_merge_duplicate_code => 'W'
24547 );
24548 --
24549 l_acc_rev_natural_side_code := 'C'; -- 4262811
24550 --
24551 --
24552 -- set accounting line type info
24553 --
24554 xla_ae_lines_pkg.SetAcctLineType
24555 (p_component_type => l_component_type
24556 ,p_event_type_code => l_event_type_code
24557 ,p_line_definition_owner_code => l_line_definition_owner_code
24558 ,p_line_definition_code => l_line_definition_code
24559 ,p_accounting_line_code => l_component_code
24560 ,p_accounting_line_type_code => l_component_type_code
24561 ,p_accounting_line_appl_id => l_component_appl_id
24562 ,p_amb_context_code => l_amb_context_code
24563 ,p_entity_code => l_entity_code
24564 ,p_event_class_code => l_event_class_code);
24565 --
24566 -- set accounting class
24567 --
24568 xla_ae_lines_pkg.SetAcctClass(
24569 p_accounting_class_code => 'DEFERRED_COGS'
24570 , p_ae_header_id => l_ae_header_id
24571 );
24572
24573 --
24574 -- set rounding class
24575 --
24576 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24577 'DEFERRED_COGS';
24578
24579 --
24580 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24581 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24582 --
24583 -- bulk performance
24584 --
24588 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24585 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24586
24587 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24589
24590 -- 4955764
24591 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24592 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24593
24594 -- 4458381 Public Sector Enh
24595
24596 --
24597 -- set accounting attributes for the line type
24598 --
24599 l_entered_amt_idx := 3;
24600 l_accted_amt_idx := 8;
24601 l_bflow_applied_to_amt_idx := NULL; -- 5132302
24602 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24603 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
24604 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24605 l_rec_acct_attrs.array_char_value(2) := p_source_6;
24606 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24607 l_rec_acct_attrs.array_num_value(3) := p_source_3;
24608 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24609 l_rec_acct_attrs.array_char_value(4) := p_source_7;
24610 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24611 l_rec_acct_attrs.array_date_value(5) := p_source_8;
24612 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24613 l_rec_acct_attrs.array_num_value(6) := p_source_9;
24614 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24615 l_rec_acct_attrs.array_char_value(7) := p_source_10;
24616 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24617 l_rec_acct_attrs.array_num_value(8) := p_source_11;
24618
24619 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24620 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24621
24622 ---------------------------------------------------------------------------------------------------------------
24623 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24624 ---------------------------------------------------------------------------------------------------------------
24625 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24626
24627 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24628 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24629
24630 IF xla_accounting_cache_pkg.GetValueChar
24631 (p_source_code => 'LEDGER_CATEGORY_CODE'
24632 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24633 AND l_bflow_method_code = 'PRIOR_ENTRY'
24634 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24635 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24636 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24637 )
24638 THEN
24639 xla_ae_lines_pkg.BflowUpgEntry
24640 (p_business_method_code => l_bflow_method_code
24641 ,p_business_class_code => l_bflow_class_code
24642 ,p_balance_type => l_balance_type_code);
24643 ELSE
24644 NULL;
24645 -- No business flow processing for business flow method of NONE.
24646 END IF;
24647
24648 --
24649 -- call analytical criteria
24650 --
24651
24652 --
24653 -- call description
24654 --
24655 -- No description or it is inherited.
24656 --
24657 -- call ADRs
24658 -- Bug 4922099
24659 --
24660 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24661 (NVL(l_actual_upg_option, 'N') = 'O') OR
24662 (NVL(l_enc_upg_option, 'N') = 'O')
24663 )
24664 THEN
24665 NULL;
24666 --
24667 --
24668
24669 l_ccid := AcctDerRule_10(
24670 p_application_id => p_application_id
24671 , p_ae_header_id => l_ae_header_id
24672 , p_source_1 => p_source_1
24673 , p_source_2 => p_source_2
24674 , x_transaction_coa_id => l_adr_transaction_coa_id
24675 , x_accounting_coa_id => l_adr_accounting_coa_id
24676 , x_value_type_code => l_adr_value_type_code
24677 , p_side => 'NA'
24678 );
24679
24680 xla_ae_lines_pkg.set_ccid(
24681 p_code_combination_id => l_ccid
24682 , p_value_type_code => l_adr_value_type_code
24683 , p_transaction_coa_id => l_adr_transaction_coa_id
24684 , p_accounting_coa_id => l_adr_accounting_coa_id
24685 , p_adr_code => 'DCOGS'
24686 , p_adr_type_code => 'S'
24687 , p_component_type => l_component_type
24688 , p_component_code => l_component_code
24689 , p_component_type_code => l_component_type_code
24690 , p_component_appl_id => l_component_appl_id
24691 , p_amb_context_code => l_amb_context_code
24692 , p_side => 'NA'
24693 );
24694
24695
24696 --
24697 --
24698 END IF;
24699 --
24700 -- Bug 4922099
24701 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24705 )
24702 (NVL(l_enc_upg_option, 'N') = 'O')
24703 ) AND
24704 (l_bflow_method_code = 'PRIOR_ENTRY')
24706 THEN
24707 IF
24708 --
24709 1 = 2
24710 --
24711 THEN
24712 xla_accounting_err_pkg.build_message
24713 (p_appli_s_name => 'XLA'
24714 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24715 ,p_token_1 => 'LINE_NUMBER'
24716 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
24717 ,p_token_2 => 'LINE_TYPE_NAME'
24718 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
24719 l_component_type
24720 ,l_component_code
24721 ,l_component_type_code
24722 ,l_component_appl_id
24723 ,l_amb_context_code
24724 ,l_entity_code
24725 ,l_event_class_code
24726 )
24727 ,p_token_3 => 'OWNER'
24728 ,p_value_3 => xla_lookups_pkg.get_meaning(
24729 p_lookup_type => 'XLA_OWNER_TYPE'
24730 ,p_lookup_code => l_component_type_code
24731 )
24732 ,p_token_4 => 'PRODUCT_NAME'
24733 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24734 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24735 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24736 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24737 ,p_ae_header_id => NULL
24738 );
24739
24740 IF (C_LEVEL_ERROR>= g_log_level) THEN
24741 trace
24742 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24743 ,p_level => C_LEVEL_ERROR
24744 ,p_module => l_log_module);
24745 END IF;
24746 END IF;
24747 END IF;
24748 --
24749 --
24750 ------------------------------------------------------------------------------------------------
24751 -- 4219869 Business Flow
24752 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24753 -- Prior Entry. Currently, the following code is always generated.
24754 ------------------------------------------------------------------------------------------------
24755 XLA_AE_LINES_PKG.ValidateCurrentLine;
24756
24757 ------------------------------------------------------------------------------------
24758 -- 4219869 Business Flow
24759 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24760 ------------------------------------------------------------------------------------
24761 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24762
24763 ----------------------------------------------------------------------------------
24764 -- 4219869 Business Flow
24765 -- Update journal entry status -- Need to generate this within IF <condition>
24766 ----------------------------------------------------------------------------------
24767 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24768 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24769 ,p_balance_type_code => l_balance_type_code
24770 );
24771
24772 -------------------------------------------------------------------------------------------
24773 -- 4262811 - Generate the Accrual Reversal lines
24774 -------------------------------------------------------------------------------------------
24775 BEGIN
24776 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24777 (g_array_event(p_event_id).array_value_num('header_index'));
24778 IF l_acc_rev_flag IS NULL THEN
24779 l_acc_rev_flag := 'N';
24780 END IF;
24781 EXCEPTION
24782 WHEN OTHERS THEN
24783 l_acc_rev_flag := 'N';
24784 END;
24785 --
24786 IF (l_acc_rev_flag = 'Y') THEN
24787
24788 -- 4645092 ------------------------------------------------------------------------------
24789 -- To allow MPA report to determine if it should generate report process
24790 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24794 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24791 ------------------------------------------------------------------------------------------
24792
24793 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24795 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
24796 -- call ADRs
24797 -- Bug 4922099
24798 --
24799 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24800 (NVL(l_actual_upg_option, 'N') = 'O') OR
24801 (NVL(l_enc_upg_option, 'N') = 'O')
24802 )
24803 THEN
24804 NULL;
24805 --
24806 --
24807
24808 l_ccid := AcctDerRule_10(
24809 p_application_id => p_application_id
24810 , p_ae_header_id => l_ae_header_id
24811 , p_source_1 => p_source_1
24812 , p_source_2 => p_source_2
24813 , x_transaction_coa_id => l_adr_transaction_coa_id
24814 , x_accounting_coa_id => l_adr_accounting_coa_id
24815 , x_value_type_code => l_adr_value_type_code
24816 , p_side => 'NA'
24817 );
24818
24819 xla_ae_lines_pkg.set_ccid(
24820 p_code_combination_id => l_ccid
24821 , p_value_type_code => l_adr_value_type_code
24822 , p_transaction_coa_id => l_adr_transaction_coa_id
24823 , p_accounting_coa_id => l_adr_accounting_coa_id
24824 , p_adr_code => 'DCOGS'
24825 , p_adr_type_code => 'S'
24826 , p_component_type => l_component_type
24827 , p_component_code => l_component_code
24828 , p_component_type_code => l_component_type_code
24829 , p_component_appl_id => l_component_appl_id
24830 , p_amb_context_code => l_amb_context_code
24831 , p_side => 'NA'
24832 );
24833
24834
24835 --
24836 --
24837 END IF;
24838
24839 --
24840 -- Update the line information that should be overwritten
24841 --
24842 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24843 p_header_num => 1);
24844 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
24845
24846 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24847
24848 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
24849 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24850 END IF;
24851
24852 --
24853 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24854 --
24855 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24856 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
24857 ELSE
24858 ---------------------------------------------------------------------------------------------------
24859 -- 4262811a Switch Sign
24860 ---------------------------------------------------------------------------------------------------
24861 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
24862 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24863 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24864 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24865 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24866 -- 5132302
24867 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24868 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24869
24870 END IF;
24871
24872 -- 4955764
24873 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24874 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24875
24876
24877 XLA_AE_LINES_PKG.ValidateCurrentLine;
24878 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24879
24880 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24881 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24882 ,p_balance_type_code => l_balance_type_code);
24883
24884 END IF;
24885
24886 -----------------------------------------------------------------------------------------
24887 -- 4262811 Multiperiod Accounting
24888 -----------------------------------------------------------------------------------------
24889 -- No MPA option is assigned.
24890
24891
24892 END IF;
24893 END IF;
24894 --
24895
24896 --
24897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24898 trace
24899 (p_msg => 'END of AcctLineType_77'
24900 ,p_level => C_LEVEL_PROCEDURE
24901 ,p_module => l_log_module);
24902 END IF;
24903 --
24904 EXCEPTION
24905 WHEN xla_exceptions_pkg.application_exception THEN
24906 RAISE;
24907 WHEN OTHERS THEN
24908 xla_exceptions_pkg.raise_message
24909 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_77');
24910 END AcctLineType_77;
24911 --
24912
24916 -- AcctLineType_78
24913 ---------------------------------------
24914 --
24915 -- PRIVATE FUNCTION
24917 --
24918 ---------------------------------------
24919 PROCEDURE AcctLineType_78 (
24920 p_application_id IN NUMBER
24921 ,p_event_id IN NUMBER
24922 ,p_calculate_acctd_flag IN VARCHAR2
24923 ,p_calculate_g_l_flag IN VARCHAR2
24924 ,p_actual_flag IN OUT VARCHAR2
24925 ,p_balance_type_code OUT VARCHAR2
24926 ,p_gain_or_loss_ref OUT VARCHAR2
24927
24928 --Transaction Account
24929 , p_source_1 IN NUMBER
24930 --Journal Line Type
24931 , p_source_2 IN VARCHAR2
24932 --Entered Amount
24933 , p_source_3 IN NUMBER
24934 --First Distribution Identifier
24935 , p_source_5 IN NUMBER
24936 --Distribution Type
24937 , p_source_6 IN VARCHAR2
24938 --Currency Code
24939 , p_source_7 IN VARCHAR2
24940 --Currency Conversion Date
24941 , p_source_8 IN DATE
24942 --Currency Conversion Rate
24943 , p_source_9 IN NUMBER
24944 --Currency Conversion Type
24945 , p_source_10 IN VARCHAR2
24946 --Accounted Amount
24947 , p_source_11 IN NUMBER
24948 )
24949 IS
24950
24951 l_component_type VARCHAR2(80);
24952 l_component_code VARCHAR2(30);
24953 l_component_type_code VARCHAR2(1);
24954 l_component_appl_id INTEGER;
24955 l_amb_context_code VARCHAR2(30);
24956 l_entity_code VARCHAR2(30);
24957 l_event_class_code VARCHAR2(30);
24958 l_ae_header_id NUMBER;
24959 l_event_type_code VARCHAR2(30);
24960 l_line_definition_code VARCHAR2(30);
24961 l_line_definition_owner_code VARCHAR2(1);
24962 --
24963 -- adr variables
24964 l_segment VARCHAR2(30);
24965 l_ccid NUMBER;
24966 l_adr_transaction_coa_id NUMBER;
24967 l_adr_accounting_coa_id NUMBER;
24968 l_adr_flexfield_segment_code VARCHAR2(30);
24969 l_adr_flex_value_set_id NUMBER;
24970 l_adr_value_type_code VARCHAR2(30);
24971 l_adr_value_combination_id NUMBER;
24972 l_adr_value_segment_code VARCHAR2(30);
24973
24974 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
24975 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
24976 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
24977 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
24978
24979 -- 4262811 Variables ------------------------------------------------------------------------------------------
24980 l_entered_amt_idx NUMBER;
24981 l_accted_amt_idx NUMBER;
24982 l_acc_rev_flag VARCHAR2(1);
24983 l_accrual_line_num NUMBER;
24984 l_tmp_amt NUMBER;
24985 l_acc_rev_natural_side_code VARCHAR2(1);
24986
24987 l_num_entries NUMBER;
24988 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
24989 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
24990 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
24991 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
24992 l_recog_line_1 NUMBER;
24993 l_recog_line_2 NUMBER;
24994
24995 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
24996 l_bflow_applied_to_amt NUMBER; -- 5132302
24997 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
24998
24999 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25000
25001 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
25002 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
25003
25004 ---------------------------------------------------------------------------------------------------------------
25005
25006
25007 --
25008 -- bulk performance
25009 --
25010 l_balance_type_code VARCHAR2(1);
25011 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
25012 l_log_module VARCHAR2(240);
25013
25014 --
25015 -- Upgrade strategy
25016 --
25017 l_actual_upg_option VARCHAR2(1);
25018 l_enc_upg_option VARCHAR2(1);
25019
25020 --
25021 BEGIN
25022 --
25023 IF g_log_enabled THEN
25024 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
25025 END IF;
25026 --
25027 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25028
25029 trace
25030 (p_msg => 'BEGIN of AcctLineType_78'
25031 ,p_level => C_LEVEL_PROCEDURE
25032 ,p_module => l_log_module);
25033
25034 END IF;
25035 --
25036 l_component_type := 'AMB_JLT';
25037 l_component_code := 'DCOGS';
25038 l_component_type_code := 'S';
25039 l_component_appl_id := 555;
25040 l_amb_context_code := 'DEFAULT';
25041 l_entity_code := 'ORDERMANAGEMENT';
25042 l_event_class_code := 'SHIPPING';
25043 l_event_type_code := 'COGS_RECOGNITION_ADJ';
25044 l_line_definition_owner_code := 'S';
25045 l_line_definition_code := 'COGS_RECOGNITION_ADJ';
25049 l_ccid := NULL;
25046 --
25047 l_balance_type_code := 'A';
25048 l_segment := NULL;
25050 l_adr_transaction_coa_id := NULL;
25051 l_adr_accounting_coa_id := NULL;
25052 l_adr_flexfield_segment_code := NULL;
25053 l_adr_flex_value_set_id := NULL;
25054 l_adr_value_type_code := NULL;
25055 l_adr_value_combination_id := NULL;
25056 l_adr_value_segment_code := NULL;
25057
25058 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
25059 l_bflow_class_code := ''; -- 4219869 Business Flow
25060 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
25061 l_budgetary_control_flag := 'N';
25062
25063 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25064 l_bflow_applied_to_amt := NULL; -- 5132302
25065 l_entered_amt_idx := NULL; -- 4262811
25066 l_accted_amt_idx := NULL; -- 4262811
25067 l_acc_rev_flag := NULL; -- 4262811
25068 l_accrual_line_num := NULL; -- 4262811
25069 l_tmp_amt := NULL; -- 4262811
25070 --
25071
25072 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25073 l_balance_type_code <> 'B' THEN
25074 IF NVL(p_source_2,'
25075 ') = 'DCOGS'
25076 THEN
25077
25078 --
25079 XLA_AE_LINES_PKG.SetNewLine;
25080
25081 p_balance_type_code := l_balance_type_code;
25082 -- set the flag so later we will know whether the gain loss line needs to be created
25083
25084 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25085 p_actual_flag :='A';
25086 END IF;
25087
25088 --
25089 -- bulk performance
25090 --
25091 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25092 p_header_num => 0); -- 4262811
25093 --
25094 -- set accounting line options
25095 --
25096 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25097 p_natural_side_code => 'D'
25098 , p_gain_or_loss_flag => 'N'
25099 , p_gl_transfer_mode_code => 'D'
25100 , p_acct_entry_type_code => 'A'
25101 , p_switch_side_flag => 'Y'
25102 , p_merge_duplicate_code => 'W'
25103 );
25104 --
25105 l_acc_rev_natural_side_code := 'C'; -- 4262811
25106 --
25107 --
25108 -- set accounting line type info
25109 --
25110 xla_ae_lines_pkg.SetAcctLineType
25111 (p_component_type => l_component_type
25112 ,p_event_type_code => l_event_type_code
25113 ,p_line_definition_owner_code => l_line_definition_owner_code
25114 ,p_line_definition_code => l_line_definition_code
25115 ,p_accounting_line_code => l_component_code
25116 ,p_accounting_line_type_code => l_component_type_code
25117 ,p_accounting_line_appl_id => l_component_appl_id
25118 ,p_amb_context_code => l_amb_context_code
25119 ,p_entity_code => l_entity_code
25120 ,p_event_class_code => l_event_class_code);
25121 --
25122 -- set accounting class
25123 --
25124 xla_ae_lines_pkg.SetAcctClass(
25125 p_accounting_class_code => 'DEFERRED_COGS'
25126 , p_ae_header_id => l_ae_header_id
25127 );
25128
25129 --
25130 -- set rounding class
25131 --
25132 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25133 'DEFERRED_COGS';
25134
25135 --
25136 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25137 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25138 --
25139 -- bulk performance
25140 --
25141 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25142
25143 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25144 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25145
25146 -- 4955764
25147 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25148 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25149
25150 -- 4458381 Public Sector Enh
25151
25152 --
25153 -- set accounting attributes for the line type
25154 --
25155 l_entered_amt_idx := 3;
25156 l_accted_amt_idx := 8;
25157 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25158 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25159 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
25160 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25161 l_rec_acct_attrs.array_char_value(2) := p_source_6;
25162 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25163 l_rec_acct_attrs.array_num_value(3) := p_source_3;
25164 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25165 l_rec_acct_attrs.array_char_value(4) := p_source_7;
25166 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25170 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25167 l_rec_acct_attrs.array_date_value(5) := p_source_8;
25168 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25169 l_rec_acct_attrs.array_num_value(6) := p_source_9;
25171 l_rec_acct_attrs.array_char_value(7) := p_source_10;
25172 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25173 l_rec_acct_attrs.array_num_value(8) := p_source_11;
25174
25175 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25176 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25177
25178 ---------------------------------------------------------------------------------------------------------------
25179 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25180 ---------------------------------------------------------------------------------------------------------------
25181 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25182
25183 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25184 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25185
25186 IF xla_accounting_cache_pkg.GetValueChar
25187 (p_source_code => 'LEDGER_CATEGORY_CODE'
25188 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25189 AND l_bflow_method_code = 'PRIOR_ENTRY'
25190 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25191 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25192 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25193 )
25194 THEN
25195 xla_ae_lines_pkg.BflowUpgEntry
25196 (p_business_method_code => l_bflow_method_code
25197 ,p_business_class_code => l_bflow_class_code
25198 ,p_balance_type => l_balance_type_code);
25199 ELSE
25200 NULL;
25201 -- No business flow processing for business flow method of NONE.
25202 END IF;
25203
25204 --
25205 -- call analytical criteria
25206 --
25207
25208 --
25209 -- call description
25210 --
25211 -- No description or it is inherited.
25212 --
25213 -- call ADRs
25214 -- Bug 4922099
25215 --
25216 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25217 (NVL(l_actual_upg_option, 'N') = 'O') OR
25218 (NVL(l_enc_upg_option, 'N') = 'O')
25219 )
25220 THEN
25221 NULL;
25222 --
25223 --
25224
25225 l_ccid := AcctDerRule_10(
25226 p_application_id => p_application_id
25227 , p_ae_header_id => l_ae_header_id
25228 , p_source_1 => p_source_1
25229 , p_source_2 => p_source_2
25230 , x_transaction_coa_id => l_adr_transaction_coa_id
25231 , x_accounting_coa_id => l_adr_accounting_coa_id
25232 , x_value_type_code => l_adr_value_type_code
25233 , p_side => 'NA'
25234 );
25235
25236 xla_ae_lines_pkg.set_ccid(
25237 p_code_combination_id => l_ccid
25238 , p_value_type_code => l_adr_value_type_code
25239 , p_transaction_coa_id => l_adr_transaction_coa_id
25240 , p_accounting_coa_id => l_adr_accounting_coa_id
25241 , p_adr_code => 'DCOGS'
25242 , p_adr_type_code => 'S'
25243 , p_component_type => l_component_type
25244 , p_component_code => l_component_code
25245 , p_component_type_code => l_component_type_code
25246 , p_component_appl_id => l_component_appl_id
25247 , p_amb_context_code => l_amb_context_code
25248 , p_side => 'NA'
25249 );
25250
25251
25252 --
25253 --
25254 END IF;
25255 --
25256 -- Bug 4922099
25257 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25258 (NVL(l_enc_upg_option, 'N') = 'O')
25259 ) AND
25260 (l_bflow_method_code = 'PRIOR_ENTRY')
25261 )
25262 THEN
25263 IF
25264 --
25265 1 = 2
25266 --
25267 THEN
25268 xla_accounting_err_pkg.build_message
25269 (p_appli_s_name => 'XLA'
25270 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25271 ,p_token_1 => 'LINE_NUMBER'
25272 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
25273 ,p_token_2 => 'LINE_TYPE_NAME'
25274 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
25275 l_component_type
25276 ,l_component_code
25277 ,l_component_type_code
25278 ,l_component_appl_id
25279 ,l_amb_context_code
25283 ,p_token_3 => 'OWNER'
25280 ,l_entity_code
25281 ,l_event_class_code
25282 )
25284 ,p_value_3 => xla_lookups_pkg.get_meaning(
25285 p_lookup_type => 'XLA_OWNER_TYPE'
25286 ,p_lookup_code => l_component_type_code
25287 )
25288 ,p_token_4 => 'PRODUCT_NAME'
25289 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25290 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25291 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25292 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25293 ,p_ae_header_id => NULL
25294 );
25295
25296 IF (C_LEVEL_ERROR>= g_log_level) THEN
25297 trace
25298 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25299 ,p_level => C_LEVEL_ERROR
25300 ,p_module => l_log_module);
25301 END IF;
25302 END IF;
25303 END IF;
25304 --
25305 --
25306 ------------------------------------------------------------------------------------------------
25307 -- 4219869 Business Flow
25308 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25309 -- Prior Entry. Currently, the following code is always generated.
25310 ------------------------------------------------------------------------------------------------
25311 XLA_AE_LINES_PKG.ValidateCurrentLine;
25312
25313 ------------------------------------------------------------------------------------
25314 -- 4219869 Business Flow
25315 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25316 ------------------------------------------------------------------------------------
25317 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25318
25319 ----------------------------------------------------------------------------------
25320 -- 4219869 Business Flow
25321 -- Update journal entry status -- Need to generate this within IF <condition>
25322 ----------------------------------------------------------------------------------
25323 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25324 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25325 ,p_balance_type_code => l_balance_type_code
25326 );
25327
25328 -------------------------------------------------------------------------------------------
25329 -- 4262811 - Generate the Accrual Reversal lines
25330 -------------------------------------------------------------------------------------------
25331 BEGIN
25332 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25333 (g_array_event(p_event_id).array_value_num('header_index'));
25334 IF l_acc_rev_flag IS NULL THEN
25335 l_acc_rev_flag := 'N';
25336 END IF;
25337 EXCEPTION
25338 WHEN OTHERS THEN
25339 l_acc_rev_flag := 'N';
25340 END;
25341 --
25342 IF (l_acc_rev_flag = 'Y') THEN
25343
25344 -- 4645092 ------------------------------------------------------------------------------
25345 -- To allow MPA report to determine if it should generate report process
25346 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25347 ------------------------------------------------------------------------------------------
25348
25349 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25350 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25351 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
25352 -- call ADRs
25353 -- Bug 4922099
25354 --
25355 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25356 (NVL(l_actual_upg_option, 'N') = 'O') OR
25357 (NVL(l_enc_upg_option, 'N') = 'O')
25358 )
25359 THEN
25360 NULL;
25361 --
25362 --
25363
25364 l_ccid := AcctDerRule_10(
25365 p_application_id => p_application_id
25366 , p_ae_header_id => l_ae_header_id
25367 , p_source_1 => p_source_1
25368 , p_source_2 => p_source_2
25369 , x_transaction_coa_id => l_adr_transaction_coa_id
25370 , x_accounting_coa_id => l_adr_accounting_coa_id
25371 , x_value_type_code => l_adr_value_type_code
25372 , p_side => 'NA'
25373 );
25374
25375 xla_ae_lines_pkg.set_ccid(
25376 p_code_combination_id => l_ccid
25377 , p_value_type_code => l_adr_value_type_code
25378 , p_transaction_coa_id => l_adr_transaction_coa_id
25379 , p_accounting_coa_id => l_adr_accounting_coa_id
25380 , p_adr_code => 'DCOGS'
25384 , p_component_type_code => l_component_type_code
25381 , p_adr_type_code => 'S'
25382 , p_component_type => l_component_type
25383 , p_component_code => l_component_code
25385 , p_component_appl_id => l_component_appl_id
25386 , p_amb_context_code => l_amb_context_code
25387 , p_side => 'NA'
25388 );
25389
25390
25391 --
25392 --
25393 END IF;
25394
25395 --
25396 -- Update the line information that should be overwritten
25397 --
25398 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25399 p_header_num => 1);
25400 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
25401
25402 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25403
25404 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
25405 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25406 END IF;
25407
25408 --
25409 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25410 --
25411 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25412 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
25413 ELSE
25414 ---------------------------------------------------------------------------------------------------
25415 -- 4262811a Switch Sign
25416 ---------------------------------------------------------------------------------------------------
25417 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
25418 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25419 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25420 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25421 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25422 -- 5132302
25423 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25424 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25425
25426 END IF;
25427
25428 -- 4955764
25429 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25430 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25431
25432
25433 XLA_AE_LINES_PKG.ValidateCurrentLine;
25434 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25435
25436 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25437 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25438 ,p_balance_type_code => l_balance_type_code);
25439
25440 END IF;
25441
25442 -----------------------------------------------------------------------------------------
25443 -- 4262811 Multiperiod Accounting
25444 -----------------------------------------------------------------------------------------
25445 -- No MPA option is assigned.
25446
25447
25448 END IF;
25449 END IF;
25450 --
25451
25452 --
25453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25454 trace
25455 (p_msg => 'END of AcctLineType_78'
25456 ,p_level => C_LEVEL_PROCEDURE
25457 ,p_module => l_log_module);
25458 END IF;
25459 --
25460 EXCEPTION
25461 WHEN xla_exceptions_pkg.application_exception THEN
25462 RAISE;
25463 WHEN OTHERS THEN
25464 xla_exceptions_pkg.raise_message
25465 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_78');
25466 END AcctLineType_78;
25467 --
25468
25469 ---------------------------------------
25470 --
25471 -- PRIVATE FUNCTION
25472 -- AcctLineType_79
25473 --
25474 ---------------------------------------
25475 PROCEDURE AcctLineType_79 (
25476 p_application_id IN NUMBER
25477 ,p_event_id IN NUMBER
25478 ,p_calculate_acctd_flag IN VARCHAR2
25479 ,p_calculate_g_l_flag IN VARCHAR2
25480 ,p_actual_flag IN OUT VARCHAR2
25481 ,p_balance_type_code OUT VARCHAR2
25482 ,p_gain_or_loss_ref OUT VARCHAR2
25483
25484 --Transaction Account
25485 , p_source_1 IN NUMBER
25486 --Journal Line Type
25487 , p_source_2 IN VARCHAR2
25488 --Entered Amount
25489 , p_source_3 IN NUMBER
25490 --First Distribution Identifier
25491 , p_source_5 IN NUMBER
25492 --Distribution Type
25493 , p_source_6 IN VARCHAR2
25494 --Currency Code
25495 , p_source_7 IN VARCHAR2
25496 --Currency Conversion Date
25497 , p_source_8 IN DATE
25498 --Currency Conversion Rate
25499 , p_source_9 IN NUMBER
25500 --Currency Conversion Type
25501 , p_source_10 IN VARCHAR2
25502 --Accounted Amount
25503 , p_source_11 IN NUMBER
25504 )
25505 IS
25506
25507 l_component_type VARCHAR2(80);
25511 l_amb_context_code VARCHAR2(30);
25508 l_component_code VARCHAR2(30);
25509 l_component_type_code VARCHAR2(1);
25510 l_component_appl_id INTEGER;
25512 l_entity_code VARCHAR2(30);
25513 l_event_class_code VARCHAR2(30);
25514 l_ae_header_id NUMBER;
25515 l_event_type_code VARCHAR2(30);
25516 l_line_definition_code VARCHAR2(30);
25517 l_line_definition_owner_code VARCHAR2(1);
25518 --
25519 -- adr variables
25520 l_segment VARCHAR2(30);
25521 l_ccid NUMBER;
25522 l_adr_transaction_coa_id NUMBER;
25523 l_adr_accounting_coa_id NUMBER;
25524 l_adr_flexfield_segment_code VARCHAR2(30);
25525 l_adr_flex_value_set_id NUMBER;
25526 l_adr_value_type_code VARCHAR2(30);
25527 l_adr_value_combination_id NUMBER;
25528 l_adr_value_segment_code VARCHAR2(30);
25529
25530 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
25531 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
25532 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
25533 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
25534
25535 -- 4262811 Variables ------------------------------------------------------------------------------------------
25536 l_entered_amt_idx NUMBER;
25537 l_accted_amt_idx NUMBER;
25538 l_acc_rev_flag VARCHAR2(1);
25539 l_accrual_line_num NUMBER;
25540 l_tmp_amt NUMBER;
25541 l_acc_rev_natural_side_code VARCHAR2(1);
25542
25543 l_num_entries NUMBER;
25544 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
25545 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
25546 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
25547 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
25548 l_recog_line_1 NUMBER;
25549 l_recog_line_2 NUMBER;
25550
25551 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
25552 l_bflow_applied_to_amt NUMBER; -- 5132302
25553 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
25554
25555 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25556
25557 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
25558 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
25559
25560 ---------------------------------------------------------------------------------------------------------------
25561
25562
25563 --
25564 -- bulk performance
25565 --
25566 l_balance_type_code VARCHAR2(1);
25567 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
25568 l_log_module VARCHAR2(240);
25569
25570 --
25571 -- Upgrade strategy
25572 --
25573 l_actual_upg_option VARCHAR2(1);
25574 l_enc_upg_option VARCHAR2(1);
25575
25576 --
25577 BEGIN
25578 --
25579 IF g_log_enabled THEN
25580 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
25581 END IF;
25582 --
25583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25584
25585 trace
25586 (p_msg => 'BEGIN of AcctLineType_79'
25587 ,p_level => C_LEVEL_PROCEDURE
25588 ,p_module => l_log_module);
25589
25590 END IF;
25591 --
25592 l_component_type := 'AMB_JLT';
25593 l_component_code := 'DCOGS';
25594 l_component_type_code := 'S';
25595 l_component_appl_id := 555;
25596 l_amb_context_code := 'DEFAULT';
25597 l_entity_code := 'ORDERMANAGEMENT';
25598 l_event_class_code := 'SHIPPING';
25599 l_event_type_code := 'LOG_SO_ISSUE';
25600 l_line_definition_owner_code := 'S';
25601 l_line_definition_code := 'LOGICAL_SO_ISSUE';
25602 --
25603 l_balance_type_code := 'A';
25604 l_segment := NULL;
25605 l_ccid := NULL;
25606 l_adr_transaction_coa_id := NULL;
25607 l_adr_accounting_coa_id := NULL;
25608 l_adr_flexfield_segment_code := NULL;
25609 l_adr_flex_value_set_id := NULL;
25610 l_adr_value_type_code := NULL;
25611 l_adr_value_combination_id := NULL;
25612 l_adr_value_segment_code := NULL;
25613
25614 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
25615 l_bflow_class_code := ''; -- 4219869 Business Flow
25616 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
25617 l_budgetary_control_flag := 'N';
25618
25619 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25620 l_bflow_applied_to_amt := NULL; -- 5132302
25621 l_entered_amt_idx := NULL; -- 4262811
25622 l_accted_amt_idx := NULL; -- 4262811
25623 l_acc_rev_flag := NULL; -- 4262811
25624 l_accrual_line_num := NULL; -- 4262811
25625 l_tmp_amt := NULL; -- 4262811
25626 --
25627
25628 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25629 l_balance_type_code <> 'B' THEN
25630 IF NVL(p_source_2,'
25631 ') = 'DCOGS'
25632 THEN
25633
25634 --
25638 -- set the flag so later we will know whether the gain loss line needs to be created
25635 XLA_AE_LINES_PKG.SetNewLine;
25636
25637 p_balance_type_code := l_balance_type_code;
25639
25640 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25641 p_actual_flag :='A';
25642 END IF;
25643
25644 --
25645 -- bulk performance
25646 --
25647 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25648 p_header_num => 0); -- 4262811
25649 --
25650 -- set accounting line options
25651 --
25652 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25653 p_natural_side_code => 'D'
25654 , p_gain_or_loss_flag => 'N'
25655 , p_gl_transfer_mode_code => 'D'
25656 , p_acct_entry_type_code => 'A'
25657 , p_switch_side_flag => 'Y'
25658 , p_merge_duplicate_code => 'W'
25659 );
25660 --
25661 l_acc_rev_natural_side_code := 'C'; -- 4262811
25662 --
25663 --
25664 -- set accounting line type info
25665 --
25666 xla_ae_lines_pkg.SetAcctLineType
25667 (p_component_type => l_component_type
25668 ,p_event_type_code => l_event_type_code
25669 ,p_line_definition_owner_code => l_line_definition_owner_code
25670 ,p_line_definition_code => l_line_definition_code
25671 ,p_accounting_line_code => l_component_code
25672 ,p_accounting_line_type_code => l_component_type_code
25673 ,p_accounting_line_appl_id => l_component_appl_id
25674 ,p_amb_context_code => l_amb_context_code
25675 ,p_entity_code => l_entity_code
25676 ,p_event_class_code => l_event_class_code);
25677 --
25678 -- set accounting class
25679 --
25680 xla_ae_lines_pkg.SetAcctClass(
25681 p_accounting_class_code => 'DEFERRED_COGS'
25682 , p_ae_header_id => l_ae_header_id
25683 );
25684
25685 --
25686 -- set rounding class
25687 --
25688 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25689 'DEFERRED_COGS';
25690
25691 --
25692 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25693 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25694 --
25695 -- bulk performance
25696 --
25697 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25698
25699 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25700 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25701
25702 -- 4955764
25703 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25704 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25705
25706 -- 4458381 Public Sector Enh
25707
25708 --
25709 -- set accounting attributes for the line type
25710 --
25711 l_entered_amt_idx := 3;
25712 l_accted_amt_idx := 8;
25713 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25714 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25715 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
25716 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25717 l_rec_acct_attrs.array_char_value(2) := p_source_6;
25718 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25719 l_rec_acct_attrs.array_num_value(3) := p_source_3;
25720 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25721 l_rec_acct_attrs.array_char_value(4) := p_source_7;
25722 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25723 l_rec_acct_attrs.array_date_value(5) := p_source_8;
25724 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25725 l_rec_acct_attrs.array_num_value(6) := p_source_9;
25726 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25727 l_rec_acct_attrs.array_char_value(7) := p_source_10;
25728 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25729 l_rec_acct_attrs.array_num_value(8) := p_source_11;
25730
25731 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25732 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25733
25734 ---------------------------------------------------------------------------------------------------------------
25735 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25736 ---------------------------------------------------------------------------------------------------------------
25737 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25738
25739 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25740 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25741
25742 IF xla_accounting_cache_pkg.GetValueChar
25743 (p_source_code => 'LEDGER_CATEGORY_CODE'
25747 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25744 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25745 AND l_bflow_method_code = 'PRIOR_ENTRY'
25746 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25748 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25749 )
25750 THEN
25751 xla_ae_lines_pkg.BflowUpgEntry
25752 (p_business_method_code => l_bflow_method_code
25753 ,p_business_class_code => l_bflow_class_code
25754 ,p_balance_type => l_balance_type_code);
25755 ELSE
25756 NULL;
25757 -- No business flow processing for business flow method of NONE.
25758 END IF;
25759
25760 --
25761 -- call analytical criteria
25762 --
25763
25764 --
25765 -- call description
25766 --
25767 -- No description or it is inherited.
25768 --
25769 -- call ADRs
25770 -- Bug 4922099
25771 --
25772 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25773 (NVL(l_actual_upg_option, 'N') = 'O') OR
25774 (NVL(l_enc_upg_option, 'N') = 'O')
25775 )
25776 THEN
25777 NULL;
25778 --
25779 --
25780
25781 l_ccid := AcctDerRule_10(
25782 p_application_id => p_application_id
25783 , p_ae_header_id => l_ae_header_id
25784 , p_source_1 => p_source_1
25785 , p_source_2 => p_source_2
25786 , x_transaction_coa_id => l_adr_transaction_coa_id
25787 , x_accounting_coa_id => l_adr_accounting_coa_id
25788 , x_value_type_code => l_adr_value_type_code
25789 , p_side => 'NA'
25790 );
25791
25792 xla_ae_lines_pkg.set_ccid(
25793 p_code_combination_id => l_ccid
25794 , p_value_type_code => l_adr_value_type_code
25795 , p_transaction_coa_id => l_adr_transaction_coa_id
25796 , p_accounting_coa_id => l_adr_accounting_coa_id
25797 , p_adr_code => 'DCOGS'
25798 , p_adr_type_code => 'S'
25799 , p_component_type => l_component_type
25800 , p_component_code => l_component_code
25801 , p_component_type_code => l_component_type_code
25802 , p_component_appl_id => l_component_appl_id
25803 , p_amb_context_code => l_amb_context_code
25804 , p_side => 'NA'
25805 );
25806
25807
25808 --
25809 --
25810 END IF;
25811 --
25812 -- Bug 4922099
25813 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25814 (NVL(l_enc_upg_option, 'N') = 'O')
25815 ) AND
25816 (l_bflow_method_code = 'PRIOR_ENTRY')
25817 )
25818 THEN
25819 IF
25820 --
25821 1 = 2
25822 --
25823 THEN
25824 xla_accounting_err_pkg.build_message
25825 (p_appli_s_name => 'XLA'
25826 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25827 ,p_token_1 => 'LINE_NUMBER'
25828 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
25829 ,p_token_2 => 'LINE_TYPE_NAME'
25830 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
25831 l_component_type
25832 ,l_component_code
25833 ,l_component_type_code
25834 ,l_component_appl_id
25835 ,l_amb_context_code
25836 ,l_entity_code
25837 ,l_event_class_code
25838 )
25839 ,p_token_3 => 'OWNER'
25840 ,p_value_3 => xla_lookups_pkg.get_meaning(
25841 p_lookup_type => 'XLA_OWNER_TYPE'
25842 ,p_lookup_code => l_component_type_code
25843 )
25844 ,p_token_4 => 'PRODUCT_NAME'
25845 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25846 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25847 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25848 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25849 ,p_ae_header_id => NULL
25850 );
25851
25852 IF (C_LEVEL_ERROR>= g_log_level) THEN
25856 ,p_module => l_log_module);
25853 trace
25854 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25855 ,p_level => C_LEVEL_ERROR
25857 END IF;
25858 END IF;
25859 END IF;
25860 --
25861 --
25862 ------------------------------------------------------------------------------------------------
25863 -- 4219869 Business Flow
25864 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25865 -- Prior Entry. Currently, the following code is always generated.
25866 ------------------------------------------------------------------------------------------------
25867 XLA_AE_LINES_PKG.ValidateCurrentLine;
25868
25869 ------------------------------------------------------------------------------------
25870 -- 4219869 Business Flow
25871 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25872 ------------------------------------------------------------------------------------
25873 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25874
25875 ----------------------------------------------------------------------------------
25876 -- 4219869 Business Flow
25877 -- Update journal entry status -- Need to generate this within IF <condition>
25878 ----------------------------------------------------------------------------------
25879 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25880 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25881 ,p_balance_type_code => l_balance_type_code
25882 );
25883
25884 -------------------------------------------------------------------------------------------
25885 -- 4262811 - Generate the Accrual Reversal lines
25886 -------------------------------------------------------------------------------------------
25887 BEGIN
25888 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25889 (g_array_event(p_event_id).array_value_num('header_index'));
25890 IF l_acc_rev_flag IS NULL THEN
25891 l_acc_rev_flag := 'N';
25892 END IF;
25893 EXCEPTION
25894 WHEN OTHERS THEN
25895 l_acc_rev_flag := 'N';
25896 END;
25897 --
25898 IF (l_acc_rev_flag = 'Y') THEN
25899
25900 -- 4645092 ------------------------------------------------------------------------------
25901 -- To allow MPA report to determine if it should generate report process
25902 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25903 ------------------------------------------------------------------------------------------
25904
25905 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25906 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25907 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
25908 -- call ADRs
25909 -- Bug 4922099
25910 --
25911 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25912 (NVL(l_actual_upg_option, 'N') = 'O') OR
25913 (NVL(l_enc_upg_option, 'N') = 'O')
25914 )
25915 THEN
25916 NULL;
25917 --
25918 --
25919
25920 l_ccid := AcctDerRule_10(
25921 p_application_id => p_application_id
25922 , p_ae_header_id => l_ae_header_id
25923 , p_source_1 => p_source_1
25924 , p_source_2 => p_source_2
25925 , x_transaction_coa_id => l_adr_transaction_coa_id
25926 , x_accounting_coa_id => l_adr_accounting_coa_id
25927 , x_value_type_code => l_adr_value_type_code
25928 , p_side => 'NA'
25929 );
25930
25931 xla_ae_lines_pkg.set_ccid(
25932 p_code_combination_id => l_ccid
25933 , p_value_type_code => l_adr_value_type_code
25934 , p_transaction_coa_id => l_adr_transaction_coa_id
25935 , p_accounting_coa_id => l_adr_accounting_coa_id
25936 , p_adr_code => 'DCOGS'
25937 , p_adr_type_code => 'S'
25938 , p_component_type => l_component_type
25939 , p_component_code => l_component_code
25940 , p_component_type_code => l_component_type_code
25941 , p_component_appl_id => l_component_appl_id
25942 , p_amb_context_code => l_amb_context_code
25943 , p_side => 'NA'
25944 );
25945
25946
25947 --
25948 --
25949 END IF;
25950
25951 --
25952 -- Update the line information that should be overwritten
25953 --
25954 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25955 p_header_num => 1);
25956 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
25957
25958 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25959
25960 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
25961 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25962 END IF;
25963
25964 --
25965 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25966 --
25967 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25971 -- 4262811a Switch Sign
25968 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
25969 ELSE
25970 ---------------------------------------------------------------------------------------------------
25972 ---------------------------------------------------------------------------------------------------
25973 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
25974 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25975 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25976 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25977 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25978 -- 5132302
25979 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25980 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25981
25982 END IF;
25983
25984 -- 4955764
25985 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25986 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25987
25988
25989 XLA_AE_LINES_PKG.ValidateCurrentLine;
25990 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25991
25992 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25993 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25994 ,p_balance_type_code => l_balance_type_code);
25995
25996 END IF;
25997
25998 -----------------------------------------------------------------------------------------
25999 -- 4262811 Multiperiod Accounting
26000 -----------------------------------------------------------------------------------------
26001 -- No MPA option is assigned.
26002
26003
26004 END IF;
26005 END IF;
26006 --
26007
26008 --
26009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26010 trace
26011 (p_msg => 'END of AcctLineType_79'
26012 ,p_level => C_LEVEL_PROCEDURE
26013 ,p_module => l_log_module);
26014 END IF;
26015 --
26016 EXCEPTION
26017 WHEN xla_exceptions_pkg.application_exception THEN
26018 RAISE;
26019 WHEN OTHERS THEN
26020 xla_exceptions_pkg.raise_message
26021 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_79');
26022 END AcctLineType_79;
26023 --
26024
26025 ---------------------------------------
26026 --
26027 -- PRIVATE FUNCTION
26028 -- AcctLineType_80
26029 --
26030 ---------------------------------------
26031 PROCEDURE AcctLineType_80 (
26032 p_application_id IN NUMBER
26033 ,p_event_id IN NUMBER
26034 ,p_calculate_acctd_flag IN VARCHAR2
26035 ,p_calculate_g_l_flag IN VARCHAR2
26036 ,p_actual_flag IN OUT VARCHAR2
26037 ,p_balance_type_code OUT VARCHAR2
26038 ,p_gain_or_loss_ref OUT VARCHAR2
26039
26040 --Transaction Account
26041 , p_source_1 IN NUMBER
26042 --Journal Line Type
26043 , p_source_2 IN VARCHAR2
26044 --Entered Amount
26045 , p_source_3 IN NUMBER
26046 --First Distribution Identifier
26047 , p_source_5 IN NUMBER
26048 --Distribution Type
26049 , p_source_6 IN VARCHAR2
26050 --Currency Code
26051 , p_source_7 IN VARCHAR2
26052 --Currency Conversion Date
26053 , p_source_8 IN DATE
26054 --Currency Conversion Rate
26055 , p_source_9 IN NUMBER
26056 --Currency Conversion Type
26057 , p_source_10 IN VARCHAR2
26058 --Accounted Amount
26059 , p_source_11 IN NUMBER
26060 )
26061 IS
26062
26063 l_component_type VARCHAR2(80);
26064 l_component_code VARCHAR2(30);
26065 l_component_type_code VARCHAR2(1);
26066 l_component_appl_id INTEGER;
26067 l_amb_context_code VARCHAR2(30);
26068 l_entity_code VARCHAR2(30);
26069 l_event_class_code VARCHAR2(30);
26070 l_ae_header_id NUMBER;
26071 l_event_type_code VARCHAR2(30);
26072 l_line_definition_code VARCHAR2(30);
26073 l_line_definition_owner_code VARCHAR2(1);
26074 --
26075 -- adr variables
26076 l_segment VARCHAR2(30);
26077 l_ccid NUMBER;
26078 l_adr_transaction_coa_id NUMBER;
26079 l_adr_accounting_coa_id NUMBER;
26080 l_adr_flexfield_segment_code VARCHAR2(30);
26081 l_adr_flex_value_set_id NUMBER;
26082 l_adr_value_type_code VARCHAR2(30);
26083 l_adr_value_combination_id NUMBER;
26084 l_adr_value_segment_code VARCHAR2(30);
26085
26086 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
26087 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
26088 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
26089 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
26090
26091 -- 4262811 Variables ------------------------------------------------------------------------------------------
26095 l_accrual_line_num NUMBER;
26092 l_entered_amt_idx NUMBER;
26093 l_accted_amt_idx NUMBER;
26094 l_acc_rev_flag VARCHAR2(1);
26096 l_tmp_amt NUMBER;
26097 l_acc_rev_natural_side_code VARCHAR2(1);
26098
26099 l_num_entries NUMBER;
26100 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
26101 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
26102 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
26103 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
26104 l_recog_line_1 NUMBER;
26105 l_recog_line_2 NUMBER;
26106
26107 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
26108 l_bflow_applied_to_amt NUMBER; -- 5132302
26109 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
26110
26111 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26112
26113 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
26114 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
26115
26116 ---------------------------------------------------------------------------------------------------------------
26117
26118
26119 --
26120 -- bulk performance
26121 --
26122 l_balance_type_code VARCHAR2(1);
26123 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
26124 l_log_module VARCHAR2(240);
26125
26126 --
26127 -- Upgrade strategy
26128 --
26129 l_actual_upg_option VARCHAR2(1);
26130 l_enc_upg_option VARCHAR2(1);
26131
26132 --
26133 BEGIN
26134 --
26135 IF g_log_enabled THEN
26136 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
26137 END IF;
26138 --
26139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26140
26141 trace
26142 (p_msg => 'BEGIN of AcctLineType_80'
26143 ,p_level => C_LEVEL_PROCEDURE
26144 ,p_module => l_log_module);
26145
26146 END IF;
26147 --
26148 l_component_type := 'AMB_JLT';
26149 l_component_code := 'DCOGS';
26150 l_component_type_code := 'S';
26151 l_component_appl_id := 555;
26152 l_amb_context_code := 'DEFAULT';
26153 l_entity_code := 'ORDERMANAGEMENT';
26154 l_event_class_code := 'RMA';
26155 l_event_type_code := 'RMA_ALL';
26156 l_line_definition_owner_code := 'S';
26157 l_line_definition_code := 'RMA';
26158 --
26159 l_balance_type_code := 'A';
26160 l_segment := NULL;
26161 l_ccid := NULL;
26162 l_adr_transaction_coa_id := NULL;
26163 l_adr_accounting_coa_id := NULL;
26164 l_adr_flexfield_segment_code := NULL;
26165 l_adr_flex_value_set_id := NULL;
26166 l_adr_value_type_code := NULL;
26167 l_adr_value_combination_id := NULL;
26168 l_adr_value_segment_code := NULL;
26169
26170 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
26171 l_bflow_class_code := ''; -- 4219869 Business Flow
26172 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
26173 l_budgetary_control_flag := 'N';
26174
26175 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26176 l_bflow_applied_to_amt := NULL; -- 5132302
26177 l_entered_amt_idx := NULL; -- 4262811
26178 l_accted_amt_idx := NULL; -- 4262811
26179 l_acc_rev_flag := NULL; -- 4262811
26180 l_accrual_line_num := NULL; -- 4262811
26181 l_tmp_amt := NULL; -- 4262811
26182 --
26183
26184 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26185 l_balance_type_code <> 'B' THEN
26186 IF NVL(p_source_2,'
26187 ') = 'DCOGS'
26188 THEN
26189
26190 --
26191 XLA_AE_LINES_PKG.SetNewLine;
26192
26193 p_balance_type_code := l_balance_type_code;
26194 -- set the flag so later we will know whether the gain loss line needs to be created
26195
26196 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26197 p_actual_flag :='A';
26198 END IF;
26199
26200 --
26201 -- bulk performance
26202 --
26203 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26204 p_header_num => 0); -- 4262811
26205 --
26206 -- set accounting line options
26207 --
26208 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26209 p_natural_side_code => 'D'
26210 , p_gain_or_loss_flag => 'N'
26211 , p_gl_transfer_mode_code => 'D'
26212 , p_acct_entry_type_code => 'A'
26213 , p_switch_side_flag => 'Y'
26214 , p_merge_duplicate_code => 'W'
26215 );
26216 --
26217 l_acc_rev_natural_side_code := 'C'; -- 4262811
26218 --
26219 --
26220 -- set accounting line type info
26221 --
26222 xla_ae_lines_pkg.SetAcctLineType
26223 (p_component_type => l_component_type
26224 ,p_event_type_code => l_event_type_code
26228 ,p_accounting_line_type_code => l_component_type_code
26225 ,p_line_definition_owner_code => l_line_definition_owner_code
26226 ,p_line_definition_code => l_line_definition_code
26227 ,p_accounting_line_code => l_component_code
26229 ,p_accounting_line_appl_id => l_component_appl_id
26230 ,p_amb_context_code => l_amb_context_code
26231 ,p_entity_code => l_entity_code
26232 ,p_event_class_code => l_event_class_code);
26233 --
26234 -- set accounting class
26235 --
26236 xla_ae_lines_pkg.SetAcctClass(
26237 p_accounting_class_code => 'DEFERRED_COGS'
26238 , p_ae_header_id => l_ae_header_id
26239 );
26240
26241 --
26242 -- set rounding class
26243 --
26244 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26245 'DEFERRED_COGS';
26246
26247 --
26248 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26249 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26250 --
26251 -- bulk performance
26252 --
26253 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26254
26255 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26256 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26257
26258 -- 4955764
26259 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26260 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26261
26262 -- 4458381 Public Sector Enh
26263
26264 --
26265 -- set accounting attributes for the line type
26266 --
26267 l_entered_amt_idx := 3;
26268 l_accted_amt_idx := 8;
26269 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26270 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26271 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
26272 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26273 l_rec_acct_attrs.array_char_value(2) := p_source_6;
26274 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26275 l_rec_acct_attrs.array_num_value(3) := p_source_3;
26276 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26277 l_rec_acct_attrs.array_char_value(4) := p_source_7;
26278 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26279 l_rec_acct_attrs.array_date_value(5) := p_source_8;
26280 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26281 l_rec_acct_attrs.array_num_value(6) := p_source_9;
26282 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26283 l_rec_acct_attrs.array_char_value(7) := p_source_10;
26284 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26285 l_rec_acct_attrs.array_num_value(8) := p_source_11;
26286
26287 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26288 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26289
26290 ---------------------------------------------------------------------------------------------------------------
26291 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26292 ---------------------------------------------------------------------------------------------------------------
26293 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26294
26295 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26296 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26297
26298 IF xla_accounting_cache_pkg.GetValueChar
26299 (p_source_code => 'LEDGER_CATEGORY_CODE'
26300 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26301 AND l_bflow_method_code = 'PRIOR_ENTRY'
26302 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26303 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26304 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26305 )
26306 THEN
26307 xla_ae_lines_pkg.BflowUpgEntry
26308 (p_business_method_code => l_bflow_method_code
26309 ,p_business_class_code => l_bflow_class_code
26310 ,p_balance_type => l_balance_type_code);
26311 ELSE
26312 NULL;
26313 -- No business flow processing for business flow method of NONE.
26314 END IF;
26315
26316 --
26317 -- call analytical criteria
26318 --
26319
26320 --
26321 -- call description
26322 --
26323 -- No description or it is inherited.
26324 --
26325 -- call ADRs
26326 -- Bug 4922099
26327 --
26328 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26329 (NVL(l_actual_upg_option, 'N') = 'O') OR
26330 (NVL(l_enc_upg_option, 'N') = 'O')
26331 )
26332 THEN
26333 NULL;
26334 --
26335 --
26336
26337 l_ccid := AcctDerRule_10(
26338 p_application_id => p_application_id
26342 , x_transaction_coa_id => l_adr_transaction_coa_id
26339 , p_ae_header_id => l_ae_header_id
26340 , p_source_1 => p_source_1
26341 , p_source_2 => p_source_2
26343 , x_accounting_coa_id => l_adr_accounting_coa_id
26344 , x_value_type_code => l_adr_value_type_code
26345 , p_side => 'NA'
26346 );
26347
26348 xla_ae_lines_pkg.set_ccid(
26349 p_code_combination_id => l_ccid
26350 , p_value_type_code => l_adr_value_type_code
26351 , p_transaction_coa_id => l_adr_transaction_coa_id
26352 , p_accounting_coa_id => l_adr_accounting_coa_id
26353 , p_adr_code => 'DCOGS'
26354 , p_adr_type_code => 'S'
26355 , p_component_type => l_component_type
26356 , p_component_code => l_component_code
26357 , p_component_type_code => l_component_type_code
26358 , p_component_appl_id => l_component_appl_id
26359 , p_amb_context_code => l_amb_context_code
26360 , p_side => 'NA'
26361 );
26362
26363
26364 --
26365 --
26366 END IF;
26367 --
26368 -- Bug 4922099
26369 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26370 (NVL(l_enc_upg_option, 'N') = 'O')
26371 ) AND
26372 (l_bflow_method_code = 'PRIOR_ENTRY')
26373 )
26374 THEN
26375 IF
26376 --
26377 1 = 2
26378 --
26379 THEN
26380 xla_accounting_err_pkg.build_message
26381 (p_appli_s_name => 'XLA'
26382 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26383 ,p_token_1 => 'LINE_NUMBER'
26384 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
26385 ,p_token_2 => 'LINE_TYPE_NAME'
26386 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
26387 l_component_type
26388 ,l_component_code
26389 ,l_component_type_code
26390 ,l_component_appl_id
26391 ,l_amb_context_code
26392 ,l_entity_code
26393 ,l_event_class_code
26394 )
26395 ,p_token_3 => 'OWNER'
26396 ,p_value_3 => xla_lookups_pkg.get_meaning(
26397 p_lookup_type => 'XLA_OWNER_TYPE'
26398 ,p_lookup_code => l_component_type_code
26399 )
26400 ,p_token_4 => 'PRODUCT_NAME'
26401 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26402 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26403 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26404 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26405 ,p_ae_header_id => NULL
26406 );
26407
26408 IF (C_LEVEL_ERROR>= g_log_level) THEN
26409 trace
26410 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26411 ,p_level => C_LEVEL_ERROR
26412 ,p_module => l_log_module);
26413 END IF;
26414 END IF;
26415 END IF;
26416 --
26417 --
26418 ------------------------------------------------------------------------------------------------
26419 -- 4219869 Business Flow
26420 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26421 -- Prior Entry. Currently, the following code is always generated.
26422 ------------------------------------------------------------------------------------------------
26423 XLA_AE_LINES_PKG.ValidateCurrentLine;
26424
26425 ------------------------------------------------------------------------------------
26426 -- 4219869 Business Flow
26427 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26428 ------------------------------------------------------------------------------------
26429 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26430
26431 ----------------------------------------------------------------------------------
26432 -- 4219869 Business Flow
26433 -- Update journal entry status -- Need to generate this within IF <condition>
26434 ----------------------------------------------------------------------------------
26435 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26439
26436 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26437 ,p_balance_type_code => l_balance_type_code
26438 );
26440 -------------------------------------------------------------------------------------------
26441 -- 4262811 - Generate the Accrual Reversal lines
26442 -------------------------------------------------------------------------------------------
26443 BEGIN
26444 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26445 (g_array_event(p_event_id).array_value_num('header_index'));
26446 IF l_acc_rev_flag IS NULL THEN
26447 l_acc_rev_flag := 'N';
26448 END IF;
26449 EXCEPTION
26450 WHEN OTHERS THEN
26451 l_acc_rev_flag := 'N';
26452 END;
26453 --
26454 IF (l_acc_rev_flag = 'Y') THEN
26455
26456 -- 4645092 ------------------------------------------------------------------------------
26457 -- To allow MPA report to determine if it should generate report process
26458 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26459 ------------------------------------------------------------------------------------------
26460
26461 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26462 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26463 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
26464 -- call ADRs
26465 -- Bug 4922099
26466 --
26467 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26468 (NVL(l_actual_upg_option, 'N') = 'O') OR
26469 (NVL(l_enc_upg_option, 'N') = 'O')
26470 )
26471 THEN
26472 NULL;
26473 --
26474 --
26475
26476 l_ccid := AcctDerRule_10(
26477 p_application_id => p_application_id
26478 , p_ae_header_id => l_ae_header_id
26479 , p_source_1 => p_source_1
26480 , p_source_2 => p_source_2
26481 , x_transaction_coa_id => l_adr_transaction_coa_id
26482 , x_accounting_coa_id => l_adr_accounting_coa_id
26483 , x_value_type_code => l_adr_value_type_code
26484 , p_side => 'NA'
26485 );
26486
26487 xla_ae_lines_pkg.set_ccid(
26488 p_code_combination_id => l_ccid
26489 , p_value_type_code => l_adr_value_type_code
26490 , p_transaction_coa_id => l_adr_transaction_coa_id
26491 , p_accounting_coa_id => l_adr_accounting_coa_id
26492 , p_adr_code => 'DCOGS'
26493 , p_adr_type_code => 'S'
26494 , p_component_type => l_component_type
26495 , p_component_code => l_component_code
26496 , p_component_type_code => l_component_type_code
26497 , p_component_appl_id => l_component_appl_id
26498 , p_amb_context_code => l_amb_context_code
26499 , p_side => 'NA'
26500 );
26501
26502
26503 --
26504 --
26505 END IF;
26506
26507 --
26508 -- Update the line information that should be overwritten
26509 --
26510 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26511 p_header_num => 1);
26512 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
26513
26514 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26515
26516 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
26517 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26518 END IF;
26519
26520 --
26521 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26522 --
26523 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26524 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
26525 ELSE
26526 ---------------------------------------------------------------------------------------------------
26527 -- 4262811a Switch Sign
26528 ---------------------------------------------------------------------------------------------------
26529 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
26530 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26531 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26532 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26533 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26534 -- 5132302
26535 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26536 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26537
26538 END IF;
26539
26540 -- 4955764
26541 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26542 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26543
26544
26548 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26545 XLA_AE_LINES_PKG.ValidateCurrentLine;
26546 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26547
26549 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26550 ,p_balance_type_code => l_balance_type_code);
26551
26552 END IF;
26553
26554 -----------------------------------------------------------------------------------------
26555 -- 4262811 Multiperiod Accounting
26556 -----------------------------------------------------------------------------------------
26557 -- No MPA option is assigned.
26558
26559
26560 END IF;
26561 END IF;
26562 --
26563
26564 --
26565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26566 trace
26567 (p_msg => 'END of AcctLineType_80'
26568 ,p_level => C_LEVEL_PROCEDURE
26569 ,p_module => l_log_module);
26570 END IF;
26571 --
26572 EXCEPTION
26573 WHEN xla_exceptions_pkg.application_exception THEN
26574 RAISE;
26575 WHEN OTHERS THEN
26576 xla_exceptions_pkg.raise_message
26577 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_80');
26578 END AcctLineType_80;
26579 --
26580
26581 ---------------------------------------
26582 --
26583 -- PRIVATE FUNCTION
26584 -- AcctLineType_81
26585 --
26586 ---------------------------------------
26587 PROCEDURE AcctLineType_81 (
26588 p_application_id IN NUMBER
26589 ,p_event_id IN NUMBER
26590 ,p_calculate_acctd_flag IN VARCHAR2
26591 ,p_calculate_g_l_flag IN VARCHAR2
26592 ,p_actual_flag IN OUT VARCHAR2
26593 ,p_balance_type_code OUT VARCHAR2
26594 ,p_gain_or_loss_ref OUT VARCHAR2
26595
26596 --Transaction Account
26597 , p_source_1 IN NUMBER
26598 --Journal Line Type
26599 , p_source_2 IN VARCHAR2
26600 --Entered Amount
26601 , p_source_3 IN NUMBER
26602 --First Distribution Identifier
26603 , p_source_5 IN NUMBER
26604 --Distribution Type
26605 , p_source_6 IN VARCHAR2
26606 --Currency Code
26607 , p_source_7 IN VARCHAR2
26608 --Currency Conversion Date
26609 , p_source_8 IN DATE
26610 --Currency Conversion Rate
26611 , p_source_9 IN NUMBER
26612 --Currency Conversion Type
26613 , p_source_10 IN VARCHAR2
26614 --Accounted Amount
26615 , p_source_11 IN NUMBER
26616 )
26617 IS
26618
26619 l_component_type VARCHAR2(80);
26620 l_component_code VARCHAR2(30);
26621 l_component_type_code VARCHAR2(1);
26622 l_component_appl_id INTEGER;
26623 l_amb_context_code VARCHAR2(30);
26624 l_entity_code VARCHAR2(30);
26625 l_event_class_code VARCHAR2(30);
26626 l_ae_header_id NUMBER;
26627 l_event_type_code VARCHAR2(30);
26628 l_line_definition_code VARCHAR2(30);
26629 l_line_definition_owner_code VARCHAR2(1);
26630 --
26631 -- adr variables
26632 l_segment VARCHAR2(30);
26633 l_ccid NUMBER;
26634 l_adr_transaction_coa_id NUMBER;
26635 l_adr_accounting_coa_id NUMBER;
26636 l_adr_flexfield_segment_code VARCHAR2(30);
26637 l_adr_flex_value_set_id NUMBER;
26638 l_adr_value_type_code VARCHAR2(30);
26639 l_adr_value_combination_id NUMBER;
26640 l_adr_value_segment_code VARCHAR2(30);
26641
26642 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
26643 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
26644 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
26645 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
26646
26647 -- 4262811 Variables ------------------------------------------------------------------------------------------
26648 l_entered_amt_idx NUMBER;
26649 l_accted_amt_idx NUMBER;
26650 l_acc_rev_flag VARCHAR2(1);
26651 l_accrual_line_num NUMBER;
26652 l_tmp_amt NUMBER;
26653 l_acc_rev_natural_side_code VARCHAR2(1);
26654
26655 l_num_entries NUMBER;
26656 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
26657 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
26658 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
26659 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
26660 l_recog_line_1 NUMBER;
26661 l_recog_line_2 NUMBER;
26662
26663 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
26664 l_bflow_applied_to_amt NUMBER; -- 5132302
26665 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
26666
26667 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26668
26669 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
26670 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
26671
26672 ---------------------------------------------------------------------------------------------------------------
26673
26674
26675 --
26676 -- bulk performance
26677 --
26678 l_balance_type_code VARCHAR2(1);
26682 --
26679 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
26680 l_log_module VARCHAR2(240);
26681
26683 -- Upgrade strategy
26684 --
26685 l_actual_upg_option VARCHAR2(1);
26686 l_enc_upg_option VARCHAR2(1);
26687
26688 --
26689 BEGIN
26690 --
26691 IF g_log_enabled THEN
26692 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
26693 END IF;
26694 --
26695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26696
26697 trace
26698 (p_msg => 'BEGIN of AcctLineType_81'
26699 ,p_level => C_LEVEL_PROCEDURE
26700 ,p_module => l_log_module);
26701
26702 END IF;
26703 --
26704 l_component_type := 'AMB_JLT';
26705 l_component_code := 'DCOGS';
26706 l_component_type_code := 'S';
26707 l_component_appl_id := 555;
26708 l_amb_context_code := 'DEFAULT';
26709 l_entity_code := 'ORDERMANAGEMENT';
26710 l_event_class_code := 'SHIPPING';
26711 l_event_type_code := 'SO_ISSUE';
26712 l_line_definition_owner_code := 'S';
26713 l_line_definition_code := 'SO_ISSUE';
26714 --
26715 l_balance_type_code := 'A';
26716 l_segment := NULL;
26717 l_ccid := NULL;
26718 l_adr_transaction_coa_id := NULL;
26719 l_adr_accounting_coa_id := NULL;
26720 l_adr_flexfield_segment_code := NULL;
26721 l_adr_flex_value_set_id := NULL;
26722 l_adr_value_type_code := NULL;
26723 l_adr_value_combination_id := NULL;
26724 l_adr_value_segment_code := NULL;
26725
26726 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
26727 l_bflow_class_code := ''; -- 4219869 Business Flow
26728 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
26729 l_budgetary_control_flag := 'N';
26730
26731 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26732 l_bflow_applied_to_amt := NULL; -- 5132302
26733 l_entered_amt_idx := NULL; -- 4262811
26734 l_accted_amt_idx := NULL; -- 4262811
26735 l_acc_rev_flag := NULL; -- 4262811
26736 l_accrual_line_num := NULL; -- 4262811
26737 l_tmp_amt := NULL; -- 4262811
26738 --
26739
26740 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26741 l_balance_type_code <> 'B' THEN
26742 IF NVL(p_source_2,'
26743 ') = 'DCOGS'
26744 THEN
26745
26746 --
26747 XLA_AE_LINES_PKG.SetNewLine;
26748
26749 p_balance_type_code := l_balance_type_code;
26750 -- set the flag so later we will know whether the gain loss line needs to be created
26751
26752 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26753 p_actual_flag :='A';
26754 END IF;
26755
26756 --
26757 -- bulk performance
26758 --
26759 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26760 p_header_num => 0); -- 4262811
26761 --
26762 -- set accounting line options
26763 --
26764 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26765 p_natural_side_code => 'D'
26766 , p_gain_or_loss_flag => 'N'
26767 , p_gl_transfer_mode_code => 'D'
26768 , p_acct_entry_type_code => 'A'
26769 , p_switch_side_flag => 'Y'
26770 , p_merge_duplicate_code => 'W'
26771 );
26772 --
26773 l_acc_rev_natural_side_code := 'C'; -- 4262811
26774 --
26775 --
26776 -- set accounting line type info
26777 --
26778 xla_ae_lines_pkg.SetAcctLineType
26779 (p_component_type => l_component_type
26780 ,p_event_type_code => l_event_type_code
26781 ,p_line_definition_owner_code => l_line_definition_owner_code
26782 ,p_line_definition_code => l_line_definition_code
26783 ,p_accounting_line_code => l_component_code
26784 ,p_accounting_line_type_code => l_component_type_code
26785 ,p_accounting_line_appl_id => l_component_appl_id
26786 ,p_amb_context_code => l_amb_context_code
26787 ,p_entity_code => l_entity_code
26788 ,p_event_class_code => l_event_class_code);
26789 --
26790 -- set accounting class
26791 --
26792 xla_ae_lines_pkg.SetAcctClass(
26793 p_accounting_class_code => 'DEFERRED_COGS'
26794 , p_ae_header_id => l_ae_header_id
26795 );
26796
26797 --
26798 -- set rounding class
26799 --
26800 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26801 'DEFERRED_COGS';
26802
26803 --
26804 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26805 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26806 --
26807 -- bulk performance
26808 --
26809 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26810
26811 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26815 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26812 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26813
26814 -- 4955764
26816 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26817
26818 -- 4458381 Public Sector Enh
26819
26820 --
26821 -- set accounting attributes for the line type
26822 --
26823 l_entered_amt_idx := 3;
26824 l_accted_amt_idx := 8;
26825 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26826 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26827 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
26828 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26829 l_rec_acct_attrs.array_char_value(2) := p_source_6;
26830 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26831 l_rec_acct_attrs.array_num_value(3) := p_source_3;
26832 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26833 l_rec_acct_attrs.array_char_value(4) := p_source_7;
26834 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26835 l_rec_acct_attrs.array_date_value(5) := p_source_8;
26836 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26837 l_rec_acct_attrs.array_num_value(6) := p_source_9;
26838 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26839 l_rec_acct_attrs.array_char_value(7) := p_source_10;
26840 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26841 l_rec_acct_attrs.array_num_value(8) := p_source_11;
26842
26843 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26844 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26845
26846 ---------------------------------------------------------------------------------------------------------------
26847 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26848 ---------------------------------------------------------------------------------------------------------------
26849 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26850
26851 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26852 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26853
26854 IF xla_accounting_cache_pkg.GetValueChar
26855 (p_source_code => 'LEDGER_CATEGORY_CODE'
26856 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26857 AND l_bflow_method_code = 'PRIOR_ENTRY'
26858 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26859 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26860 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26861 )
26862 THEN
26863 xla_ae_lines_pkg.BflowUpgEntry
26864 (p_business_method_code => l_bflow_method_code
26865 ,p_business_class_code => l_bflow_class_code
26866 ,p_balance_type => l_balance_type_code);
26867 ELSE
26868 NULL;
26869 -- No business flow processing for business flow method of NONE.
26870 END IF;
26871
26872 --
26873 -- call analytical criteria
26874 --
26875
26876 --
26877 -- call description
26878 --
26879 -- No description or it is inherited.
26880 --
26881 -- call ADRs
26882 -- Bug 4922099
26883 --
26884 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26885 (NVL(l_actual_upg_option, 'N') = 'O') OR
26886 (NVL(l_enc_upg_option, 'N') = 'O')
26887 )
26888 THEN
26889 NULL;
26890 --
26891 --
26892
26893 l_ccid := AcctDerRule_10(
26894 p_application_id => p_application_id
26895 , p_ae_header_id => l_ae_header_id
26896 , p_source_1 => p_source_1
26897 , p_source_2 => p_source_2
26898 , x_transaction_coa_id => l_adr_transaction_coa_id
26899 , x_accounting_coa_id => l_adr_accounting_coa_id
26900 , x_value_type_code => l_adr_value_type_code
26901 , p_side => 'NA'
26902 );
26903
26904 xla_ae_lines_pkg.set_ccid(
26905 p_code_combination_id => l_ccid
26906 , p_value_type_code => l_adr_value_type_code
26907 , p_transaction_coa_id => l_adr_transaction_coa_id
26908 , p_accounting_coa_id => l_adr_accounting_coa_id
26909 , p_adr_code => 'DCOGS'
26910 , p_adr_type_code => 'S'
26911 , p_component_type => l_component_type
26912 , p_component_code => l_component_code
26913 , p_component_type_code => l_component_type_code
26914 , p_component_appl_id => l_component_appl_id
26915 , p_amb_context_code => l_amb_context_code
26916 , p_side => 'NA'
26917 );
26918
26919
26920 --
26921 --
26922 END IF;
26923 --
26924 -- Bug 4922099
26925 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26926 (NVL(l_enc_upg_option, 'N') = 'O')
26927 ) AND
26928 (l_bflow_method_code = 'PRIOR_ENTRY')
26929 )
26930 THEN
26931 IF
26935 THEN
26932 --
26933 1 = 2
26934 --
26936 xla_accounting_err_pkg.build_message
26937 (p_appli_s_name => 'XLA'
26938 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26939 ,p_token_1 => 'LINE_NUMBER'
26940 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
26941 ,p_token_2 => 'LINE_TYPE_NAME'
26942 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
26943 l_component_type
26944 ,l_component_code
26945 ,l_component_type_code
26946 ,l_component_appl_id
26947 ,l_amb_context_code
26948 ,l_entity_code
26949 ,l_event_class_code
26950 )
26951 ,p_token_3 => 'OWNER'
26952 ,p_value_3 => xla_lookups_pkg.get_meaning(
26953 p_lookup_type => 'XLA_OWNER_TYPE'
26954 ,p_lookup_code => l_component_type_code
26955 )
26956 ,p_token_4 => 'PRODUCT_NAME'
26957 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26958 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26959 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26960 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26961 ,p_ae_header_id => NULL
26962 );
26963
26964 IF (C_LEVEL_ERROR>= g_log_level) THEN
26965 trace
26966 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26967 ,p_level => C_LEVEL_ERROR
26968 ,p_module => l_log_module);
26969 END IF;
26970 END IF;
26971 END IF;
26972 --
26973 --
26974 ------------------------------------------------------------------------------------------------
26975 -- 4219869 Business Flow
26976 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26977 -- Prior Entry. Currently, the following code is always generated.
26978 ------------------------------------------------------------------------------------------------
26979 XLA_AE_LINES_PKG.ValidateCurrentLine;
26980
26981 ------------------------------------------------------------------------------------
26982 -- 4219869 Business Flow
26983 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26984 ------------------------------------------------------------------------------------
26985 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26986
26987 ----------------------------------------------------------------------------------
26988 -- 4219869 Business Flow
26989 -- Update journal entry status -- Need to generate this within IF <condition>
26990 ----------------------------------------------------------------------------------
26991 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26992 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26993 ,p_balance_type_code => l_balance_type_code
26994 );
26995
26996 -------------------------------------------------------------------------------------------
26997 -- 4262811 - Generate the Accrual Reversal lines
26998 -------------------------------------------------------------------------------------------
26999 BEGIN
27000 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27001 (g_array_event(p_event_id).array_value_num('header_index'));
27002 IF l_acc_rev_flag IS NULL THEN
27003 l_acc_rev_flag := 'N';
27004 END IF;
27005 EXCEPTION
27006 WHEN OTHERS THEN
27007 l_acc_rev_flag := 'N';
27008 END;
27009 --
27010 IF (l_acc_rev_flag = 'Y') THEN
27011
27012 -- 4645092 ------------------------------------------------------------------------------
27013 -- To allow MPA report to determine if it should generate report process
27014 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27015 ------------------------------------------------------------------------------------------
27016
27017 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27018 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27019 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
27020 -- call ADRs
27021 -- Bug 4922099
27022 --
27026 )
27023 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27024 (NVL(l_actual_upg_option, 'N') = 'O') OR
27025 (NVL(l_enc_upg_option, 'N') = 'O')
27027 THEN
27028 NULL;
27029 --
27030 --
27031
27032 l_ccid := AcctDerRule_10(
27033 p_application_id => p_application_id
27034 , p_ae_header_id => l_ae_header_id
27035 , p_source_1 => p_source_1
27036 , p_source_2 => p_source_2
27037 , x_transaction_coa_id => l_adr_transaction_coa_id
27038 , x_accounting_coa_id => l_adr_accounting_coa_id
27039 , x_value_type_code => l_adr_value_type_code
27040 , p_side => 'NA'
27041 );
27042
27043 xla_ae_lines_pkg.set_ccid(
27044 p_code_combination_id => l_ccid
27045 , p_value_type_code => l_adr_value_type_code
27046 , p_transaction_coa_id => l_adr_transaction_coa_id
27047 , p_accounting_coa_id => l_adr_accounting_coa_id
27048 , p_adr_code => 'DCOGS'
27049 , p_adr_type_code => 'S'
27050 , p_component_type => l_component_type
27051 , p_component_code => l_component_code
27052 , p_component_type_code => l_component_type_code
27053 , p_component_appl_id => l_component_appl_id
27054 , p_amb_context_code => l_amb_context_code
27055 , p_side => 'NA'
27056 );
27057
27058
27059 --
27060 --
27061 END IF;
27062
27063 --
27064 -- Update the line information that should be overwritten
27065 --
27066 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27067 p_header_num => 1);
27068 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
27069
27070 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27071
27072 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
27073 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27074 END IF;
27075
27076 --
27077 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27078 --
27079 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27080 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
27081 ELSE
27082 ---------------------------------------------------------------------------------------------------
27083 -- 4262811a Switch Sign
27084 ---------------------------------------------------------------------------------------------------
27085 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
27086 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27087 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27088 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27089 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27090 -- 5132302
27091 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27092 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27093
27094 END IF;
27095
27096 -- 4955764
27097 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27098 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27099
27100
27101 XLA_AE_LINES_PKG.ValidateCurrentLine;
27102 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27103
27104 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27105 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27106 ,p_balance_type_code => l_balance_type_code);
27107
27108 END IF;
27109
27110 -----------------------------------------------------------------------------------------
27111 -- 4262811 Multiperiod Accounting
27112 -----------------------------------------------------------------------------------------
27113 -- No MPA option is assigned.
27114
27115
27116 END IF;
27117 END IF;
27118 --
27119
27120 --
27121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27122 trace
27123 (p_msg => 'END of AcctLineType_81'
27124 ,p_level => C_LEVEL_PROCEDURE
27125 ,p_module => l_log_module);
27126 END IF;
27127 --
27128 EXCEPTION
27129 WHEN xla_exceptions_pkg.application_exception THEN
27130 RAISE;
27131 WHEN OTHERS THEN
27132 xla_exceptions_pkg.raise_message
27133 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_81');
27134 END AcctLineType_81;
27135 --
27136
27137 ---------------------------------------
27138 --
27139 -- PRIVATE FUNCTION
27140 -- AcctLineType_82
27141 --
27142 ---------------------------------------
27143 PROCEDURE AcctLineType_82 (
27147 ,p_calculate_g_l_flag IN VARCHAR2
27144 p_application_id IN NUMBER
27145 ,p_event_id IN NUMBER
27146 ,p_calculate_acctd_flag IN VARCHAR2
27148 ,p_actual_flag IN OUT VARCHAR2
27149 ,p_balance_type_code OUT VARCHAR2
27150 ,p_gain_or_loss_ref OUT VARCHAR2
27151
27152 --Transaction Account
27153 , p_source_1 IN NUMBER
27154 --Journal Line Type
27155 , p_source_2 IN VARCHAR2
27156 --Entered Amount
27157 , p_source_3 IN NUMBER
27158 --First Distribution Identifier
27159 , p_source_5 IN NUMBER
27160 --Distribution Type
27161 , p_source_6 IN VARCHAR2
27162 --Currency Code
27163 , p_source_7 IN VARCHAR2
27164 --Currency Conversion Date
27165 , p_source_8 IN DATE
27166 --Currency Conversion Rate
27167 , p_source_9 IN NUMBER
27168 --Currency Conversion Type
27169 , p_source_10 IN VARCHAR2
27170 --Accounted Amount
27171 , p_source_11 IN NUMBER
27172 )
27173 IS
27174
27175 l_component_type VARCHAR2(80);
27176 l_component_code VARCHAR2(30);
27177 l_component_type_code VARCHAR2(1);
27178 l_component_appl_id INTEGER;
27179 l_amb_context_code VARCHAR2(30);
27180 l_entity_code VARCHAR2(30);
27181 l_event_class_code VARCHAR2(30);
27182 l_ae_header_id NUMBER;
27183 l_event_type_code VARCHAR2(30);
27184 l_line_definition_code VARCHAR2(30);
27185 l_line_definition_owner_code VARCHAR2(1);
27186 --
27187 -- adr variables
27188 l_segment VARCHAR2(30);
27189 l_ccid NUMBER;
27190 l_adr_transaction_coa_id NUMBER;
27191 l_adr_accounting_coa_id NUMBER;
27192 l_adr_flexfield_segment_code VARCHAR2(30);
27193 l_adr_flex_value_set_id NUMBER;
27194 l_adr_value_type_code VARCHAR2(30);
27195 l_adr_value_combination_id NUMBER;
27196 l_adr_value_segment_code VARCHAR2(30);
27197
27198 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
27199 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
27200 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
27201 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
27202
27203 -- 4262811 Variables ------------------------------------------------------------------------------------------
27204 l_entered_amt_idx NUMBER;
27205 l_accted_amt_idx NUMBER;
27206 l_acc_rev_flag VARCHAR2(1);
27207 l_accrual_line_num NUMBER;
27208 l_tmp_amt NUMBER;
27209 l_acc_rev_natural_side_code VARCHAR2(1);
27210
27211 l_num_entries NUMBER;
27212 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
27213 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
27214 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
27215 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
27216 l_recog_line_1 NUMBER;
27217 l_recog_line_2 NUMBER;
27218
27219 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
27220 l_bflow_applied_to_amt NUMBER; -- 5132302
27221 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
27222
27223 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27224
27225 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
27226 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
27227
27228 ---------------------------------------------------------------------------------------------------------------
27229
27230
27231 --
27232 -- bulk performance
27233 --
27234 l_balance_type_code VARCHAR2(1);
27235 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
27236 l_log_module VARCHAR2(240);
27237
27238 --
27239 -- Upgrade strategy
27240 --
27241 l_actual_upg_option VARCHAR2(1);
27242 l_enc_upg_option VARCHAR2(1);
27243
27244 --
27245 BEGIN
27246 --
27247 IF g_log_enabled THEN
27248 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
27249 END IF;
27250 --
27251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27252
27253 trace
27254 (p_msg => 'BEGIN of AcctLineType_82'
27255 ,p_level => C_LEVEL_PROCEDURE
27256 ,p_module => l_log_module);
27257
27258 END IF;
27259 --
27260 l_component_type := 'AMB_JLT';
27261 l_component_code := 'ERA';
27262 l_component_type_code := 'S';
27263 l_component_appl_id := 555;
27264 l_amb_context_code := 'DEFAULT';
27265 l_entity_code := 'PURCHASING';
27266 l_event_class_code := 'PAYABLES_INVOICE';
27267 l_event_type_code := 'INVOICE_ERV_ADJ';
27268 l_line_definition_owner_code := 'S';
27269 l_line_definition_code := 'INVOICE_ERV_ADJ';
27270 --
27271 l_balance_type_code := 'A';
27272 l_segment := NULL;
27273 l_ccid := NULL;
27274 l_adr_transaction_coa_id := NULL;
27275 l_adr_accounting_coa_id := NULL;
27279 l_adr_value_combination_id := NULL;
27276 l_adr_flexfield_segment_code := NULL;
27277 l_adr_flex_value_set_id := NULL;
27278 l_adr_value_type_code := NULL;
27280 l_adr_value_segment_code := NULL;
27281
27282 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
27283 l_bflow_class_code := ''; -- 4219869 Business Flow
27284 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
27285 l_budgetary_control_flag := 'N';
27286
27287 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27288 l_bflow_applied_to_amt := NULL; -- 5132302
27289 l_entered_amt_idx := NULL; -- 4262811
27290 l_accted_amt_idx := NULL; -- 4262811
27291 l_acc_rev_flag := NULL; -- 4262811
27292 l_accrual_line_num := NULL; -- 4262811
27293 l_tmp_amt := NULL; -- 4262811
27294 --
27295
27296 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27297 l_balance_type_code <> 'B' THEN
27298 IF NVL(p_source_2,'
27299 ') = 'ERA'
27300 THEN
27301
27302 --
27303 XLA_AE_LINES_PKG.SetNewLine;
27304
27305 p_balance_type_code := l_balance_type_code;
27306 -- set the flag so later we will know whether the gain loss line needs to be created
27307
27308 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27309 p_actual_flag :='A';
27310 END IF;
27311
27312 --
27313 -- bulk performance
27314 --
27315 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27316 p_header_num => 0); -- 4262811
27317 --
27318 -- set accounting line options
27319 --
27320 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27321 p_natural_side_code => 'D'
27322 , p_gain_or_loss_flag => 'N'
27323 , p_gl_transfer_mode_code => 'D'
27324 , p_acct_entry_type_code => 'A'
27325 , p_switch_side_flag => 'Y'
27326 , p_merge_duplicate_code => 'W'
27327 );
27328 --
27329 l_acc_rev_natural_side_code := 'C'; -- 4262811
27330 --
27331 --
27332 -- set accounting line type info
27333 --
27334 xla_ae_lines_pkg.SetAcctLineType
27335 (p_component_type => l_component_type
27336 ,p_event_type_code => l_event_type_code
27337 ,p_line_definition_owner_code => l_line_definition_owner_code
27338 ,p_line_definition_code => l_line_definition_code
27339 ,p_accounting_line_code => l_component_code
27340 ,p_accounting_line_type_code => l_component_type_code
27341 ,p_accounting_line_appl_id => l_component_appl_id
27342 ,p_amb_context_code => l_amb_context_code
27343 ,p_entity_code => l_entity_code
27344 ,p_event_class_code => l_event_class_code);
27345 --
27346 -- set accounting class
27347 --
27348 xla_ae_lines_pkg.SetAcctClass(
27349 p_accounting_class_code => 'EXCHANGE_RATE_VARIANCE'
27350 , p_ae_header_id => l_ae_header_id
27351 );
27352
27353 --
27354 -- set rounding class
27355 --
27356 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27357 'EXCHANGE_RATE_VARIANCE';
27358
27359 --
27360 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27361 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27362 --
27363 -- bulk performance
27364 --
27365 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27366
27367 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27368 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27369
27370 -- 4955764
27371 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27372 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27373
27374 -- 4458381 Public Sector Enh
27375
27376 --
27377 -- set accounting attributes for the line type
27378 --
27379 l_entered_amt_idx := 3;
27380 l_accted_amt_idx := 8;
27381 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27382 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27383 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
27384 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27385 l_rec_acct_attrs.array_char_value(2) := p_source_6;
27386 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27387 l_rec_acct_attrs.array_num_value(3) := p_source_3;
27388 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27389 l_rec_acct_attrs.array_char_value(4) := p_source_7;
27390 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27391 l_rec_acct_attrs.array_date_value(5) := p_source_8;
27392 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27393 l_rec_acct_attrs.array_num_value(6) := p_source_9;
27394 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27398
27395 l_rec_acct_attrs.array_char_value(7) := p_source_10;
27396 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27397 l_rec_acct_attrs.array_num_value(8) := p_source_11;
27399 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27400 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27401
27402 ---------------------------------------------------------------------------------------------------------------
27403 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27404 ---------------------------------------------------------------------------------------------------------------
27405 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27406
27407 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27408 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27409
27410 IF xla_accounting_cache_pkg.GetValueChar
27411 (p_source_code => 'LEDGER_CATEGORY_CODE'
27412 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27413 AND l_bflow_method_code = 'PRIOR_ENTRY'
27414 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27415 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27416 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27417 )
27418 THEN
27419 xla_ae_lines_pkg.BflowUpgEntry
27420 (p_business_method_code => l_bflow_method_code
27421 ,p_business_class_code => l_bflow_class_code
27422 ,p_balance_type => l_balance_type_code);
27423 ELSE
27424 NULL;
27425 -- No business flow processing for business flow method of NONE.
27426 END IF;
27427
27428 --
27429 -- call analytical criteria
27430 --
27431
27432 --
27433 -- call description
27434 --
27435 -- No description or it is inherited.
27436 --
27437 -- call ADRs
27438 -- Bug 4922099
27439 --
27440 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27441 (NVL(l_actual_upg_option, 'N') = 'O') OR
27442 (NVL(l_enc_upg_option, 'N') = 'O')
27443 )
27444 THEN
27445 NULL;
27446 --
27447 --
27448
27449 l_ccid := AcctDerRule_11(
27450 p_application_id => p_application_id
27451 , p_ae_header_id => l_ae_header_id
27452 , p_source_1 => p_source_1
27453 , p_source_2 => p_source_2
27454 , x_transaction_coa_id => l_adr_transaction_coa_id
27455 , x_accounting_coa_id => l_adr_accounting_coa_id
27456 , x_value_type_code => l_adr_value_type_code
27457 , p_side => 'NA'
27458 );
27459
27460 xla_ae_lines_pkg.set_ccid(
27461 p_code_combination_id => l_ccid
27462 , p_value_type_code => l_adr_value_type_code
27463 , p_transaction_coa_id => l_adr_transaction_coa_id
27464 , p_accounting_coa_id => l_adr_accounting_coa_id
27465 , p_adr_code => 'ERA'
27466 , p_adr_type_code => 'S'
27467 , p_component_type => l_component_type
27468 , p_component_code => l_component_code
27469 , p_component_type_code => l_component_type_code
27470 , p_component_appl_id => l_component_appl_id
27471 , p_amb_context_code => l_amb_context_code
27472 , p_side => 'NA'
27473 );
27474
27475
27476 --
27477 --
27478 END IF;
27479 --
27480 -- Bug 4922099
27481 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27482 (NVL(l_enc_upg_option, 'N') = 'O')
27483 ) AND
27484 (l_bflow_method_code = 'PRIOR_ENTRY')
27485 )
27486 THEN
27487 IF
27488 --
27489 1 = 2
27490 --
27491 THEN
27492 xla_accounting_err_pkg.build_message
27493 (p_appli_s_name => 'XLA'
27494 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27495 ,p_token_1 => 'LINE_NUMBER'
27496 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
27497 ,p_token_2 => 'LINE_TYPE_NAME'
27498 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
27499 l_component_type
27500 ,l_component_code
27501 ,l_component_type_code
27502 ,l_component_appl_id
27503 ,l_amb_context_code
27504 ,l_entity_code
27505 ,l_event_class_code
27506 )
27507 ,p_token_3 => 'OWNER'
27511 )
27508 ,p_value_3 => xla_lookups_pkg.get_meaning(
27509 p_lookup_type => 'XLA_OWNER_TYPE'
27510 ,p_lookup_code => l_component_type_code
27512 ,p_token_4 => 'PRODUCT_NAME'
27513 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27514 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27515 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27516 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27517 ,p_ae_header_id => NULL
27518 );
27519
27520 IF (C_LEVEL_ERROR>= g_log_level) THEN
27521 trace
27522 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27523 ,p_level => C_LEVEL_ERROR
27524 ,p_module => l_log_module);
27525 END IF;
27526 END IF;
27527 END IF;
27528 --
27529 --
27530 ------------------------------------------------------------------------------------------------
27531 -- 4219869 Business Flow
27532 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27533 -- Prior Entry. Currently, the following code is always generated.
27534 ------------------------------------------------------------------------------------------------
27535 XLA_AE_LINES_PKG.ValidateCurrentLine;
27536
27537 ------------------------------------------------------------------------------------
27538 -- 4219869 Business Flow
27539 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27540 ------------------------------------------------------------------------------------
27541 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27542
27543 ----------------------------------------------------------------------------------
27544 -- 4219869 Business Flow
27545 -- Update journal entry status -- Need to generate this within IF <condition>
27546 ----------------------------------------------------------------------------------
27547 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27548 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27549 ,p_balance_type_code => l_balance_type_code
27550 );
27551
27552 -------------------------------------------------------------------------------------------
27553 -- 4262811 - Generate the Accrual Reversal lines
27554 -------------------------------------------------------------------------------------------
27555 BEGIN
27556 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27557 (g_array_event(p_event_id).array_value_num('header_index'));
27558 IF l_acc_rev_flag IS NULL THEN
27559 l_acc_rev_flag := 'N';
27560 END IF;
27561 EXCEPTION
27562 WHEN OTHERS THEN
27563 l_acc_rev_flag := 'N';
27564 END;
27565 --
27566 IF (l_acc_rev_flag = 'Y') THEN
27567
27568 -- 4645092 ------------------------------------------------------------------------------
27569 -- To allow MPA report to determine if it should generate report process
27570 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27571 ------------------------------------------------------------------------------------------
27572
27573 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27574 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27575 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
27576 -- call ADRs
27577 -- Bug 4922099
27578 --
27579 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27580 (NVL(l_actual_upg_option, 'N') = 'O') OR
27581 (NVL(l_enc_upg_option, 'N') = 'O')
27582 )
27583 THEN
27584 NULL;
27585 --
27586 --
27587
27588 l_ccid := AcctDerRule_11(
27589 p_application_id => p_application_id
27590 , p_ae_header_id => l_ae_header_id
27591 , p_source_1 => p_source_1
27592 , p_source_2 => p_source_2
27593 , x_transaction_coa_id => l_adr_transaction_coa_id
27594 , x_accounting_coa_id => l_adr_accounting_coa_id
27595 , x_value_type_code => l_adr_value_type_code
27596 , p_side => 'NA'
27597 );
27598
27599 xla_ae_lines_pkg.set_ccid(
27600 p_code_combination_id => l_ccid
27601 , p_value_type_code => l_adr_value_type_code
27602 , p_transaction_coa_id => l_adr_transaction_coa_id
27603 , p_accounting_coa_id => l_adr_accounting_coa_id
27604 , p_adr_code => 'ERA'
27605 , p_adr_type_code => 'S'
27606 , p_component_type => l_component_type
27607 , p_component_code => l_component_code
27608 , p_component_type_code => l_component_type_code
27612 );
27609 , p_component_appl_id => l_component_appl_id
27610 , p_amb_context_code => l_amb_context_code
27611 , p_side => 'NA'
27613
27614
27615 --
27616 --
27617 END IF;
27618
27619 --
27620 -- Update the line information that should be overwritten
27621 --
27622 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27623 p_header_num => 1);
27624 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
27625
27626 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27627
27628 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
27629 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27630 END IF;
27631
27632 --
27633 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27634 --
27635 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27636 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
27637 ELSE
27638 ---------------------------------------------------------------------------------------------------
27639 -- 4262811a Switch Sign
27640 ---------------------------------------------------------------------------------------------------
27641 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
27642 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27643 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27644 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27645 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27646 -- 5132302
27647 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27648 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27649
27650 END IF;
27651
27652 -- 4955764
27653 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27654 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27655
27656
27657 XLA_AE_LINES_PKG.ValidateCurrentLine;
27658 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27659
27660 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27661 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27662 ,p_balance_type_code => l_balance_type_code);
27663
27664 END IF;
27665
27666 -----------------------------------------------------------------------------------------
27667 -- 4262811 Multiperiod Accounting
27668 -----------------------------------------------------------------------------------------
27669 -- No MPA option is assigned.
27670
27671
27672 END IF;
27673 END IF;
27674 --
27675
27676 --
27677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27678 trace
27679 (p_msg => 'END of AcctLineType_82'
27680 ,p_level => C_LEVEL_PROCEDURE
27681 ,p_module => l_log_module);
27682 END IF;
27683 --
27684 EXCEPTION
27685 WHEN xla_exceptions_pkg.application_exception THEN
27686 RAISE;
27687 WHEN OTHERS THEN
27688 xla_exceptions_pkg.raise_message
27689 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_82');
27690 END AcctLineType_82;
27691 --
27692
27693 ---------------------------------------
27694 --
27695 -- PRIVATE FUNCTION
27696 -- AcctLineType_83
27697 --
27698 ---------------------------------------
27699 PROCEDURE AcctLineType_83 (
27700 p_application_id IN NUMBER
27701 ,p_event_id IN NUMBER
27702 ,p_calculate_acctd_flag IN VARCHAR2
27703 ,p_calculate_g_l_flag IN VARCHAR2
27704 ,p_actual_flag IN OUT VARCHAR2
27705 ,p_balance_type_code OUT VARCHAR2
27706 ,p_gain_or_loss_ref OUT VARCHAR2
27707
27708 --Transaction Account
27709 , p_source_1 IN NUMBER
27710 --Journal Line Type
27711 , p_source_2 IN VARCHAR2
27712 --Entered Amount
27713 , p_source_3 IN NUMBER
27714 --First Distribution Identifier
27715 , p_source_5 IN NUMBER
27716 --Distribution Type
27717 , p_source_6 IN VARCHAR2
27718 --Currency Code
27719 , p_source_7 IN VARCHAR2
27720 --Currency Conversion Date
27721 , p_source_8 IN DATE
27722 --Currency Conversion Rate
27723 , p_source_9 IN NUMBER
27724 --Currency Conversion Type
27725 , p_source_10 IN VARCHAR2
27726 --Accounted Amount
27727 , p_source_11 IN NUMBER
27728 )
27729 IS
27730
27731 l_component_type VARCHAR2(80);
27732 l_component_code VARCHAR2(30);
27733 l_component_type_code VARCHAR2(1);
27734 l_component_appl_id INTEGER;
27735 l_amb_context_code VARCHAR2(30);
27736 l_entity_code VARCHAR2(30);
27737 l_event_class_code VARCHAR2(30);
27741 l_line_definition_owner_code VARCHAR2(1);
27738 l_ae_header_id NUMBER;
27739 l_event_type_code VARCHAR2(30);
27740 l_line_definition_code VARCHAR2(30);
27742 --
27743 -- adr variables
27744 l_segment VARCHAR2(30);
27745 l_ccid NUMBER;
27746 l_adr_transaction_coa_id NUMBER;
27747 l_adr_accounting_coa_id NUMBER;
27748 l_adr_flexfield_segment_code VARCHAR2(30);
27749 l_adr_flex_value_set_id NUMBER;
27750 l_adr_value_type_code VARCHAR2(30);
27751 l_adr_value_combination_id NUMBER;
27752 l_adr_value_segment_code VARCHAR2(30);
27753
27754 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
27755 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
27756 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
27757 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
27758
27759 -- 4262811 Variables ------------------------------------------------------------------------------------------
27760 l_entered_amt_idx NUMBER;
27761 l_accted_amt_idx NUMBER;
27762 l_acc_rev_flag VARCHAR2(1);
27763 l_accrual_line_num NUMBER;
27764 l_tmp_amt NUMBER;
27765 l_acc_rev_natural_side_code VARCHAR2(1);
27766
27767 l_num_entries NUMBER;
27768 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
27769 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
27770 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
27771 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
27772 l_recog_line_1 NUMBER;
27773 l_recog_line_2 NUMBER;
27774
27775 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
27776 l_bflow_applied_to_amt NUMBER; -- 5132302
27777 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
27778
27779 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27780
27781 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
27782 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
27783
27784 ---------------------------------------------------------------------------------------------------------------
27785
27786
27787 --
27788 -- bulk performance
27789 --
27790 l_balance_type_code VARCHAR2(1);
27791 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
27792 l_log_module VARCHAR2(240);
27793
27794 --
27795 -- Upgrade strategy
27796 --
27797 l_actual_upg_option VARCHAR2(1);
27798 l_enc_upg_option VARCHAR2(1);
27799
27800 --
27801 BEGIN
27802 --
27803 IF g_log_enabled THEN
27804 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
27805 END IF;
27806 --
27807 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27808
27809 trace
27810 (p_msg => 'BEGIN of AcctLineType_83'
27811 ,p_level => C_LEVEL_PROCEDURE
27812 ,p_module => l_log_module);
27813
27814 END IF;
27815 --
27816 l_component_type := 'AMB_JLT';
27817 l_component_code := 'EXP';
27818 l_component_type_code := 'S';
27819 l_component_appl_id := 555;
27820 l_amb_context_code := 'DEFAULT';
27821 l_entity_code := 'PURCHASING';
27822 l_event_class_code := 'RECEIVE';
27823 l_event_type_code := 'EXP_RET_TO_RECEIVING';
27824 l_line_definition_owner_code := 'S';
27825 l_line_definition_code := 'EXP_RET_TO_RECEIVING';
27826 --
27827 l_balance_type_code := 'A';
27828 l_segment := NULL;
27829 l_ccid := NULL;
27830 l_adr_transaction_coa_id := NULL;
27831 l_adr_accounting_coa_id := NULL;
27832 l_adr_flexfield_segment_code := NULL;
27833 l_adr_flex_value_set_id := NULL;
27834 l_adr_value_type_code := NULL;
27835 l_adr_value_combination_id := NULL;
27836 l_adr_value_segment_code := NULL;
27837
27838 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
27839 l_bflow_class_code := ''; -- 4219869 Business Flow
27840 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
27841 l_budgetary_control_flag := 'N';
27842
27843 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27844 l_bflow_applied_to_amt := NULL; -- 5132302
27845 l_entered_amt_idx := NULL; -- 4262811
27846 l_accted_amt_idx := NULL; -- 4262811
27847 l_acc_rev_flag := NULL; -- 4262811
27848 l_accrual_line_num := NULL; -- 4262811
27849 l_tmp_amt := NULL; -- 4262811
27850 --
27851
27852 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27853 l_balance_type_code <> 'B' THEN
27854 IF NVL(p_source_2,'
27855 ') = 'EXP'
27856 THEN
27857
27858 --
27859 XLA_AE_LINES_PKG.SetNewLine;
27860
27861 p_balance_type_code := l_balance_type_code;
27862 -- set the flag so later we will know whether the gain loss line needs to be created
27863
27867
27864 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27865 p_actual_flag :='A';
27866 END IF;
27868 --
27869 -- bulk performance
27870 --
27871 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27872 p_header_num => 0); -- 4262811
27873 --
27874 -- set accounting line options
27875 --
27876 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27877 p_natural_side_code => 'D'
27878 , p_gain_or_loss_flag => 'N'
27879 , p_gl_transfer_mode_code => 'D'
27880 , p_acct_entry_type_code => 'A'
27881 , p_switch_side_flag => 'Y'
27882 , p_merge_duplicate_code => 'W'
27883 );
27884 --
27885 l_acc_rev_natural_side_code := 'C'; -- 4262811
27886 --
27887 --
27888 -- set accounting line type info
27889 --
27890 xla_ae_lines_pkg.SetAcctLineType
27891 (p_component_type => l_component_type
27892 ,p_event_type_code => l_event_type_code
27893 ,p_line_definition_owner_code => l_line_definition_owner_code
27894 ,p_line_definition_code => l_line_definition_code
27895 ,p_accounting_line_code => l_component_code
27896 ,p_accounting_line_type_code => l_component_type_code
27897 ,p_accounting_line_appl_id => l_component_appl_id
27898 ,p_amb_context_code => l_amb_context_code
27899 ,p_entity_code => l_entity_code
27900 ,p_event_class_code => l_event_class_code);
27901 --
27902 -- set accounting class
27903 --
27904 xla_ae_lines_pkg.SetAcctClass(
27905 p_accounting_class_code => 'EXPENSE'
27906 , p_ae_header_id => l_ae_header_id
27907 );
27908
27909 --
27910 -- set rounding class
27911 --
27912 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27913 'EXPENSE';
27914
27915 --
27916 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27917 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27918 --
27919 -- bulk performance
27920 --
27921 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27922
27923 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27924 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27925
27926 -- 4955764
27927 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27928 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27929
27930 -- 4458381 Public Sector Enh
27931
27932 --
27933 -- set accounting attributes for the line type
27934 --
27935 l_entered_amt_idx := 3;
27936 l_accted_amt_idx := 8;
27937 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27938 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27939 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
27940 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27941 l_rec_acct_attrs.array_char_value(2) := p_source_6;
27942 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27943 l_rec_acct_attrs.array_num_value(3) := p_source_3;
27944 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27945 l_rec_acct_attrs.array_char_value(4) := p_source_7;
27946 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27947 l_rec_acct_attrs.array_date_value(5) := p_source_8;
27948 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27949 l_rec_acct_attrs.array_num_value(6) := p_source_9;
27950 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27951 l_rec_acct_attrs.array_char_value(7) := p_source_10;
27952 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27953 l_rec_acct_attrs.array_num_value(8) := p_source_11;
27954
27955 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27956 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27957
27958 ---------------------------------------------------------------------------------------------------------------
27959 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27960 ---------------------------------------------------------------------------------------------------------------
27961 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27962
27963 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27964 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27965
27966 IF xla_accounting_cache_pkg.GetValueChar
27967 (p_source_code => 'LEDGER_CATEGORY_CODE'
27968 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27969 AND l_bflow_method_code = 'PRIOR_ENTRY'
27970 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27971 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27972 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27973 )
27974 THEN
27978 ,p_balance_type => l_balance_type_code);
27975 xla_ae_lines_pkg.BflowUpgEntry
27976 (p_business_method_code => l_bflow_method_code
27977 ,p_business_class_code => l_bflow_class_code
27979 ELSE
27980 NULL;
27981 -- No business flow processing for business flow method of NONE.
27982 END IF;
27983
27984 --
27985 -- call analytical criteria
27986 --
27987
27988 --
27989 -- call description
27990 --
27991 -- No description or it is inherited.
27992 --
27993 -- call ADRs
27994 -- Bug 4922099
27995 --
27996 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27997 (NVL(l_actual_upg_option, 'N') = 'O') OR
27998 (NVL(l_enc_upg_option, 'N') = 'O')
27999 )
28000 THEN
28001 NULL;
28002 --
28003 --
28004
28005 l_ccid := AcctDerRule_12(
28006 p_application_id => p_application_id
28007 , p_ae_header_id => l_ae_header_id
28008 , p_source_1 => p_source_1
28009 , p_source_2 => p_source_2
28010 , x_transaction_coa_id => l_adr_transaction_coa_id
28011 , x_accounting_coa_id => l_adr_accounting_coa_id
28012 , x_value_type_code => l_adr_value_type_code
28013 , p_side => 'NA'
28014 );
28015
28016 xla_ae_lines_pkg.set_ccid(
28017 p_code_combination_id => l_ccid
28018 , p_value_type_code => l_adr_value_type_code
28019 , p_transaction_coa_id => l_adr_transaction_coa_id
28020 , p_accounting_coa_id => l_adr_accounting_coa_id
28021 , p_adr_code => 'EXP'
28022 , p_adr_type_code => 'S'
28023 , p_component_type => l_component_type
28024 , p_component_code => l_component_code
28025 , p_component_type_code => l_component_type_code
28026 , p_component_appl_id => l_component_appl_id
28027 , p_amb_context_code => l_amb_context_code
28028 , p_side => 'NA'
28029 );
28030
28031
28032 --
28033 --
28034 END IF;
28035 --
28036 -- Bug 4922099
28037 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28038 (NVL(l_enc_upg_option, 'N') = 'O')
28039 ) AND
28040 (l_bflow_method_code = 'PRIOR_ENTRY')
28041 )
28042 THEN
28043 IF
28044 --
28045 1 = 2
28046 --
28047 THEN
28048 xla_accounting_err_pkg.build_message
28049 (p_appli_s_name => 'XLA'
28050 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28051 ,p_token_1 => 'LINE_NUMBER'
28052 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
28053 ,p_token_2 => 'LINE_TYPE_NAME'
28054 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
28055 l_component_type
28056 ,l_component_code
28057 ,l_component_type_code
28058 ,l_component_appl_id
28059 ,l_amb_context_code
28060 ,l_entity_code
28061 ,l_event_class_code
28062 )
28063 ,p_token_3 => 'OWNER'
28064 ,p_value_3 => xla_lookups_pkg.get_meaning(
28065 p_lookup_type => 'XLA_OWNER_TYPE'
28066 ,p_lookup_code => l_component_type_code
28067 )
28068 ,p_token_4 => 'PRODUCT_NAME'
28069 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28070 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28071 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28072 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28073 ,p_ae_header_id => NULL
28074 );
28075
28076 IF (C_LEVEL_ERROR>= g_log_level) THEN
28077 trace
28078 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28079 ,p_level => C_LEVEL_ERROR
28080 ,p_module => l_log_module);
28081 END IF;
28082 END IF;
28083 END IF;
28084 --
28085 --
28086 ------------------------------------------------------------------------------------------------
28087 -- 4219869 Business Flow
28091 XLA_AE_LINES_PKG.ValidateCurrentLine;
28088 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28089 -- Prior Entry. Currently, the following code is always generated.
28090 ------------------------------------------------------------------------------------------------
28092
28093 ------------------------------------------------------------------------------------
28094 -- 4219869 Business Flow
28095 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28096 ------------------------------------------------------------------------------------
28097 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28098
28099 ----------------------------------------------------------------------------------
28100 -- 4219869 Business Flow
28101 -- Update journal entry status -- Need to generate this within IF <condition>
28102 ----------------------------------------------------------------------------------
28103 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28104 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28105 ,p_balance_type_code => l_balance_type_code
28106 );
28107
28108 -------------------------------------------------------------------------------------------
28109 -- 4262811 - Generate the Accrual Reversal lines
28110 -------------------------------------------------------------------------------------------
28111 BEGIN
28112 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28113 (g_array_event(p_event_id).array_value_num('header_index'));
28114 IF l_acc_rev_flag IS NULL THEN
28115 l_acc_rev_flag := 'N';
28116 END IF;
28117 EXCEPTION
28118 WHEN OTHERS THEN
28119 l_acc_rev_flag := 'N';
28120 END;
28121 --
28122 IF (l_acc_rev_flag = 'Y') THEN
28123
28124 -- 4645092 ------------------------------------------------------------------------------
28125 -- To allow MPA report to determine if it should generate report process
28126 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28127 ------------------------------------------------------------------------------------------
28128
28129 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28130 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28131 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
28132 -- call ADRs
28133 -- Bug 4922099
28134 --
28135 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28136 (NVL(l_actual_upg_option, 'N') = 'O') OR
28137 (NVL(l_enc_upg_option, 'N') = 'O')
28138 )
28139 THEN
28140 NULL;
28141 --
28142 --
28143
28144 l_ccid := AcctDerRule_12(
28145 p_application_id => p_application_id
28146 , p_ae_header_id => l_ae_header_id
28147 , p_source_1 => p_source_1
28148 , p_source_2 => p_source_2
28149 , x_transaction_coa_id => l_adr_transaction_coa_id
28150 , x_accounting_coa_id => l_adr_accounting_coa_id
28151 , x_value_type_code => l_adr_value_type_code
28152 , p_side => 'NA'
28153 );
28154
28155 xla_ae_lines_pkg.set_ccid(
28156 p_code_combination_id => l_ccid
28157 , p_value_type_code => l_adr_value_type_code
28158 , p_transaction_coa_id => l_adr_transaction_coa_id
28159 , p_accounting_coa_id => l_adr_accounting_coa_id
28160 , p_adr_code => 'EXP'
28161 , p_adr_type_code => 'S'
28162 , p_component_type => l_component_type
28163 , p_component_code => l_component_code
28164 , p_component_type_code => l_component_type_code
28165 , p_component_appl_id => l_component_appl_id
28166 , p_amb_context_code => l_amb_context_code
28167 , p_side => 'NA'
28168 );
28169
28170
28171 --
28172 --
28173 END IF;
28174
28175 --
28176 -- Update the line information that should be overwritten
28177 --
28178 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28179 p_header_num => 1);
28180 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
28181
28182 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28183
28184 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
28185 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28186 END IF;
28187
28188 --
28189 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28190 --
28191 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28192 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
28193 ELSE
28194 ---------------------------------------------------------------------------------------------------
28195 -- 4262811a Switch Sign
28196 ---------------------------------------------------------------------------------------------------
28200 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28197 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
28198 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28199 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28201 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28202 -- 5132302
28203 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28204 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28205
28206 END IF;
28207
28208 -- 4955764
28209 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28210 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28211
28212
28213 XLA_AE_LINES_PKG.ValidateCurrentLine;
28214 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28215
28216 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28217 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28218 ,p_balance_type_code => l_balance_type_code);
28219
28220 END IF;
28221
28222 -----------------------------------------------------------------------------------------
28223 -- 4262811 Multiperiod Accounting
28224 -----------------------------------------------------------------------------------------
28225 -- No MPA option is assigned.
28226
28227
28228 END IF;
28229 END IF;
28230 --
28231
28232 --
28233 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28234 trace
28235 (p_msg => 'END of AcctLineType_83'
28236 ,p_level => C_LEVEL_PROCEDURE
28237 ,p_module => l_log_module);
28238 END IF;
28239 --
28240 EXCEPTION
28241 WHEN xla_exceptions_pkg.application_exception THEN
28242 RAISE;
28243 WHEN OTHERS THEN
28244 xla_exceptions_pkg.raise_message
28245 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_83');
28246 END AcctLineType_83;
28247 --
28248
28249 ---------------------------------------
28250 --
28251 -- PRIVATE FUNCTION
28252 -- AcctLineType_84
28253 --
28254 ---------------------------------------
28255 PROCEDURE AcctLineType_84 (
28256 p_application_id IN NUMBER
28257 ,p_event_id IN NUMBER
28258 ,p_calculate_acctd_flag IN VARCHAR2
28259 ,p_calculate_g_l_flag IN VARCHAR2
28260 ,p_actual_flag IN OUT VARCHAR2
28261 ,p_balance_type_code OUT VARCHAR2
28262 ,p_gain_or_loss_ref OUT VARCHAR2
28263
28264 --Transaction Account
28265 , p_source_1 IN NUMBER
28266 --Journal Line Type
28267 , p_source_2 IN VARCHAR2
28268 --Entered Amount
28269 , p_source_3 IN NUMBER
28270 --First Distribution Identifier
28271 , p_source_5 IN NUMBER
28272 --Distribution Type
28273 , p_source_6 IN VARCHAR2
28274 --Currency Code
28275 , p_source_7 IN VARCHAR2
28276 --Currency Conversion Date
28277 , p_source_8 IN DATE
28278 --Currency Conversion Rate
28279 , p_source_9 IN NUMBER
28280 --Currency Conversion Type
28281 , p_source_10 IN VARCHAR2
28282 --Accounted Amount
28283 , p_source_11 IN NUMBER
28284 )
28285 IS
28286
28287 l_component_type VARCHAR2(80);
28288 l_component_code VARCHAR2(30);
28289 l_component_type_code VARCHAR2(1);
28290 l_component_appl_id INTEGER;
28291 l_amb_context_code VARCHAR2(30);
28292 l_entity_code VARCHAR2(30);
28293 l_event_class_code VARCHAR2(30);
28294 l_ae_header_id NUMBER;
28295 l_event_type_code VARCHAR2(30);
28296 l_line_definition_code VARCHAR2(30);
28297 l_line_definition_owner_code VARCHAR2(1);
28298 --
28299 -- adr variables
28300 l_segment VARCHAR2(30);
28301 l_ccid NUMBER;
28302 l_adr_transaction_coa_id NUMBER;
28303 l_adr_accounting_coa_id NUMBER;
28304 l_adr_flexfield_segment_code VARCHAR2(30);
28305 l_adr_flex_value_set_id NUMBER;
28306 l_adr_value_type_code VARCHAR2(30);
28307 l_adr_value_combination_id NUMBER;
28308 l_adr_value_segment_code VARCHAR2(30);
28309
28310 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
28311 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
28312 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
28313 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
28314
28315 -- 4262811 Variables ------------------------------------------------------------------------------------------
28316 l_entered_amt_idx NUMBER;
28317 l_accted_amt_idx NUMBER;
28318 l_acc_rev_flag VARCHAR2(1);
28319 l_accrual_line_num NUMBER;
28320 l_tmp_amt NUMBER;
28321 l_acc_rev_natural_side_code VARCHAR2(1);
28322
28323 l_num_entries NUMBER;
28327 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
28324 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
28325 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
28326 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
28328 l_recog_line_1 NUMBER;
28329 l_recog_line_2 NUMBER;
28330
28331 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
28332 l_bflow_applied_to_amt NUMBER; -- 5132302
28333 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
28334
28335 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28336
28337 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
28338 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
28339
28340 ---------------------------------------------------------------------------------------------------------------
28341
28342
28343 --
28344 -- bulk performance
28345 --
28346 l_balance_type_code VARCHAR2(1);
28347 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
28348 l_log_module VARCHAR2(240);
28349
28350 --
28351 -- Upgrade strategy
28352 --
28353 l_actual_upg_option VARCHAR2(1);
28354 l_enc_upg_option VARCHAR2(1);
28355
28356 --
28357 BEGIN
28358 --
28359 IF g_log_enabled THEN
28360 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
28361 END IF;
28362 --
28363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28364
28365 trace
28366 (p_msg => 'BEGIN of AcctLineType_84'
28367 ,p_level => C_LEVEL_PROCEDURE
28368 ,p_module => l_log_module);
28369
28370 END IF;
28371 --
28372 l_component_type := 'AMB_JLT';
28373 l_component_code := 'EXP';
28374 l_component_type_code := 'S';
28375 l_component_appl_id := 555;
28376 l_amb_context_code := 'DEFAULT';
28377 l_entity_code := 'PURCHASING';
28378 l_event_class_code := 'DELIVER';
28379 l_event_type_code := 'LOG_RET_TO_RECEIVING';
28380 l_line_definition_owner_code := 'S';
28381 l_line_definition_code := 'LOG_RET_TO_RECEIVING';
28382 --
28383 l_balance_type_code := 'A';
28384 l_segment := NULL;
28385 l_ccid := NULL;
28386 l_adr_transaction_coa_id := NULL;
28387 l_adr_accounting_coa_id := NULL;
28388 l_adr_flexfield_segment_code := NULL;
28389 l_adr_flex_value_set_id := NULL;
28390 l_adr_value_type_code := NULL;
28391 l_adr_value_combination_id := NULL;
28392 l_adr_value_segment_code := NULL;
28393
28394 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
28395 l_bflow_class_code := ''; -- 4219869 Business Flow
28396 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
28397 l_budgetary_control_flag := 'N';
28398
28399 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28400 l_bflow_applied_to_amt := NULL; -- 5132302
28401 l_entered_amt_idx := NULL; -- 4262811
28402 l_accted_amt_idx := NULL; -- 4262811
28403 l_acc_rev_flag := NULL; -- 4262811
28404 l_accrual_line_num := NULL; -- 4262811
28405 l_tmp_amt := NULL; -- 4262811
28406 --
28407
28408 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28409 l_balance_type_code <> 'B' THEN
28410 IF NVL(p_source_2,'
28411 ') = 'EXP'
28412 THEN
28413
28414 --
28415 XLA_AE_LINES_PKG.SetNewLine;
28416
28417 p_balance_type_code := l_balance_type_code;
28418 -- set the flag so later we will know whether the gain loss line needs to be created
28419
28420 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28421 p_actual_flag :='A';
28422 END IF;
28423
28424 --
28425 -- bulk performance
28426 --
28427 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28428 p_header_num => 0); -- 4262811
28429 --
28430 -- set accounting line options
28431 --
28432 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28433 p_natural_side_code => 'D'
28434 , p_gain_or_loss_flag => 'N'
28435 , p_gl_transfer_mode_code => 'D'
28436 , p_acct_entry_type_code => 'A'
28437 , p_switch_side_flag => 'Y'
28438 , p_merge_duplicate_code => 'W'
28439 );
28440 --
28441 l_acc_rev_natural_side_code := 'C'; -- 4262811
28442 --
28443 --
28444 -- set accounting line type info
28445 --
28446 xla_ae_lines_pkg.SetAcctLineType
28447 (p_component_type => l_component_type
28448 ,p_event_type_code => l_event_type_code
28449 ,p_line_definition_owner_code => l_line_definition_owner_code
28450 ,p_line_definition_code => l_line_definition_code
28451 ,p_accounting_line_code => l_component_code
28452 ,p_accounting_line_type_code => l_component_type_code
28453 ,p_accounting_line_appl_id => l_component_appl_id
28457 --
28454 ,p_amb_context_code => l_amb_context_code
28455 ,p_entity_code => l_entity_code
28456 ,p_event_class_code => l_event_class_code);
28458 -- set accounting class
28459 --
28460 xla_ae_lines_pkg.SetAcctClass(
28461 p_accounting_class_code => 'EXPENSE'
28462 , p_ae_header_id => l_ae_header_id
28463 );
28464
28465 --
28466 -- set rounding class
28467 --
28468 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28469 'EXPENSE';
28470
28471 --
28472 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28473 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28474 --
28475 -- bulk performance
28476 --
28477 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28478
28479 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28480 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28481
28482 -- 4955764
28483 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28484 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28485
28486 -- 4458381 Public Sector Enh
28487
28488 --
28489 -- set accounting attributes for the line type
28490 --
28491 l_entered_amt_idx := 3;
28492 l_accted_amt_idx := 8;
28493 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28494 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28495 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
28496 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
28497 l_rec_acct_attrs.array_char_value(2) := p_source_6;
28498 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
28499 l_rec_acct_attrs.array_num_value(3) := p_source_3;
28500 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
28501 l_rec_acct_attrs.array_char_value(4) := p_source_7;
28502 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
28503 l_rec_acct_attrs.array_date_value(5) := p_source_8;
28504 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
28505 l_rec_acct_attrs.array_num_value(6) := p_source_9;
28506 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
28507 l_rec_acct_attrs.array_char_value(7) := p_source_10;
28508 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
28509 l_rec_acct_attrs.array_num_value(8) := p_source_11;
28510
28511 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28512 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28513
28514 ---------------------------------------------------------------------------------------------------------------
28515 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28516 ---------------------------------------------------------------------------------------------------------------
28517 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28518
28519 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28520 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28521
28522 IF xla_accounting_cache_pkg.GetValueChar
28523 (p_source_code => 'LEDGER_CATEGORY_CODE'
28524 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28525 AND l_bflow_method_code = 'PRIOR_ENTRY'
28526 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28527 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28528 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28529 )
28530 THEN
28531 xla_ae_lines_pkg.BflowUpgEntry
28532 (p_business_method_code => l_bflow_method_code
28533 ,p_business_class_code => l_bflow_class_code
28534 ,p_balance_type => l_balance_type_code);
28535 ELSE
28536 NULL;
28537 -- No business flow processing for business flow method of NONE.
28538 END IF;
28539
28540 --
28541 -- call analytical criteria
28542 --
28543
28544 --
28545 -- call description
28546 --
28547 -- No description or it is inherited.
28548 --
28549 -- call ADRs
28550 -- Bug 4922099
28551 --
28552 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28553 (NVL(l_actual_upg_option, 'N') = 'O') OR
28554 (NVL(l_enc_upg_option, 'N') = 'O')
28555 )
28556 THEN
28557 NULL;
28558 --
28559 --
28560
28561 l_ccid := AcctDerRule_12(
28562 p_application_id => p_application_id
28563 , p_ae_header_id => l_ae_header_id
28564 , p_source_1 => p_source_1
28565 , p_source_2 => p_source_2
28566 , x_transaction_coa_id => l_adr_transaction_coa_id
28567 , x_accounting_coa_id => l_adr_accounting_coa_id
28568 , x_value_type_code => l_adr_value_type_code
28569 , p_side => 'NA'
28570 );
28574 , p_value_type_code => l_adr_value_type_code
28571
28572 xla_ae_lines_pkg.set_ccid(
28573 p_code_combination_id => l_ccid
28575 , p_transaction_coa_id => l_adr_transaction_coa_id
28576 , p_accounting_coa_id => l_adr_accounting_coa_id
28577 , p_adr_code => 'EXP'
28578 , p_adr_type_code => 'S'
28579 , p_component_type => l_component_type
28580 , p_component_code => l_component_code
28581 , p_component_type_code => l_component_type_code
28582 , p_component_appl_id => l_component_appl_id
28583 , p_amb_context_code => l_amb_context_code
28584 , p_side => 'NA'
28585 );
28586
28587
28588 --
28589 --
28590 END IF;
28591 --
28592 -- Bug 4922099
28593 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28594 (NVL(l_enc_upg_option, 'N') = 'O')
28595 ) AND
28596 (l_bflow_method_code = 'PRIOR_ENTRY')
28597 )
28598 THEN
28599 IF
28600 --
28601 1 = 2
28602 --
28603 THEN
28604 xla_accounting_err_pkg.build_message
28605 (p_appli_s_name => 'XLA'
28606 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28607 ,p_token_1 => 'LINE_NUMBER'
28608 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
28609 ,p_token_2 => 'LINE_TYPE_NAME'
28610 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
28611 l_component_type
28612 ,l_component_code
28613 ,l_component_type_code
28614 ,l_component_appl_id
28615 ,l_amb_context_code
28616 ,l_entity_code
28617 ,l_event_class_code
28618 )
28619 ,p_token_3 => 'OWNER'
28620 ,p_value_3 => xla_lookups_pkg.get_meaning(
28621 p_lookup_type => 'XLA_OWNER_TYPE'
28622 ,p_lookup_code => l_component_type_code
28623 )
28624 ,p_token_4 => 'PRODUCT_NAME'
28625 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28626 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28627 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28628 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28629 ,p_ae_header_id => NULL
28630 );
28631
28632 IF (C_LEVEL_ERROR>= g_log_level) THEN
28633 trace
28634 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28635 ,p_level => C_LEVEL_ERROR
28636 ,p_module => l_log_module);
28637 END IF;
28638 END IF;
28639 END IF;
28640 --
28641 --
28642 ------------------------------------------------------------------------------------------------
28643 -- 4219869 Business Flow
28644 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28645 -- Prior Entry. Currently, the following code is always generated.
28646 ------------------------------------------------------------------------------------------------
28647 XLA_AE_LINES_PKG.ValidateCurrentLine;
28648
28649 ------------------------------------------------------------------------------------
28650 -- 4219869 Business Flow
28651 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28652 ------------------------------------------------------------------------------------
28653 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28654
28655 ----------------------------------------------------------------------------------
28656 -- 4219869 Business Flow
28657 -- Update journal entry status -- Need to generate this within IF <condition>
28658 ----------------------------------------------------------------------------------
28659 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28660 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28661 ,p_balance_type_code => l_balance_type_code
28662 );
28663
28664 -------------------------------------------------------------------------------------------
28665 -- 4262811 - Generate the Accrual Reversal lines
28669 (g_array_event(p_event_id).array_value_num('header_index'));
28666 -------------------------------------------------------------------------------------------
28667 BEGIN
28668 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28670 IF l_acc_rev_flag IS NULL THEN
28671 l_acc_rev_flag := 'N';
28672 END IF;
28673 EXCEPTION
28674 WHEN OTHERS THEN
28675 l_acc_rev_flag := 'N';
28676 END;
28677 --
28678 IF (l_acc_rev_flag = 'Y') THEN
28679
28680 -- 4645092 ------------------------------------------------------------------------------
28681 -- To allow MPA report to determine if it should generate report process
28682 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28683 ------------------------------------------------------------------------------------------
28684
28685 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28686 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28687 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
28688 -- call ADRs
28689 -- Bug 4922099
28690 --
28691 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28692 (NVL(l_actual_upg_option, 'N') = 'O') OR
28693 (NVL(l_enc_upg_option, 'N') = 'O')
28694 )
28695 THEN
28696 NULL;
28697 --
28698 --
28699
28700 l_ccid := AcctDerRule_12(
28701 p_application_id => p_application_id
28702 , p_ae_header_id => l_ae_header_id
28703 , p_source_1 => p_source_1
28704 , p_source_2 => p_source_2
28705 , x_transaction_coa_id => l_adr_transaction_coa_id
28706 , x_accounting_coa_id => l_adr_accounting_coa_id
28707 , x_value_type_code => l_adr_value_type_code
28708 , p_side => 'NA'
28709 );
28710
28711 xla_ae_lines_pkg.set_ccid(
28712 p_code_combination_id => l_ccid
28713 , p_value_type_code => l_adr_value_type_code
28714 , p_transaction_coa_id => l_adr_transaction_coa_id
28715 , p_accounting_coa_id => l_adr_accounting_coa_id
28716 , p_adr_code => 'EXP'
28717 , p_adr_type_code => 'S'
28718 , p_component_type => l_component_type
28719 , p_component_code => l_component_code
28720 , p_component_type_code => l_component_type_code
28721 , p_component_appl_id => l_component_appl_id
28722 , p_amb_context_code => l_amb_context_code
28723 , p_side => 'NA'
28724 );
28725
28726
28727 --
28728 --
28729 END IF;
28730
28731 --
28732 -- Update the line information that should be overwritten
28733 --
28734 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28735 p_header_num => 1);
28736 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
28737
28738 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28739
28740 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
28741 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28742 END IF;
28743
28744 --
28745 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28746 --
28747 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28748 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
28749 ELSE
28750 ---------------------------------------------------------------------------------------------------
28751 -- 4262811a Switch Sign
28752 ---------------------------------------------------------------------------------------------------
28753 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
28754 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28755 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28756 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28757 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28758 -- 5132302
28759 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28760 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28761
28762 END IF;
28763
28764 -- 4955764
28765 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28766 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28767
28768
28769 XLA_AE_LINES_PKG.ValidateCurrentLine;
28770 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28771
28772 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28773 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28774 ,p_balance_type_code => l_balance_type_code);
28775
28776 END IF;
28777
28781 -- No MPA option is assigned.
28778 -----------------------------------------------------------------------------------------
28779 -- 4262811 Multiperiod Accounting
28780 -----------------------------------------------------------------------------------------
28782
28783
28784 END IF;
28785 END IF;
28786 --
28787
28788 --
28789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28790 trace
28791 (p_msg => 'END of AcctLineType_84'
28792 ,p_level => C_LEVEL_PROCEDURE
28793 ,p_module => l_log_module);
28794 END IF;
28795 --
28796 EXCEPTION
28797 WHEN xla_exceptions_pkg.application_exception THEN
28798 RAISE;
28799 WHEN OTHERS THEN
28800 xla_exceptions_pkg.raise_message
28801 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_84');
28802 END AcctLineType_84;
28803 --
28804
28805 ---------------------------------------
28806 --
28807 -- PRIVATE FUNCTION
28808 -- AcctLineType_85
28809 --
28810 ---------------------------------------
28811 PROCEDURE AcctLineType_85 (
28812 p_application_id IN NUMBER
28813 ,p_event_id IN NUMBER
28814 ,p_calculate_acctd_flag IN VARCHAR2
28815 ,p_calculate_g_l_flag IN VARCHAR2
28816 ,p_actual_flag IN OUT VARCHAR2
28817 ,p_balance_type_code OUT VARCHAR2
28818 ,p_gain_or_loss_ref OUT VARCHAR2
28819
28820 --Transaction Account
28821 , p_source_1 IN NUMBER
28822 --Journal Line Type
28823 , p_source_2 IN VARCHAR2
28824 --Entered Amount
28825 , p_source_3 IN NUMBER
28826 --First Distribution Identifier
28827 , p_source_5 IN NUMBER
28828 --Distribution Type
28829 , p_source_6 IN VARCHAR2
28830 --Currency Code
28831 , p_source_7 IN VARCHAR2
28832 --Currency Conversion Date
28833 , p_source_8 IN DATE
28834 --Currency Conversion Rate
28835 , p_source_9 IN NUMBER
28836 --Currency Conversion Type
28837 , p_source_10 IN VARCHAR2
28838 --Accounted Amount
28839 , p_source_11 IN NUMBER
28840 )
28841 IS
28842
28843 l_component_type VARCHAR2(80);
28844 l_component_code VARCHAR2(30);
28845 l_component_type_code VARCHAR2(1);
28846 l_component_appl_id INTEGER;
28847 l_amb_context_code VARCHAR2(30);
28848 l_entity_code VARCHAR2(30);
28849 l_event_class_code VARCHAR2(30);
28850 l_ae_header_id NUMBER;
28851 l_event_type_code VARCHAR2(30);
28852 l_line_definition_code VARCHAR2(30);
28853 l_line_definition_owner_code VARCHAR2(1);
28854 --
28855 -- adr variables
28856 l_segment VARCHAR2(30);
28857 l_ccid NUMBER;
28858 l_adr_transaction_coa_id NUMBER;
28859 l_adr_accounting_coa_id NUMBER;
28860 l_adr_flexfield_segment_code VARCHAR2(30);
28861 l_adr_flex_value_set_id NUMBER;
28862 l_adr_value_type_code VARCHAR2(30);
28863 l_adr_value_combination_id NUMBER;
28864 l_adr_value_segment_code VARCHAR2(30);
28865
28866 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
28867 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
28868 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
28869 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
28870
28871 -- 4262811 Variables ------------------------------------------------------------------------------------------
28872 l_entered_amt_idx NUMBER;
28873 l_accted_amt_idx NUMBER;
28874 l_acc_rev_flag VARCHAR2(1);
28875 l_accrual_line_num NUMBER;
28876 l_tmp_amt NUMBER;
28877 l_acc_rev_natural_side_code VARCHAR2(1);
28878
28879 l_num_entries NUMBER;
28880 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
28881 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
28882 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
28883 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
28884 l_recog_line_1 NUMBER;
28885 l_recog_line_2 NUMBER;
28886
28887 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
28888 l_bflow_applied_to_amt NUMBER; -- 5132302
28889 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
28890
28891 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28892
28893 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
28894 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
28895
28896 ---------------------------------------------------------------------------------------------------------------
28897
28898
28899 --
28900 -- bulk performance
28901 --
28902 l_balance_type_code VARCHAR2(1);
28903 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
28904 l_log_module VARCHAR2(240);
28905
28906 --
28907 -- Upgrade strategy
28908 --
28909 l_actual_upg_option VARCHAR2(1);
28910 l_enc_upg_option VARCHAR2(1);
28914 --
28911
28912 --
28913 BEGIN
28915 IF g_log_enabled THEN
28916 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
28917 END IF;
28918 --
28919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28920
28921 trace
28922 (p_msg => 'BEGIN of AcctLineType_85'
28923 ,p_level => C_LEVEL_PROCEDURE
28924 ,p_module => l_log_module);
28925
28926 END IF;
28927 --
28928 l_component_type := 'AMB_JLT';
28929 l_component_code := 'EXP';
28930 l_component_type_code := 'S';
28931 l_component_appl_id := 555;
28932 l_amb_context_code := 'DEFAULT';
28933 l_entity_code := 'INVENTORY';
28934 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
28935 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
28936 l_line_definition_owner_code := 'S';
28937 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
28938 --
28939 l_balance_type_code := 'A';
28940 l_segment := NULL;
28941 l_ccid := NULL;
28942 l_adr_transaction_coa_id := NULL;
28943 l_adr_accounting_coa_id := NULL;
28944 l_adr_flexfield_segment_code := NULL;
28945 l_adr_flex_value_set_id := NULL;
28946 l_adr_value_type_code := NULL;
28947 l_adr_value_combination_id := NULL;
28948 l_adr_value_segment_code := NULL;
28949
28950 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
28951 l_bflow_class_code := ''; -- 4219869 Business Flow
28952 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
28953 l_budgetary_control_flag := 'N';
28954
28955 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28956 l_bflow_applied_to_amt := NULL; -- 5132302
28957 l_entered_amt_idx := NULL; -- 4262811
28958 l_accted_amt_idx := NULL; -- 4262811
28959 l_acc_rev_flag := NULL; -- 4262811
28960 l_accrual_line_num := NULL; -- 4262811
28961 l_tmp_amt := NULL; -- 4262811
28962 --
28963
28964 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28965 l_balance_type_code <> 'B' THEN
28966 IF NVL(p_source_2,'
28967 ') = 'EXP'
28968 THEN
28969
28970 --
28971 XLA_AE_LINES_PKG.SetNewLine;
28972
28973 p_balance_type_code := l_balance_type_code;
28974 -- set the flag so later we will know whether the gain loss line needs to be created
28975
28976 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28977 p_actual_flag :='A';
28978 END IF;
28979
28980 --
28981 -- bulk performance
28982 --
28983 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28984 p_header_num => 0); -- 4262811
28985 --
28986 -- set accounting line options
28987 --
28988 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28989 p_natural_side_code => 'D'
28990 , p_gain_or_loss_flag => 'N'
28991 , p_gl_transfer_mode_code => 'D'
28992 , p_acct_entry_type_code => 'A'
28993 , p_switch_side_flag => 'Y'
28994 , p_merge_duplicate_code => 'W'
28995 );
28996 --
28997 l_acc_rev_natural_side_code := 'C'; -- 4262811
28998 --
28999 --
29000 -- set accounting line type info
29001 --
29002 xla_ae_lines_pkg.SetAcctLineType
29003 (p_component_type => l_component_type
29004 ,p_event_type_code => l_event_type_code
29005 ,p_line_definition_owner_code => l_line_definition_owner_code
29006 ,p_line_definition_code => l_line_definition_code
29007 ,p_accounting_line_code => l_component_code
29008 ,p_accounting_line_type_code => l_component_type_code
29009 ,p_accounting_line_appl_id => l_component_appl_id
29010 ,p_amb_context_code => l_amb_context_code
29011 ,p_entity_code => l_entity_code
29012 ,p_event_class_code => l_event_class_code);
29013 --
29014 -- set accounting class
29015 --
29016 xla_ae_lines_pkg.SetAcctClass(
29017 p_accounting_class_code => 'EXPENSE'
29018 , p_ae_header_id => l_ae_header_id
29019 );
29020
29021 --
29022 -- set rounding class
29023 --
29024 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29025 'EXPENSE';
29026
29027 --
29028 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29029 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29030 --
29031 -- bulk performance
29032 --
29033 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29034
29035 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29036 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29037
29038 -- 4955764
29039 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29040 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29041
29042 -- 4458381 Public Sector Enh
29043
29044 --
29048 l_accted_amt_idx := 8;
29045 -- set accounting attributes for the line type
29046 --
29047 l_entered_amt_idx := 3;
29049 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29050 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29051 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
29052 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29053 l_rec_acct_attrs.array_char_value(2) := p_source_6;
29054 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29055 l_rec_acct_attrs.array_num_value(3) := p_source_3;
29056 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29057 l_rec_acct_attrs.array_char_value(4) := p_source_7;
29058 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29059 l_rec_acct_attrs.array_date_value(5) := p_source_8;
29060 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29061 l_rec_acct_attrs.array_num_value(6) := p_source_9;
29062 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29063 l_rec_acct_attrs.array_char_value(7) := p_source_10;
29064 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29065 l_rec_acct_attrs.array_num_value(8) := p_source_11;
29066
29067 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29068 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29069
29070 ---------------------------------------------------------------------------------------------------------------
29071 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29072 ---------------------------------------------------------------------------------------------------------------
29073 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29074
29075 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29076 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29077
29078 IF xla_accounting_cache_pkg.GetValueChar
29079 (p_source_code => 'LEDGER_CATEGORY_CODE'
29080 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29081 AND l_bflow_method_code = 'PRIOR_ENTRY'
29082 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29083 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29084 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29085 )
29086 THEN
29087 xla_ae_lines_pkg.BflowUpgEntry
29088 (p_business_method_code => l_bflow_method_code
29089 ,p_business_class_code => l_bflow_class_code
29090 ,p_balance_type => l_balance_type_code);
29091 ELSE
29092 NULL;
29093 -- No business flow processing for business flow method of NONE.
29094 END IF;
29095
29096 --
29097 -- call analytical criteria
29098 --
29099
29100 --
29101 -- call description
29102 --
29103 -- No description or it is inherited.
29104 --
29105 -- call ADRs
29106 -- Bug 4922099
29107 --
29108 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29109 (NVL(l_actual_upg_option, 'N') = 'O') OR
29110 (NVL(l_enc_upg_option, 'N') = 'O')
29111 )
29112 THEN
29113 NULL;
29114 --
29115 --
29116
29117 l_ccid := AcctDerRule_12(
29118 p_application_id => p_application_id
29119 , p_ae_header_id => l_ae_header_id
29120 , p_source_1 => p_source_1
29121 , p_source_2 => p_source_2
29122 , x_transaction_coa_id => l_adr_transaction_coa_id
29123 , x_accounting_coa_id => l_adr_accounting_coa_id
29124 , x_value_type_code => l_adr_value_type_code
29125 , p_side => 'NA'
29126 );
29127
29128 xla_ae_lines_pkg.set_ccid(
29129 p_code_combination_id => l_ccid
29130 , p_value_type_code => l_adr_value_type_code
29131 , p_transaction_coa_id => l_adr_transaction_coa_id
29132 , p_accounting_coa_id => l_adr_accounting_coa_id
29133 , p_adr_code => 'EXP'
29134 , p_adr_type_code => 'S'
29135 , p_component_type => l_component_type
29136 , p_component_code => l_component_code
29137 , p_component_type_code => l_component_type_code
29138 , p_component_appl_id => l_component_appl_id
29139 , p_amb_context_code => l_amb_context_code
29140 , p_side => 'NA'
29141 );
29142
29143
29144 --
29145 --
29146 END IF;
29147 --
29148 -- Bug 4922099
29149 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29150 (NVL(l_enc_upg_option, 'N') = 'O')
29151 ) AND
29152 (l_bflow_method_code = 'PRIOR_ENTRY')
29153 )
29154 THEN
29155 IF
29156 --
29157 1 = 2
29158 --
29159 THEN
29160 xla_accounting_err_pkg.build_message
29161 (p_appli_s_name => 'XLA'
29162 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29163 ,p_token_1 => 'LINE_NUMBER'
29167 l_component_type
29164 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
29165 ,p_token_2 => 'LINE_TYPE_NAME'
29166 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
29168 ,l_component_code
29169 ,l_component_type_code
29170 ,l_component_appl_id
29171 ,l_amb_context_code
29172 ,l_entity_code
29173 ,l_event_class_code
29174 )
29175 ,p_token_3 => 'OWNER'
29176 ,p_value_3 => xla_lookups_pkg.get_meaning(
29177 p_lookup_type => 'XLA_OWNER_TYPE'
29178 ,p_lookup_code => l_component_type_code
29179 )
29180 ,p_token_4 => 'PRODUCT_NAME'
29181 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29182 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29183 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29184 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29185 ,p_ae_header_id => NULL
29186 );
29187
29188 IF (C_LEVEL_ERROR>= g_log_level) THEN
29189 trace
29190 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29191 ,p_level => C_LEVEL_ERROR
29192 ,p_module => l_log_module);
29193 END IF;
29194 END IF;
29195 END IF;
29196 --
29197 --
29198 ------------------------------------------------------------------------------------------------
29199 -- 4219869 Business Flow
29200 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29201 -- Prior Entry. Currently, the following code is always generated.
29202 ------------------------------------------------------------------------------------------------
29203 XLA_AE_LINES_PKG.ValidateCurrentLine;
29204
29205 ------------------------------------------------------------------------------------
29206 -- 4219869 Business Flow
29207 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29208 ------------------------------------------------------------------------------------
29209 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29210
29211 ----------------------------------------------------------------------------------
29212 -- 4219869 Business Flow
29213 -- Update journal entry status -- Need to generate this within IF <condition>
29214 ----------------------------------------------------------------------------------
29215 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29216 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29217 ,p_balance_type_code => l_balance_type_code
29218 );
29219
29220 -------------------------------------------------------------------------------------------
29221 -- 4262811 - Generate the Accrual Reversal lines
29222 -------------------------------------------------------------------------------------------
29223 BEGIN
29224 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29225 (g_array_event(p_event_id).array_value_num('header_index'));
29226 IF l_acc_rev_flag IS NULL THEN
29227 l_acc_rev_flag := 'N';
29228 END IF;
29229 EXCEPTION
29230 WHEN OTHERS THEN
29231 l_acc_rev_flag := 'N';
29232 END;
29233 --
29234 IF (l_acc_rev_flag = 'Y') THEN
29235
29236 -- 4645092 ------------------------------------------------------------------------------
29237 -- To allow MPA report to determine if it should generate report process
29238 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29239 ------------------------------------------------------------------------------------------
29240
29241 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29242 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29243 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
29244 -- call ADRs
29245 -- Bug 4922099
29246 --
29247 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29248 (NVL(l_actual_upg_option, 'N') = 'O') OR
29249 (NVL(l_enc_upg_option, 'N') = 'O')
29250 )
29251 THEN
29252 NULL;
29253 --
29254 --
29255
29256 l_ccid := AcctDerRule_12(
29260 , p_source_2 => p_source_2
29257 p_application_id => p_application_id
29258 , p_ae_header_id => l_ae_header_id
29259 , p_source_1 => p_source_1
29261 , x_transaction_coa_id => l_adr_transaction_coa_id
29262 , x_accounting_coa_id => l_adr_accounting_coa_id
29263 , x_value_type_code => l_adr_value_type_code
29264 , p_side => 'NA'
29265 );
29266
29267 xla_ae_lines_pkg.set_ccid(
29268 p_code_combination_id => l_ccid
29269 , p_value_type_code => l_adr_value_type_code
29270 , p_transaction_coa_id => l_adr_transaction_coa_id
29271 , p_accounting_coa_id => l_adr_accounting_coa_id
29272 , p_adr_code => 'EXP'
29273 , p_adr_type_code => 'S'
29274 , p_component_type => l_component_type
29275 , p_component_code => l_component_code
29276 , p_component_type_code => l_component_type_code
29277 , p_component_appl_id => l_component_appl_id
29278 , p_amb_context_code => l_amb_context_code
29279 , p_side => 'NA'
29280 );
29281
29282
29283 --
29284 --
29285 END IF;
29286
29287 --
29288 -- Update the line information that should be overwritten
29289 --
29290 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29291 p_header_num => 1);
29292 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
29293
29294 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29295
29296 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
29297 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29298 END IF;
29299
29300 --
29301 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29302 --
29303 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29304 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
29305 ELSE
29306 ---------------------------------------------------------------------------------------------------
29307 -- 4262811a Switch Sign
29308 ---------------------------------------------------------------------------------------------------
29309 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
29310 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29311 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29312 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29313 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29314 -- 5132302
29315 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29316 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29317
29318 END IF;
29319
29320 -- 4955764
29321 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29322 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29323
29324
29325 XLA_AE_LINES_PKG.ValidateCurrentLine;
29326 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29327
29328 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29329 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29330 ,p_balance_type_code => l_balance_type_code);
29331
29332 END IF;
29333
29334 -----------------------------------------------------------------------------------------
29335 -- 4262811 Multiperiod Accounting
29336 -----------------------------------------------------------------------------------------
29337 -- No MPA option is assigned.
29338
29339
29340 END IF;
29341 END IF;
29342 --
29343
29344 --
29345 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29346 trace
29347 (p_msg => 'END of AcctLineType_85'
29348 ,p_level => C_LEVEL_PROCEDURE
29349 ,p_module => l_log_module);
29350 END IF;
29351 --
29352 EXCEPTION
29353 WHEN xla_exceptions_pkg.application_exception THEN
29354 RAISE;
29355 WHEN OTHERS THEN
29356 xla_exceptions_pkg.raise_message
29357 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_85');
29358 END AcctLineType_85;
29359 --
29360
29361 ---------------------------------------
29362 --
29363 -- PRIVATE FUNCTION
29364 -- AcctLineType_86
29365 --
29366 ---------------------------------------
29367 PROCEDURE AcctLineType_86 (
29368 p_application_id IN NUMBER
29369 ,p_event_id IN NUMBER
29370 ,p_calculate_acctd_flag IN VARCHAR2
29371 ,p_calculate_g_l_flag IN VARCHAR2
29372 ,p_actual_flag IN OUT VARCHAR2
29373 ,p_balance_type_code OUT VARCHAR2
29377 , p_source_1 IN NUMBER
29374 ,p_gain_or_loss_ref OUT VARCHAR2
29375
29376 --Transaction Account
29378 --Journal Line Type
29379 , p_source_2 IN VARCHAR2
29380 --Entered Amount
29381 , p_source_3 IN NUMBER
29382 --First Distribution Identifier
29383 , p_source_5 IN NUMBER
29384 --Distribution Type
29385 , p_source_6 IN VARCHAR2
29386 --Currency Code
29387 , p_source_7 IN VARCHAR2
29388 --Currency Conversion Date
29389 , p_source_8 IN DATE
29390 --Currency Conversion Rate
29391 , p_source_9 IN NUMBER
29392 --Currency Conversion Type
29393 , p_source_10 IN VARCHAR2
29394 --Accounted Amount
29395 , p_source_11 IN NUMBER
29396 )
29397 IS
29398
29399 l_component_type VARCHAR2(80);
29400 l_component_code VARCHAR2(30);
29401 l_component_type_code VARCHAR2(1);
29402 l_component_appl_id INTEGER;
29403 l_amb_context_code VARCHAR2(30);
29404 l_entity_code VARCHAR2(30);
29405 l_event_class_code VARCHAR2(30);
29406 l_ae_header_id NUMBER;
29407 l_event_type_code VARCHAR2(30);
29408 l_line_definition_code VARCHAR2(30);
29409 l_line_definition_owner_code VARCHAR2(1);
29410 --
29411 -- adr variables
29412 l_segment VARCHAR2(30);
29413 l_ccid NUMBER;
29414 l_adr_transaction_coa_id NUMBER;
29415 l_adr_accounting_coa_id NUMBER;
29416 l_adr_flexfield_segment_code VARCHAR2(30);
29417 l_adr_flex_value_set_id NUMBER;
29418 l_adr_value_type_code VARCHAR2(30);
29419 l_adr_value_combination_id NUMBER;
29420 l_adr_value_segment_code VARCHAR2(30);
29421
29422 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
29423 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
29424 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
29425 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
29426
29427 -- 4262811 Variables ------------------------------------------------------------------------------------------
29428 l_entered_amt_idx NUMBER;
29429 l_accted_amt_idx NUMBER;
29430 l_acc_rev_flag VARCHAR2(1);
29431 l_accrual_line_num NUMBER;
29432 l_tmp_amt NUMBER;
29433 l_acc_rev_natural_side_code VARCHAR2(1);
29434
29435 l_num_entries NUMBER;
29436 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
29437 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
29438 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
29439 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
29440 l_recog_line_1 NUMBER;
29441 l_recog_line_2 NUMBER;
29442
29443 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
29444 l_bflow_applied_to_amt NUMBER; -- 5132302
29445 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
29446
29447 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29448
29449 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
29450 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
29451
29452 ---------------------------------------------------------------------------------------------------------------
29453
29454
29455 --
29456 -- bulk performance
29457 --
29458 l_balance_type_code VARCHAR2(1);
29459 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
29460 l_log_module VARCHAR2(240);
29461
29462 --
29463 -- Upgrade strategy
29464 --
29465 l_actual_upg_option VARCHAR2(1);
29466 l_enc_upg_option VARCHAR2(1);
29467
29468 --
29469 BEGIN
29470 --
29471 IF g_log_enabled THEN
29472 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
29473 END IF;
29474 --
29475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29476
29477 trace
29478 (p_msg => 'BEGIN of AcctLineType_86'
29479 ,p_level => C_LEVEL_PROCEDURE
29480 ,p_module => l_log_module);
29481
29482 END IF;
29483 --
29484 l_component_type := 'AMB_JLT';
29485 l_component_code := 'EXP';
29486 l_component_type_code := 'S';
29487 l_component_appl_id := 555;
29488 l_amb_context_code := 'DEFAULT';
29489 l_entity_code := 'INVENTORY';
29490 l_event_class_code := 'INT_ORDER_TO_EXP';
29491 l_event_type_code := 'INT_ORDER_ISSUE_TP';
29492 l_line_definition_owner_code := 'S';
29493 l_line_definition_code := 'INT_ORDER_ISSUE_TP';
29494 --
29495 l_balance_type_code := 'A';
29496 l_segment := NULL;
29497 l_ccid := NULL;
29498 l_adr_transaction_coa_id := NULL;
29499 l_adr_accounting_coa_id := NULL;
29500 l_adr_flexfield_segment_code := NULL;
29501 l_adr_flex_value_set_id := NULL;
29502 l_adr_value_type_code := NULL;
29503 l_adr_value_combination_id := NULL;
29504 l_adr_value_segment_code := NULL;
29505
29506 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
29510
29507 l_bflow_class_code := ''; -- 4219869 Business Flow
29508 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
29509 l_budgetary_control_flag := 'N';
29511 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29512 l_bflow_applied_to_amt := NULL; -- 5132302
29513 l_entered_amt_idx := NULL; -- 4262811
29514 l_accted_amt_idx := NULL; -- 4262811
29515 l_acc_rev_flag := NULL; -- 4262811
29516 l_accrual_line_num := NULL; -- 4262811
29517 l_tmp_amt := NULL; -- 4262811
29518 --
29519
29520 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29521 l_balance_type_code <> 'B' THEN
29522 IF NVL(p_source_2,'
29523 ') = 'EXP'
29524 THEN
29525
29526 --
29527 XLA_AE_LINES_PKG.SetNewLine;
29528
29529 p_balance_type_code := l_balance_type_code;
29530 -- set the flag so later we will know whether the gain loss line needs to be created
29531
29532 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29533 p_actual_flag :='A';
29534 END IF;
29535
29536 --
29537 -- bulk performance
29538 --
29539 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29540 p_header_num => 0); -- 4262811
29541 --
29542 -- set accounting line options
29543 --
29544 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29545 p_natural_side_code => 'D'
29546 , p_gain_or_loss_flag => 'N'
29547 , p_gl_transfer_mode_code => 'D'
29548 , p_acct_entry_type_code => 'A'
29549 , p_switch_side_flag => 'Y'
29550 , p_merge_duplicate_code => 'W'
29551 );
29552 --
29553 l_acc_rev_natural_side_code := 'C'; -- 4262811
29554 --
29555 --
29556 -- set accounting line type info
29557 --
29558 xla_ae_lines_pkg.SetAcctLineType
29559 (p_component_type => l_component_type
29560 ,p_event_type_code => l_event_type_code
29561 ,p_line_definition_owner_code => l_line_definition_owner_code
29562 ,p_line_definition_code => l_line_definition_code
29563 ,p_accounting_line_code => l_component_code
29564 ,p_accounting_line_type_code => l_component_type_code
29565 ,p_accounting_line_appl_id => l_component_appl_id
29566 ,p_amb_context_code => l_amb_context_code
29567 ,p_entity_code => l_entity_code
29568 ,p_event_class_code => l_event_class_code);
29569 --
29570 -- set accounting class
29571 --
29572 xla_ae_lines_pkg.SetAcctClass(
29573 p_accounting_class_code => 'EXPENSE'
29574 , p_ae_header_id => l_ae_header_id
29575 );
29576
29577 --
29578 -- set rounding class
29579 --
29580 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29581 'EXPENSE';
29582
29583 --
29584 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29585 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29586 --
29587 -- bulk performance
29588 --
29589 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29590
29591 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29592 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29593
29594 -- 4955764
29595 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29596 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29597
29598 -- 4458381 Public Sector Enh
29599
29600 --
29601 -- set accounting attributes for the line type
29602 --
29603 l_entered_amt_idx := 3;
29604 l_accted_amt_idx := 8;
29605 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29606 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29607 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
29608 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29609 l_rec_acct_attrs.array_char_value(2) := p_source_6;
29610 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29611 l_rec_acct_attrs.array_num_value(3) := p_source_3;
29612 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29613 l_rec_acct_attrs.array_char_value(4) := p_source_7;
29614 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29615 l_rec_acct_attrs.array_date_value(5) := p_source_8;
29616 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29617 l_rec_acct_attrs.array_num_value(6) := p_source_9;
29618 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29619 l_rec_acct_attrs.array_char_value(7) := p_source_10;
29620 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29621 l_rec_acct_attrs.array_num_value(8) := p_source_11;
29622
29623 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29624 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29625
29629 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29626 ---------------------------------------------------------------------------------------------------------------
29627 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29628 ---------------------------------------------------------------------------------------------------------------
29630
29631 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29632 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29633
29634 IF xla_accounting_cache_pkg.GetValueChar
29635 (p_source_code => 'LEDGER_CATEGORY_CODE'
29636 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29637 AND l_bflow_method_code = 'PRIOR_ENTRY'
29638 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29639 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29640 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29641 )
29642 THEN
29643 xla_ae_lines_pkg.BflowUpgEntry
29644 (p_business_method_code => l_bflow_method_code
29645 ,p_business_class_code => l_bflow_class_code
29646 ,p_balance_type => l_balance_type_code);
29647 ELSE
29648 NULL;
29649 -- No business flow processing for business flow method of NONE.
29650 END IF;
29651
29652 --
29653 -- call analytical criteria
29654 --
29655
29656 --
29657 -- call description
29658 --
29659 -- No description or it is inherited.
29660 --
29661 -- call ADRs
29662 -- Bug 4922099
29663 --
29664 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29665 (NVL(l_actual_upg_option, 'N') = 'O') OR
29666 (NVL(l_enc_upg_option, 'N') = 'O')
29667 )
29668 THEN
29669 NULL;
29670 --
29671 --
29672
29673 l_ccid := AcctDerRule_12(
29674 p_application_id => p_application_id
29675 , p_ae_header_id => l_ae_header_id
29676 , p_source_1 => p_source_1
29677 , p_source_2 => p_source_2
29678 , x_transaction_coa_id => l_adr_transaction_coa_id
29679 , x_accounting_coa_id => l_adr_accounting_coa_id
29680 , x_value_type_code => l_adr_value_type_code
29681 , p_side => 'NA'
29682 );
29683
29684 xla_ae_lines_pkg.set_ccid(
29685 p_code_combination_id => l_ccid
29686 , p_value_type_code => l_adr_value_type_code
29687 , p_transaction_coa_id => l_adr_transaction_coa_id
29688 , p_accounting_coa_id => l_adr_accounting_coa_id
29689 , p_adr_code => 'EXP'
29690 , p_adr_type_code => 'S'
29691 , p_component_type => l_component_type
29692 , p_component_code => l_component_code
29693 , p_component_type_code => l_component_type_code
29694 , p_component_appl_id => l_component_appl_id
29695 , p_amb_context_code => l_amb_context_code
29696 , p_side => 'NA'
29697 );
29698
29699
29700 --
29701 --
29702 END IF;
29703 --
29704 -- Bug 4922099
29705 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29706 (NVL(l_enc_upg_option, 'N') = 'O')
29707 ) AND
29708 (l_bflow_method_code = 'PRIOR_ENTRY')
29709 )
29710 THEN
29711 IF
29712 --
29713 1 = 2
29714 --
29715 THEN
29716 xla_accounting_err_pkg.build_message
29717 (p_appli_s_name => 'XLA'
29718 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29719 ,p_token_1 => 'LINE_NUMBER'
29720 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
29721 ,p_token_2 => 'LINE_TYPE_NAME'
29722 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
29723 l_component_type
29724 ,l_component_code
29725 ,l_component_type_code
29726 ,l_component_appl_id
29727 ,l_amb_context_code
29728 ,l_entity_code
29729 ,l_event_class_code
29730 )
29731 ,p_token_3 => 'OWNER'
29732 ,p_value_3 => xla_lookups_pkg.get_meaning(
29733 p_lookup_type => 'XLA_OWNER_TYPE'
29734 ,p_lookup_code => l_component_type_code
29738 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29735 )
29736 ,p_token_4 => 'PRODUCT_NAME'
29737 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29739 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29740 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29741 ,p_ae_header_id => NULL
29742 );
29743
29744 IF (C_LEVEL_ERROR>= g_log_level) THEN
29745 trace
29746 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29747 ,p_level => C_LEVEL_ERROR
29748 ,p_module => l_log_module);
29749 END IF;
29750 END IF;
29751 END IF;
29752 --
29753 --
29754 ------------------------------------------------------------------------------------------------
29755 -- 4219869 Business Flow
29756 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29757 -- Prior Entry. Currently, the following code is always generated.
29758 ------------------------------------------------------------------------------------------------
29759 XLA_AE_LINES_PKG.ValidateCurrentLine;
29760
29761 ------------------------------------------------------------------------------------
29762 -- 4219869 Business Flow
29763 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29764 ------------------------------------------------------------------------------------
29765 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29766
29767 ----------------------------------------------------------------------------------
29768 -- 4219869 Business Flow
29769 -- Update journal entry status -- Need to generate this within IF <condition>
29770 ----------------------------------------------------------------------------------
29771 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29772 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29773 ,p_balance_type_code => l_balance_type_code
29774 );
29775
29776 -------------------------------------------------------------------------------------------
29777 -- 4262811 - Generate the Accrual Reversal lines
29778 -------------------------------------------------------------------------------------------
29779 BEGIN
29780 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29781 (g_array_event(p_event_id).array_value_num('header_index'));
29782 IF l_acc_rev_flag IS NULL THEN
29783 l_acc_rev_flag := 'N';
29784 END IF;
29785 EXCEPTION
29786 WHEN OTHERS THEN
29787 l_acc_rev_flag := 'N';
29788 END;
29789 --
29790 IF (l_acc_rev_flag = 'Y') THEN
29791
29792 -- 4645092 ------------------------------------------------------------------------------
29793 -- To allow MPA report to determine if it should generate report process
29794 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29795 ------------------------------------------------------------------------------------------
29796
29797 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29798 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29799 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
29800 -- call ADRs
29801 -- Bug 4922099
29802 --
29803 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29804 (NVL(l_actual_upg_option, 'N') = 'O') OR
29805 (NVL(l_enc_upg_option, 'N') = 'O')
29806 )
29807 THEN
29808 NULL;
29809 --
29810 --
29811
29812 l_ccid := AcctDerRule_12(
29813 p_application_id => p_application_id
29814 , p_ae_header_id => l_ae_header_id
29815 , p_source_1 => p_source_1
29816 , p_source_2 => p_source_2
29817 , x_transaction_coa_id => l_adr_transaction_coa_id
29818 , x_accounting_coa_id => l_adr_accounting_coa_id
29819 , x_value_type_code => l_adr_value_type_code
29820 , p_side => 'NA'
29821 );
29822
29823 xla_ae_lines_pkg.set_ccid(
29824 p_code_combination_id => l_ccid
29825 , p_value_type_code => l_adr_value_type_code
29826 , p_transaction_coa_id => l_adr_transaction_coa_id
29827 , p_accounting_coa_id => l_adr_accounting_coa_id
29828 , p_adr_code => 'EXP'
29829 , p_adr_type_code => 'S'
29830 , p_component_type => l_component_type
29831 , p_component_code => l_component_code
29832 , p_component_type_code => l_component_type_code
29833 , p_component_appl_id => l_component_appl_id
29834 , p_amb_context_code => l_amb_context_code
29835 , p_side => 'NA'
29836 );
29837
29838
29839 --
29840 --
29841 END IF;
29842
29843 --
29844 -- Update the line information that should be overwritten
29845 --
29846 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29850 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29847 p_header_num => 1);
29848 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
29849
29851
29852 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
29853 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29854 END IF;
29855
29856 --
29857 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29858 --
29859 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29860 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
29861 ELSE
29862 ---------------------------------------------------------------------------------------------------
29863 -- 4262811a Switch Sign
29864 ---------------------------------------------------------------------------------------------------
29865 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
29866 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29867 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29868 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29869 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29870 -- 5132302
29871 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29872 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29873
29874 END IF;
29875
29876 -- 4955764
29877 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29878 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29879
29880
29881 XLA_AE_LINES_PKG.ValidateCurrentLine;
29882 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29883
29884 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29885 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29886 ,p_balance_type_code => l_balance_type_code);
29887
29888 END IF;
29889
29890 -----------------------------------------------------------------------------------------
29891 -- 4262811 Multiperiod Accounting
29892 -----------------------------------------------------------------------------------------
29893 -- No MPA option is assigned.
29894
29895
29896 END IF;
29897 END IF;
29898 --
29899
29900 --
29901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29902 trace
29903 (p_msg => 'END of AcctLineType_86'
29904 ,p_level => C_LEVEL_PROCEDURE
29905 ,p_module => l_log_module);
29906 END IF;
29907 --
29908 EXCEPTION
29909 WHEN xla_exceptions_pkg.application_exception THEN
29910 RAISE;
29911 WHEN OTHERS THEN
29912 xla_exceptions_pkg.raise_message
29913 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_86');
29914 END AcctLineType_86;
29915 --
29916
29917 ---------------------------------------
29918 --
29919 -- PRIVATE FUNCTION
29920 -- AcctLineType_87
29921 --
29922 ---------------------------------------
29923 PROCEDURE AcctLineType_87 (
29924 p_application_id IN NUMBER
29925 ,p_event_id IN NUMBER
29926 ,p_calculate_acctd_flag IN VARCHAR2
29927 ,p_calculate_g_l_flag IN VARCHAR2
29928 ,p_actual_flag IN OUT VARCHAR2
29929 ,p_balance_type_code OUT VARCHAR2
29930 ,p_gain_or_loss_ref OUT VARCHAR2
29931
29932 --Transaction Account
29933 , p_source_1 IN NUMBER
29934 --Journal Line Type
29935 , p_source_2 IN VARCHAR2
29936 --Entered Amount
29937 , p_source_3 IN NUMBER
29938 --First Distribution Identifier
29939 , p_source_5 IN NUMBER
29940 --Distribution Type
29941 , p_source_6 IN VARCHAR2
29942 --Currency Code
29943 , p_source_7 IN VARCHAR2
29944 --Currency Conversion Date
29945 , p_source_8 IN DATE
29946 --Currency Conversion Rate
29947 , p_source_9 IN NUMBER
29948 --Currency Conversion Type
29949 , p_source_10 IN VARCHAR2
29950 --Accounted Amount
29951 , p_source_11 IN NUMBER
29952 )
29953 IS
29954
29955 l_component_type VARCHAR2(80);
29956 l_component_code VARCHAR2(30);
29957 l_component_type_code VARCHAR2(1);
29958 l_component_appl_id INTEGER;
29959 l_amb_context_code VARCHAR2(30);
29960 l_entity_code VARCHAR2(30);
29961 l_event_class_code VARCHAR2(30);
29962 l_ae_header_id NUMBER;
29963 l_event_type_code VARCHAR2(30);
29964 l_line_definition_code VARCHAR2(30);
29965 l_line_definition_owner_code VARCHAR2(1);
29966 --
29967 -- adr variables
29968 l_segment VARCHAR2(30);
29969 l_ccid NUMBER;
29973 l_adr_flex_value_set_id NUMBER;
29970 l_adr_transaction_coa_id NUMBER;
29971 l_adr_accounting_coa_id NUMBER;
29972 l_adr_flexfield_segment_code VARCHAR2(30);
29974 l_adr_value_type_code VARCHAR2(30);
29975 l_adr_value_combination_id NUMBER;
29976 l_adr_value_segment_code VARCHAR2(30);
29977
29978 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
29979 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
29980 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
29981 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
29982
29983 -- 4262811 Variables ------------------------------------------------------------------------------------------
29984 l_entered_amt_idx NUMBER;
29985 l_accted_amt_idx NUMBER;
29986 l_acc_rev_flag VARCHAR2(1);
29987 l_accrual_line_num NUMBER;
29988 l_tmp_amt NUMBER;
29989 l_acc_rev_natural_side_code VARCHAR2(1);
29990
29991 l_num_entries NUMBER;
29992 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
29993 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
29994 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
29995 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
29996 l_recog_line_1 NUMBER;
29997 l_recog_line_2 NUMBER;
29998
29999 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
30000 l_bflow_applied_to_amt NUMBER; -- 5132302
30001 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
30002
30003 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30004
30005 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
30006 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
30007
30008 ---------------------------------------------------------------------------------------------------------------
30009
30010
30011 --
30012 -- bulk performance
30013 --
30014 l_balance_type_code VARCHAR2(1);
30015 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
30016 l_log_module VARCHAR2(240);
30017
30018 --
30019 -- Upgrade strategy
30020 --
30021 l_actual_upg_option VARCHAR2(1);
30022 l_enc_upg_option VARCHAR2(1);
30023
30024 --
30025 BEGIN
30026 --
30027 IF g_log_enabled THEN
30028 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
30029 END IF;
30030 --
30031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30032
30033 trace
30034 (p_msg => 'BEGIN of AcctLineType_87'
30035 ,p_level => C_LEVEL_PROCEDURE
30036 ,p_module => l_log_module);
30037
30038 END IF;
30039 --
30040 l_component_type := 'AMB_JLT';
30041 l_component_code := 'EXP';
30042 l_component_type_code := 'S';
30043 l_component_appl_id := 555;
30044 l_amb_context_code := 'DEFAULT';
30045 l_entity_code := 'INVENTORY';
30046 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
30047 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
30048 l_line_definition_owner_code := 'S';
30049 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
30050 --
30051 l_balance_type_code := 'A';
30052 l_segment := NULL;
30053 l_ccid := NULL;
30054 l_adr_transaction_coa_id := NULL;
30055 l_adr_accounting_coa_id := NULL;
30056 l_adr_flexfield_segment_code := NULL;
30057 l_adr_flex_value_set_id := NULL;
30058 l_adr_value_type_code := NULL;
30059 l_adr_value_combination_id := NULL;
30060 l_adr_value_segment_code := NULL;
30061
30062 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
30063 l_bflow_class_code := ''; -- 4219869 Business Flow
30064 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
30065 l_budgetary_control_flag := 'N';
30066
30067 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30068 l_bflow_applied_to_amt := NULL; -- 5132302
30069 l_entered_amt_idx := NULL; -- 4262811
30070 l_accted_amt_idx := NULL; -- 4262811
30071 l_acc_rev_flag := NULL; -- 4262811
30072 l_accrual_line_num := NULL; -- 4262811
30073 l_tmp_amt := NULL; -- 4262811
30074 --
30075
30076 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30077 l_balance_type_code <> 'B' THEN
30078 IF NVL(p_source_2,'
30079 ') = 'EXP'
30080 THEN
30081
30082 --
30083 XLA_AE_LINES_PKG.SetNewLine;
30084
30085 p_balance_type_code := l_balance_type_code;
30086 -- set the flag so later we will know whether the gain loss line needs to be created
30087
30088 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30089 p_actual_flag :='A';
30090 END IF;
30091
30092 --
30093 -- bulk performance
30094 --
30095 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30096 p_header_num => 0); -- 4262811
30097 --
30101 p_natural_side_code => 'D'
30098 -- set accounting line options
30099 --
30100 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30102 , p_gain_or_loss_flag => 'N'
30103 , p_gl_transfer_mode_code => 'D'
30104 , p_acct_entry_type_code => 'A'
30105 , p_switch_side_flag => 'Y'
30106 , p_merge_duplicate_code => 'W'
30107 );
30108 --
30109 l_acc_rev_natural_side_code := 'C'; -- 4262811
30110 --
30111 --
30112 -- set accounting line type info
30113 --
30114 xla_ae_lines_pkg.SetAcctLineType
30115 (p_component_type => l_component_type
30116 ,p_event_type_code => l_event_type_code
30117 ,p_line_definition_owner_code => l_line_definition_owner_code
30118 ,p_line_definition_code => l_line_definition_code
30119 ,p_accounting_line_code => l_component_code
30120 ,p_accounting_line_type_code => l_component_type_code
30121 ,p_accounting_line_appl_id => l_component_appl_id
30122 ,p_amb_context_code => l_amb_context_code
30123 ,p_entity_code => l_entity_code
30124 ,p_event_class_code => l_event_class_code);
30125 --
30126 -- set accounting class
30127 --
30128 xla_ae_lines_pkg.SetAcctClass(
30129 p_accounting_class_code => 'EXPENSE'
30130 , p_ae_header_id => l_ae_header_id
30131 );
30132
30133 --
30134 -- set rounding class
30135 --
30136 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30137 'EXPENSE';
30138
30139 --
30140 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30141 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30142 --
30143 -- bulk performance
30144 --
30145 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30146
30147 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30148 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30149
30150 -- 4955764
30151 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30152 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30153
30154 -- 4458381 Public Sector Enh
30155
30156 --
30157 -- set accounting attributes for the line type
30158 --
30159 l_entered_amt_idx := 3;
30160 l_accted_amt_idx := 8;
30161 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30162 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30163 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
30164 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30165 l_rec_acct_attrs.array_char_value(2) := p_source_6;
30166 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30167 l_rec_acct_attrs.array_num_value(3) := p_source_3;
30168 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30169 l_rec_acct_attrs.array_char_value(4) := p_source_7;
30170 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30171 l_rec_acct_attrs.array_date_value(5) := p_source_8;
30172 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30173 l_rec_acct_attrs.array_num_value(6) := p_source_9;
30174 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30175 l_rec_acct_attrs.array_char_value(7) := p_source_10;
30176 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30177 l_rec_acct_attrs.array_num_value(8) := p_source_11;
30178
30179 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30180 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30181
30182 ---------------------------------------------------------------------------------------------------------------
30183 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30184 ---------------------------------------------------------------------------------------------------------------
30185 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30186
30187 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30188 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30189
30190 IF xla_accounting_cache_pkg.GetValueChar
30191 (p_source_code => 'LEDGER_CATEGORY_CODE'
30192 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30193 AND l_bflow_method_code = 'PRIOR_ENTRY'
30194 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30195 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30196 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30197 )
30198 THEN
30199 xla_ae_lines_pkg.BflowUpgEntry
30200 (p_business_method_code => l_bflow_method_code
30201 ,p_business_class_code => l_bflow_class_code
30202 ,p_balance_type => l_balance_type_code);
30203 ELSE
30204 NULL;
30205 -- No business flow processing for business flow method of NONE.
30206 END IF;
30207
30211
30208 --
30209 -- call analytical criteria
30210 --
30212 --
30213 -- call description
30214 --
30215 -- No description or it is inherited.
30216 --
30217 -- call ADRs
30218 -- Bug 4922099
30219 --
30220 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30221 (NVL(l_actual_upg_option, 'N') = 'O') OR
30222 (NVL(l_enc_upg_option, 'N') = 'O')
30223 )
30224 THEN
30225 NULL;
30226 --
30227 --
30228
30229 l_ccid := AcctDerRule_12(
30230 p_application_id => p_application_id
30231 , p_ae_header_id => l_ae_header_id
30232 , p_source_1 => p_source_1
30233 , p_source_2 => p_source_2
30234 , x_transaction_coa_id => l_adr_transaction_coa_id
30235 , x_accounting_coa_id => l_adr_accounting_coa_id
30236 , x_value_type_code => l_adr_value_type_code
30237 , p_side => 'NA'
30238 );
30239
30240 xla_ae_lines_pkg.set_ccid(
30241 p_code_combination_id => l_ccid
30242 , p_value_type_code => l_adr_value_type_code
30243 , p_transaction_coa_id => l_adr_transaction_coa_id
30244 , p_accounting_coa_id => l_adr_accounting_coa_id
30245 , p_adr_code => 'EXP'
30246 , p_adr_type_code => 'S'
30247 , p_component_type => l_component_type
30248 , p_component_code => l_component_code
30249 , p_component_type_code => l_component_type_code
30250 , p_component_appl_id => l_component_appl_id
30251 , p_amb_context_code => l_amb_context_code
30252 , p_side => 'NA'
30253 );
30254
30255
30256 --
30257 --
30258 END IF;
30259 --
30260 -- Bug 4922099
30261 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30262 (NVL(l_enc_upg_option, 'N') = 'O')
30263 ) AND
30264 (l_bflow_method_code = 'PRIOR_ENTRY')
30265 )
30266 THEN
30267 IF
30268 --
30269 1 = 2
30270 --
30271 THEN
30272 xla_accounting_err_pkg.build_message
30273 (p_appli_s_name => 'XLA'
30274 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30275 ,p_token_1 => 'LINE_NUMBER'
30276 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
30277 ,p_token_2 => 'LINE_TYPE_NAME'
30278 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
30279 l_component_type
30280 ,l_component_code
30281 ,l_component_type_code
30282 ,l_component_appl_id
30283 ,l_amb_context_code
30284 ,l_entity_code
30285 ,l_event_class_code
30286 )
30287 ,p_token_3 => 'OWNER'
30288 ,p_value_3 => xla_lookups_pkg.get_meaning(
30289 p_lookup_type => 'XLA_OWNER_TYPE'
30290 ,p_lookup_code => l_component_type_code
30291 )
30292 ,p_token_4 => 'PRODUCT_NAME'
30293 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30294 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30295 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30296 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30297 ,p_ae_header_id => NULL
30298 );
30299
30300 IF (C_LEVEL_ERROR>= g_log_level) THEN
30301 trace
30302 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30303 ,p_level => C_LEVEL_ERROR
30304 ,p_module => l_log_module);
30305 END IF;
30306 END IF;
30307 END IF;
30308 --
30309 --
30310 ------------------------------------------------------------------------------------------------
30311 -- 4219869 Business Flow
30312 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30313 -- Prior Entry. Currently, the following code is always generated.
30314 ------------------------------------------------------------------------------------------------
30315 XLA_AE_LINES_PKG.ValidateCurrentLine;
30316
30320 ------------------------------------------------------------------------------------
30317 ------------------------------------------------------------------------------------
30318 -- 4219869 Business Flow
30319 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30321 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30322
30323 ----------------------------------------------------------------------------------
30324 -- 4219869 Business Flow
30325 -- Update journal entry status -- Need to generate this within IF <condition>
30326 ----------------------------------------------------------------------------------
30327 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30328 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30329 ,p_balance_type_code => l_balance_type_code
30330 );
30331
30332 -------------------------------------------------------------------------------------------
30333 -- 4262811 - Generate the Accrual Reversal lines
30334 -------------------------------------------------------------------------------------------
30335 BEGIN
30336 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30337 (g_array_event(p_event_id).array_value_num('header_index'));
30338 IF l_acc_rev_flag IS NULL THEN
30339 l_acc_rev_flag := 'N';
30340 END IF;
30341 EXCEPTION
30342 WHEN OTHERS THEN
30343 l_acc_rev_flag := 'N';
30344 END;
30345 --
30346 IF (l_acc_rev_flag = 'Y') THEN
30347
30348 -- 4645092 ------------------------------------------------------------------------------
30349 -- To allow MPA report to determine if it should generate report process
30350 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30351 ------------------------------------------------------------------------------------------
30352
30353 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30354 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30355 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
30356 -- call ADRs
30357 -- Bug 4922099
30358 --
30359 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30360 (NVL(l_actual_upg_option, 'N') = 'O') OR
30361 (NVL(l_enc_upg_option, 'N') = 'O')
30362 )
30363 THEN
30364 NULL;
30365 --
30366 --
30367
30368 l_ccid := AcctDerRule_12(
30369 p_application_id => p_application_id
30370 , p_ae_header_id => l_ae_header_id
30371 , p_source_1 => p_source_1
30372 , p_source_2 => p_source_2
30373 , x_transaction_coa_id => l_adr_transaction_coa_id
30374 , x_accounting_coa_id => l_adr_accounting_coa_id
30375 , x_value_type_code => l_adr_value_type_code
30376 , p_side => 'NA'
30377 );
30378
30379 xla_ae_lines_pkg.set_ccid(
30380 p_code_combination_id => l_ccid
30381 , p_value_type_code => l_adr_value_type_code
30382 , p_transaction_coa_id => l_adr_transaction_coa_id
30383 , p_accounting_coa_id => l_adr_accounting_coa_id
30384 , p_adr_code => 'EXP'
30385 , p_adr_type_code => 'S'
30386 , p_component_type => l_component_type
30387 , p_component_code => l_component_code
30388 , p_component_type_code => l_component_type_code
30389 , p_component_appl_id => l_component_appl_id
30390 , p_amb_context_code => l_amb_context_code
30391 , p_side => 'NA'
30392 );
30393
30394
30395 --
30396 --
30397 END IF;
30398
30399 --
30400 -- Update the line information that should be overwritten
30401 --
30402 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30403 p_header_num => 1);
30404 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
30405
30406 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30407
30408 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
30409 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30410 END IF;
30411
30412 --
30413 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30414 --
30415 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30416 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
30417 ELSE
30418 ---------------------------------------------------------------------------------------------------
30419 -- 4262811a Switch Sign
30420 ---------------------------------------------------------------------------------------------------
30421 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
30422 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30423 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30427 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30424 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30425 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30426 -- 5132302
30428 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30429
30430 END IF;
30431
30432 -- 4955764
30433 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30434 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30435
30436
30437 XLA_AE_LINES_PKG.ValidateCurrentLine;
30438 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30439
30440 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30441 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30442 ,p_balance_type_code => l_balance_type_code);
30443
30444 END IF;
30445
30446 -----------------------------------------------------------------------------------------
30447 -- 4262811 Multiperiod Accounting
30448 -----------------------------------------------------------------------------------------
30449 -- No MPA option is assigned.
30450
30451
30452 END IF;
30453 END IF;
30454 --
30455
30456 --
30457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30458 trace
30459 (p_msg => 'END of AcctLineType_87'
30460 ,p_level => C_LEVEL_PROCEDURE
30461 ,p_module => l_log_module);
30462 END IF;
30463 --
30464 EXCEPTION
30465 WHEN xla_exceptions_pkg.application_exception THEN
30466 RAISE;
30467 WHEN OTHERS THEN
30468 xla_exceptions_pkg.raise_message
30469 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_87');
30470 END AcctLineType_87;
30471 --
30472
30473 ---------------------------------------
30474 --
30475 -- PRIVATE FUNCTION
30476 -- AcctLineType_88
30477 --
30478 ---------------------------------------
30479 PROCEDURE AcctLineType_88 (
30480 p_application_id IN NUMBER
30481 ,p_event_id IN NUMBER
30482 ,p_calculate_acctd_flag IN VARCHAR2
30483 ,p_calculate_g_l_flag IN VARCHAR2
30484 ,p_actual_flag IN OUT VARCHAR2
30485 ,p_balance_type_code OUT VARCHAR2
30486 ,p_gain_or_loss_ref OUT VARCHAR2
30487
30488 --Transaction Account
30489 , p_source_1 IN NUMBER
30490 --Journal Line Type
30491 , p_source_2 IN VARCHAR2
30492 --Entered Amount
30493 , p_source_3 IN NUMBER
30494 --First Distribution Identifier
30495 , p_source_5 IN NUMBER
30496 --Distribution Type
30497 , p_source_6 IN VARCHAR2
30498 --Currency Code
30499 , p_source_7 IN VARCHAR2
30500 --Currency Conversion Date
30501 , p_source_8 IN DATE
30502 --Currency Conversion Rate
30503 , p_source_9 IN NUMBER
30504 --Currency Conversion Type
30505 , p_source_10 IN VARCHAR2
30506 --Accounted Amount
30507 , p_source_11 IN NUMBER
30508 )
30509 IS
30510
30511 l_component_type VARCHAR2(80);
30512 l_component_code VARCHAR2(30);
30513 l_component_type_code VARCHAR2(1);
30514 l_component_appl_id INTEGER;
30515 l_amb_context_code VARCHAR2(30);
30516 l_entity_code VARCHAR2(30);
30517 l_event_class_code VARCHAR2(30);
30518 l_ae_header_id NUMBER;
30519 l_event_type_code VARCHAR2(30);
30520 l_line_definition_code VARCHAR2(30);
30521 l_line_definition_owner_code VARCHAR2(1);
30522 --
30523 -- adr variables
30524 l_segment VARCHAR2(30);
30525 l_ccid NUMBER;
30526 l_adr_transaction_coa_id NUMBER;
30527 l_adr_accounting_coa_id NUMBER;
30528 l_adr_flexfield_segment_code VARCHAR2(30);
30529 l_adr_flex_value_set_id NUMBER;
30530 l_adr_value_type_code VARCHAR2(30);
30531 l_adr_value_combination_id NUMBER;
30532 l_adr_value_segment_code VARCHAR2(30);
30533
30534 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
30535 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
30536 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
30537 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
30538
30539 -- 4262811 Variables ------------------------------------------------------------------------------------------
30540 l_entered_amt_idx NUMBER;
30541 l_accted_amt_idx NUMBER;
30542 l_acc_rev_flag VARCHAR2(1);
30543 l_accrual_line_num NUMBER;
30544 l_tmp_amt NUMBER;
30545 l_acc_rev_natural_side_code VARCHAR2(1);
30546
30547 l_num_entries NUMBER;
30548 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
30549 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
30550 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
30551 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
30552 l_recog_line_1 NUMBER;
30553 l_recog_line_2 NUMBER;
30557 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
30554
30555 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
30556 l_bflow_applied_to_amt NUMBER; -- 5132302
30558
30559 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30560
30561 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
30562 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
30563
30564 ---------------------------------------------------------------------------------------------------------------
30565
30566
30567 --
30568 -- bulk performance
30569 --
30570 l_balance_type_code VARCHAR2(1);
30571 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
30572 l_log_module VARCHAR2(240);
30573
30574 --
30575 -- Upgrade strategy
30576 --
30577 l_actual_upg_option VARCHAR2(1);
30578 l_enc_upg_option VARCHAR2(1);
30579
30580 --
30581 BEGIN
30582 --
30583 IF g_log_enabled THEN
30584 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
30585 END IF;
30586 --
30587 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30588
30589 trace
30590 (p_msg => 'BEGIN of AcctLineType_88'
30591 ,p_level => C_LEVEL_PROCEDURE
30592 ,p_module => l_log_module);
30593
30594 END IF;
30595 --
30596 l_component_type := 'AMB_JLT';
30597 l_component_code := 'EXP';
30598 l_component_type_code := 'S';
30599 l_component_appl_id := 555;
30600 l_amb_context_code := 'DEFAULT';
30601 l_entity_code := 'INVENTORY';
30602 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
30603 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
30604 l_line_definition_owner_code := 'S';
30605 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
30606 --
30607 l_balance_type_code := 'A';
30608 l_segment := NULL;
30609 l_ccid := NULL;
30610 l_adr_transaction_coa_id := NULL;
30611 l_adr_accounting_coa_id := NULL;
30612 l_adr_flexfield_segment_code := NULL;
30613 l_adr_flex_value_set_id := NULL;
30614 l_adr_value_type_code := NULL;
30615 l_adr_value_combination_id := NULL;
30616 l_adr_value_segment_code := NULL;
30617
30618 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
30619 l_bflow_class_code := ''; -- 4219869 Business Flow
30620 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
30621 l_budgetary_control_flag := 'N';
30622
30623 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30624 l_bflow_applied_to_amt := NULL; -- 5132302
30625 l_entered_amt_idx := NULL; -- 4262811
30626 l_accted_amt_idx := NULL; -- 4262811
30627 l_acc_rev_flag := NULL; -- 4262811
30628 l_accrual_line_num := NULL; -- 4262811
30629 l_tmp_amt := NULL; -- 4262811
30630 --
30631
30632 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30633 l_balance_type_code <> 'B' THEN
30634 IF NVL(p_source_2,'
30635 ') = 'EXP'
30636 THEN
30637
30638 --
30639 XLA_AE_LINES_PKG.SetNewLine;
30640
30641 p_balance_type_code := l_balance_type_code;
30642 -- set the flag so later we will know whether the gain loss line needs to be created
30643
30644 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30645 p_actual_flag :='A';
30646 END IF;
30647
30648 --
30649 -- bulk performance
30650 --
30651 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30652 p_header_num => 0); -- 4262811
30653 --
30654 -- set accounting line options
30655 --
30656 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30657 p_natural_side_code => 'D'
30658 , p_gain_or_loss_flag => 'N'
30659 , p_gl_transfer_mode_code => 'D'
30660 , p_acct_entry_type_code => 'A'
30661 , p_switch_side_flag => 'Y'
30662 , p_merge_duplicate_code => 'W'
30663 );
30664 --
30665 l_acc_rev_natural_side_code := 'C'; -- 4262811
30666 --
30667 --
30668 -- set accounting line type info
30669 --
30670 xla_ae_lines_pkg.SetAcctLineType
30671 (p_component_type => l_component_type
30672 ,p_event_type_code => l_event_type_code
30673 ,p_line_definition_owner_code => l_line_definition_owner_code
30674 ,p_line_definition_code => l_line_definition_code
30675 ,p_accounting_line_code => l_component_code
30676 ,p_accounting_line_type_code => l_component_type_code
30677 ,p_accounting_line_appl_id => l_component_appl_id
30678 ,p_amb_context_code => l_amb_context_code
30679 ,p_entity_code => l_entity_code
30680 ,p_event_class_code => l_event_class_code);
30681 --
30682 -- set accounting class
30683 --
30684 xla_ae_lines_pkg.SetAcctClass(
30685 p_accounting_class_code => 'EXPENSE'
30689 --
30686 , p_ae_header_id => l_ae_header_id
30687 );
30688
30690 -- set rounding class
30691 --
30692 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30693 'EXPENSE';
30694
30695 --
30696 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30697 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30698 --
30699 -- bulk performance
30700 --
30701 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30702
30703 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30704 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30705
30706 -- 4955764
30707 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30708 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30709
30710 -- 4458381 Public Sector Enh
30711
30712 --
30713 -- set accounting attributes for the line type
30714 --
30715 l_entered_amt_idx := 3;
30716 l_accted_amt_idx := 8;
30717 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30718 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30719 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
30720 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30721 l_rec_acct_attrs.array_char_value(2) := p_source_6;
30722 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30723 l_rec_acct_attrs.array_num_value(3) := p_source_3;
30724 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30725 l_rec_acct_attrs.array_char_value(4) := p_source_7;
30726 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30727 l_rec_acct_attrs.array_date_value(5) := p_source_8;
30728 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30729 l_rec_acct_attrs.array_num_value(6) := p_source_9;
30730 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30731 l_rec_acct_attrs.array_char_value(7) := p_source_10;
30732 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30733 l_rec_acct_attrs.array_num_value(8) := p_source_11;
30734
30735 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30736 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30737
30738 ---------------------------------------------------------------------------------------------------------------
30739 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30740 ---------------------------------------------------------------------------------------------------------------
30741 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30742
30743 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30744 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30745
30746 IF xla_accounting_cache_pkg.GetValueChar
30747 (p_source_code => 'LEDGER_CATEGORY_CODE'
30748 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30749 AND l_bflow_method_code = 'PRIOR_ENTRY'
30750 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30751 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30752 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30753 )
30754 THEN
30755 xla_ae_lines_pkg.BflowUpgEntry
30756 (p_business_method_code => l_bflow_method_code
30757 ,p_business_class_code => l_bflow_class_code
30758 ,p_balance_type => l_balance_type_code);
30759 ELSE
30760 NULL;
30761 -- No business flow processing for business flow method of NONE.
30762 END IF;
30763
30764 --
30765 -- call analytical criteria
30766 --
30767
30768 --
30769 -- call description
30770 --
30771 -- No description or it is inherited.
30772 --
30773 -- call ADRs
30774 -- Bug 4922099
30775 --
30776 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30777 (NVL(l_actual_upg_option, 'N') = 'O') OR
30778 (NVL(l_enc_upg_option, 'N') = 'O')
30779 )
30780 THEN
30781 NULL;
30782 --
30783 --
30784
30785 l_ccid := AcctDerRule_12(
30786 p_application_id => p_application_id
30787 , p_ae_header_id => l_ae_header_id
30788 , p_source_1 => p_source_1
30789 , p_source_2 => p_source_2
30790 , x_transaction_coa_id => l_adr_transaction_coa_id
30791 , x_accounting_coa_id => l_adr_accounting_coa_id
30792 , x_value_type_code => l_adr_value_type_code
30793 , p_side => 'NA'
30794 );
30795
30796 xla_ae_lines_pkg.set_ccid(
30797 p_code_combination_id => l_ccid
30798 , p_value_type_code => l_adr_value_type_code
30799 , p_transaction_coa_id => l_adr_transaction_coa_id
30800 , p_accounting_coa_id => l_adr_accounting_coa_id
30804 , p_component_code => l_component_code
30801 , p_adr_code => 'EXP'
30802 , p_adr_type_code => 'S'
30803 , p_component_type => l_component_type
30805 , p_component_type_code => l_component_type_code
30806 , p_component_appl_id => l_component_appl_id
30807 , p_amb_context_code => l_amb_context_code
30808 , p_side => 'NA'
30809 );
30810
30811
30812 --
30813 --
30814 END IF;
30815 --
30816 -- Bug 4922099
30817 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30818 (NVL(l_enc_upg_option, 'N') = 'O')
30819 ) AND
30820 (l_bflow_method_code = 'PRIOR_ENTRY')
30821 )
30822 THEN
30823 IF
30824 --
30825 1 = 2
30826 --
30827 THEN
30828 xla_accounting_err_pkg.build_message
30829 (p_appli_s_name => 'XLA'
30830 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30831 ,p_token_1 => 'LINE_NUMBER'
30832 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
30833 ,p_token_2 => 'LINE_TYPE_NAME'
30834 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
30835 l_component_type
30836 ,l_component_code
30837 ,l_component_type_code
30838 ,l_component_appl_id
30839 ,l_amb_context_code
30840 ,l_entity_code
30841 ,l_event_class_code
30842 )
30843 ,p_token_3 => 'OWNER'
30844 ,p_value_3 => xla_lookups_pkg.get_meaning(
30845 p_lookup_type => 'XLA_OWNER_TYPE'
30846 ,p_lookup_code => l_component_type_code
30847 )
30848 ,p_token_4 => 'PRODUCT_NAME'
30849 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30850 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30851 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30852 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30853 ,p_ae_header_id => NULL
30854 );
30855
30856 IF (C_LEVEL_ERROR>= g_log_level) THEN
30857 trace
30858 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30859 ,p_level => C_LEVEL_ERROR
30860 ,p_module => l_log_module);
30861 END IF;
30862 END IF;
30863 END IF;
30864 --
30865 --
30866 ------------------------------------------------------------------------------------------------
30867 -- 4219869 Business Flow
30868 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30869 -- Prior Entry. Currently, the following code is always generated.
30870 ------------------------------------------------------------------------------------------------
30871 XLA_AE_LINES_PKG.ValidateCurrentLine;
30872
30873 ------------------------------------------------------------------------------------
30874 -- 4219869 Business Flow
30875 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30876 ------------------------------------------------------------------------------------
30877 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30878
30879 ----------------------------------------------------------------------------------
30880 -- 4219869 Business Flow
30881 -- Update journal entry status -- Need to generate this within IF <condition>
30882 ----------------------------------------------------------------------------------
30883 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30884 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30885 ,p_balance_type_code => l_balance_type_code
30886 );
30887
30888 -------------------------------------------------------------------------------------------
30889 -- 4262811 - Generate the Accrual Reversal lines
30890 -------------------------------------------------------------------------------------------
30891 BEGIN
30892 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30893 (g_array_event(p_event_id).array_value_num('header_index'));
30894 IF l_acc_rev_flag IS NULL THEN
30895 l_acc_rev_flag := 'N';
30899 l_acc_rev_flag := 'N';
30896 END IF;
30897 EXCEPTION
30898 WHEN OTHERS THEN
30900 END;
30901 --
30902 IF (l_acc_rev_flag = 'Y') THEN
30903
30904 -- 4645092 ------------------------------------------------------------------------------
30905 -- To allow MPA report to determine if it should generate report process
30906 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30907 ------------------------------------------------------------------------------------------
30908
30909 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30910 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30911 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
30912 -- call ADRs
30913 -- Bug 4922099
30914 --
30915 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30916 (NVL(l_actual_upg_option, 'N') = 'O') OR
30917 (NVL(l_enc_upg_option, 'N') = 'O')
30918 )
30919 THEN
30920 NULL;
30921 --
30922 --
30923
30924 l_ccid := AcctDerRule_12(
30925 p_application_id => p_application_id
30926 , p_ae_header_id => l_ae_header_id
30927 , p_source_1 => p_source_1
30928 , p_source_2 => p_source_2
30929 , x_transaction_coa_id => l_adr_transaction_coa_id
30930 , x_accounting_coa_id => l_adr_accounting_coa_id
30931 , x_value_type_code => l_adr_value_type_code
30932 , p_side => 'NA'
30933 );
30934
30935 xla_ae_lines_pkg.set_ccid(
30936 p_code_combination_id => l_ccid
30937 , p_value_type_code => l_adr_value_type_code
30938 , p_transaction_coa_id => l_adr_transaction_coa_id
30939 , p_accounting_coa_id => l_adr_accounting_coa_id
30940 , p_adr_code => 'EXP'
30941 , p_adr_type_code => 'S'
30942 , p_component_type => l_component_type
30943 , p_component_code => l_component_code
30944 , p_component_type_code => l_component_type_code
30945 , p_component_appl_id => l_component_appl_id
30946 , p_amb_context_code => l_amb_context_code
30947 , p_side => 'NA'
30948 );
30949
30950
30951 --
30952 --
30953 END IF;
30954
30955 --
30956 -- Update the line information that should be overwritten
30957 --
30958 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30959 p_header_num => 1);
30960 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
30961
30962 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30963
30964 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
30965 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30966 END IF;
30967
30968 --
30969 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30970 --
30971 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30972 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
30973 ELSE
30974 ---------------------------------------------------------------------------------------------------
30975 -- 4262811a Switch Sign
30976 ---------------------------------------------------------------------------------------------------
30977 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
30978 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30979 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30980 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30981 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30982 -- 5132302
30983 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30984 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30985
30986 END IF;
30987
30988 -- 4955764
30989 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30990 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30991
30992
30993 XLA_AE_LINES_PKG.ValidateCurrentLine;
30994 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30995
30996 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30997 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30998 ,p_balance_type_code => l_balance_type_code);
30999
31000 END IF;
31001
31002 -----------------------------------------------------------------------------------------
31003 -- 4262811 Multiperiod Accounting
31004 -----------------------------------------------------------------------------------------
31005 -- No MPA option is assigned.
31006
31007
31008 END IF;
31009 END IF;
31010 --
31014 trace
31011
31012 --
31013 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31015 (p_msg => 'END of AcctLineType_88'
31016 ,p_level => C_LEVEL_PROCEDURE
31017 ,p_module => l_log_module);
31018 END IF;
31019 --
31020 EXCEPTION
31021 WHEN xla_exceptions_pkg.application_exception THEN
31022 RAISE;
31023 WHEN OTHERS THEN
31024 xla_exceptions_pkg.raise_message
31025 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_88');
31026 END AcctLineType_88;
31027 --
31028
31029 ---------------------------------------
31030 --
31031 -- PRIVATE FUNCTION
31032 -- AcctLineType_89
31033 --
31034 ---------------------------------------
31035 PROCEDURE AcctLineType_89 (
31036 p_application_id IN NUMBER
31037 ,p_event_id IN NUMBER
31038 ,p_calculate_acctd_flag IN VARCHAR2
31039 ,p_calculate_g_l_flag IN VARCHAR2
31040 ,p_actual_flag IN OUT VARCHAR2
31041 ,p_balance_type_code OUT VARCHAR2
31042 ,p_gain_or_loss_ref OUT VARCHAR2
31043
31044 --Transaction Account
31045 , p_source_1 IN NUMBER
31046 --Journal Line Type
31047 , p_source_2 IN VARCHAR2
31048 --Entered Amount
31049 , p_source_3 IN NUMBER
31050 --First Distribution Identifier
31051 , p_source_5 IN NUMBER
31052 --Distribution Type
31053 , p_source_6 IN VARCHAR2
31054 --Currency Code
31055 , p_source_7 IN VARCHAR2
31056 --Currency Conversion Date
31057 , p_source_8 IN DATE
31058 --Currency Conversion Rate
31059 , p_source_9 IN NUMBER
31060 --Currency Conversion Type
31061 , p_source_10 IN VARCHAR2
31062 --Accounted Amount
31063 , p_source_11 IN NUMBER
31064 )
31065 IS
31066
31067 l_component_type VARCHAR2(80);
31068 l_component_code VARCHAR2(30);
31069 l_component_type_code VARCHAR2(1);
31070 l_component_appl_id INTEGER;
31071 l_amb_context_code VARCHAR2(30);
31072 l_entity_code VARCHAR2(30);
31073 l_event_class_code VARCHAR2(30);
31074 l_ae_header_id NUMBER;
31075 l_event_type_code VARCHAR2(30);
31076 l_line_definition_code VARCHAR2(30);
31077 l_line_definition_owner_code VARCHAR2(1);
31078 --
31079 -- adr variables
31080 l_segment VARCHAR2(30);
31081 l_ccid NUMBER;
31082 l_adr_transaction_coa_id NUMBER;
31083 l_adr_accounting_coa_id NUMBER;
31084 l_adr_flexfield_segment_code VARCHAR2(30);
31085 l_adr_flex_value_set_id NUMBER;
31086 l_adr_value_type_code VARCHAR2(30);
31087 l_adr_value_combination_id NUMBER;
31088 l_adr_value_segment_code VARCHAR2(30);
31089
31090 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
31091 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
31092 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
31093 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
31094
31095 -- 4262811 Variables ------------------------------------------------------------------------------------------
31096 l_entered_amt_idx NUMBER;
31097 l_accted_amt_idx NUMBER;
31098 l_acc_rev_flag VARCHAR2(1);
31099 l_accrual_line_num NUMBER;
31100 l_tmp_amt NUMBER;
31101 l_acc_rev_natural_side_code VARCHAR2(1);
31102
31103 l_num_entries NUMBER;
31104 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
31105 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
31106 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
31107 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
31108 l_recog_line_1 NUMBER;
31109 l_recog_line_2 NUMBER;
31110
31111 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
31112 l_bflow_applied_to_amt NUMBER; -- 5132302
31113 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
31114
31115 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31116
31117 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
31118 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
31119
31120 ---------------------------------------------------------------------------------------------------------------
31121
31122
31123 --
31124 -- bulk performance
31125 --
31126 l_balance_type_code VARCHAR2(1);
31127 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
31128 l_log_module VARCHAR2(240);
31129
31130 --
31131 -- Upgrade strategy
31132 --
31133 l_actual_upg_option VARCHAR2(1);
31134 l_enc_upg_option VARCHAR2(1);
31135
31136 --
31137 BEGIN
31138 --
31139 IF g_log_enabled THEN
31140 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
31141 END IF;
31142 --
31143 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31144
31145 trace
31146 (p_msg => 'BEGIN of AcctLineType_89'
31147 ,p_level => C_LEVEL_PROCEDURE
31148 ,p_module => l_log_module);
31152 l_component_type := 'AMB_JLT';
31149
31150 END IF;
31151 --
31153 l_component_code := 'EXP';
31154 l_component_type_code := 'S';
31155 l_component_appl_id := 555;
31156 l_amb_context_code := 'DEFAULT';
31157 l_entity_code := 'PURCHASING';
31158 l_event_class_code := 'DELIVER';
31159 l_event_type_code := 'LOG_PO_RECEIPT';
31160 l_line_definition_owner_code := 'S';
31161 l_line_definition_code := 'LOGICAL_PO_RECEIPT';
31162 --
31163 l_balance_type_code := 'A';
31164 l_segment := NULL;
31165 l_ccid := NULL;
31166 l_adr_transaction_coa_id := NULL;
31167 l_adr_accounting_coa_id := NULL;
31168 l_adr_flexfield_segment_code := NULL;
31169 l_adr_flex_value_set_id := NULL;
31170 l_adr_value_type_code := NULL;
31171 l_adr_value_combination_id := NULL;
31172 l_adr_value_segment_code := NULL;
31173
31174 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
31175 l_bflow_class_code := ''; -- 4219869 Business Flow
31176 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
31177 l_budgetary_control_flag := 'N';
31178
31179 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31180 l_bflow_applied_to_amt := NULL; -- 5132302
31181 l_entered_amt_idx := NULL; -- 4262811
31182 l_accted_amt_idx := NULL; -- 4262811
31183 l_acc_rev_flag := NULL; -- 4262811
31184 l_accrual_line_num := NULL; -- 4262811
31185 l_tmp_amt := NULL; -- 4262811
31186 --
31187
31188 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31189 l_balance_type_code <> 'B' THEN
31190 IF NVL(p_source_2,'
31191 ') = 'EXP'
31192 THEN
31193
31194 --
31195 XLA_AE_LINES_PKG.SetNewLine;
31196
31197 p_balance_type_code := l_balance_type_code;
31198 -- set the flag so later we will know whether the gain loss line needs to be created
31199
31200 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31201 p_actual_flag :='A';
31202 END IF;
31203
31204 --
31205 -- bulk performance
31206 --
31207 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31208 p_header_num => 0); -- 4262811
31209 --
31210 -- set accounting line options
31211 --
31212 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31213 p_natural_side_code => 'D'
31214 , p_gain_or_loss_flag => 'N'
31215 , p_gl_transfer_mode_code => 'D'
31216 , p_acct_entry_type_code => 'A'
31217 , p_switch_side_flag => 'Y'
31218 , p_merge_duplicate_code => 'W'
31219 );
31220 --
31221 l_acc_rev_natural_side_code := 'C'; -- 4262811
31222 --
31223 --
31224 -- set accounting line type info
31225 --
31226 xla_ae_lines_pkg.SetAcctLineType
31227 (p_component_type => l_component_type
31228 ,p_event_type_code => l_event_type_code
31229 ,p_line_definition_owner_code => l_line_definition_owner_code
31230 ,p_line_definition_code => l_line_definition_code
31231 ,p_accounting_line_code => l_component_code
31232 ,p_accounting_line_type_code => l_component_type_code
31233 ,p_accounting_line_appl_id => l_component_appl_id
31234 ,p_amb_context_code => l_amb_context_code
31235 ,p_entity_code => l_entity_code
31236 ,p_event_class_code => l_event_class_code);
31237 --
31238 -- set accounting class
31239 --
31240 xla_ae_lines_pkg.SetAcctClass(
31241 p_accounting_class_code => 'EXPENSE'
31242 , p_ae_header_id => l_ae_header_id
31243 );
31244
31245 --
31246 -- set rounding class
31247 --
31248 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31249 'EXPENSE';
31250
31251 --
31252 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31253 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31254 --
31255 -- bulk performance
31256 --
31257 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31258
31259 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31260 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31261
31262 -- 4955764
31263 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31264 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31265
31266 -- 4458381 Public Sector Enh
31267
31268 --
31269 -- set accounting attributes for the line type
31270 --
31271 l_entered_amt_idx := 3;
31272 l_accted_amt_idx := 8;
31273 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31274 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31275 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
31276 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31280 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31277 l_rec_acct_attrs.array_char_value(2) := p_source_6;
31278 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31279 l_rec_acct_attrs.array_num_value(3) := p_source_3;
31281 l_rec_acct_attrs.array_char_value(4) := p_source_7;
31282 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31283 l_rec_acct_attrs.array_date_value(5) := p_source_8;
31284 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31285 l_rec_acct_attrs.array_num_value(6) := p_source_9;
31286 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31287 l_rec_acct_attrs.array_char_value(7) := p_source_10;
31288 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31289 l_rec_acct_attrs.array_num_value(8) := p_source_11;
31290
31291 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31292 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31293
31294 ---------------------------------------------------------------------------------------------------------------
31295 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31296 ---------------------------------------------------------------------------------------------------------------
31297 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31298
31299 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31300 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31301
31302 IF xla_accounting_cache_pkg.GetValueChar
31303 (p_source_code => 'LEDGER_CATEGORY_CODE'
31304 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31305 AND l_bflow_method_code = 'PRIOR_ENTRY'
31306 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31307 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31308 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31309 )
31310 THEN
31311 xla_ae_lines_pkg.BflowUpgEntry
31312 (p_business_method_code => l_bflow_method_code
31313 ,p_business_class_code => l_bflow_class_code
31314 ,p_balance_type => l_balance_type_code);
31315 ELSE
31316 NULL;
31317 -- No business flow processing for business flow method of NONE.
31318 END IF;
31319
31320 --
31321 -- call analytical criteria
31322 --
31323
31324 --
31325 -- call description
31326 --
31327 -- No description or it is inherited.
31328 --
31329 -- call ADRs
31330 -- Bug 4922099
31331 --
31332 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31333 (NVL(l_actual_upg_option, 'N') = 'O') OR
31334 (NVL(l_enc_upg_option, 'N') = 'O')
31335 )
31336 THEN
31337 NULL;
31338 --
31339 --
31340
31341 l_ccid := AcctDerRule_12(
31342 p_application_id => p_application_id
31343 , p_ae_header_id => l_ae_header_id
31344 , p_source_1 => p_source_1
31345 , p_source_2 => p_source_2
31346 , x_transaction_coa_id => l_adr_transaction_coa_id
31347 , x_accounting_coa_id => l_adr_accounting_coa_id
31348 , x_value_type_code => l_adr_value_type_code
31349 , p_side => 'NA'
31350 );
31351
31352 xla_ae_lines_pkg.set_ccid(
31353 p_code_combination_id => l_ccid
31354 , p_value_type_code => l_adr_value_type_code
31355 , p_transaction_coa_id => l_adr_transaction_coa_id
31356 , p_accounting_coa_id => l_adr_accounting_coa_id
31357 , p_adr_code => 'EXP'
31358 , p_adr_type_code => 'S'
31359 , p_component_type => l_component_type
31360 , p_component_code => l_component_code
31361 , p_component_type_code => l_component_type_code
31362 , p_component_appl_id => l_component_appl_id
31363 , p_amb_context_code => l_amb_context_code
31364 , p_side => 'NA'
31365 );
31366
31367
31368 --
31369 --
31370 END IF;
31371 --
31372 -- Bug 4922099
31373 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31374 (NVL(l_enc_upg_option, 'N') = 'O')
31375 ) AND
31376 (l_bflow_method_code = 'PRIOR_ENTRY')
31377 )
31378 THEN
31379 IF
31380 --
31381 1 = 2
31382 --
31383 THEN
31384 xla_accounting_err_pkg.build_message
31385 (p_appli_s_name => 'XLA'
31386 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31387 ,p_token_1 => 'LINE_NUMBER'
31388 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
31389 ,p_token_2 => 'LINE_TYPE_NAME'
31390 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
31391 l_component_type
31395 ,l_amb_context_code
31392 ,l_component_code
31393 ,l_component_type_code
31394 ,l_component_appl_id
31396 ,l_entity_code
31397 ,l_event_class_code
31398 )
31399 ,p_token_3 => 'OWNER'
31400 ,p_value_3 => xla_lookups_pkg.get_meaning(
31401 p_lookup_type => 'XLA_OWNER_TYPE'
31402 ,p_lookup_code => l_component_type_code
31403 )
31404 ,p_token_4 => 'PRODUCT_NAME'
31405 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31406 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31407 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31408 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31409 ,p_ae_header_id => NULL
31410 );
31411
31412 IF (C_LEVEL_ERROR>= g_log_level) THEN
31413 trace
31414 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31415 ,p_level => C_LEVEL_ERROR
31416 ,p_module => l_log_module);
31417 END IF;
31418 END IF;
31419 END IF;
31420 --
31421 --
31422 ------------------------------------------------------------------------------------------------
31423 -- 4219869 Business Flow
31424 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31425 -- Prior Entry. Currently, the following code is always generated.
31426 ------------------------------------------------------------------------------------------------
31427 XLA_AE_LINES_PKG.ValidateCurrentLine;
31428
31429 ------------------------------------------------------------------------------------
31430 -- 4219869 Business Flow
31431 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31432 ------------------------------------------------------------------------------------
31433 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31434
31435 ----------------------------------------------------------------------------------
31436 -- 4219869 Business Flow
31437 -- Update journal entry status -- Need to generate this within IF <condition>
31438 ----------------------------------------------------------------------------------
31439 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31440 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31441 ,p_balance_type_code => l_balance_type_code
31442 );
31443
31444 -------------------------------------------------------------------------------------------
31445 -- 4262811 - Generate the Accrual Reversal lines
31446 -------------------------------------------------------------------------------------------
31447 BEGIN
31448 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31449 (g_array_event(p_event_id).array_value_num('header_index'));
31450 IF l_acc_rev_flag IS NULL THEN
31451 l_acc_rev_flag := 'N';
31452 END IF;
31453 EXCEPTION
31454 WHEN OTHERS THEN
31455 l_acc_rev_flag := 'N';
31456 END;
31457 --
31458 IF (l_acc_rev_flag = 'Y') THEN
31459
31460 -- 4645092 ------------------------------------------------------------------------------
31461 -- To allow MPA report to determine if it should generate report process
31462 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31463 ------------------------------------------------------------------------------------------
31464
31465 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31466 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31467 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
31468 -- call ADRs
31469 -- Bug 4922099
31470 --
31471 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31472 (NVL(l_actual_upg_option, 'N') = 'O') OR
31473 (NVL(l_enc_upg_option, 'N') = 'O')
31474 )
31475 THEN
31476 NULL;
31477 --
31478 --
31479
31480 l_ccid := AcctDerRule_12(
31481 p_application_id => p_application_id
31482 , p_ae_header_id => l_ae_header_id
31483 , p_source_1 => p_source_1
31484 , p_source_2 => p_source_2
31485 , x_transaction_coa_id => l_adr_transaction_coa_id
31486 , x_accounting_coa_id => l_adr_accounting_coa_id
31490
31487 , x_value_type_code => l_adr_value_type_code
31488 , p_side => 'NA'
31489 );
31491 xla_ae_lines_pkg.set_ccid(
31492 p_code_combination_id => l_ccid
31493 , p_value_type_code => l_adr_value_type_code
31494 , p_transaction_coa_id => l_adr_transaction_coa_id
31495 , p_accounting_coa_id => l_adr_accounting_coa_id
31496 , p_adr_code => 'EXP'
31497 , p_adr_type_code => 'S'
31498 , p_component_type => l_component_type
31499 , p_component_code => l_component_code
31500 , p_component_type_code => l_component_type_code
31501 , p_component_appl_id => l_component_appl_id
31502 , p_amb_context_code => l_amb_context_code
31503 , p_side => 'NA'
31504 );
31505
31506
31507 --
31508 --
31509 END IF;
31510
31511 --
31512 -- Update the line information that should be overwritten
31513 --
31514 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31515 p_header_num => 1);
31516 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
31517
31518 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31519
31520 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
31521 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31522 END IF;
31523
31524 --
31525 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31526 --
31527 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31528 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
31529 ELSE
31530 ---------------------------------------------------------------------------------------------------
31531 -- 4262811a Switch Sign
31532 ---------------------------------------------------------------------------------------------------
31533 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
31534 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31535 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31536 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31537 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31538 -- 5132302
31539 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31540 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31541
31542 END IF;
31543
31544 -- 4955764
31545 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31546 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31547
31548
31549 XLA_AE_LINES_PKG.ValidateCurrentLine;
31550 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31551
31552 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31553 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31554 ,p_balance_type_code => l_balance_type_code);
31555
31556 END IF;
31557
31558 -----------------------------------------------------------------------------------------
31559 -- 4262811 Multiperiod Accounting
31560 -----------------------------------------------------------------------------------------
31561 -- No MPA option is assigned.
31562
31563
31564 END IF;
31565 END IF;
31566 --
31567
31568 --
31569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31570 trace
31571 (p_msg => 'END of AcctLineType_89'
31572 ,p_level => C_LEVEL_PROCEDURE
31573 ,p_module => l_log_module);
31574 END IF;
31575 --
31576 EXCEPTION
31577 WHEN xla_exceptions_pkg.application_exception THEN
31578 RAISE;
31579 WHEN OTHERS THEN
31580 xla_exceptions_pkg.raise_message
31581 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_89');
31582 END AcctLineType_89;
31583 --
31584
31585 ---------------------------------------
31586 --
31587 -- PRIVATE FUNCTION
31588 -- AcctLineType_90
31589 --
31590 ---------------------------------------
31591 PROCEDURE AcctLineType_90 (
31592 p_application_id IN NUMBER
31593 ,p_event_id IN NUMBER
31594 ,p_calculate_acctd_flag IN VARCHAR2
31595 ,p_calculate_g_l_flag IN VARCHAR2
31596 ,p_actual_flag IN OUT VARCHAR2
31597 ,p_balance_type_code OUT VARCHAR2
31598 ,p_gain_or_loss_ref OUT VARCHAR2
31599
31600 --Transaction Account
31601 , p_source_1 IN NUMBER
31602 --Journal Line Type
31603 , p_source_2 IN VARCHAR2
31604 --Entered Amount
31605 , p_source_3 IN NUMBER
31606 --First Distribution Identifier
31607 , p_source_5 IN NUMBER
31608 --Distribution Type
31612 --Currency Conversion Date
31609 , p_source_6 IN VARCHAR2
31610 --Currency Code
31611 , p_source_7 IN VARCHAR2
31613 , p_source_8 IN DATE
31614 --Currency Conversion Rate
31615 , p_source_9 IN NUMBER
31616 --Currency Conversion Type
31617 , p_source_10 IN VARCHAR2
31618 --Accounted Amount
31619 , p_source_11 IN NUMBER
31620 )
31621 IS
31622
31623 l_component_type VARCHAR2(80);
31624 l_component_code VARCHAR2(30);
31625 l_component_type_code VARCHAR2(1);
31626 l_component_appl_id INTEGER;
31627 l_amb_context_code VARCHAR2(30);
31628 l_entity_code VARCHAR2(30);
31629 l_event_class_code VARCHAR2(30);
31630 l_ae_header_id NUMBER;
31631 l_event_type_code VARCHAR2(30);
31632 l_line_definition_code VARCHAR2(30);
31633 l_line_definition_owner_code VARCHAR2(1);
31634 --
31635 -- adr variables
31636 l_segment VARCHAR2(30);
31637 l_ccid NUMBER;
31638 l_adr_transaction_coa_id NUMBER;
31639 l_adr_accounting_coa_id NUMBER;
31640 l_adr_flexfield_segment_code VARCHAR2(30);
31641 l_adr_flex_value_set_id NUMBER;
31642 l_adr_value_type_code VARCHAR2(30);
31643 l_adr_value_combination_id NUMBER;
31644 l_adr_value_segment_code VARCHAR2(30);
31645
31646 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
31647 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
31648 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
31649 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
31650
31651 -- 4262811 Variables ------------------------------------------------------------------------------------------
31652 l_entered_amt_idx NUMBER;
31653 l_accted_amt_idx NUMBER;
31654 l_acc_rev_flag VARCHAR2(1);
31655 l_accrual_line_num NUMBER;
31656 l_tmp_amt NUMBER;
31657 l_acc_rev_natural_side_code VARCHAR2(1);
31658
31659 l_num_entries NUMBER;
31660 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
31661 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
31662 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
31663 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
31664 l_recog_line_1 NUMBER;
31665 l_recog_line_2 NUMBER;
31666
31667 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
31668 l_bflow_applied_to_amt NUMBER; -- 5132302
31669 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
31670
31671 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31672
31673 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
31674 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
31675
31676 ---------------------------------------------------------------------------------------------------------------
31677
31678
31679 --
31680 -- bulk performance
31681 --
31682 l_balance_type_code VARCHAR2(1);
31683 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
31684 l_log_module VARCHAR2(240);
31685
31686 --
31687 -- Upgrade strategy
31688 --
31689 l_actual_upg_option VARCHAR2(1);
31690 l_enc_upg_option VARCHAR2(1);
31691
31692 --
31693 BEGIN
31694 --
31695 IF g_log_enabled THEN
31696 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
31697 END IF;
31698 --
31699 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31700
31701 trace
31702 (p_msg => 'BEGIN of AcctLineType_90'
31703 ,p_level => C_LEVEL_PROCEDURE
31704 ,p_module => l_log_module);
31705
31706 END IF;
31707 --
31708 l_component_type := 'AMB_JLT';
31709 l_component_code := 'EXP';
31710 l_component_type_code := 'S';
31711 l_component_appl_id := 555;
31712 l_amb_context_code := 'DEFAULT';
31713 l_entity_code := 'INVENTORY';
31714 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
31715 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT';
31716 l_line_definition_owner_code := 'S';
31717 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
31718 --
31719 l_balance_type_code := 'A';
31720 l_segment := NULL;
31721 l_ccid := NULL;
31722 l_adr_transaction_coa_id := NULL;
31723 l_adr_accounting_coa_id := NULL;
31724 l_adr_flexfield_segment_code := NULL;
31725 l_adr_flex_value_set_id := NULL;
31726 l_adr_value_type_code := NULL;
31727 l_adr_value_combination_id := NULL;
31728 l_adr_value_segment_code := NULL;
31729
31730 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
31731 l_bflow_class_code := ''; -- 4219869 Business Flow
31732 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
31733 l_budgetary_control_flag := 'N';
31734
31735 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31736 l_bflow_applied_to_amt := NULL; -- 5132302
31737 l_entered_amt_idx := NULL; -- 4262811
31741 l_tmp_amt := NULL; -- 4262811
31738 l_accted_amt_idx := NULL; -- 4262811
31739 l_acc_rev_flag := NULL; -- 4262811
31740 l_accrual_line_num := NULL; -- 4262811
31742 --
31743
31744 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31745 l_balance_type_code <> 'B' THEN
31746 IF NVL(p_source_2,'
31747 ') = 'EXP'
31748 THEN
31749
31750 --
31751 XLA_AE_LINES_PKG.SetNewLine;
31752
31753 p_balance_type_code := l_balance_type_code;
31754 -- set the flag so later we will know whether the gain loss line needs to be created
31755
31756 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31757 p_actual_flag :='A';
31758 END IF;
31759
31760 --
31761 -- bulk performance
31762 --
31763 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31764 p_header_num => 0); -- 4262811
31765 --
31766 -- set accounting line options
31767 --
31768 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31769 p_natural_side_code => 'D'
31770 , p_gain_or_loss_flag => 'N'
31771 , p_gl_transfer_mode_code => 'D'
31772 , p_acct_entry_type_code => 'A'
31773 , p_switch_side_flag => 'Y'
31774 , p_merge_duplicate_code => 'W'
31775 );
31776 --
31777 l_acc_rev_natural_side_code := 'C'; -- 4262811
31778 --
31779 --
31780 -- set accounting line type info
31781 --
31782 xla_ae_lines_pkg.SetAcctLineType
31783 (p_component_type => l_component_type
31784 ,p_event_type_code => l_event_type_code
31785 ,p_line_definition_owner_code => l_line_definition_owner_code
31786 ,p_line_definition_code => l_line_definition_code
31787 ,p_accounting_line_code => l_component_code
31788 ,p_accounting_line_type_code => l_component_type_code
31789 ,p_accounting_line_appl_id => l_component_appl_id
31790 ,p_amb_context_code => l_amb_context_code
31791 ,p_entity_code => l_entity_code
31792 ,p_event_class_code => l_event_class_code);
31793 --
31794 -- set accounting class
31795 --
31796 xla_ae_lines_pkg.SetAcctClass(
31797 p_accounting_class_code => 'EXPENSE'
31798 , p_ae_header_id => l_ae_header_id
31799 );
31800
31801 --
31802 -- set rounding class
31803 --
31804 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31805 'EXPENSE';
31806
31807 --
31808 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31809 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31810 --
31811 -- bulk performance
31812 --
31813 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31814
31815 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31816 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31817
31818 -- 4955764
31819 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31820 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31821
31822 -- 4458381 Public Sector Enh
31823
31824 --
31825 -- set accounting attributes for the line type
31826 --
31827 l_entered_amt_idx := 3;
31828 l_accted_amt_idx := 8;
31829 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31830 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31831 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
31832 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31833 l_rec_acct_attrs.array_char_value(2) := p_source_6;
31834 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31835 l_rec_acct_attrs.array_num_value(3) := p_source_3;
31836 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31837 l_rec_acct_attrs.array_char_value(4) := p_source_7;
31838 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31839 l_rec_acct_attrs.array_date_value(5) := p_source_8;
31840 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31841 l_rec_acct_attrs.array_num_value(6) := p_source_9;
31842 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31843 l_rec_acct_attrs.array_char_value(7) := p_source_10;
31844 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31845 l_rec_acct_attrs.array_num_value(8) := p_source_11;
31846
31847 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31848 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31849
31850 ---------------------------------------------------------------------------------------------------------------
31851 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31852 ---------------------------------------------------------------------------------------------------------------
31856 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31853 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31854
31855 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31857
31858 IF xla_accounting_cache_pkg.GetValueChar
31859 (p_source_code => 'LEDGER_CATEGORY_CODE'
31860 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31861 AND l_bflow_method_code = 'PRIOR_ENTRY'
31862 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31863 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31864 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31865 )
31866 THEN
31867 xla_ae_lines_pkg.BflowUpgEntry
31868 (p_business_method_code => l_bflow_method_code
31869 ,p_business_class_code => l_bflow_class_code
31870 ,p_balance_type => l_balance_type_code);
31871 ELSE
31872 NULL;
31873 -- No business flow processing for business flow method of NONE.
31874 END IF;
31875
31876 --
31877 -- call analytical criteria
31878 --
31879
31880 --
31881 -- call description
31882 --
31883 -- No description or it is inherited.
31884 --
31885 -- call ADRs
31886 -- Bug 4922099
31887 --
31888 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31889 (NVL(l_actual_upg_option, 'N') = 'O') OR
31890 (NVL(l_enc_upg_option, 'N') = 'O')
31891 )
31892 THEN
31893 NULL;
31894 --
31895 --
31896
31897 l_ccid := AcctDerRule_12(
31898 p_application_id => p_application_id
31899 , p_ae_header_id => l_ae_header_id
31900 , p_source_1 => p_source_1
31901 , p_source_2 => p_source_2
31902 , x_transaction_coa_id => l_adr_transaction_coa_id
31903 , x_accounting_coa_id => l_adr_accounting_coa_id
31904 , x_value_type_code => l_adr_value_type_code
31905 , p_side => 'NA'
31906 );
31907
31908 xla_ae_lines_pkg.set_ccid(
31909 p_code_combination_id => l_ccid
31910 , p_value_type_code => l_adr_value_type_code
31911 , p_transaction_coa_id => l_adr_transaction_coa_id
31912 , p_accounting_coa_id => l_adr_accounting_coa_id
31913 , p_adr_code => 'EXP'
31914 , p_adr_type_code => 'S'
31915 , p_component_type => l_component_type
31916 , p_component_code => l_component_code
31917 , p_component_type_code => l_component_type_code
31918 , p_component_appl_id => l_component_appl_id
31919 , p_amb_context_code => l_amb_context_code
31920 , p_side => 'NA'
31921 );
31922
31923
31924 --
31925 --
31926 END IF;
31927 --
31928 -- Bug 4922099
31929 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31930 (NVL(l_enc_upg_option, 'N') = 'O')
31931 ) AND
31932 (l_bflow_method_code = 'PRIOR_ENTRY')
31933 )
31934 THEN
31935 IF
31936 --
31937 1 = 2
31938 --
31939 THEN
31940 xla_accounting_err_pkg.build_message
31941 (p_appli_s_name => 'XLA'
31942 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31943 ,p_token_1 => 'LINE_NUMBER'
31944 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
31945 ,p_token_2 => 'LINE_TYPE_NAME'
31946 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
31947 l_component_type
31948 ,l_component_code
31949 ,l_component_type_code
31950 ,l_component_appl_id
31951 ,l_amb_context_code
31952 ,l_entity_code
31953 ,l_event_class_code
31954 )
31955 ,p_token_3 => 'OWNER'
31956 ,p_value_3 => xla_lookups_pkg.get_meaning(
31957 p_lookup_type => 'XLA_OWNER_TYPE'
31958 ,p_lookup_code => l_component_type_code
31959 )
31960 ,p_token_4 => 'PRODUCT_NAME'
31961 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31962 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31966 );
31963 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31964 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31965 ,p_ae_header_id => NULL
31967
31968 IF (C_LEVEL_ERROR>= g_log_level) THEN
31969 trace
31970 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31971 ,p_level => C_LEVEL_ERROR
31972 ,p_module => l_log_module);
31973 END IF;
31974 END IF;
31975 END IF;
31976 --
31977 --
31978 ------------------------------------------------------------------------------------------------
31979 -- 4219869 Business Flow
31980 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31981 -- Prior Entry. Currently, the following code is always generated.
31982 ------------------------------------------------------------------------------------------------
31983 XLA_AE_LINES_PKG.ValidateCurrentLine;
31984
31985 ------------------------------------------------------------------------------------
31986 -- 4219869 Business Flow
31987 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31988 ------------------------------------------------------------------------------------
31989 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31990
31991 ----------------------------------------------------------------------------------
31992 -- 4219869 Business Flow
31993 -- Update journal entry status -- Need to generate this within IF <condition>
31994 ----------------------------------------------------------------------------------
31995 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31996 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31997 ,p_balance_type_code => l_balance_type_code
31998 );
31999
32000 -------------------------------------------------------------------------------------------
32001 -- 4262811 - Generate the Accrual Reversal lines
32002 -------------------------------------------------------------------------------------------
32003 BEGIN
32004 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32005 (g_array_event(p_event_id).array_value_num('header_index'));
32006 IF l_acc_rev_flag IS NULL THEN
32007 l_acc_rev_flag := 'N';
32008 END IF;
32009 EXCEPTION
32010 WHEN OTHERS THEN
32011 l_acc_rev_flag := 'N';
32012 END;
32013 --
32014 IF (l_acc_rev_flag = 'Y') THEN
32015
32016 -- 4645092 ------------------------------------------------------------------------------
32017 -- To allow MPA report to determine if it should generate report process
32018 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32019 ------------------------------------------------------------------------------------------
32020
32021 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32022 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32023 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
32024 -- call ADRs
32025 -- Bug 4922099
32026 --
32027 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32028 (NVL(l_actual_upg_option, 'N') = 'O') OR
32029 (NVL(l_enc_upg_option, 'N') = 'O')
32030 )
32031 THEN
32032 NULL;
32033 --
32034 --
32035
32036 l_ccid := AcctDerRule_12(
32037 p_application_id => p_application_id
32038 , p_ae_header_id => l_ae_header_id
32039 , p_source_1 => p_source_1
32040 , p_source_2 => p_source_2
32041 , x_transaction_coa_id => l_adr_transaction_coa_id
32042 , x_accounting_coa_id => l_adr_accounting_coa_id
32043 , x_value_type_code => l_adr_value_type_code
32044 , p_side => 'NA'
32045 );
32046
32047 xla_ae_lines_pkg.set_ccid(
32048 p_code_combination_id => l_ccid
32049 , p_value_type_code => l_adr_value_type_code
32050 , p_transaction_coa_id => l_adr_transaction_coa_id
32051 , p_accounting_coa_id => l_adr_accounting_coa_id
32052 , p_adr_code => 'EXP'
32053 , p_adr_type_code => 'S'
32054 , p_component_type => l_component_type
32055 , p_component_code => l_component_code
32056 , p_component_type_code => l_component_type_code
32057 , p_component_appl_id => l_component_appl_id
32058 , p_amb_context_code => l_amb_context_code
32059 , p_side => 'NA'
32060 );
32061
32062
32063 --
32064 --
32065 END IF;
32066
32067 --
32068 -- Update the line information that should be overwritten
32069 --
32070 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32071 p_header_num => 1);
32072 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
32073
32074 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32075
32079
32076 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
32077 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32078 END IF;
32080 --
32081 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32082 --
32083 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32084 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
32085 ELSE
32086 ---------------------------------------------------------------------------------------------------
32087 -- 4262811a Switch Sign
32088 ---------------------------------------------------------------------------------------------------
32089 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
32090 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32091 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32092 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32093 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32094 -- 5132302
32095 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32096 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32097
32098 END IF;
32099
32100 -- 4955764
32101 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32102 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32103
32104
32105 XLA_AE_LINES_PKG.ValidateCurrentLine;
32106 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32107
32108 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32109 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32110 ,p_balance_type_code => l_balance_type_code);
32111
32112 END IF;
32113
32114 -----------------------------------------------------------------------------------------
32115 -- 4262811 Multiperiod Accounting
32116 -----------------------------------------------------------------------------------------
32117 -- No MPA option is assigned.
32118
32119
32120 END IF;
32121 END IF;
32122 --
32123
32124 --
32125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32126 trace
32127 (p_msg => 'END of AcctLineType_90'
32128 ,p_level => C_LEVEL_PROCEDURE
32129 ,p_module => l_log_module);
32130 END IF;
32131 --
32132 EXCEPTION
32133 WHEN xla_exceptions_pkg.application_exception THEN
32134 RAISE;
32135 WHEN OTHERS THEN
32136 xla_exceptions_pkg.raise_message
32137 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_90');
32138 END AcctLineType_90;
32139 --
32140
32141 ---------------------------------------
32142 --
32143 -- PRIVATE FUNCTION
32144 -- AcctLineType_91
32145 --
32146 ---------------------------------------
32147 PROCEDURE AcctLineType_91 (
32148 p_application_id IN NUMBER
32149 ,p_event_id IN NUMBER
32150 ,p_calculate_acctd_flag IN VARCHAR2
32151 ,p_calculate_g_l_flag IN VARCHAR2
32152 ,p_actual_flag IN OUT VARCHAR2
32153 ,p_balance_type_code OUT VARCHAR2
32154 ,p_gain_or_loss_ref OUT VARCHAR2
32155
32156 --Transaction Account
32157 , p_source_1 IN NUMBER
32158 --Journal Line Type
32159 , p_source_2 IN VARCHAR2
32160 --Entered Amount
32161 , p_source_3 IN NUMBER
32162 --First Distribution Identifier
32163 , p_source_5 IN NUMBER
32164 --Distribution Type
32165 , p_source_6 IN VARCHAR2
32166 --Currency Code
32167 , p_source_7 IN VARCHAR2
32168 --Currency Conversion Date
32169 , p_source_8 IN DATE
32170 --Currency Conversion Rate
32171 , p_source_9 IN NUMBER
32172 --Currency Conversion Type
32173 , p_source_10 IN VARCHAR2
32174 --Accounted Amount
32175 , p_source_11 IN NUMBER
32176 )
32177 IS
32178
32179 l_component_type VARCHAR2(80);
32180 l_component_code VARCHAR2(30);
32181 l_component_type_code VARCHAR2(1);
32182 l_component_appl_id INTEGER;
32183 l_amb_context_code VARCHAR2(30);
32184 l_entity_code VARCHAR2(30);
32185 l_event_class_code VARCHAR2(30);
32186 l_ae_header_id NUMBER;
32187 l_event_type_code VARCHAR2(30);
32188 l_line_definition_code VARCHAR2(30);
32189 l_line_definition_owner_code VARCHAR2(1);
32190 --
32191 -- adr variables
32192 l_segment VARCHAR2(30);
32193 l_ccid NUMBER;
32194 l_adr_transaction_coa_id NUMBER;
32195 l_adr_accounting_coa_id NUMBER;
32196 l_adr_flexfield_segment_code VARCHAR2(30);
32197 l_adr_flex_value_set_id NUMBER;
32198 l_adr_value_type_code VARCHAR2(30);
32199 l_adr_value_combination_id NUMBER;
32200 l_adr_value_segment_code VARCHAR2(30);
32201
32205 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
32202 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
32203 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
32204 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
32206
32207 -- 4262811 Variables ------------------------------------------------------------------------------------------
32208 l_entered_amt_idx NUMBER;
32209 l_accted_amt_idx NUMBER;
32210 l_acc_rev_flag VARCHAR2(1);
32211 l_accrual_line_num NUMBER;
32212 l_tmp_amt NUMBER;
32213 l_acc_rev_natural_side_code VARCHAR2(1);
32214
32215 l_num_entries NUMBER;
32216 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
32217 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
32218 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
32219 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
32220 l_recog_line_1 NUMBER;
32221 l_recog_line_2 NUMBER;
32222
32223 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
32224 l_bflow_applied_to_amt NUMBER; -- 5132302
32225 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
32226
32227 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32228
32229 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
32230 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
32231
32232 ---------------------------------------------------------------------------------------------------------------
32233
32234
32235 --
32236 -- bulk performance
32237 --
32238 l_balance_type_code VARCHAR2(1);
32239 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
32240 l_log_module VARCHAR2(240);
32241
32242 --
32243 -- Upgrade strategy
32244 --
32245 l_actual_upg_option VARCHAR2(1);
32246 l_enc_upg_option VARCHAR2(1);
32247
32248 --
32249 BEGIN
32250 --
32251 IF g_log_enabled THEN
32252 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
32253 END IF;
32254 --
32255 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32256
32257 trace
32258 (p_msg => 'BEGIN of AcctLineType_91'
32259 ,p_level => C_LEVEL_PROCEDURE
32260 ,p_module => l_log_module);
32261
32262 END IF;
32263 --
32264 l_component_type := 'AMB_JLT';
32265 l_component_code := 'EXP';
32266 l_component_type_code := 'S';
32267 l_component_appl_id := 555;
32268 l_amb_context_code := 'DEFAULT';
32269 l_entity_code := 'INVENTORY';
32270 l_event_class_code := 'INT_ORDER_TO_EXP';
32271 l_event_type_code := 'EXP_REQ_RCPT_TP';
32272 l_line_definition_owner_code := 'S';
32273 l_line_definition_code := 'EXP_REQ_RCPT_TP';
32274 --
32275 l_balance_type_code := 'A';
32276 l_segment := NULL;
32277 l_ccid := NULL;
32278 l_adr_transaction_coa_id := NULL;
32279 l_adr_accounting_coa_id := NULL;
32280 l_adr_flexfield_segment_code := NULL;
32281 l_adr_flex_value_set_id := NULL;
32282 l_adr_value_type_code := NULL;
32283 l_adr_value_combination_id := NULL;
32284 l_adr_value_segment_code := NULL;
32285
32286 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
32287 l_bflow_class_code := ''; -- 4219869 Business Flow
32288 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
32289 l_budgetary_control_flag := 'N';
32290
32291 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32292 l_bflow_applied_to_amt := NULL; -- 5132302
32293 l_entered_amt_idx := NULL; -- 4262811
32294 l_accted_amt_idx := NULL; -- 4262811
32295 l_acc_rev_flag := NULL; -- 4262811
32296 l_accrual_line_num := NULL; -- 4262811
32297 l_tmp_amt := NULL; -- 4262811
32298 --
32299
32300 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32301 l_balance_type_code <> 'B' THEN
32302 IF NVL(p_source_2,'
32303 ') = 'EXP'
32304 THEN
32305
32306 --
32307 XLA_AE_LINES_PKG.SetNewLine;
32308
32309 p_balance_type_code := l_balance_type_code;
32310 -- set the flag so later we will know whether the gain loss line needs to be created
32311
32312 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32313 p_actual_flag :='A';
32314 END IF;
32315
32316 --
32317 -- bulk performance
32318 --
32319 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32320 p_header_num => 0); -- 4262811
32321 --
32322 -- set accounting line options
32323 --
32324 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32325 p_natural_side_code => 'D'
32326 , p_gain_or_loss_flag => 'N'
32327 , p_gl_transfer_mode_code => 'D'
32328 , p_acct_entry_type_code => 'A'
32329 , p_switch_side_flag => 'Y'
32330 , p_merge_duplicate_code => 'W'
32334 --
32331 );
32332 --
32333 l_acc_rev_natural_side_code := 'C'; -- 4262811
32335 --
32336 -- set accounting line type info
32337 --
32338 xla_ae_lines_pkg.SetAcctLineType
32339 (p_component_type => l_component_type
32340 ,p_event_type_code => l_event_type_code
32341 ,p_line_definition_owner_code => l_line_definition_owner_code
32342 ,p_line_definition_code => l_line_definition_code
32343 ,p_accounting_line_code => l_component_code
32344 ,p_accounting_line_type_code => l_component_type_code
32345 ,p_accounting_line_appl_id => l_component_appl_id
32346 ,p_amb_context_code => l_amb_context_code
32347 ,p_entity_code => l_entity_code
32348 ,p_event_class_code => l_event_class_code);
32349 --
32350 -- set accounting class
32351 --
32352 xla_ae_lines_pkg.SetAcctClass(
32353 p_accounting_class_code => 'EXPENSE'
32354 , p_ae_header_id => l_ae_header_id
32355 );
32356
32357 --
32358 -- set rounding class
32359 --
32360 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32361 'EXPENSE';
32362
32363 --
32364 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32365 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32366 --
32367 -- bulk performance
32368 --
32369 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32370
32371 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32372 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32373
32374 -- 4955764
32375 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32376 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32377
32378 -- 4458381 Public Sector Enh
32379
32380 --
32381 -- set accounting attributes for the line type
32382 --
32383 l_entered_amt_idx := 3;
32384 l_accted_amt_idx := 8;
32385 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32386 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
32387 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
32388 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
32389 l_rec_acct_attrs.array_char_value(2) := p_source_6;
32390 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
32391 l_rec_acct_attrs.array_num_value(3) := p_source_3;
32392 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
32393 l_rec_acct_attrs.array_char_value(4) := p_source_7;
32394 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
32395 l_rec_acct_attrs.array_date_value(5) := p_source_8;
32396 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
32397 l_rec_acct_attrs.array_num_value(6) := p_source_9;
32398 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
32399 l_rec_acct_attrs.array_char_value(7) := p_source_10;
32400 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
32401 l_rec_acct_attrs.array_num_value(8) := p_source_11;
32402
32403 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32404 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32405
32406 ---------------------------------------------------------------------------------------------------------------
32407 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32408 ---------------------------------------------------------------------------------------------------------------
32409 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32410
32411 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32412 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32413
32414 IF xla_accounting_cache_pkg.GetValueChar
32415 (p_source_code => 'LEDGER_CATEGORY_CODE'
32416 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32417 AND l_bflow_method_code = 'PRIOR_ENTRY'
32418 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32419 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32420 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32421 )
32422 THEN
32423 xla_ae_lines_pkg.BflowUpgEntry
32424 (p_business_method_code => l_bflow_method_code
32425 ,p_business_class_code => l_bflow_class_code
32426 ,p_balance_type => l_balance_type_code);
32427 ELSE
32428 NULL;
32429 -- No business flow processing for business flow method of NONE.
32430 END IF;
32431
32432 --
32433 -- call analytical criteria
32434 --
32435
32436 --
32437 -- call description
32438 --
32439 -- No description or it is inherited.
32440 --
32441 -- call ADRs
32442 -- Bug 4922099
32443 --
32447 )
32444 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32445 (NVL(l_actual_upg_option, 'N') = 'O') OR
32446 (NVL(l_enc_upg_option, 'N') = 'O')
32448 THEN
32449 NULL;
32450 --
32451 --
32452
32453 l_ccid := AcctDerRule_12(
32454 p_application_id => p_application_id
32455 , p_ae_header_id => l_ae_header_id
32456 , p_source_1 => p_source_1
32457 , p_source_2 => p_source_2
32458 , x_transaction_coa_id => l_adr_transaction_coa_id
32459 , x_accounting_coa_id => l_adr_accounting_coa_id
32460 , x_value_type_code => l_adr_value_type_code
32461 , p_side => 'NA'
32462 );
32463
32464 xla_ae_lines_pkg.set_ccid(
32465 p_code_combination_id => l_ccid
32466 , p_value_type_code => l_adr_value_type_code
32467 , p_transaction_coa_id => l_adr_transaction_coa_id
32468 , p_accounting_coa_id => l_adr_accounting_coa_id
32469 , p_adr_code => 'EXP'
32470 , p_adr_type_code => 'S'
32471 , p_component_type => l_component_type
32472 , p_component_code => l_component_code
32473 , p_component_type_code => l_component_type_code
32474 , p_component_appl_id => l_component_appl_id
32475 , p_amb_context_code => l_amb_context_code
32476 , p_side => 'NA'
32477 );
32478
32479
32480 --
32481 --
32482 END IF;
32483 --
32484 -- Bug 4922099
32485 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32486 (NVL(l_enc_upg_option, 'N') = 'O')
32487 ) AND
32488 (l_bflow_method_code = 'PRIOR_ENTRY')
32489 )
32490 THEN
32491 IF
32492 --
32493 1 = 2
32494 --
32495 THEN
32496 xla_accounting_err_pkg.build_message
32497 (p_appli_s_name => 'XLA'
32498 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32499 ,p_token_1 => 'LINE_NUMBER'
32500 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
32501 ,p_token_2 => 'LINE_TYPE_NAME'
32502 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
32503 l_component_type
32504 ,l_component_code
32505 ,l_component_type_code
32506 ,l_component_appl_id
32507 ,l_amb_context_code
32508 ,l_entity_code
32509 ,l_event_class_code
32510 )
32511 ,p_token_3 => 'OWNER'
32512 ,p_value_3 => xla_lookups_pkg.get_meaning(
32513 p_lookup_type => 'XLA_OWNER_TYPE'
32514 ,p_lookup_code => l_component_type_code
32515 )
32516 ,p_token_4 => 'PRODUCT_NAME'
32517 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32518 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32519 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32520 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32521 ,p_ae_header_id => NULL
32522 );
32523
32524 IF (C_LEVEL_ERROR>= g_log_level) THEN
32525 trace
32526 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32527 ,p_level => C_LEVEL_ERROR
32528 ,p_module => l_log_module);
32529 END IF;
32530 END IF;
32531 END IF;
32532 --
32533 --
32534 ------------------------------------------------------------------------------------------------
32535 -- 4219869 Business Flow
32536 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32537 -- Prior Entry. Currently, the following code is always generated.
32538 ------------------------------------------------------------------------------------------------
32539 XLA_AE_LINES_PKG.ValidateCurrentLine;
32540
32541 ------------------------------------------------------------------------------------
32542 -- 4219869 Business Flow
32543 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32544 ------------------------------------------------------------------------------------
32548 -- 4219869 Business Flow
32545 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32546
32547 ----------------------------------------------------------------------------------
32549 -- Update journal entry status -- Need to generate this within IF <condition>
32550 ----------------------------------------------------------------------------------
32551 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32552 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32553 ,p_balance_type_code => l_balance_type_code
32554 );
32555
32556 -------------------------------------------------------------------------------------------
32557 -- 4262811 - Generate the Accrual Reversal lines
32558 -------------------------------------------------------------------------------------------
32559 BEGIN
32560 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32561 (g_array_event(p_event_id).array_value_num('header_index'));
32562 IF l_acc_rev_flag IS NULL THEN
32563 l_acc_rev_flag := 'N';
32564 END IF;
32565 EXCEPTION
32566 WHEN OTHERS THEN
32567 l_acc_rev_flag := 'N';
32568 END;
32569 --
32570 IF (l_acc_rev_flag = 'Y') THEN
32571
32572 -- 4645092 ------------------------------------------------------------------------------
32573 -- To allow MPA report to determine if it should generate report process
32574 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32575 ------------------------------------------------------------------------------------------
32576
32577 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32578 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32579 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
32580 -- call ADRs
32581 -- Bug 4922099
32582 --
32583 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32584 (NVL(l_actual_upg_option, 'N') = 'O') OR
32585 (NVL(l_enc_upg_option, 'N') = 'O')
32586 )
32587 THEN
32588 NULL;
32589 --
32590 --
32591
32592 l_ccid := AcctDerRule_12(
32593 p_application_id => p_application_id
32594 , p_ae_header_id => l_ae_header_id
32595 , p_source_1 => p_source_1
32596 , p_source_2 => p_source_2
32597 , x_transaction_coa_id => l_adr_transaction_coa_id
32598 , x_accounting_coa_id => l_adr_accounting_coa_id
32599 , x_value_type_code => l_adr_value_type_code
32600 , p_side => 'NA'
32601 );
32602
32603 xla_ae_lines_pkg.set_ccid(
32604 p_code_combination_id => l_ccid
32605 , p_value_type_code => l_adr_value_type_code
32606 , p_transaction_coa_id => l_adr_transaction_coa_id
32607 , p_accounting_coa_id => l_adr_accounting_coa_id
32608 , p_adr_code => 'EXP'
32609 , p_adr_type_code => 'S'
32610 , p_component_type => l_component_type
32611 , p_component_code => l_component_code
32612 , p_component_type_code => l_component_type_code
32613 , p_component_appl_id => l_component_appl_id
32614 , p_amb_context_code => l_amb_context_code
32615 , p_side => 'NA'
32616 );
32617
32618
32619 --
32620 --
32621 END IF;
32622
32623 --
32624 -- Update the line information that should be overwritten
32625 --
32626 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32627 p_header_num => 1);
32628 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
32629
32630 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32631
32632 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
32633 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32634 END IF;
32635
32636 --
32637 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32638 --
32639 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32640 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
32641 ELSE
32642 ---------------------------------------------------------------------------------------------------
32643 -- 4262811a Switch Sign
32644 ---------------------------------------------------------------------------------------------------
32645 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
32646 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32647 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32648 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32649 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32650 -- 5132302
32651 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32655
32652 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32653
32654 END IF;
32656 -- 4955764
32657 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32658 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32659
32660
32661 XLA_AE_LINES_PKG.ValidateCurrentLine;
32662 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32663
32664 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32665 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32666 ,p_balance_type_code => l_balance_type_code);
32667
32668 END IF;
32669
32670 -----------------------------------------------------------------------------------------
32671 -- 4262811 Multiperiod Accounting
32672 -----------------------------------------------------------------------------------------
32673 -- No MPA option is assigned.
32674
32675
32676 END IF;
32677 END IF;
32678 --
32679
32680 --
32681 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32682 trace
32683 (p_msg => 'END of AcctLineType_91'
32684 ,p_level => C_LEVEL_PROCEDURE
32685 ,p_module => l_log_module);
32686 END IF;
32687 --
32688 EXCEPTION
32689 WHEN xla_exceptions_pkg.application_exception THEN
32690 RAISE;
32691 WHEN OTHERS THEN
32692 xla_exceptions_pkg.raise_message
32693 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_91');
32694 END AcctLineType_91;
32695 --
32696
32697 ---------------------------------------
32698 --
32699 -- PRIVATE FUNCTION
32700 -- AcctLineType_92
32701 --
32702 ---------------------------------------
32703 PROCEDURE AcctLineType_92 (
32704 p_application_id IN NUMBER
32705 ,p_event_id IN NUMBER
32706 ,p_calculate_acctd_flag IN VARCHAR2
32707 ,p_calculate_g_l_flag IN VARCHAR2
32708 ,p_actual_flag IN OUT VARCHAR2
32709 ,p_balance_type_code OUT VARCHAR2
32710 ,p_gain_or_loss_ref OUT VARCHAR2
32711
32712 --Transaction Account
32713 , p_source_1 IN NUMBER
32714 --Journal Line Type
32715 , p_source_2 IN VARCHAR2
32716 --Entered Amount
32717 , p_source_3 IN NUMBER
32718 --First Distribution Identifier
32719 , p_source_5 IN NUMBER
32720 --Distribution Type
32721 , p_source_6 IN VARCHAR2
32722 --Currency Code
32723 , p_source_7 IN VARCHAR2
32724 --Currency Conversion Date
32725 , p_source_8 IN DATE
32726 --Currency Conversion Rate
32727 , p_source_9 IN NUMBER
32728 --Currency Conversion Type
32729 , p_source_10 IN VARCHAR2
32730 --Accounted Amount
32731 , p_source_11 IN NUMBER
32732 )
32733 IS
32734
32735 l_component_type VARCHAR2(80);
32736 l_component_code VARCHAR2(30);
32737 l_component_type_code VARCHAR2(1);
32738 l_component_appl_id INTEGER;
32739 l_amb_context_code VARCHAR2(30);
32740 l_entity_code VARCHAR2(30);
32741 l_event_class_code VARCHAR2(30);
32742 l_ae_header_id NUMBER;
32743 l_event_type_code VARCHAR2(30);
32744 l_line_definition_code VARCHAR2(30);
32745 l_line_definition_owner_code VARCHAR2(1);
32746 --
32747 -- adr variables
32748 l_segment VARCHAR2(30);
32749 l_ccid NUMBER;
32750 l_adr_transaction_coa_id NUMBER;
32751 l_adr_accounting_coa_id NUMBER;
32752 l_adr_flexfield_segment_code VARCHAR2(30);
32753 l_adr_flex_value_set_id NUMBER;
32754 l_adr_value_type_code VARCHAR2(30);
32755 l_adr_value_combination_id NUMBER;
32756 l_adr_value_segment_code VARCHAR2(30);
32757
32758 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
32759 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
32760 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
32761 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
32762
32763 -- 4262811 Variables ------------------------------------------------------------------------------------------
32764 l_entered_amt_idx NUMBER;
32765 l_accted_amt_idx NUMBER;
32766 l_acc_rev_flag VARCHAR2(1);
32767 l_accrual_line_num NUMBER;
32768 l_tmp_amt NUMBER;
32769 l_acc_rev_natural_side_code VARCHAR2(1);
32770
32771 l_num_entries NUMBER;
32772 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
32773 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
32774 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
32775 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
32776 l_recog_line_1 NUMBER;
32777 l_recog_line_2 NUMBER;
32778
32779 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
32780 l_bflow_applied_to_amt NUMBER; -- 5132302
32781 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
32782
32783 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32784
32788 ---------------------------------------------------------------------------------------------------------------
32785 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
32786 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
32787
32789
32790
32791 --
32792 -- bulk performance
32793 --
32794 l_balance_type_code VARCHAR2(1);
32795 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
32796 l_log_module VARCHAR2(240);
32797
32798 --
32799 -- Upgrade strategy
32800 --
32801 l_actual_upg_option VARCHAR2(1);
32802 l_enc_upg_option VARCHAR2(1);
32803
32804 --
32805 BEGIN
32806 --
32807 IF g_log_enabled THEN
32808 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
32809 END IF;
32810 --
32811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32812
32813 trace
32814 (p_msg => 'BEGIN of AcctLineType_92'
32815 ,p_level => C_LEVEL_PROCEDURE
32816 ,p_module => l_log_module);
32817
32818 END IF;
32819 --
32820 l_component_type := 'AMB_JLT';
32821 l_component_code := 'EXP';
32822 l_component_type_code := 'S';
32823 l_component_appl_id := 555;
32824 l_amb_context_code := 'DEFAULT';
32825 l_entity_code := 'INVENTORY';
32826 l_event_class_code := 'LOG_INTERCOMPANY';
32827 l_event_type_code := 'LOG_IC_SALES_ISSUE';
32828 l_line_definition_owner_code := 'S';
32829 l_line_definition_code := 'LOG_IC_SALES_ISSUE';
32830 --
32831 l_balance_type_code := 'A';
32832 l_segment := NULL;
32833 l_ccid := NULL;
32834 l_adr_transaction_coa_id := NULL;
32835 l_adr_accounting_coa_id := NULL;
32836 l_adr_flexfield_segment_code := NULL;
32837 l_adr_flex_value_set_id := NULL;
32838 l_adr_value_type_code := NULL;
32839 l_adr_value_combination_id := NULL;
32840 l_adr_value_segment_code := NULL;
32841
32842 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
32843 l_bflow_class_code := ''; -- 4219869 Business Flow
32844 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
32845 l_budgetary_control_flag := 'N';
32846
32847 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32848 l_bflow_applied_to_amt := NULL; -- 5132302
32849 l_entered_amt_idx := NULL; -- 4262811
32850 l_accted_amt_idx := NULL; -- 4262811
32851 l_acc_rev_flag := NULL; -- 4262811
32852 l_accrual_line_num := NULL; -- 4262811
32853 l_tmp_amt := NULL; -- 4262811
32854 --
32855
32856 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32857 l_balance_type_code <> 'B' THEN
32858 IF NVL(p_source_2,'
32859 ') = 'EXP'
32860 THEN
32861
32862 --
32863 XLA_AE_LINES_PKG.SetNewLine;
32864
32865 p_balance_type_code := l_balance_type_code;
32866 -- set the flag so later we will know whether the gain loss line needs to be created
32867
32868 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32869 p_actual_flag :='A';
32870 END IF;
32871
32872 --
32873 -- bulk performance
32874 --
32875 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32876 p_header_num => 0); -- 4262811
32877 --
32878 -- set accounting line options
32879 --
32880 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32881 p_natural_side_code => 'D'
32882 , p_gain_or_loss_flag => 'N'
32883 , p_gl_transfer_mode_code => 'D'
32884 , p_acct_entry_type_code => 'A'
32885 , p_switch_side_flag => 'Y'
32886 , p_merge_duplicate_code => 'W'
32887 );
32888 --
32889 l_acc_rev_natural_side_code := 'C'; -- 4262811
32890 --
32891 --
32892 -- set accounting line type info
32893 --
32894 xla_ae_lines_pkg.SetAcctLineType
32895 (p_component_type => l_component_type
32896 ,p_event_type_code => l_event_type_code
32897 ,p_line_definition_owner_code => l_line_definition_owner_code
32898 ,p_line_definition_code => l_line_definition_code
32899 ,p_accounting_line_code => l_component_code
32900 ,p_accounting_line_type_code => l_component_type_code
32901 ,p_accounting_line_appl_id => l_component_appl_id
32902 ,p_amb_context_code => l_amb_context_code
32903 ,p_entity_code => l_entity_code
32904 ,p_event_class_code => l_event_class_code);
32905 --
32906 -- set accounting class
32907 --
32908 xla_ae_lines_pkg.SetAcctClass(
32909 p_accounting_class_code => 'EXPENSE'
32910 , p_ae_header_id => l_ae_header_id
32911 );
32912
32913 --
32914 -- set rounding class
32915 --
32916 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32917 'EXPENSE';
32918
32919 --
32920 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32924 --
32921 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32922 --
32923 -- bulk performance
32925 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32926
32927 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32928 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32929
32930 -- 4955764
32931 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32932 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32933
32934 -- 4458381 Public Sector Enh
32935
32936 --
32937 -- set accounting attributes for the line type
32938 --
32939 l_entered_amt_idx := 3;
32940 l_accted_amt_idx := 8;
32941 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32942 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
32943 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
32944 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
32945 l_rec_acct_attrs.array_char_value(2) := p_source_6;
32946 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
32947 l_rec_acct_attrs.array_num_value(3) := p_source_3;
32948 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
32949 l_rec_acct_attrs.array_char_value(4) := p_source_7;
32950 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
32951 l_rec_acct_attrs.array_date_value(5) := p_source_8;
32952 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
32953 l_rec_acct_attrs.array_num_value(6) := p_source_9;
32954 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
32955 l_rec_acct_attrs.array_char_value(7) := p_source_10;
32956 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
32957 l_rec_acct_attrs.array_num_value(8) := p_source_11;
32958
32959 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32960 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32961
32962 ---------------------------------------------------------------------------------------------------------------
32963 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32964 ---------------------------------------------------------------------------------------------------------------
32965 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32966
32967 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32968 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32969
32970 IF xla_accounting_cache_pkg.GetValueChar
32971 (p_source_code => 'LEDGER_CATEGORY_CODE'
32972 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32973 AND l_bflow_method_code = 'PRIOR_ENTRY'
32974 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32975 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32976 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32977 )
32978 THEN
32979 xla_ae_lines_pkg.BflowUpgEntry
32980 (p_business_method_code => l_bflow_method_code
32981 ,p_business_class_code => l_bflow_class_code
32982 ,p_balance_type => l_balance_type_code);
32983 ELSE
32984 NULL;
32985 -- No business flow processing for business flow method of NONE.
32986 END IF;
32987
32988 --
32989 -- call analytical criteria
32990 --
32991
32992 --
32993 -- call description
32994 --
32995 -- No description or it is inherited.
32996 --
32997 -- call ADRs
32998 -- Bug 4922099
32999 --
33000 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33001 (NVL(l_actual_upg_option, 'N') = 'O') OR
33002 (NVL(l_enc_upg_option, 'N') = 'O')
33003 )
33004 THEN
33005 NULL;
33006 --
33007 --
33008
33009 l_ccid := AcctDerRule_12(
33010 p_application_id => p_application_id
33011 , p_ae_header_id => l_ae_header_id
33012 , p_source_1 => p_source_1
33013 , p_source_2 => p_source_2
33014 , x_transaction_coa_id => l_adr_transaction_coa_id
33015 , x_accounting_coa_id => l_adr_accounting_coa_id
33016 , x_value_type_code => l_adr_value_type_code
33017 , p_side => 'NA'
33018 );
33019
33020 xla_ae_lines_pkg.set_ccid(
33021 p_code_combination_id => l_ccid
33022 , p_value_type_code => l_adr_value_type_code
33023 , p_transaction_coa_id => l_adr_transaction_coa_id
33024 , p_accounting_coa_id => l_adr_accounting_coa_id
33025 , p_adr_code => 'EXP'
33026 , p_adr_type_code => 'S'
33027 , p_component_type => l_component_type
33028 , p_component_code => l_component_code
33029 , p_component_type_code => l_component_type_code
33030 , p_component_appl_id => l_component_appl_id
33031 , p_amb_context_code => l_amb_context_code
33032 , p_side => 'NA'
33033 );
33034
33038 END IF;
33035
33036 --
33037 --
33039 --
33040 -- Bug 4922099
33041 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33042 (NVL(l_enc_upg_option, 'N') = 'O')
33043 ) AND
33044 (l_bflow_method_code = 'PRIOR_ENTRY')
33045 )
33046 THEN
33047 IF
33048 --
33049 1 = 2
33050 --
33051 THEN
33052 xla_accounting_err_pkg.build_message
33053 (p_appli_s_name => 'XLA'
33054 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33055 ,p_token_1 => 'LINE_NUMBER'
33056 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
33057 ,p_token_2 => 'LINE_TYPE_NAME'
33058 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
33059 l_component_type
33060 ,l_component_code
33061 ,l_component_type_code
33062 ,l_component_appl_id
33063 ,l_amb_context_code
33064 ,l_entity_code
33065 ,l_event_class_code
33066 )
33067 ,p_token_3 => 'OWNER'
33068 ,p_value_3 => xla_lookups_pkg.get_meaning(
33069 p_lookup_type => 'XLA_OWNER_TYPE'
33070 ,p_lookup_code => l_component_type_code
33071 )
33072 ,p_token_4 => 'PRODUCT_NAME'
33073 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33074 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33075 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33076 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33077 ,p_ae_header_id => NULL
33078 );
33079
33080 IF (C_LEVEL_ERROR>= g_log_level) THEN
33081 trace
33082 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33083 ,p_level => C_LEVEL_ERROR
33084 ,p_module => l_log_module);
33085 END IF;
33086 END IF;
33087 END IF;
33088 --
33089 --
33090 ------------------------------------------------------------------------------------------------
33091 -- 4219869 Business Flow
33092 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33093 -- Prior Entry. Currently, the following code is always generated.
33094 ------------------------------------------------------------------------------------------------
33095 XLA_AE_LINES_PKG.ValidateCurrentLine;
33096
33097 ------------------------------------------------------------------------------------
33098 -- 4219869 Business Flow
33099 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33100 ------------------------------------------------------------------------------------
33101 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33102
33103 ----------------------------------------------------------------------------------
33104 -- 4219869 Business Flow
33105 -- Update journal entry status -- Need to generate this within IF <condition>
33106 ----------------------------------------------------------------------------------
33107 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33108 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33109 ,p_balance_type_code => l_balance_type_code
33110 );
33111
33112 -------------------------------------------------------------------------------------------
33113 -- 4262811 - Generate the Accrual Reversal lines
33114 -------------------------------------------------------------------------------------------
33115 BEGIN
33116 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33117 (g_array_event(p_event_id).array_value_num('header_index'));
33118 IF l_acc_rev_flag IS NULL THEN
33119 l_acc_rev_flag := 'N';
33120 END IF;
33121 EXCEPTION
33122 WHEN OTHERS THEN
33123 l_acc_rev_flag := 'N';
33124 END;
33125 --
33126 IF (l_acc_rev_flag = 'Y') THEN
33127
33128 -- 4645092 ------------------------------------------------------------------------------
33129 -- To allow MPA report to determine if it should generate report process
33130 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33134 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33131 ------------------------------------------------------------------------------------------
33132
33133 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33135 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
33136 -- call ADRs
33137 -- Bug 4922099
33138 --
33139 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33140 (NVL(l_actual_upg_option, 'N') = 'O') OR
33141 (NVL(l_enc_upg_option, 'N') = 'O')
33142 )
33143 THEN
33144 NULL;
33145 --
33146 --
33147
33148 l_ccid := AcctDerRule_12(
33149 p_application_id => p_application_id
33150 , p_ae_header_id => l_ae_header_id
33151 , p_source_1 => p_source_1
33152 , p_source_2 => p_source_2
33153 , x_transaction_coa_id => l_adr_transaction_coa_id
33154 , x_accounting_coa_id => l_adr_accounting_coa_id
33155 , x_value_type_code => l_adr_value_type_code
33156 , p_side => 'NA'
33157 );
33158
33159 xla_ae_lines_pkg.set_ccid(
33160 p_code_combination_id => l_ccid
33161 , p_value_type_code => l_adr_value_type_code
33162 , p_transaction_coa_id => l_adr_transaction_coa_id
33163 , p_accounting_coa_id => l_adr_accounting_coa_id
33164 , p_adr_code => 'EXP'
33165 , p_adr_type_code => 'S'
33166 , p_component_type => l_component_type
33167 , p_component_code => l_component_code
33168 , p_component_type_code => l_component_type_code
33169 , p_component_appl_id => l_component_appl_id
33170 , p_amb_context_code => l_amb_context_code
33171 , p_side => 'NA'
33172 );
33173
33174
33175 --
33176 --
33177 END IF;
33178
33179 --
33180 -- Update the line information that should be overwritten
33181 --
33182 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33183 p_header_num => 1);
33184 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
33185
33186 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33187
33188 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
33189 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33190 END IF;
33191
33192 --
33193 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33194 --
33195 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33196 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
33197 ELSE
33198 ---------------------------------------------------------------------------------------------------
33199 -- 4262811a Switch Sign
33200 ---------------------------------------------------------------------------------------------------
33201 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
33202 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33203 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33204 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33205 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33206 -- 5132302
33207 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33208 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33209
33210 END IF;
33211
33212 -- 4955764
33213 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33214 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33215
33216
33217 XLA_AE_LINES_PKG.ValidateCurrentLine;
33218 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33219
33220 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33221 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33222 ,p_balance_type_code => l_balance_type_code);
33223
33224 END IF;
33225
33226 -----------------------------------------------------------------------------------------
33227 -- 4262811 Multiperiod Accounting
33228 -----------------------------------------------------------------------------------------
33229 -- No MPA option is assigned.
33230
33231
33232 END IF;
33233 END IF;
33234 --
33235
33236 --
33237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33238 trace
33239 (p_msg => 'END of AcctLineType_92'
33240 ,p_level => C_LEVEL_PROCEDURE
33241 ,p_module => l_log_module);
33242 END IF;
33243 --
33244 EXCEPTION
33245 WHEN xla_exceptions_pkg.application_exception THEN
33246 RAISE;
33247 WHEN OTHERS THEN
33251 --
33248 xla_exceptions_pkg.raise_message
33249 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_92');
33250 END AcctLineType_92;
33252
33253 ---------------------------------------
33254 --
33255 -- PRIVATE FUNCTION
33256 -- AcctLineType_93
33257 --
33258 ---------------------------------------
33259 PROCEDURE AcctLineType_93 (
33260 p_application_id IN NUMBER
33261 ,p_event_id IN NUMBER
33262 ,p_calculate_acctd_flag IN VARCHAR2
33263 ,p_calculate_g_l_flag IN VARCHAR2
33264 ,p_actual_flag IN OUT VARCHAR2
33265 ,p_balance_type_code OUT VARCHAR2
33266 ,p_gain_or_loss_ref OUT VARCHAR2
33267
33268 --Transaction Account
33269 , p_source_1 IN NUMBER
33270 --Journal Line Type
33271 , p_source_2 IN VARCHAR2
33272 --Entered Amount
33273 , p_source_3 IN NUMBER
33274 --First Distribution Identifier
33275 , p_source_5 IN NUMBER
33276 --Distribution Type
33277 , p_source_6 IN VARCHAR2
33278 --Currency Code
33279 , p_source_7 IN VARCHAR2
33280 --Currency Conversion Date
33281 , p_source_8 IN DATE
33282 --Currency Conversion Rate
33283 , p_source_9 IN NUMBER
33284 --Currency Conversion Type
33285 , p_source_10 IN VARCHAR2
33286 --Accounted Amount
33287 , p_source_11 IN NUMBER
33288 )
33289 IS
33290
33291 l_component_type VARCHAR2(80);
33292 l_component_code VARCHAR2(30);
33293 l_component_type_code VARCHAR2(1);
33294 l_component_appl_id INTEGER;
33295 l_amb_context_code VARCHAR2(30);
33296 l_entity_code VARCHAR2(30);
33297 l_event_class_code VARCHAR2(30);
33298 l_ae_header_id NUMBER;
33299 l_event_type_code VARCHAR2(30);
33300 l_line_definition_code VARCHAR2(30);
33301 l_line_definition_owner_code VARCHAR2(1);
33302 --
33303 -- adr variables
33304 l_segment VARCHAR2(30);
33305 l_ccid NUMBER;
33306 l_adr_transaction_coa_id NUMBER;
33307 l_adr_accounting_coa_id NUMBER;
33308 l_adr_flexfield_segment_code VARCHAR2(30);
33309 l_adr_flex_value_set_id NUMBER;
33310 l_adr_value_type_code VARCHAR2(30);
33311 l_adr_value_combination_id NUMBER;
33312 l_adr_value_segment_code VARCHAR2(30);
33313
33314 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
33315 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
33316 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
33317 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
33318
33319 -- 4262811 Variables ------------------------------------------------------------------------------------------
33320 l_entered_amt_idx NUMBER;
33321 l_accted_amt_idx NUMBER;
33322 l_acc_rev_flag VARCHAR2(1);
33323 l_accrual_line_num NUMBER;
33324 l_tmp_amt NUMBER;
33325 l_acc_rev_natural_side_code VARCHAR2(1);
33326
33327 l_num_entries NUMBER;
33328 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
33329 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
33330 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
33331 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
33332 l_recog_line_1 NUMBER;
33333 l_recog_line_2 NUMBER;
33334
33335 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
33336 l_bflow_applied_to_amt NUMBER; -- 5132302
33337 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
33338
33339 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33340
33341 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
33342 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
33343
33344 ---------------------------------------------------------------------------------------------------------------
33345
33346
33347 --
33348 -- bulk performance
33349 --
33350 l_balance_type_code VARCHAR2(1);
33351 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
33352 l_log_module VARCHAR2(240);
33353
33354 --
33355 -- Upgrade strategy
33356 --
33357 l_actual_upg_option VARCHAR2(1);
33358 l_enc_upg_option VARCHAR2(1);
33359
33360 --
33361 BEGIN
33362 --
33363 IF g_log_enabled THEN
33364 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
33365 END IF;
33366 --
33367 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33368
33369 trace
33370 (p_msg => 'BEGIN of AcctLineType_93'
33371 ,p_level => C_LEVEL_PROCEDURE
33372 ,p_module => l_log_module);
33373
33374 END IF;
33375 --
33376 l_component_type := 'AMB_JLT';
33377 l_component_code := 'EXP';
33378 l_component_type_code := 'S';
33379 l_component_appl_id := 555;
33380 l_amb_context_code := 'DEFAULT';
33381 l_entity_code := 'INVENTORY';
33382 l_event_class_code := 'LOG_INTERCOMPANY';
33383 l_event_type_code := 'LOG_IC_SHIPMENT_RCPT';
33384 l_line_definition_owner_code := 'S';
33388 l_segment := NULL;
33385 l_line_definition_code := 'LOG_IC_SHIPMENT_RCPT';
33386 --
33387 l_balance_type_code := 'A';
33389 l_ccid := NULL;
33390 l_adr_transaction_coa_id := NULL;
33391 l_adr_accounting_coa_id := NULL;
33392 l_adr_flexfield_segment_code := NULL;
33393 l_adr_flex_value_set_id := NULL;
33394 l_adr_value_type_code := NULL;
33395 l_adr_value_combination_id := NULL;
33396 l_adr_value_segment_code := NULL;
33397
33398 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
33399 l_bflow_class_code := ''; -- 4219869 Business Flow
33400 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
33401 l_budgetary_control_flag := 'N';
33402
33403 l_bflow_applied_to_amt_idx := NULL; -- 5132302
33404 l_bflow_applied_to_amt := NULL; -- 5132302
33405 l_entered_amt_idx := NULL; -- 4262811
33406 l_accted_amt_idx := NULL; -- 4262811
33407 l_acc_rev_flag := NULL; -- 4262811
33408 l_accrual_line_num := NULL; -- 4262811
33409 l_tmp_amt := NULL; -- 4262811
33410 --
33411
33412 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33413 l_balance_type_code <> 'B' THEN
33414 IF NVL(p_source_2,'
33415 ') = 'EXP'
33416 THEN
33417
33418 --
33419 XLA_AE_LINES_PKG.SetNewLine;
33420
33421 p_balance_type_code := l_balance_type_code;
33422 -- set the flag so later we will know whether the gain loss line needs to be created
33423
33424 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33425 p_actual_flag :='A';
33426 END IF;
33427
33428 --
33429 -- bulk performance
33430 --
33431 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33432 p_header_num => 0); -- 4262811
33433 --
33434 -- set accounting line options
33435 --
33436 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33437 p_natural_side_code => 'D'
33438 , p_gain_or_loss_flag => 'N'
33439 , p_gl_transfer_mode_code => 'D'
33440 , p_acct_entry_type_code => 'A'
33441 , p_switch_side_flag => 'Y'
33442 , p_merge_duplicate_code => 'W'
33443 );
33444 --
33445 l_acc_rev_natural_side_code := 'C'; -- 4262811
33446 --
33447 --
33448 -- set accounting line type info
33449 --
33450 xla_ae_lines_pkg.SetAcctLineType
33451 (p_component_type => l_component_type
33452 ,p_event_type_code => l_event_type_code
33453 ,p_line_definition_owner_code => l_line_definition_owner_code
33454 ,p_line_definition_code => l_line_definition_code
33455 ,p_accounting_line_code => l_component_code
33456 ,p_accounting_line_type_code => l_component_type_code
33457 ,p_accounting_line_appl_id => l_component_appl_id
33458 ,p_amb_context_code => l_amb_context_code
33459 ,p_entity_code => l_entity_code
33460 ,p_event_class_code => l_event_class_code);
33461 --
33462 -- set accounting class
33463 --
33464 xla_ae_lines_pkg.SetAcctClass(
33465 p_accounting_class_code => 'EXPENSE'
33466 , p_ae_header_id => l_ae_header_id
33467 );
33468
33469 --
33470 -- set rounding class
33471 --
33472 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33473 'EXPENSE';
33474
33475 --
33476 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33477 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33478 --
33479 -- bulk performance
33480 --
33481 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33482
33483 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33484 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33485
33486 -- 4955764
33487 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33488 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33489
33490 -- 4458381 Public Sector Enh
33491
33492 --
33493 -- set accounting attributes for the line type
33494 --
33495 l_entered_amt_idx := 3;
33496 l_accted_amt_idx := 8;
33497 l_bflow_applied_to_amt_idx := NULL; -- 5132302
33498 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
33499 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
33500 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
33501 l_rec_acct_attrs.array_char_value(2) := p_source_6;
33502 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
33503 l_rec_acct_attrs.array_num_value(3) := p_source_3;
33504 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
33505 l_rec_acct_attrs.array_char_value(4) := p_source_7;
33506 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
33510 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
33507 l_rec_acct_attrs.array_date_value(5) := p_source_8;
33508 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
33509 l_rec_acct_attrs.array_num_value(6) := p_source_9;
33511 l_rec_acct_attrs.array_char_value(7) := p_source_10;
33512 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
33513 l_rec_acct_attrs.array_num_value(8) := p_source_11;
33514
33515 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33516 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33517
33518 ---------------------------------------------------------------------------------------------------------------
33519 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33520 ---------------------------------------------------------------------------------------------------------------
33521 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33522
33523 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33524 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33525
33526 IF xla_accounting_cache_pkg.GetValueChar
33527 (p_source_code => 'LEDGER_CATEGORY_CODE'
33528 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33529 AND l_bflow_method_code = 'PRIOR_ENTRY'
33530 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33531 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33532 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33533 )
33534 THEN
33535 xla_ae_lines_pkg.BflowUpgEntry
33536 (p_business_method_code => l_bflow_method_code
33537 ,p_business_class_code => l_bflow_class_code
33538 ,p_balance_type => l_balance_type_code);
33539 ELSE
33540 NULL;
33541 -- No business flow processing for business flow method of NONE.
33542 END IF;
33543
33544 --
33545 -- call analytical criteria
33546 --
33547
33548 --
33549 -- call description
33550 --
33551 -- No description or it is inherited.
33552 --
33553 -- call ADRs
33554 -- Bug 4922099
33555 --
33556 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33557 (NVL(l_actual_upg_option, 'N') = 'O') OR
33558 (NVL(l_enc_upg_option, 'N') = 'O')
33559 )
33560 THEN
33561 NULL;
33562 --
33563 --
33564
33565 l_ccid := AcctDerRule_12(
33566 p_application_id => p_application_id
33567 , p_ae_header_id => l_ae_header_id
33568 , p_source_1 => p_source_1
33569 , p_source_2 => p_source_2
33570 , x_transaction_coa_id => l_adr_transaction_coa_id
33571 , x_accounting_coa_id => l_adr_accounting_coa_id
33572 , x_value_type_code => l_adr_value_type_code
33573 , p_side => 'NA'
33574 );
33575
33576 xla_ae_lines_pkg.set_ccid(
33577 p_code_combination_id => l_ccid
33578 , p_value_type_code => l_adr_value_type_code
33579 , p_transaction_coa_id => l_adr_transaction_coa_id
33580 , p_accounting_coa_id => l_adr_accounting_coa_id
33581 , p_adr_code => 'EXP'
33582 , p_adr_type_code => 'S'
33583 , p_component_type => l_component_type
33584 , p_component_code => l_component_code
33585 , p_component_type_code => l_component_type_code
33586 , p_component_appl_id => l_component_appl_id
33587 , p_amb_context_code => l_amb_context_code
33588 , p_side => 'NA'
33589 );
33590
33591
33592 --
33593 --
33594 END IF;
33595 --
33596 -- Bug 4922099
33597 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33598 (NVL(l_enc_upg_option, 'N') = 'O')
33599 ) AND
33600 (l_bflow_method_code = 'PRIOR_ENTRY')
33601 )
33602 THEN
33603 IF
33604 --
33605 1 = 2
33606 --
33607 THEN
33608 xla_accounting_err_pkg.build_message
33609 (p_appli_s_name => 'XLA'
33610 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33611 ,p_token_1 => 'LINE_NUMBER'
33612 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
33613 ,p_token_2 => 'LINE_TYPE_NAME'
33614 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
33615 l_component_type
33616 ,l_component_code
33617 ,l_component_type_code
33618 ,l_component_appl_id
33619 ,l_amb_context_code
33623 ,p_token_3 => 'OWNER'
33620 ,l_entity_code
33621 ,l_event_class_code
33622 )
33624 ,p_value_3 => xla_lookups_pkg.get_meaning(
33625 p_lookup_type => 'XLA_OWNER_TYPE'
33626 ,p_lookup_code => l_component_type_code
33627 )
33628 ,p_token_4 => 'PRODUCT_NAME'
33629 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33630 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33631 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33632 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33633 ,p_ae_header_id => NULL
33634 );
33635
33636 IF (C_LEVEL_ERROR>= g_log_level) THEN
33637 trace
33638 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33639 ,p_level => C_LEVEL_ERROR
33640 ,p_module => l_log_module);
33641 END IF;
33642 END IF;
33643 END IF;
33644 --
33645 --
33646 ------------------------------------------------------------------------------------------------
33647 -- 4219869 Business Flow
33648 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33649 -- Prior Entry. Currently, the following code is always generated.
33650 ------------------------------------------------------------------------------------------------
33651 XLA_AE_LINES_PKG.ValidateCurrentLine;
33652
33653 ------------------------------------------------------------------------------------
33654 -- 4219869 Business Flow
33655 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33656 ------------------------------------------------------------------------------------
33657 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33658
33659 ----------------------------------------------------------------------------------
33660 -- 4219869 Business Flow
33661 -- Update journal entry status -- Need to generate this within IF <condition>
33662 ----------------------------------------------------------------------------------
33663 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33664 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33665 ,p_balance_type_code => l_balance_type_code
33666 );
33667
33668 -------------------------------------------------------------------------------------------
33669 -- 4262811 - Generate the Accrual Reversal lines
33670 -------------------------------------------------------------------------------------------
33671 BEGIN
33672 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33673 (g_array_event(p_event_id).array_value_num('header_index'));
33674 IF l_acc_rev_flag IS NULL THEN
33675 l_acc_rev_flag := 'N';
33676 END IF;
33677 EXCEPTION
33678 WHEN OTHERS THEN
33679 l_acc_rev_flag := 'N';
33680 END;
33681 --
33682 IF (l_acc_rev_flag = 'Y') THEN
33683
33684 -- 4645092 ------------------------------------------------------------------------------
33685 -- To allow MPA report to determine if it should generate report process
33686 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33687 ------------------------------------------------------------------------------------------
33688
33689 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33690 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33691 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
33692 -- call ADRs
33693 -- Bug 4922099
33694 --
33695 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33696 (NVL(l_actual_upg_option, 'N') = 'O') OR
33697 (NVL(l_enc_upg_option, 'N') = 'O')
33698 )
33699 THEN
33700 NULL;
33701 --
33702 --
33703
33704 l_ccid := AcctDerRule_12(
33705 p_application_id => p_application_id
33706 , p_ae_header_id => l_ae_header_id
33707 , p_source_1 => p_source_1
33708 , p_source_2 => p_source_2
33709 , x_transaction_coa_id => l_adr_transaction_coa_id
33710 , x_accounting_coa_id => l_adr_accounting_coa_id
33711 , x_value_type_code => l_adr_value_type_code
33712 , p_side => 'NA'
33713 );
33714
33715 xla_ae_lines_pkg.set_ccid(
33716 p_code_combination_id => l_ccid
33717 , p_value_type_code => l_adr_value_type_code
33718 , p_transaction_coa_id => l_adr_transaction_coa_id
33722 , p_component_type => l_component_type
33719 , p_accounting_coa_id => l_adr_accounting_coa_id
33720 , p_adr_code => 'EXP'
33721 , p_adr_type_code => 'S'
33723 , p_component_code => l_component_code
33724 , p_component_type_code => l_component_type_code
33725 , p_component_appl_id => l_component_appl_id
33726 , p_amb_context_code => l_amb_context_code
33727 , p_side => 'NA'
33728 );
33729
33730
33731 --
33732 --
33733 END IF;
33734
33735 --
33736 -- Update the line information that should be overwritten
33737 --
33738 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33739 p_header_num => 1);
33740 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
33741
33742 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33743
33744 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
33745 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33746 END IF;
33747
33748 --
33749 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33750 --
33751 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33752 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
33753 ELSE
33754 ---------------------------------------------------------------------------------------------------
33755 -- 4262811a Switch Sign
33756 ---------------------------------------------------------------------------------------------------
33757 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
33758 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33759 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33760 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33761 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33762 -- 5132302
33763 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33764 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33765
33766 END IF;
33767
33768 -- 4955764
33769 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33770 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33771
33772
33773 XLA_AE_LINES_PKG.ValidateCurrentLine;
33774 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33775
33776 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33777 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33778 ,p_balance_type_code => l_balance_type_code);
33779
33780 END IF;
33781
33782 -----------------------------------------------------------------------------------------
33783 -- 4262811 Multiperiod Accounting
33784 -----------------------------------------------------------------------------------------
33785 -- No MPA option is assigned.
33786
33787
33788 END IF;
33789 END IF;
33790 --
33791
33792 --
33793 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33794 trace
33795 (p_msg => 'END of AcctLineType_93'
33796 ,p_level => C_LEVEL_PROCEDURE
33797 ,p_module => l_log_module);
33798 END IF;
33799 --
33800 EXCEPTION
33801 WHEN xla_exceptions_pkg.application_exception THEN
33802 RAISE;
33803 WHEN OTHERS THEN
33804 xla_exceptions_pkg.raise_message
33805 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_93');
33806 END AcctLineType_93;
33807 --
33808
33809 ---------------------------------------
33810 --
33811 -- PRIVATE FUNCTION
33812 -- AcctLineType_94
33813 --
33814 ---------------------------------------
33815 PROCEDURE AcctLineType_94 (
33816 p_application_id IN NUMBER
33817 ,p_event_id IN NUMBER
33818 ,p_calculate_acctd_flag IN VARCHAR2
33819 ,p_calculate_g_l_flag IN VARCHAR2
33820 ,p_actual_flag IN OUT VARCHAR2
33821 ,p_balance_type_code OUT VARCHAR2
33822 ,p_gain_or_loss_ref OUT VARCHAR2
33823
33824 --Transaction Account
33825 , p_source_1 IN NUMBER
33826 --Journal Line Type
33827 , p_source_2 IN VARCHAR2
33828 --Entered Amount
33829 , p_source_3 IN NUMBER
33830 --First Distribution Identifier
33831 , p_source_5 IN NUMBER
33832 --Distribution Type
33833 , p_source_6 IN VARCHAR2
33834 --Currency Code
33835 , p_source_7 IN VARCHAR2
33836 --Currency Conversion Date
33837 , p_source_8 IN DATE
33838 --Currency Conversion Rate
33839 , p_source_9 IN NUMBER
33840 --Currency Conversion Type
33841 , p_source_10 IN VARCHAR2
33842 --Accounted Amount
33846
33843 , p_source_11 IN NUMBER
33844 )
33845 IS
33847 l_component_type VARCHAR2(80);
33848 l_component_code VARCHAR2(30);
33849 l_component_type_code VARCHAR2(1);
33850 l_component_appl_id INTEGER;
33851 l_amb_context_code VARCHAR2(30);
33852 l_entity_code VARCHAR2(30);
33853 l_event_class_code VARCHAR2(30);
33854 l_ae_header_id NUMBER;
33855 l_event_type_code VARCHAR2(30);
33856 l_line_definition_code VARCHAR2(30);
33857 l_line_definition_owner_code VARCHAR2(1);
33858 --
33859 -- adr variables
33860 l_segment VARCHAR2(30);
33861 l_ccid NUMBER;
33862 l_adr_transaction_coa_id NUMBER;
33863 l_adr_accounting_coa_id NUMBER;
33864 l_adr_flexfield_segment_code VARCHAR2(30);
33865 l_adr_flex_value_set_id NUMBER;
33866 l_adr_value_type_code VARCHAR2(30);
33867 l_adr_value_combination_id NUMBER;
33868 l_adr_value_segment_code VARCHAR2(30);
33869
33870 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
33871 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
33872 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
33873 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
33874
33875 -- 4262811 Variables ------------------------------------------------------------------------------------------
33876 l_entered_amt_idx NUMBER;
33877 l_accted_amt_idx NUMBER;
33878 l_acc_rev_flag VARCHAR2(1);
33879 l_accrual_line_num NUMBER;
33880 l_tmp_amt NUMBER;
33881 l_acc_rev_natural_side_code VARCHAR2(1);
33882
33883 l_num_entries NUMBER;
33884 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
33885 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
33886 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
33887 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
33888 l_recog_line_1 NUMBER;
33889 l_recog_line_2 NUMBER;
33890
33891 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
33892 l_bflow_applied_to_amt NUMBER; -- 5132302
33893 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
33894
33895 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33896
33897 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
33898 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
33899
33900 ---------------------------------------------------------------------------------------------------------------
33901
33902
33903 --
33904 -- bulk performance
33905 --
33906 l_balance_type_code VARCHAR2(1);
33907 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
33908 l_log_module VARCHAR2(240);
33909
33910 --
33911 -- Upgrade strategy
33912 --
33913 l_actual_upg_option VARCHAR2(1);
33914 l_enc_upg_option VARCHAR2(1);
33915
33916 --
33917 BEGIN
33918 --
33919 IF g_log_enabled THEN
33920 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
33921 END IF;
33922 --
33923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33924
33925 trace
33926 (p_msg => 'BEGIN of AcctLineType_94'
33927 ,p_level => C_LEVEL_PROCEDURE
33928 ,p_module => l_log_module);
33929
33930 END IF;
33931 --
33932 l_component_type := 'AMB_JLT';
33933 l_component_code := 'EXP';
33934 l_component_type_code := 'S';
33935 l_component_appl_id := 555;
33936 l_amb_context_code := 'DEFAULT';
33937 l_entity_code := 'INVENTORY';
33938 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
33939 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_TP';
33940 l_line_definition_owner_code := 'S';
33941 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_TP';
33942 --
33943 l_balance_type_code := 'A';
33944 l_segment := NULL;
33945 l_ccid := NULL;
33946 l_adr_transaction_coa_id := NULL;
33947 l_adr_accounting_coa_id := NULL;
33948 l_adr_flexfield_segment_code := NULL;
33949 l_adr_flex_value_set_id := NULL;
33950 l_adr_value_type_code := NULL;
33951 l_adr_value_combination_id := NULL;
33952 l_adr_value_segment_code := NULL;
33953
33954 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
33955 l_bflow_class_code := ''; -- 4219869 Business Flow
33956 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
33957 l_budgetary_control_flag := 'N';
33958
33959 l_bflow_applied_to_amt_idx := NULL; -- 5132302
33960 l_bflow_applied_to_amt := NULL; -- 5132302
33961 l_entered_amt_idx := NULL; -- 4262811
33962 l_accted_amt_idx := NULL; -- 4262811
33963 l_acc_rev_flag := NULL; -- 4262811
33964 l_accrual_line_num := NULL; -- 4262811
33965 l_tmp_amt := NULL; -- 4262811
33966 --
33967
33968 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33969 l_balance_type_code <> 'B' THEN
33973
33970 IF NVL(p_source_2,'
33971 ') = 'EXP'
33972 THEN
33974 --
33975 XLA_AE_LINES_PKG.SetNewLine;
33976
33977 p_balance_type_code := l_balance_type_code;
33978 -- set the flag so later we will know whether the gain loss line needs to be created
33979
33980 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33981 p_actual_flag :='A';
33982 END IF;
33983
33984 --
33985 -- bulk performance
33986 --
33987 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33988 p_header_num => 0); -- 4262811
33989 --
33990 -- set accounting line options
33991 --
33992 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33993 p_natural_side_code => 'D'
33994 , p_gain_or_loss_flag => 'N'
33995 , p_gl_transfer_mode_code => 'D'
33996 , p_acct_entry_type_code => 'A'
33997 , p_switch_side_flag => 'Y'
33998 , p_merge_duplicate_code => 'W'
33999 );
34000 --
34001 l_acc_rev_natural_side_code := 'C'; -- 4262811
34002 --
34003 --
34004 -- set accounting line type info
34005 --
34006 xla_ae_lines_pkg.SetAcctLineType
34007 (p_component_type => l_component_type
34008 ,p_event_type_code => l_event_type_code
34009 ,p_line_definition_owner_code => l_line_definition_owner_code
34010 ,p_line_definition_code => l_line_definition_code
34011 ,p_accounting_line_code => l_component_code
34012 ,p_accounting_line_type_code => l_component_type_code
34013 ,p_accounting_line_appl_id => l_component_appl_id
34014 ,p_amb_context_code => l_amb_context_code
34015 ,p_entity_code => l_entity_code
34016 ,p_event_class_code => l_event_class_code);
34017 --
34018 -- set accounting class
34019 --
34020 xla_ae_lines_pkg.SetAcctClass(
34021 p_accounting_class_code => 'EXPENSE'
34022 , p_ae_header_id => l_ae_header_id
34023 );
34024
34025 --
34026 -- set rounding class
34027 --
34028 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34029 'EXPENSE';
34030
34031 --
34032 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34033 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34034 --
34035 -- bulk performance
34036 --
34037 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34038
34039 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34040 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34041
34042 -- 4955764
34043 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34044 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34045
34046 -- 4458381 Public Sector Enh
34047
34048 --
34049 -- set accounting attributes for the line type
34050 --
34051 l_entered_amt_idx := 3;
34052 l_accted_amt_idx := 8;
34053 l_bflow_applied_to_amt_idx := NULL; -- 5132302
34054 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34055 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
34056 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34057 l_rec_acct_attrs.array_char_value(2) := p_source_6;
34058 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34059 l_rec_acct_attrs.array_num_value(3) := p_source_3;
34060 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34061 l_rec_acct_attrs.array_char_value(4) := p_source_7;
34062 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34063 l_rec_acct_attrs.array_date_value(5) := p_source_8;
34064 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34065 l_rec_acct_attrs.array_num_value(6) := p_source_9;
34066 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34067 l_rec_acct_attrs.array_char_value(7) := p_source_10;
34068 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34069 l_rec_acct_attrs.array_num_value(8) := p_source_11;
34070
34071 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34072 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34073
34074 ---------------------------------------------------------------------------------------------------------------
34075 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34076 ---------------------------------------------------------------------------------------------------------------
34077 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34078
34079 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34080 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34081
34082 IF xla_accounting_cache_pkg.GetValueChar
34083 (p_source_code => 'LEDGER_CATEGORY_CODE'
34087 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34084 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34085 AND l_bflow_method_code = 'PRIOR_ENTRY'
34086 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34088 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34089 )
34090 THEN
34091 xla_ae_lines_pkg.BflowUpgEntry
34092 (p_business_method_code => l_bflow_method_code
34093 ,p_business_class_code => l_bflow_class_code
34094 ,p_balance_type => l_balance_type_code);
34095 ELSE
34096 NULL;
34097 -- No business flow processing for business flow method of NONE.
34098 END IF;
34099
34100 --
34101 -- call analytical criteria
34102 --
34103
34104 --
34105 -- call description
34106 --
34107 -- No description or it is inherited.
34108 --
34109 -- call ADRs
34110 -- Bug 4922099
34111 --
34112 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34113 (NVL(l_actual_upg_option, 'N') = 'O') OR
34114 (NVL(l_enc_upg_option, 'N') = 'O')
34115 )
34116 THEN
34117 NULL;
34118 --
34119 --
34120
34121 l_ccid := AcctDerRule_12(
34122 p_application_id => p_application_id
34123 , p_ae_header_id => l_ae_header_id
34124 , p_source_1 => p_source_1
34125 , p_source_2 => p_source_2
34126 , x_transaction_coa_id => l_adr_transaction_coa_id
34127 , x_accounting_coa_id => l_adr_accounting_coa_id
34128 , x_value_type_code => l_adr_value_type_code
34129 , p_side => 'NA'
34130 );
34131
34132 xla_ae_lines_pkg.set_ccid(
34133 p_code_combination_id => l_ccid
34134 , p_value_type_code => l_adr_value_type_code
34135 , p_transaction_coa_id => l_adr_transaction_coa_id
34136 , p_accounting_coa_id => l_adr_accounting_coa_id
34137 , p_adr_code => 'EXP'
34138 , p_adr_type_code => 'S'
34139 , p_component_type => l_component_type
34140 , p_component_code => l_component_code
34141 , p_component_type_code => l_component_type_code
34142 , p_component_appl_id => l_component_appl_id
34143 , p_amb_context_code => l_amb_context_code
34144 , p_side => 'NA'
34145 );
34146
34147
34148 --
34149 --
34150 END IF;
34151 --
34152 -- Bug 4922099
34153 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34154 (NVL(l_enc_upg_option, 'N') = 'O')
34155 ) AND
34156 (l_bflow_method_code = 'PRIOR_ENTRY')
34157 )
34158 THEN
34159 IF
34160 --
34161 1 = 2
34162 --
34163 THEN
34164 xla_accounting_err_pkg.build_message
34165 (p_appli_s_name => 'XLA'
34166 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34167 ,p_token_1 => 'LINE_NUMBER'
34168 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
34169 ,p_token_2 => 'LINE_TYPE_NAME'
34170 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
34171 l_component_type
34172 ,l_component_code
34173 ,l_component_type_code
34174 ,l_component_appl_id
34175 ,l_amb_context_code
34176 ,l_entity_code
34177 ,l_event_class_code
34178 )
34179 ,p_token_3 => 'OWNER'
34180 ,p_value_3 => xla_lookups_pkg.get_meaning(
34181 p_lookup_type => 'XLA_OWNER_TYPE'
34182 ,p_lookup_code => l_component_type_code
34183 )
34184 ,p_token_4 => 'PRODUCT_NAME'
34185 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34186 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34187 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34188 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34189 ,p_ae_header_id => NULL
34190 );
34191
34192 IF (C_LEVEL_ERROR>= g_log_level) THEN
34193 trace
34197 END IF;
34194 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34195 ,p_level => C_LEVEL_ERROR
34196 ,p_module => l_log_module);
34198 END IF;
34199 END IF;
34200 --
34201 --
34202 ------------------------------------------------------------------------------------------------
34203 -- 4219869 Business Flow
34204 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34205 -- Prior Entry. Currently, the following code is always generated.
34206 ------------------------------------------------------------------------------------------------
34207 XLA_AE_LINES_PKG.ValidateCurrentLine;
34208
34209 ------------------------------------------------------------------------------------
34210 -- 4219869 Business Flow
34211 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34212 ------------------------------------------------------------------------------------
34213 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34214
34215 ----------------------------------------------------------------------------------
34216 -- 4219869 Business Flow
34217 -- Update journal entry status -- Need to generate this within IF <condition>
34218 ----------------------------------------------------------------------------------
34219 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34220 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34221 ,p_balance_type_code => l_balance_type_code
34222 );
34223
34224 -------------------------------------------------------------------------------------------
34225 -- 4262811 - Generate the Accrual Reversal lines
34226 -------------------------------------------------------------------------------------------
34227 BEGIN
34228 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34229 (g_array_event(p_event_id).array_value_num('header_index'));
34230 IF l_acc_rev_flag IS NULL THEN
34231 l_acc_rev_flag := 'N';
34232 END IF;
34233 EXCEPTION
34234 WHEN OTHERS THEN
34235 l_acc_rev_flag := 'N';
34236 END;
34237 --
34238 IF (l_acc_rev_flag = 'Y') THEN
34239
34240 -- 4645092 ------------------------------------------------------------------------------
34241 -- To allow MPA report to determine if it should generate report process
34242 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34243 ------------------------------------------------------------------------------------------
34244
34245 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34246 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34247 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
34248 -- call ADRs
34249 -- Bug 4922099
34250 --
34251 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34252 (NVL(l_actual_upg_option, 'N') = 'O') OR
34253 (NVL(l_enc_upg_option, 'N') = 'O')
34254 )
34255 THEN
34256 NULL;
34257 --
34258 --
34259
34260 l_ccid := AcctDerRule_12(
34261 p_application_id => p_application_id
34262 , p_ae_header_id => l_ae_header_id
34263 , p_source_1 => p_source_1
34264 , p_source_2 => p_source_2
34265 , x_transaction_coa_id => l_adr_transaction_coa_id
34266 , x_accounting_coa_id => l_adr_accounting_coa_id
34267 , x_value_type_code => l_adr_value_type_code
34268 , p_side => 'NA'
34269 );
34270
34271 xla_ae_lines_pkg.set_ccid(
34272 p_code_combination_id => l_ccid
34273 , p_value_type_code => l_adr_value_type_code
34274 , p_transaction_coa_id => l_adr_transaction_coa_id
34275 , p_accounting_coa_id => l_adr_accounting_coa_id
34276 , p_adr_code => 'EXP'
34277 , p_adr_type_code => 'S'
34278 , p_component_type => l_component_type
34279 , p_component_code => l_component_code
34280 , p_component_type_code => l_component_type_code
34281 , p_component_appl_id => l_component_appl_id
34282 , p_amb_context_code => l_amb_context_code
34283 , p_side => 'NA'
34284 );
34285
34286
34287 --
34288 --
34289 END IF;
34290
34291 --
34292 -- Update the line information that should be overwritten
34293 --
34294 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34295 p_header_num => 1);
34296 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
34297
34298 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34299
34300 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
34301 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34302 END IF;
34303
34304 --
34305 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34306 --
34310 ---------------------------------------------------------------------------------------------------
34307 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34308 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
34309 ELSE
34311 -- 4262811a Switch Sign
34312 ---------------------------------------------------------------------------------------------------
34313 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
34314 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34315 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34316 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34317 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34318 -- 5132302
34319 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34320 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34321
34322 END IF;
34323
34324 -- 4955764
34325 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34326 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34327
34328
34329 XLA_AE_LINES_PKG.ValidateCurrentLine;
34330 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34331
34332 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34333 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34334 ,p_balance_type_code => l_balance_type_code);
34335
34336 END IF;
34337
34338 -----------------------------------------------------------------------------------------
34339 -- 4262811 Multiperiod Accounting
34340 -----------------------------------------------------------------------------------------
34341 -- No MPA option is assigned.
34342
34343
34344 END IF;
34345 END IF;
34346 --
34347
34348 --
34349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34350 trace
34351 (p_msg => 'END of AcctLineType_94'
34352 ,p_level => C_LEVEL_PROCEDURE
34353 ,p_module => l_log_module);
34354 END IF;
34355 --
34356 EXCEPTION
34357 WHEN xla_exceptions_pkg.application_exception THEN
34358 RAISE;
34359 WHEN OTHERS THEN
34360 xla_exceptions_pkg.raise_message
34361 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_94');
34362 END AcctLineType_94;
34363 --
34364
34365 ---------------------------------------
34366 --
34367 -- PRIVATE FUNCTION
34368 -- AcctLineType_95
34369 --
34370 ---------------------------------------
34371 PROCEDURE AcctLineType_95 (
34372 p_application_id IN NUMBER
34373 ,p_event_id IN NUMBER
34374 ,p_calculate_acctd_flag IN VARCHAR2
34375 ,p_calculate_g_l_flag IN VARCHAR2
34376 ,p_actual_flag IN OUT VARCHAR2
34377 ,p_balance_type_code OUT VARCHAR2
34378 ,p_gain_or_loss_ref OUT VARCHAR2
34379
34380 --Transaction Account
34381 , p_source_1 IN NUMBER
34382 --Journal Line Type
34383 , p_source_2 IN VARCHAR2
34384 --Entered Amount
34385 , p_source_3 IN NUMBER
34386 --First Distribution Identifier
34387 , p_source_5 IN NUMBER
34388 --Distribution Type
34389 , p_source_6 IN VARCHAR2
34390 --Currency Code
34391 , p_source_7 IN VARCHAR2
34392 --Currency Conversion Date
34393 , p_source_8 IN DATE
34394 --Currency Conversion Rate
34395 , p_source_9 IN NUMBER
34396 --Currency Conversion Type
34397 , p_source_10 IN VARCHAR2
34398 --Accounted Amount
34399 , p_source_11 IN NUMBER
34400 )
34401 IS
34402
34403 l_component_type VARCHAR2(80);
34404 l_component_code VARCHAR2(30);
34405 l_component_type_code VARCHAR2(1);
34406 l_component_appl_id INTEGER;
34407 l_amb_context_code VARCHAR2(30);
34408 l_entity_code VARCHAR2(30);
34409 l_event_class_code VARCHAR2(30);
34410 l_ae_header_id NUMBER;
34411 l_event_type_code VARCHAR2(30);
34412 l_line_definition_code VARCHAR2(30);
34413 l_line_definition_owner_code VARCHAR2(1);
34414 --
34415 -- adr variables
34416 l_segment VARCHAR2(30);
34417 l_ccid NUMBER;
34418 l_adr_transaction_coa_id NUMBER;
34419 l_adr_accounting_coa_id NUMBER;
34420 l_adr_flexfield_segment_code VARCHAR2(30);
34421 l_adr_flex_value_set_id NUMBER;
34422 l_adr_value_type_code VARCHAR2(30);
34423 l_adr_value_combination_id NUMBER;
34424 l_adr_value_segment_code VARCHAR2(30);
34425
34426 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
34427 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
34428 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
34429 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
34430
34431 -- 4262811 Variables ------------------------------------------------------------------------------------------
34432 l_entered_amt_idx NUMBER;
34436 l_tmp_amt NUMBER;
34433 l_accted_amt_idx NUMBER;
34434 l_acc_rev_flag VARCHAR2(1);
34435 l_accrual_line_num NUMBER;
34437 l_acc_rev_natural_side_code VARCHAR2(1);
34438
34439 l_num_entries NUMBER;
34440 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
34441 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
34442 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
34443 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
34444 l_recog_line_1 NUMBER;
34445 l_recog_line_2 NUMBER;
34446
34447 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
34448 l_bflow_applied_to_amt NUMBER; -- 5132302
34449 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
34450
34451 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34452
34453 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
34454 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
34455
34456 ---------------------------------------------------------------------------------------------------------------
34457
34458
34459 --
34460 -- bulk performance
34461 --
34462 l_balance_type_code VARCHAR2(1);
34463 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
34464 l_log_module VARCHAR2(240);
34465
34466 --
34467 -- Upgrade strategy
34468 --
34469 l_actual_upg_option VARCHAR2(1);
34470 l_enc_upg_option VARCHAR2(1);
34471
34472 --
34473 BEGIN
34474 --
34475 IF g_log_enabled THEN
34476 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
34477 END IF;
34478 --
34479 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34480
34481 trace
34482 (p_msg => 'BEGIN of AcctLineType_95'
34483 ,p_level => C_LEVEL_PROCEDURE
34484 ,p_module => l_log_module);
34485
34486 END IF;
34487 --
34488 l_component_type := 'AMB_JLT';
34489 l_component_code := 'EXP';
34490 l_component_type_code := 'S';
34491 l_component_appl_id := 555;
34492 l_amb_context_code := 'DEFAULT';
34493 l_entity_code := 'INVENTORY';
34494 l_event_class_code := 'LOG_INTERCOMPANY';
34495 l_event_type_code := 'LOG_IC_RCPT_RETURN';
34496 l_line_definition_owner_code := 'S';
34497 l_line_definition_code := 'LOG_IC_RCPT_RETURN';
34498 --
34499 l_balance_type_code := 'A';
34500 l_segment := NULL;
34501 l_ccid := NULL;
34502 l_adr_transaction_coa_id := NULL;
34503 l_adr_accounting_coa_id := NULL;
34504 l_adr_flexfield_segment_code := NULL;
34505 l_adr_flex_value_set_id := NULL;
34506 l_adr_value_type_code := NULL;
34507 l_adr_value_combination_id := NULL;
34508 l_adr_value_segment_code := NULL;
34509
34510 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
34511 l_bflow_class_code := ''; -- 4219869 Business Flow
34512 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
34513 l_budgetary_control_flag := 'N';
34514
34515 l_bflow_applied_to_amt_idx := NULL; -- 5132302
34516 l_bflow_applied_to_amt := NULL; -- 5132302
34517 l_entered_amt_idx := NULL; -- 4262811
34518 l_accted_amt_idx := NULL; -- 4262811
34519 l_acc_rev_flag := NULL; -- 4262811
34520 l_accrual_line_num := NULL; -- 4262811
34521 l_tmp_amt := NULL; -- 4262811
34522 --
34523
34524 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34525 l_balance_type_code <> 'B' THEN
34526 IF NVL(p_source_2,'
34527 ') = 'EXP'
34528 THEN
34529
34530 --
34531 XLA_AE_LINES_PKG.SetNewLine;
34532
34533 p_balance_type_code := l_balance_type_code;
34534 -- set the flag so later we will know whether the gain loss line needs to be created
34535
34536 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34537 p_actual_flag :='A';
34538 END IF;
34539
34540 --
34541 -- bulk performance
34542 --
34543 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34544 p_header_num => 0); -- 4262811
34545 --
34546 -- set accounting line options
34547 --
34548 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34549 p_natural_side_code => 'D'
34550 , p_gain_or_loss_flag => 'N'
34551 , p_gl_transfer_mode_code => 'D'
34552 , p_acct_entry_type_code => 'A'
34553 , p_switch_side_flag => 'Y'
34554 , p_merge_duplicate_code => 'W'
34555 );
34556 --
34557 l_acc_rev_natural_side_code := 'C'; -- 4262811
34558 --
34559 --
34560 -- set accounting line type info
34561 --
34562 xla_ae_lines_pkg.SetAcctLineType
34563 (p_component_type => l_component_type
34564 ,p_event_type_code => l_event_type_code
34565 ,p_line_definition_owner_code => l_line_definition_owner_code
34569 ,p_accounting_line_appl_id => l_component_appl_id
34566 ,p_line_definition_code => l_line_definition_code
34567 ,p_accounting_line_code => l_component_code
34568 ,p_accounting_line_type_code => l_component_type_code
34570 ,p_amb_context_code => l_amb_context_code
34571 ,p_entity_code => l_entity_code
34572 ,p_event_class_code => l_event_class_code);
34573 --
34574 -- set accounting class
34575 --
34576 xla_ae_lines_pkg.SetAcctClass(
34577 p_accounting_class_code => 'EXPENSE'
34578 , p_ae_header_id => l_ae_header_id
34579 );
34580
34581 --
34582 -- set rounding class
34583 --
34584 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34585 'EXPENSE';
34586
34587 --
34588 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34589 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34590 --
34591 -- bulk performance
34592 --
34593 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34594
34595 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34596 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34597
34598 -- 4955764
34599 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34600 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34601
34602 -- 4458381 Public Sector Enh
34603
34604 --
34605 -- set accounting attributes for the line type
34606 --
34607 l_entered_amt_idx := 3;
34608 l_accted_amt_idx := 8;
34609 l_bflow_applied_to_amt_idx := NULL; -- 5132302
34610 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34611 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
34612 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34613 l_rec_acct_attrs.array_char_value(2) := p_source_6;
34614 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34615 l_rec_acct_attrs.array_num_value(3) := p_source_3;
34616 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34617 l_rec_acct_attrs.array_char_value(4) := p_source_7;
34618 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34619 l_rec_acct_attrs.array_date_value(5) := p_source_8;
34620 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34621 l_rec_acct_attrs.array_num_value(6) := p_source_9;
34622 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34623 l_rec_acct_attrs.array_char_value(7) := p_source_10;
34624 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34625 l_rec_acct_attrs.array_num_value(8) := p_source_11;
34626
34627 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34628 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34629
34630 ---------------------------------------------------------------------------------------------------------------
34631 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34632 ---------------------------------------------------------------------------------------------------------------
34633 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34634
34635 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34636 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34637
34638 IF xla_accounting_cache_pkg.GetValueChar
34639 (p_source_code => 'LEDGER_CATEGORY_CODE'
34640 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34641 AND l_bflow_method_code = 'PRIOR_ENTRY'
34642 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34643 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34644 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34645 )
34646 THEN
34647 xla_ae_lines_pkg.BflowUpgEntry
34648 (p_business_method_code => l_bflow_method_code
34649 ,p_business_class_code => l_bflow_class_code
34650 ,p_balance_type => l_balance_type_code);
34651 ELSE
34652 NULL;
34653 -- No business flow processing for business flow method of NONE.
34654 END IF;
34655
34656 --
34657 -- call analytical criteria
34658 --
34659
34660 --
34661 -- call description
34662 --
34663 -- No description or it is inherited.
34664 --
34665 -- call ADRs
34666 -- Bug 4922099
34667 --
34668 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34669 (NVL(l_actual_upg_option, 'N') = 'O') OR
34670 (NVL(l_enc_upg_option, 'N') = 'O')
34671 )
34672 THEN
34673 NULL;
34674 --
34675 --
34676
34677 l_ccid := AcctDerRule_12(
34678 p_application_id => p_application_id
34679 , p_ae_header_id => l_ae_header_id
34680 , p_source_1 => p_source_1
34681 , p_source_2 => p_source_2
34685 , p_side => 'NA'
34682 , x_transaction_coa_id => l_adr_transaction_coa_id
34683 , x_accounting_coa_id => l_adr_accounting_coa_id
34684 , x_value_type_code => l_adr_value_type_code
34686 );
34687
34688 xla_ae_lines_pkg.set_ccid(
34689 p_code_combination_id => l_ccid
34690 , p_value_type_code => l_adr_value_type_code
34691 , p_transaction_coa_id => l_adr_transaction_coa_id
34692 , p_accounting_coa_id => l_adr_accounting_coa_id
34693 , p_adr_code => 'EXP'
34694 , p_adr_type_code => 'S'
34695 , p_component_type => l_component_type
34696 , p_component_code => l_component_code
34697 , p_component_type_code => l_component_type_code
34698 , p_component_appl_id => l_component_appl_id
34699 , p_amb_context_code => l_amb_context_code
34700 , p_side => 'NA'
34701 );
34702
34703
34704 --
34705 --
34706 END IF;
34707 --
34708 -- Bug 4922099
34709 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34710 (NVL(l_enc_upg_option, 'N') = 'O')
34711 ) AND
34712 (l_bflow_method_code = 'PRIOR_ENTRY')
34713 )
34714 THEN
34715 IF
34716 --
34717 1 = 2
34718 --
34719 THEN
34720 xla_accounting_err_pkg.build_message
34721 (p_appli_s_name => 'XLA'
34722 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34723 ,p_token_1 => 'LINE_NUMBER'
34724 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
34725 ,p_token_2 => 'LINE_TYPE_NAME'
34726 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
34727 l_component_type
34728 ,l_component_code
34729 ,l_component_type_code
34730 ,l_component_appl_id
34731 ,l_amb_context_code
34732 ,l_entity_code
34733 ,l_event_class_code
34734 )
34735 ,p_token_3 => 'OWNER'
34736 ,p_value_3 => xla_lookups_pkg.get_meaning(
34737 p_lookup_type => 'XLA_OWNER_TYPE'
34738 ,p_lookup_code => l_component_type_code
34739 )
34740 ,p_token_4 => 'PRODUCT_NAME'
34741 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34742 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34743 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34744 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34745 ,p_ae_header_id => NULL
34746 );
34747
34748 IF (C_LEVEL_ERROR>= g_log_level) THEN
34749 trace
34750 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34751 ,p_level => C_LEVEL_ERROR
34752 ,p_module => l_log_module);
34753 END IF;
34754 END IF;
34755 END IF;
34756 --
34757 --
34758 ------------------------------------------------------------------------------------------------
34759 -- 4219869 Business Flow
34760 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34761 -- Prior Entry. Currently, the following code is always generated.
34762 ------------------------------------------------------------------------------------------------
34763 XLA_AE_LINES_PKG.ValidateCurrentLine;
34764
34765 ------------------------------------------------------------------------------------
34766 -- 4219869 Business Flow
34767 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34768 ------------------------------------------------------------------------------------
34769 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34770
34771 ----------------------------------------------------------------------------------
34772 -- 4219869 Business Flow
34773 -- Update journal entry status -- Need to generate this within IF <condition>
34774 ----------------------------------------------------------------------------------
34778 );
34775 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34776 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34777 ,p_balance_type_code => l_balance_type_code
34779
34780 -------------------------------------------------------------------------------------------
34781 -- 4262811 - Generate the Accrual Reversal lines
34782 -------------------------------------------------------------------------------------------
34783 BEGIN
34784 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34785 (g_array_event(p_event_id).array_value_num('header_index'));
34786 IF l_acc_rev_flag IS NULL THEN
34787 l_acc_rev_flag := 'N';
34788 END IF;
34789 EXCEPTION
34790 WHEN OTHERS THEN
34791 l_acc_rev_flag := 'N';
34792 END;
34793 --
34794 IF (l_acc_rev_flag = 'Y') THEN
34795
34796 -- 4645092 ------------------------------------------------------------------------------
34797 -- To allow MPA report to determine if it should generate report process
34798 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34799 ------------------------------------------------------------------------------------------
34800
34801 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34802 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34803 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
34804 -- call ADRs
34805 -- Bug 4922099
34806 --
34807 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34808 (NVL(l_actual_upg_option, 'N') = 'O') OR
34809 (NVL(l_enc_upg_option, 'N') = 'O')
34810 )
34811 THEN
34812 NULL;
34813 --
34814 --
34815
34816 l_ccid := AcctDerRule_12(
34817 p_application_id => p_application_id
34818 , p_ae_header_id => l_ae_header_id
34819 , p_source_1 => p_source_1
34820 , p_source_2 => p_source_2
34821 , x_transaction_coa_id => l_adr_transaction_coa_id
34822 , x_accounting_coa_id => l_adr_accounting_coa_id
34823 , x_value_type_code => l_adr_value_type_code
34824 , p_side => 'NA'
34825 );
34826
34827 xla_ae_lines_pkg.set_ccid(
34828 p_code_combination_id => l_ccid
34829 , p_value_type_code => l_adr_value_type_code
34830 , p_transaction_coa_id => l_adr_transaction_coa_id
34831 , p_accounting_coa_id => l_adr_accounting_coa_id
34832 , p_adr_code => 'EXP'
34833 , p_adr_type_code => 'S'
34834 , p_component_type => l_component_type
34835 , p_component_code => l_component_code
34836 , p_component_type_code => l_component_type_code
34837 , p_component_appl_id => l_component_appl_id
34838 , p_amb_context_code => l_amb_context_code
34839 , p_side => 'NA'
34840 );
34841
34842
34843 --
34844 --
34845 END IF;
34846
34847 --
34848 -- Update the line information that should be overwritten
34849 --
34850 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34851 p_header_num => 1);
34852 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
34853
34854 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34855
34856 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
34857 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34858 END IF;
34859
34860 --
34861 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34862 --
34863 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34864 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
34865 ELSE
34866 ---------------------------------------------------------------------------------------------------
34867 -- 4262811a Switch Sign
34868 ---------------------------------------------------------------------------------------------------
34869 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
34870 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34871 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34872 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34873 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34874 -- 5132302
34875 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34876 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34877
34878 END IF;
34879
34880 -- 4955764
34881 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34882 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34883
34884
34888 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34885 XLA_AE_LINES_PKG.ValidateCurrentLine;
34886 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34887
34889 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34890 ,p_balance_type_code => l_balance_type_code);
34891
34892 END IF;
34893
34894 -----------------------------------------------------------------------------------------
34895 -- 4262811 Multiperiod Accounting
34896 -----------------------------------------------------------------------------------------
34897 -- No MPA option is assigned.
34898
34899
34900 END IF;
34901 END IF;
34902 --
34903
34904 --
34905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34906 trace
34907 (p_msg => 'END of AcctLineType_95'
34908 ,p_level => C_LEVEL_PROCEDURE
34909 ,p_module => l_log_module);
34910 END IF;
34911 --
34912 EXCEPTION
34913 WHEN xla_exceptions_pkg.application_exception THEN
34914 RAISE;
34915 WHEN OTHERS THEN
34916 xla_exceptions_pkg.raise_message
34917 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_95');
34918 END AcctLineType_95;
34919 --
34920
34921 ---------------------------------------
34922 --
34923 -- PRIVATE FUNCTION
34924 -- AcctLineType_96
34925 --
34926 ---------------------------------------
34927 PROCEDURE AcctLineType_96 (
34928 p_application_id IN NUMBER
34929 ,p_event_id IN NUMBER
34930 ,p_calculate_acctd_flag IN VARCHAR2
34931 ,p_calculate_g_l_flag IN VARCHAR2
34932 ,p_actual_flag IN OUT VARCHAR2
34933 ,p_balance_type_code OUT VARCHAR2
34934 ,p_gain_or_loss_ref OUT VARCHAR2
34935
34936 --Transaction Account
34937 , p_source_1 IN NUMBER
34938 --Journal Line Type
34939 , p_source_2 IN VARCHAR2
34940 --Entered Amount
34941 , p_source_3 IN NUMBER
34942 --First Distribution Identifier
34943 , p_source_5 IN NUMBER
34944 --Distribution Type
34945 , p_source_6 IN VARCHAR2
34946 --Currency Code
34947 , p_source_7 IN VARCHAR2
34948 --Currency Conversion Date
34949 , p_source_8 IN DATE
34950 --Currency Conversion Rate
34951 , p_source_9 IN NUMBER
34952 --Currency Conversion Type
34953 , p_source_10 IN VARCHAR2
34954 --Accounted Amount
34955 , p_source_11 IN NUMBER
34956 )
34957 IS
34958
34959 l_component_type VARCHAR2(80);
34960 l_component_code VARCHAR2(30);
34961 l_component_type_code VARCHAR2(1);
34962 l_component_appl_id INTEGER;
34963 l_amb_context_code VARCHAR2(30);
34964 l_entity_code VARCHAR2(30);
34965 l_event_class_code VARCHAR2(30);
34966 l_ae_header_id NUMBER;
34967 l_event_type_code VARCHAR2(30);
34968 l_line_definition_code VARCHAR2(30);
34969 l_line_definition_owner_code VARCHAR2(1);
34970 --
34971 -- adr variables
34972 l_segment VARCHAR2(30);
34973 l_ccid NUMBER;
34974 l_adr_transaction_coa_id NUMBER;
34975 l_adr_accounting_coa_id NUMBER;
34976 l_adr_flexfield_segment_code VARCHAR2(30);
34977 l_adr_flex_value_set_id NUMBER;
34978 l_adr_value_type_code VARCHAR2(30);
34979 l_adr_value_combination_id NUMBER;
34980 l_adr_value_segment_code VARCHAR2(30);
34981
34982 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
34983 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
34984 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
34985 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
34986
34987 -- 4262811 Variables ------------------------------------------------------------------------------------------
34988 l_entered_amt_idx NUMBER;
34989 l_accted_amt_idx NUMBER;
34990 l_acc_rev_flag VARCHAR2(1);
34991 l_accrual_line_num NUMBER;
34992 l_tmp_amt NUMBER;
34993 l_acc_rev_natural_side_code VARCHAR2(1);
34994
34995 l_num_entries NUMBER;
34996 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
34997 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
34998 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
34999 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
35000 l_recog_line_1 NUMBER;
35001 l_recog_line_2 NUMBER;
35002
35003 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
35004 l_bflow_applied_to_amt NUMBER; -- 5132302
35005 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
35006
35007 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35008
35009 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
35010 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
35011
35012 ---------------------------------------------------------------------------------------------------------------
35013
35014
35015 --
35016 -- bulk performance
35017 --
35018 l_balance_type_code VARCHAR2(1);
35022 --
35019 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
35020 l_log_module VARCHAR2(240);
35021
35023 -- Upgrade strategy
35024 --
35025 l_actual_upg_option VARCHAR2(1);
35026 l_enc_upg_option VARCHAR2(1);
35027
35028 --
35029 BEGIN
35030 --
35031 IF g_log_enabled THEN
35032 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
35033 END IF;
35034 --
35035 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35036
35037 trace
35038 (p_msg => 'BEGIN of AcctLineType_96'
35039 ,p_level => C_LEVEL_PROCEDURE
35040 ,p_module => l_log_module);
35041
35042 END IF;
35043 --
35044 l_component_type := 'AMB_JLT';
35045 l_component_code := 'EXP';
35046 l_component_type_code := 'S';
35047 l_component_appl_id := 555;
35048 l_amb_context_code := 'DEFAULT';
35049 l_entity_code := 'PURCHASING';
35050 l_event_class_code := 'DELIVER';
35051 l_event_type_code := 'XFER_TO_REGULAR';
35052 l_line_definition_owner_code := 'S';
35053 l_line_definition_code := 'XFER_TO_REG';
35054 --
35055 l_balance_type_code := 'A';
35056 l_segment := NULL;
35057 l_ccid := NULL;
35058 l_adr_transaction_coa_id := NULL;
35059 l_adr_accounting_coa_id := NULL;
35060 l_adr_flexfield_segment_code := NULL;
35061 l_adr_flex_value_set_id := NULL;
35062 l_adr_value_type_code := NULL;
35063 l_adr_value_combination_id := NULL;
35064 l_adr_value_segment_code := NULL;
35065
35066 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
35067 l_bflow_class_code := ''; -- 4219869 Business Flow
35068 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
35069 l_budgetary_control_flag := 'N';
35070
35071 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35072 l_bflow_applied_to_amt := NULL; -- 5132302
35073 l_entered_amt_idx := NULL; -- 4262811
35074 l_accted_amt_idx := NULL; -- 4262811
35075 l_acc_rev_flag := NULL; -- 4262811
35076 l_accrual_line_num := NULL; -- 4262811
35077 l_tmp_amt := NULL; -- 4262811
35078 --
35079
35080 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35081 l_balance_type_code <> 'B' THEN
35082 IF NVL(p_source_2,'
35083 ') = 'EXP'
35084 THEN
35085
35086 --
35087 XLA_AE_LINES_PKG.SetNewLine;
35088
35089 p_balance_type_code := l_balance_type_code;
35090 -- set the flag so later we will know whether the gain loss line needs to be created
35091
35092 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35093 p_actual_flag :='A';
35094 END IF;
35095
35096 --
35097 -- bulk performance
35098 --
35099 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35100 p_header_num => 0); -- 4262811
35101 --
35102 -- set accounting line options
35103 --
35104 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35105 p_natural_side_code => 'D'
35106 , p_gain_or_loss_flag => 'N'
35107 , p_gl_transfer_mode_code => 'D'
35108 , p_acct_entry_type_code => 'A'
35109 , p_switch_side_flag => 'Y'
35110 , p_merge_duplicate_code => 'W'
35111 );
35112 --
35113 l_acc_rev_natural_side_code := 'C'; -- 4262811
35114 --
35115 --
35116 -- set accounting line type info
35117 --
35118 xla_ae_lines_pkg.SetAcctLineType
35119 (p_component_type => l_component_type
35120 ,p_event_type_code => l_event_type_code
35121 ,p_line_definition_owner_code => l_line_definition_owner_code
35122 ,p_line_definition_code => l_line_definition_code
35123 ,p_accounting_line_code => l_component_code
35124 ,p_accounting_line_type_code => l_component_type_code
35125 ,p_accounting_line_appl_id => l_component_appl_id
35126 ,p_amb_context_code => l_amb_context_code
35127 ,p_entity_code => l_entity_code
35128 ,p_event_class_code => l_event_class_code);
35129 --
35130 -- set accounting class
35131 --
35132 xla_ae_lines_pkg.SetAcctClass(
35133 p_accounting_class_code => 'EXPENSE'
35134 , p_ae_header_id => l_ae_header_id
35135 );
35136
35137 --
35138 -- set rounding class
35139 --
35140 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35141 'EXPENSE';
35142
35143 --
35144 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35145 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35146 --
35147 -- bulk performance
35148 --
35149 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35150
35151 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35155 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35152 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35153
35154 -- 4955764
35156 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35157
35158 -- 4458381 Public Sector Enh
35159
35160 --
35161 -- set accounting attributes for the line type
35162 --
35163 l_entered_amt_idx := 3;
35164 l_accted_amt_idx := 8;
35165 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35166 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35167 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
35168 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35169 l_rec_acct_attrs.array_char_value(2) := p_source_6;
35170 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35171 l_rec_acct_attrs.array_num_value(3) := p_source_3;
35172 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35173 l_rec_acct_attrs.array_char_value(4) := p_source_7;
35174 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35175 l_rec_acct_attrs.array_date_value(5) := p_source_8;
35176 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35177 l_rec_acct_attrs.array_num_value(6) := p_source_9;
35178 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35179 l_rec_acct_attrs.array_char_value(7) := p_source_10;
35180 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35181 l_rec_acct_attrs.array_num_value(8) := p_source_11;
35182
35183 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35184 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35185
35186 ---------------------------------------------------------------------------------------------------------------
35187 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35188 ---------------------------------------------------------------------------------------------------------------
35189 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35190
35191 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35192 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35193
35194 IF xla_accounting_cache_pkg.GetValueChar
35195 (p_source_code => 'LEDGER_CATEGORY_CODE'
35196 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35197 AND l_bflow_method_code = 'PRIOR_ENTRY'
35198 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35199 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35200 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35201 )
35202 THEN
35203 xla_ae_lines_pkg.BflowUpgEntry
35204 (p_business_method_code => l_bflow_method_code
35205 ,p_business_class_code => l_bflow_class_code
35206 ,p_balance_type => l_balance_type_code);
35207 ELSE
35208 NULL;
35209 -- No business flow processing for business flow method of NONE.
35210 END IF;
35211
35212 --
35213 -- call analytical criteria
35214 --
35215
35216 --
35217 -- call description
35218 --
35219 -- No description or it is inherited.
35220 --
35221 -- call ADRs
35222 -- Bug 4922099
35223 --
35224 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35225 (NVL(l_actual_upg_option, 'N') = 'O') OR
35226 (NVL(l_enc_upg_option, 'N') = 'O')
35227 )
35228 THEN
35229 NULL;
35230 --
35231 --
35232
35233 l_ccid := AcctDerRule_12(
35234 p_application_id => p_application_id
35235 , p_ae_header_id => l_ae_header_id
35236 , p_source_1 => p_source_1
35237 , p_source_2 => p_source_2
35238 , x_transaction_coa_id => l_adr_transaction_coa_id
35239 , x_accounting_coa_id => l_adr_accounting_coa_id
35240 , x_value_type_code => l_adr_value_type_code
35241 , p_side => 'NA'
35242 );
35243
35244 xla_ae_lines_pkg.set_ccid(
35245 p_code_combination_id => l_ccid
35246 , p_value_type_code => l_adr_value_type_code
35247 , p_transaction_coa_id => l_adr_transaction_coa_id
35248 , p_accounting_coa_id => l_adr_accounting_coa_id
35249 , p_adr_code => 'EXP'
35250 , p_adr_type_code => 'S'
35251 , p_component_type => l_component_type
35252 , p_component_code => l_component_code
35253 , p_component_type_code => l_component_type_code
35254 , p_component_appl_id => l_component_appl_id
35255 , p_amb_context_code => l_amb_context_code
35256 , p_side => 'NA'
35257 );
35258
35259
35260 --
35261 --
35262 END IF;
35263 --
35264 -- Bug 4922099
35265 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35266 (NVL(l_enc_upg_option, 'N') = 'O')
35267 ) AND
35268 (l_bflow_method_code = 'PRIOR_ENTRY')
35269 )
35270 THEN
35271 IF
35272 --
35273 1 = 2
35277 (p_appli_s_name => 'XLA'
35274 --
35275 THEN
35276 xla_accounting_err_pkg.build_message
35278 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35279 ,p_token_1 => 'LINE_NUMBER'
35280 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
35281 ,p_token_2 => 'LINE_TYPE_NAME'
35282 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
35283 l_component_type
35284 ,l_component_code
35285 ,l_component_type_code
35286 ,l_component_appl_id
35287 ,l_amb_context_code
35288 ,l_entity_code
35289 ,l_event_class_code
35290 )
35291 ,p_token_3 => 'OWNER'
35292 ,p_value_3 => xla_lookups_pkg.get_meaning(
35293 p_lookup_type => 'XLA_OWNER_TYPE'
35294 ,p_lookup_code => l_component_type_code
35295 )
35296 ,p_token_4 => 'PRODUCT_NAME'
35297 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35298 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35299 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35300 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35301 ,p_ae_header_id => NULL
35302 );
35303
35304 IF (C_LEVEL_ERROR>= g_log_level) THEN
35305 trace
35306 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35307 ,p_level => C_LEVEL_ERROR
35308 ,p_module => l_log_module);
35309 END IF;
35310 END IF;
35311 END IF;
35312 --
35313 --
35314 ------------------------------------------------------------------------------------------------
35315 -- 4219869 Business Flow
35316 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35317 -- Prior Entry. Currently, the following code is always generated.
35318 ------------------------------------------------------------------------------------------------
35319 XLA_AE_LINES_PKG.ValidateCurrentLine;
35320
35321 ------------------------------------------------------------------------------------
35322 -- 4219869 Business Flow
35323 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35324 ------------------------------------------------------------------------------------
35325 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35326
35327 ----------------------------------------------------------------------------------
35328 -- 4219869 Business Flow
35329 -- Update journal entry status -- Need to generate this within IF <condition>
35330 ----------------------------------------------------------------------------------
35331 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35332 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35333 ,p_balance_type_code => l_balance_type_code
35334 );
35335
35336 -------------------------------------------------------------------------------------------
35337 -- 4262811 - Generate the Accrual Reversal lines
35338 -------------------------------------------------------------------------------------------
35339 BEGIN
35340 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35341 (g_array_event(p_event_id).array_value_num('header_index'));
35342 IF l_acc_rev_flag IS NULL THEN
35343 l_acc_rev_flag := 'N';
35344 END IF;
35345 EXCEPTION
35346 WHEN OTHERS THEN
35347 l_acc_rev_flag := 'N';
35348 END;
35349 --
35350 IF (l_acc_rev_flag = 'Y') THEN
35351
35352 -- 4645092 ------------------------------------------------------------------------------
35353 -- To allow MPA report to determine if it should generate report process
35354 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35355 ------------------------------------------------------------------------------------------
35356
35357 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35358 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35359 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
35360 -- call ADRs
35361 -- Bug 4922099
35365 (NVL(l_enc_upg_option, 'N') = 'O')
35362 --
35363 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35364 (NVL(l_actual_upg_option, 'N') = 'O') OR
35366 )
35367 THEN
35368 NULL;
35369 --
35370 --
35371
35372 l_ccid := AcctDerRule_12(
35373 p_application_id => p_application_id
35374 , p_ae_header_id => l_ae_header_id
35375 , p_source_1 => p_source_1
35376 , p_source_2 => p_source_2
35377 , x_transaction_coa_id => l_adr_transaction_coa_id
35378 , x_accounting_coa_id => l_adr_accounting_coa_id
35379 , x_value_type_code => l_adr_value_type_code
35380 , p_side => 'NA'
35381 );
35382
35383 xla_ae_lines_pkg.set_ccid(
35384 p_code_combination_id => l_ccid
35385 , p_value_type_code => l_adr_value_type_code
35386 , p_transaction_coa_id => l_adr_transaction_coa_id
35387 , p_accounting_coa_id => l_adr_accounting_coa_id
35388 , p_adr_code => 'EXP'
35389 , p_adr_type_code => 'S'
35390 , p_component_type => l_component_type
35391 , p_component_code => l_component_code
35392 , p_component_type_code => l_component_type_code
35393 , p_component_appl_id => l_component_appl_id
35394 , p_amb_context_code => l_amb_context_code
35395 , p_side => 'NA'
35396 );
35397
35398
35399 --
35400 --
35401 END IF;
35402
35403 --
35404 -- Update the line information that should be overwritten
35405 --
35406 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35407 p_header_num => 1);
35408 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
35409
35410 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35411
35412 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
35413 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35414 END IF;
35415
35416 --
35417 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35418 --
35419 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35420 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
35421 ELSE
35422 ---------------------------------------------------------------------------------------------------
35423 -- 4262811a Switch Sign
35424 ---------------------------------------------------------------------------------------------------
35425 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
35426 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35427 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35428 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35429 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35430 -- 5132302
35431 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35432 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35433
35434 END IF;
35435
35436 -- 4955764
35437 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35438 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35439
35440
35441 XLA_AE_LINES_PKG.ValidateCurrentLine;
35442 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35443
35444 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35445 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35446 ,p_balance_type_code => l_balance_type_code);
35447
35448 END IF;
35449
35450 -----------------------------------------------------------------------------------------
35451 -- 4262811 Multiperiod Accounting
35452 -----------------------------------------------------------------------------------------
35453 -- No MPA option is assigned.
35454
35455
35456 END IF;
35457 END IF;
35458 --
35459
35460 --
35461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35462 trace
35463 (p_msg => 'END of AcctLineType_96'
35464 ,p_level => C_LEVEL_PROCEDURE
35465 ,p_module => l_log_module);
35466 END IF;
35467 --
35468 EXCEPTION
35469 WHEN xla_exceptions_pkg.application_exception THEN
35470 RAISE;
35471 WHEN OTHERS THEN
35472 xla_exceptions_pkg.raise_message
35473 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_96');
35474 END AcctLineType_96;
35475 --
35476
35477 ---------------------------------------
35478 --
35479 -- PRIVATE FUNCTION
35480 -- AcctLineType_97
35481 --
35482 ---------------------------------------
35483 PROCEDURE AcctLineType_97 (
35484 p_application_id IN NUMBER
35488 ,p_actual_flag IN OUT VARCHAR2
35485 ,p_event_id IN NUMBER
35486 ,p_calculate_acctd_flag IN VARCHAR2
35487 ,p_calculate_g_l_flag IN VARCHAR2
35489 ,p_balance_type_code OUT VARCHAR2
35490 ,p_gain_or_loss_ref OUT VARCHAR2
35491
35492 --Transaction Account
35493 , p_source_1 IN NUMBER
35494 --Journal Line Type
35495 , p_source_2 IN VARCHAR2
35496 --Entered Amount
35497 , p_source_3 IN NUMBER
35498 --First Distribution Identifier
35499 , p_source_5 IN NUMBER
35500 --Distribution Type
35501 , p_source_6 IN VARCHAR2
35502 --Currency Code
35503 , p_source_7 IN VARCHAR2
35504 --Currency Conversion Date
35505 , p_source_8 IN DATE
35506 --Currency Conversion Rate
35507 , p_source_9 IN NUMBER
35508 --Currency Conversion Type
35509 , p_source_10 IN VARCHAR2
35510 --Accounted Amount
35511 , p_source_11 IN NUMBER
35512 )
35513 IS
35514
35515 l_component_type VARCHAR2(80);
35516 l_component_code VARCHAR2(30);
35517 l_component_type_code VARCHAR2(1);
35518 l_component_appl_id INTEGER;
35519 l_amb_context_code VARCHAR2(30);
35520 l_entity_code VARCHAR2(30);
35521 l_event_class_code VARCHAR2(30);
35522 l_ae_header_id NUMBER;
35523 l_event_type_code VARCHAR2(30);
35524 l_line_definition_code VARCHAR2(30);
35525 l_line_definition_owner_code VARCHAR2(1);
35526 --
35527 -- adr variables
35528 l_segment VARCHAR2(30);
35529 l_ccid NUMBER;
35530 l_adr_transaction_coa_id NUMBER;
35531 l_adr_accounting_coa_id NUMBER;
35532 l_adr_flexfield_segment_code VARCHAR2(30);
35533 l_adr_flex_value_set_id NUMBER;
35534 l_adr_value_type_code VARCHAR2(30);
35535 l_adr_value_combination_id NUMBER;
35536 l_adr_value_segment_code VARCHAR2(30);
35537
35538 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
35539 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
35540 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
35541 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
35542
35543 -- 4262811 Variables ------------------------------------------------------------------------------------------
35544 l_entered_amt_idx NUMBER;
35545 l_accted_amt_idx NUMBER;
35546 l_acc_rev_flag VARCHAR2(1);
35547 l_accrual_line_num NUMBER;
35548 l_tmp_amt NUMBER;
35549 l_acc_rev_natural_side_code VARCHAR2(1);
35550
35551 l_num_entries NUMBER;
35552 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
35553 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
35554 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
35555 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
35556 l_recog_line_1 NUMBER;
35557 l_recog_line_2 NUMBER;
35558
35559 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
35560 l_bflow_applied_to_amt NUMBER; -- 5132302
35561 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
35562
35563 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35564
35565 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
35566 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
35567
35568 ---------------------------------------------------------------------------------------------------------------
35569
35570
35571 --
35572 -- bulk performance
35573 --
35574 l_balance_type_code VARCHAR2(1);
35575 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
35576 l_log_module VARCHAR2(240);
35577
35578 --
35579 -- Upgrade strategy
35580 --
35581 l_actual_upg_option VARCHAR2(1);
35582 l_enc_upg_option VARCHAR2(1);
35583
35584 --
35585 BEGIN
35586 --
35587 IF g_log_enabled THEN
35588 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
35589 END IF;
35590 --
35591 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35592
35593 trace
35594 (p_msg => 'BEGIN of AcctLineType_97'
35595 ,p_level => C_LEVEL_PROCEDURE
35596 ,p_module => l_log_module);
35597
35598 END IF;
35599 --
35600 l_component_type := 'AMB_JLT';
35601 l_component_code := 'EXP';
35602 l_component_type_code := 'S';
35603 l_component_appl_id := 555;
35604 l_amb_context_code := 'DEFAULT';
35605 l_entity_code := 'PURCHASING';
35606 l_event_class_code := 'RECEIVE';
35607 l_event_type_code := 'DELIVER_EXPENSE';
35608 l_line_definition_owner_code := 'S';
35609 l_line_definition_code := 'DELIVER_EXPENSE';
35610 --
35611 l_balance_type_code := 'A';
35612 l_segment := NULL;
35613 l_ccid := NULL;
35614 l_adr_transaction_coa_id := NULL;
35615 l_adr_accounting_coa_id := NULL;
35616 l_adr_flexfield_segment_code := NULL;
35617 l_adr_flex_value_set_id := NULL;
35618 l_adr_value_type_code := NULL;
35622 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
35619 l_adr_value_combination_id := NULL;
35620 l_adr_value_segment_code := NULL;
35621
35623 l_bflow_class_code := ''; -- 4219869 Business Flow
35624 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
35625 l_budgetary_control_flag := 'N';
35626
35627 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35628 l_bflow_applied_to_amt := NULL; -- 5132302
35629 l_entered_amt_idx := NULL; -- 4262811
35630 l_accted_amt_idx := NULL; -- 4262811
35631 l_acc_rev_flag := NULL; -- 4262811
35632 l_accrual_line_num := NULL; -- 4262811
35633 l_tmp_amt := NULL; -- 4262811
35634 --
35635
35636 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35637 l_balance_type_code <> 'B' THEN
35638 IF NVL(p_source_2,'
35639 ') = 'EXP'
35640 THEN
35641
35642 --
35643 XLA_AE_LINES_PKG.SetNewLine;
35644
35645 p_balance_type_code := l_balance_type_code;
35646 -- set the flag so later we will know whether the gain loss line needs to be created
35647
35648 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35649 p_actual_flag :='A';
35650 END IF;
35651
35652 --
35653 -- bulk performance
35654 --
35655 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35656 p_header_num => 0); -- 4262811
35657 --
35658 -- set accounting line options
35659 --
35660 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35661 p_natural_side_code => 'D'
35662 , p_gain_or_loss_flag => 'N'
35663 , p_gl_transfer_mode_code => 'D'
35664 , p_acct_entry_type_code => 'A'
35665 , p_switch_side_flag => 'Y'
35666 , p_merge_duplicate_code => 'W'
35667 );
35668 --
35669 l_acc_rev_natural_side_code := 'C'; -- 4262811
35670 --
35671 --
35672 -- set accounting line type info
35673 --
35674 xla_ae_lines_pkg.SetAcctLineType
35675 (p_component_type => l_component_type
35676 ,p_event_type_code => l_event_type_code
35677 ,p_line_definition_owner_code => l_line_definition_owner_code
35678 ,p_line_definition_code => l_line_definition_code
35679 ,p_accounting_line_code => l_component_code
35680 ,p_accounting_line_type_code => l_component_type_code
35681 ,p_accounting_line_appl_id => l_component_appl_id
35682 ,p_amb_context_code => l_amb_context_code
35683 ,p_entity_code => l_entity_code
35684 ,p_event_class_code => l_event_class_code);
35685 --
35686 -- set accounting class
35687 --
35688 xla_ae_lines_pkg.SetAcctClass(
35689 p_accounting_class_code => 'EXPENSE'
35690 , p_ae_header_id => l_ae_header_id
35691 );
35692
35693 --
35694 -- set rounding class
35695 --
35696 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35697 'EXPENSE';
35698
35699 --
35700 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35701 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35702 --
35703 -- bulk performance
35704 --
35705 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35706
35707 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35708 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35709
35710 -- 4955764
35711 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35712 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35713
35714 -- 4458381 Public Sector Enh
35715
35716 --
35717 -- set accounting attributes for the line type
35718 --
35719 l_entered_amt_idx := 3;
35720 l_accted_amt_idx := 8;
35721 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35722 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35723 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
35724 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35725 l_rec_acct_attrs.array_char_value(2) := p_source_6;
35726 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35727 l_rec_acct_attrs.array_num_value(3) := p_source_3;
35728 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35729 l_rec_acct_attrs.array_char_value(4) := p_source_7;
35730 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35731 l_rec_acct_attrs.array_date_value(5) := p_source_8;
35732 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35733 l_rec_acct_attrs.array_num_value(6) := p_source_9;
35734 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35735 l_rec_acct_attrs.array_char_value(7) := p_source_10;
35736 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35740 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35737 l_rec_acct_attrs.array_num_value(8) := p_source_11;
35738
35739 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35741
35742 ---------------------------------------------------------------------------------------------------------------
35743 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35744 ---------------------------------------------------------------------------------------------------------------
35745 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35746
35747 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35748 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35749
35750 IF xla_accounting_cache_pkg.GetValueChar
35751 (p_source_code => 'LEDGER_CATEGORY_CODE'
35752 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35753 AND l_bflow_method_code = 'PRIOR_ENTRY'
35754 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35755 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35756 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35757 )
35758 THEN
35759 xla_ae_lines_pkg.BflowUpgEntry
35760 (p_business_method_code => l_bflow_method_code
35761 ,p_business_class_code => l_bflow_class_code
35762 ,p_balance_type => l_balance_type_code);
35763 ELSE
35764 NULL;
35765 -- No business flow processing for business flow method of NONE.
35766 END IF;
35767
35768 --
35769 -- call analytical criteria
35770 --
35771
35772 --
35773 -- call description
35774 --
35775 -- No description or it is inherited.
35776 --
35777 -- call ADRs
35778 -- Bug 4922099
35779 --
35780 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35781 (NVL(l_actual_upg_option, 'N') = 'O') OR
35782 (NVL(l_enc_upg_option, 'N') = 'O')
35783 )
35784 THEN
35785 NULL;
35786 --
35787 --
35788
35789 l_ccid := AcctDerRule_12(
35790 p_application_id => p_application_id
35791 , p_ae_header_id => l_ae_header_id
35792 , p_source_1 => p_source_1
35793 , p_source_2 => p_source_2
35794 , x_transaction_coa_id => l_adr_transaction_coa_id
35795 , x_accounting_coa_id => l_adr_accounting_coa_id
35796 , x_value_type_code => l_adr_value_type_code
35797 , p_side => 'NA'
35798 );
35799
35800 xla_ae_lines_pkg.set_ccid(
35801 p_code_combination_id => l_ccid
35802 , p_value_type_code => l_adr_value_type_code
35803 , p_transaction_coa_id => l_adr_transaction_coa_id
35804 , p_accounting_coa_id => l_adr_accounting_coa_id
35805 , p_adr_code => 'EXP'
35806 , p_adr_type_code => 'S'
35807 , p_component_type => l_component_type
35808 , p_component_code => l_component_code
35809 , p_component_type_code => l_component_type_code
35810 , p_component_appl_id => l_component_appl_id
35811 , p_amb_context_code => l_amb_context_code
35812 , p_side => 'NA'
35813 );
35814
35815
35816 --
35817 --
35818 END IF;
35819 --
35820 -- Bug 4922099
35821 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35822 (NVL(l_enc_upg_option, 'N') = 'O')
35823 ) AND
35824 (l_bflow_method_code = 'PRIOR_ENTRY')
35825 )
35826 THEN
35827 IF
35828 --
35829 1 = 2
35830 --
35831 THEN
35832 xla_accounting_err_pkg.build_message
35833 (p_appli_s_name => 'XLA'
35834 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35835 ,p_token_1 => 'LINE_NUMBER'
35836 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
35837 ,p_token_2 => 'LINE_TYPE_NAME'
35838 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
35839 l_component_type
35840 ,l_component_code
35841 ,l_component_type_code
35842 ,l_component_appl_id
35843 ,l_amb_context_code
35844 ,l_entity_code
35845 ,l_event_class_code
35846 )
35847 ,p_token_3 => 'OWNER'
35848 ,p_value_3 => xla_lookups_pkg.get_meaning(
35852 ,p_token_4 => 'PRODUCT_NAME'
35849 p_lookup_type => 'XLA_OWNER_TYPE'
35850 ,p_lookup_code => l_component_type_code
35851 )
35853 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35854 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35855 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35856 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35857 ,p_ae_header_id => NULL
35858 );
35859
35860 IF (C_LEVEL_ERROR>= g_log_level) THEN
35861 trace
35862 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35863 ,p_level => C_LEVEL_ERROR
35864 ,p_module => l_log_module);
35865 END IF;
35866 END IF;
35867 END IF;
35868 --
35869 --
35870 ------------------------------------------------------------------------------------------------
35871 -- 4219869 Business Flow
35872 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35873 -- Prior Entry. Currently, the following code is always generated.
35874 ------------------------------------------------------------------------------------------------
35875 XLA_AE_LINES_PKG.ValidateCurrentLine;
35876
35877 ------------------------------------------------------------------------------------
35878 -- 4219869 Business Flow
35879 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35880 ------------------------------------------------------------------------------------
35881 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35882
35883 ----------------------------------------------------------------------------------
35884 -- 4219869 Business Flow
35885 -- Update journal entry status -- Need to generate this within IF <condition>
35886 ----------------------------------------------------------------------------------
35887 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35888 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35889 ,p_balance_type_code => l_balance_type_code
35890 );
35891
35892 -------------------------------------------------------------------------------------------
35893 -- 4262811 - Generate the Accrual Reversal lines
35894 -------------------------------------------------------------------------------------------
35895 BEGIN
35896 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35897 (g_array_event(p_event_id).array_value_num('header_index'));
35898 IF l_acc_rev_flag IS NULL THEN
35899 l_acc_rev_flag := 'N';
35900 END IF;
35901 EXCEPTION
35902 WHEN OTHERS THEN
35903 l_acc_rev_flag := 'N';
35904 END;
35905 --
35906 IF (l_acc_rev_flag = 'Y') THEN
35907
35908 -- 4645092 ------------------------------------------------------------------------------
35909 -- To allow MPA report to determine if it should generate report process
35910 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35911 ------------------------------------------------------------------------------------------
35912
35913 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35914 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35915 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
35916 -- call ADRs
35917 -- Bug 4922099
35918 --
35919 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35920 (NVL(l_actual_upg_option, 'N') = 'O') OR
35921 (NVL(l_enc_upg_option, 'N') = 'O')
35922 )
35923 THEN
35924 NULL;
35925 --
35926 --
35927
35928 l_ccid := AcctDerRule_12(
35929 p_application_id => p_application_id
35930 , p_ae_header_id => l_ae_header_id
35931 , p_source_1 => p_source_1
35932 , p_source_2 => p_source_2
35933 , x_transaction_coa_id => l_adr_transaction_coa_id
35934 , x_accounting_coa_id => l_adr_accounting_coa_id
35935 , x_value_type_code => l_adr_value_type_code
35936 , p_side => 'NA'
35937 );
35938
35939 xla_ae_lines_pkg.set_ccid(
35940 p_code_combination_id => l_ccid
35941 , p_value_type_code => l_adr_value_type_code
35942 , p_transaction_coa_id => l_adr_transaction_coa_id
35943 , p_accounting_coa_id => l_adr_accounting_coa_id
35944 , p_adr_code => 'EXP'
35945 , p_adr_type_code => 'S'
35946 , p_component_type => l_component_type
35947 , p_component_code => l_component_code
35948 , p_component_type_code => l_component_type_code
35949 , p_component_appl_id => l_component_appl_id
35950 , p_amb_context_code => l_amb_context_code
35954
35951 , p_side => 'NA'
35952 );
35953
35955 --
35956 --
35957 END IF;
35958
35959 --
35960 -- Update the line information that should be overwritten
35961 --
35962 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35963 p_header_num => 1);
35964 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
35965
35966 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35967
35968 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
35969 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35970 END IF;
35971
35972 --
35973 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35974 --
35975 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35976 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
35977 ELSE
35978 ---------------------------------------------------------------------------------------------------
35979 -- 4262811a Switch Sign
35980 ---------------------------------------------------------------------------------------------------
35981 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
35982 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35983 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35984 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35985 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35986 -- 5132302
35987 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35988 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35989
35990 END IF;
35991
35992 -- 4955764
35993 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35994 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35995
35996
35997 XLA_AE_LINES_PKG.ValidateCurrentLine;
35998 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35999
36000 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36001 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36002 ,p_balance_type_code => l_balance_type_code);
36003
36004 END IF;
36005
36006 -----------------------------------------------------------------------------------------
36007 -- 4262811 Multiperiod Accounting
36008 -----------------------------------------------------------------------------------------
36009 -- No MPA option is assigned.
36010
36011
36012 END IF;
36013 END IF;
36014 --
36015
36016 --
36017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36018 trace
36019 (p_msg => 'END of AcctLineType_97'
36020 ,p_level => C_LEVEL_PROCEDURE
36021 ,p_module => l_log_module);
36022 END IF;
36023 --
36024 EXCEPTION
36025 WHEN xla_exceptions_pkg.application_exception THEN
36026 RAISE;
36027 WHEN OTHERS THEN
36028 xla_exceptions_pkg.raise_message
36029 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_97');
36030 END AcctLineType_97;
36031 --
36032
36033 ---------------------------------------
36034 --
36035 -- PRIVATE FUNCTION
36036 -- AcctLineType_98
36037 --
36038 ---------------------------------------
36039 PROCEDURE AcctLineType_98 (
36040 p_application_id IN NUMBER
36041 ,p_event_id IN NUMBER
36042 ,p_calculate_acctd_flag IN VARCHAR2
36043 ,p_calculate_g_l_flag IN VARCHAR2
36044 ,p_actual_flag IN OUT VARCHAR2
36045 ,p_balance_type_code OUT VARCHAR2
36046 ,p_gain_or_loss_ref OUT VARCHAR2
36047
36048 --Transaction Account
36049 , p_source_1 IN NUMBER
36050 --Journal Line Type
36051 , p_source_2 IN VARCHAR2
36052 --Entered Amount
36053 , p_source_3 IN NUMBER
36054 --First Distribution Identifier
36055 , p_source_5 IN NUMBER
36056 --Distribution Type
36057 , p_source_6 IN VARCHAR2
36058 --Currency Code
36059 , p_source_7 IN VARCHAR2
36060 --Currency Conversion Date
36061 , p_source_8 IN DATE
36062 --Currency Conversion Rate
36063 , p_source_9 IN NUMBER
36064 --Currency Conversion Type
36065 , p_source_10 IN VARCHAR2
36066 --Accounted Amount
36067 , p_source_11 IN NUMBER
36068 )
36069 IS
36070
36071 l_component_type VARCHAR2(80);
36072 l_component_code VARCHAR2(30);
36073 l_component_type_code VARCHAR2(1);
36074 l_component_appl_id INTEGER;
36075 l_amb_context_code VARCHAR2(30);
36076 l_entity_code VARCHAR2(30);
36077 l_event_class_code VARCHAR2(30);
36078 l_ae_header_id NUMBER;
36082 --
36079 l_event_type_code VARCHAR2(30);
36080 l_line_definition_code VARCHAR2(30);
36081 l_line_definition_owner_code VARCHAR2(1);
36083 -- adr variables
36084 l_segment VARCHAR2(30);
36085 l_ccid NUMBER;
36086 l_adr_transaction_coa_id NUMBER;
36087 l_adr_accounting_coa_id NUMBER;
36088 l_adr_flexfield_segment_code VARCHAR2(30);
36089 l_adr_flex_value_set_id NUMBER;
36090 l_adr_value_type_code VARCHAR2(30);
36091 l_adr_value_combination_id NUMBER;
36092 l_adr_value_segment_code VARCHAR2(30);
36093
36094 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
36095 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
36096 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
36097 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
36098
36099 -- 4262811 Variables ------------------------------------------------------------------------------------------
36100 l_entered_amt_idx NUMBER;
36101 l_accted_amt_idx NUMBER;
36102 l_acc_rev_flag VARCHAR2(1);
36103 l_accrual_line_num NUMBER;
36104 l_tmp_amt NUMBER;
36105 l_acc_rev_natural_side_code VARCHAR2(1);
36106
36107 l_num_entries NUMBER;
36108 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
36109 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
36110 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
36111 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
36112 l_recog_line_1 NUMBER;
36113 l_recog_line_2 NUMBER;
36114
36115 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
36116 l_bflow_applied_to_amt NUMBER; -- 5132302
36117 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
36118
36119 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36120
36121 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
36122 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
36123
36124 ---------------------------------------------------------------------------------------------------------------
36125
36126
36127 --
36128 -- bulk performance
36129 --
36130 l_balance_type_code VARCHAR2(1);
36131 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
36132 l_log_module VARCHAR2(240);
36133
36134 --
36135 -- Upgrade strategy
36136 --
36137 l_actual_upg_option VARCHAR2(1);
36138 l_enc_upg_option VARCHAR2(1);
36139
36140 --
36141 BEGIN
36142 --
36143 IF g_log_enabled THEN
36144 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
36145 END IF;
36146 --
36147 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36148
36149 trace
36150 (p_msg => 'BEGIN of AcctLineType_98'
36151 ,p_level => C_LEVEL_PROCEDURE
36152 ,p_module => l_log_module);
36153
36154 END IF;
36155 --
36156 l_component_type := 'AMB_JLT';
36157 l_component_code := 'EXP';
36158 l_component_type_code := 'S';
36159 l_component_appl_id := 555;
36160 l_amb_context_code := 'DEFAULT';
36161 l_entity_code := 'INVENTORY';
36162 l_event_class_code := 'DIR_INTERORG_SHIP';
36163 l_event_type_code := 'DIR_INTERORG_SHIP';
36164 l_line_definition_owner_code := 'S';
36165 l_line_definition_code := 'DIRECT_XFER_SHIP';
36166 --
36167 l_balance_type_code := 'A';
36168 l_segment := NULL;
36169 l_ccid := NULL;
36170 l_adr_transaction_coa_id := NULL;
36171 l_adr_accounting_coa_id := NULL;
36172 l_adr_flexfield_segment_code := NULL;
36173 l_adr_flex_value_set_id := NULL;
36174 l_adr_value_type_code := NULL;
36175 l_adr_value_combination_id := NULL;
36176 l_adr_value_segment_code := NULL;
36177
36178 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
36179 l_bflow_class_code := ''; -- 4219869 Business Flow
36180 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
36181 l_budgetary_control_flag := 'N';
36182
36183 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36184 l_bflow_applied_to_amt := NULL; -- 5132302
36185 l_entered_amt_idx := NULL; -- 4262811
36186 l_accted_amt_idx := NULL; -- 4262811
36187 l_acc_rev_flag := NULL; -- 4262811
36188 l_accrual_line_num := NULL; -- 4262811
36189 l_tmp_amt := NULL; -- 4262811
36190 --
36191
36192 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36193 l_balance_type_code <> 'B' THEN
36194 IF NVL(p_source_2,'
36195 ') = 'EXP'
36196 THEN
36197
36198 --
36199 XLA_AE_LINES_PKG.SetNewLine;
36200
36201 p_balance_type_code := l_balance_type_code;
36202 -- set the flag so later we will know whether the gain loss line needs to be created
36203
36204 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36205 p_actual_flag :='A';
36206 END IF;
36207
36208 --
36212 p_header_num => 0); -- 4262811
36209 -- bulk performance
36210 --
36211 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36213 --
36214 -- set accounting line options
36215 --
36216 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36217 p_natural_side_code => 'D'
36218 , p_gain_or_loss_flag => 'N'
36219 , p_gl_transfer_mode_code => 'D'
36220 , p_acct_entry_type_code => 'A'
36221 , p_switch_side_flag => 'Y'
36222 , p_merge_duplicate_code => 'W'
36223 );
36224 --
36225 l_acc_rev_natural_side_code := 'C'; -- 4262811
36226 --
36227 --
36228 -- set accounting line type info
36229 --
36230 xla_ae_lines_pkg.SetAcctLineType
36231 (p_component_type => l_component_type
36232 ,p_event_type_code => l_event_type_code
36233 ,p_line_definition_owner_code => l_line_definition_owner_code
36234 ,p_line_definition_code => l_line_definition_code
36235 ,p_accounting_line_code => l_component_code
36236 ,p_accounting_line_type_code => l_component_type_code
36237 ,p_accounting_line_appl_id => l_component_appl_id
36238 ,p_amb_context_code => l_amb_context_code
36239 ,p_entity_code => l_entity_code
36240 ,p_event_class_code => l_event_class_code);
36241 --
36242 -- set accounting class
36243 --
36244 xla_ae_lines_pkg.SetAcctClass(
36245 p_accounting_class_code => 'EXPENSE'
36246 , p_ae_header_id => l_ae_header_id
36247 );
36248
36249 --
36250 -- set rounding class
36251 --
36252 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36253 'EXPENSE';
36254
36255 --
36256 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36257 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36258 --
36259 -- bulk performance
36260 --
36261 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36262
36263 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36264 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36265
36266 -- 4955764
36267 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36268 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36269
36270 -- 4458381 Public Sector Enh
36271
36272 --
36273 -- set accounting attributes for the line type
36274 --
36275 l_entered_amt_idx := 3;
36276 l_accted_amt_idx := 8;
36277 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36278 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36279 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
36280 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36281 l_rec_acct_attrs.array_char_value(2) := p_source_6;
36282 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36283 l_rec_acct_attrs.array_num_value(3) := p_source_3;
36284 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36285 l_rec_acct_attrs.array_char_value(4) := p_source_7;
36286 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36287 l_rec_acct_attrs.array_date_value(5) := p_source_8;
36288 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36289 l_rec_acct_attrs.array_num_value(6) := p_source_9;
36290 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36291 l_rec_acct_attrs.array_char_value(7) := p_source_10;
36292 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36293 l_rec_acct_attrs.array_num_value(8) := p_source_11;
36294
36295 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36296 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36297
36298 ---------------------------------------------------------------------------------------------------------------
36299 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36300 ---------------------------------------------------------------------------------------------------------------
36301 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36302
36303 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36304 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36305
36306 IF xla_accounting_cache_pkg.GetValueChar
36307 (p_source_code => 'LEDGER_CATEGORY_CODE'
36308 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36309 AND l_bflow_method_code = 'PRIOR_ENTRY'
36310 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36311 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36312 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36313 )
36314 THEN
36315 xla_ae_lines_pkg.BflowUpgEntry
36319 ELSE
36316 (p_business_method_code => l_bflow_method_code
36317 ,p_business_class_code => l_bflow_class_code
36318 ,p_balance_type => l_balance_type_code);
36320 NULL;
36321 -- No business flow processing for business flow method of NONE.
36322 END IF;
36323
36324 --
36325 -- call analytical criteria
36326 --
36327
36328 --
36329 -- call description
36330 --
36331 -- No description or it is inherited.
36332 --
36333 -- call ADRs
36334 -- Bug 4922099
36335 --
36336 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36337 (NVL(l_actual_upg_option, 'N') = 'O') OR
36338 (NVL(l_enc_upg_option, 'N') = 'O')
36339 )
36340 THEN
36341 NULL;
36342 --
36343 --
36344
36345 l_ccid := AcctDerRule_12(
36346 p_application_id => p_application_id
36347 , p_ae_header_id => l_ae_header_id
36348 , p_source_1 => p_source_1
36349 , p_source_2 => p_source_2
36350 , x_transaction_coa_id => l_adr_transaction_coa_id
36351 , x_accounting_coa_id => l_adr_accounting_coa_id
36352 , x_value_type_code => l_adr_value_type_code
36353 , p_side => 'NA'
36354 );
36355
36356 xla_ae_lines_pkg.set_ccid(
36357 p_code_combination_id => l_ccid
36358 , p_value_type_code => l_adr_value_type_code
36359 , p_transaction_coa_id => l_adr_transaction_coa_id
36360 , p_accounting_coa_id => l_adr_accounting_coa_id
36361 , p_adr_code => 'EXP'
36362 , p_adr_type_code => 'S'
36363 , p_component_type => l_component_type
36364 , p_component_code => l_component_code
36365 , p_component_type_code => l_component_type_code
36366 , p_component_appl_id => l_component_appl_id
36367 , p_amb_context_code => l_amb_context_code
36368 , p_side => 'NA'
36369 );
36370
36371
36372 --
36373 --
36374 END IF;
36375 --
36376 -- Bug 4922099
36377 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36378 (NVL(l_enc_upg_option, 'N') = 'O')
36379 ) AND
36380 (l_bflow_method_code = 'PRIOR_ENTRY')
36381 )
36382 THEN
36383 IF
36384 --
36385 1 = 2
36386 --
36387 THEN
36388 xla_accounting_err_pkg.build_message
36389 (p_appli_s_name => 'XLA'
36390 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36391 ,p_token_1 => 'LINE_NUMBER'
36392 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
36393 ,p_token_2 => 'LINE_TYPE_NAME'
36394 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
36395 l_component_type
36396 ,l_component_code
36397 ,l_component_type_code
36398 ,l_component_appl_id
36399 ,l_amb_context_code
36400 ,l_entity_code
36401 ,l_event_class_code
36402 )
36403 ,p_token_3 => 'OWNER'
36404 ,p_value_3 => xla_lookups_pkg.get_meaning(
36405 p_lookup_type => 'XLA_OWNER_TYPE'
36406 ,p_lookup_code => l_component_type_code
36407 )
36408 ,p_token_4 => 'PRODUCT_NAME'
36409 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36410 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36411 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36412 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36413 ,p_ae_header_id => NULL
36414 );
36415
36416 IF (C_LEVEL_ERROR>= g_log_level) THEN
36417 trace
36418 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36419 ,p_level => C_LEVEL_ERROR
36420 ,p_module => l_log_module);
36421 END IF;
36422 END IF;
36423 END IF;
36424 --
36425 --
36426 ------------------------------------------------------------------------------------------------
36427 -- 4219869 Business Flow
36428 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36432
36429 -- Prior Entry. Currently, the following code is always generated.
36430 ------------------------------------------------------------------------------------------------
36431 XLA_AE_LINES_PKG.ValidateCurrentLine;
36433 ------------------------------------------------------------------------------------
36434 -- 4219869 Business Flow
36435 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36436 ------------------------------------------------------------------------------------
36437 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36438
36439 ----------------------------------------------------------------------------------
36440 -- 4219869 Business Flow
36441 -- Update journal entry status -- Need to generate this within IF <condition>
36442 ----------------------------------------------------------------------------------
36443 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36444 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36445 ,p_balance_type_code => l_balance_type_code
36446 );
36447
36448 -------------------------------------------------------------------------------------------
36449 -- 4262811 - Generate the Accrual Reversal lines
36450 -------------------------------------------------------------------------------------------
36451 BEGIN
36452 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36453 (g_array_event(p_event_id).array_value_num('header_index'));
36454 IF l_acc_rev_flag IS NULL THEN
36455 l_acc_rev_flag := 'N';
36456 END IF;
36457 EXCEPTION
36458 WHEN OTHERS THEN
36459 l_acc_rev_flag := 'N';
36460 END;
36461 --
36462 IF (l_acc_rev_flag = 'Y') THEN
36463
36464 -- 4645092 ------------------------------------------------------------------------------
36465 -- To allow MPA report to determine if it should generate report process
36466 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36467 ------------------------------------------------------------------------------------------
36468
36469 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36470 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36471 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
36472 -- call ADRs
36473 -- Bug 4922099
36474 --
36475 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36476 (NVL(l_actual_upg_option, 'N') = 'O') OR
36477 (NVL(l_enc_upg_option, 'N') = 'O')
36478 )
36479 THEN
36480 NULL;
36481 --
36482 --
36483
36484 l_ccid := AcctDerRule_12(
36485 p_application_id => p_application_id
36486 , p_ae_header_id => l_ae_header_id
36487 , p_source_1 => p_source_1
36488 , p_source_2 => p_source_2
36489 , x_transaction_coa_id => l_adr_transaction_coa_id
36490 , x_accounting_coa_id => l_adr_accounting_coa_id
36491 , x_value_type_code => l_adr_value_type_code
36492 , p_side => 'NA'
36493 );
36494
36495 xla_ae_lines_pkg.set_ccid(
36496 p_code_combination_id => l_ccid
36497 , p_value_type_code => l_adr_value_type_code
36498 , p_transaction_coa_id => l_adr_transaction_coa_id
36499 , p_accounting_coa_id => l_adr_accounting_coa_id
36500 , p_adr_code => 'EXP'
36501 , p_adr_type_code => 'S'
36502 , p_component_type => l_component_type
36503 , p_component_code => l_component_code
36504 , p_component_type_code => l_component_type_code
36505 , p_component_appl_id => l_component_appl_id
36506 , p_amb_context_code => l_amb_context_code
36507 , p_side => 'NA'
36508 );
36509
36510
36511 --
36512 --
36513 END IF;
36514
36515 --
36516 -- Update the line information that should be overwritten
36517 --
36518 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36519 p_header_num => 1);
36520 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
36521
36522 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36523
36524 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
36525 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36526 END IF;
36527
36528 --
36529 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36530 --
36531 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36532 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
36533 ELSE
36534 ---------------------------------------------------------------------------------------------------
36535 -- 4262811a Switch Sign
36536 ---------------------------------------------------------------------------------------------------
36537 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
36541 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36538 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36539 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36540 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36542 -- 5132302
36543 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36544 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36545
36546 END IF;
36547
36548 -- 4955764
36549 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36550 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36551
36552
36553 XLA_AE_LINES_PKG.ValidateCurrentLine;
36554 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36555
36556 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36557 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36558 ,p_balance_type_code => l_balance_type_code);
36559
36560 END IF;
36561
36562 -----------------------------------------------------------------------------------------
36563 -- 4262811 Multiperiod Accounting
36564 -----------------------------------------------------------------------------------------
36565 -- No MPA option is assigned.
36566
36567
36568 END IF;
36569 END IF;
36570 --
36571
36572 --
36573 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36574 trace
36575 (p_msg => 'END of AcctLineType_98'
36576 ,p_level => C_LEVEL_PROCEDURE
36577 ,p_module => l_log_module);
36578 END IF;
36579 --
36580 EXCEPTION
36581 WHEN xla_exceptions_pkg.application_exception THEN
36582 RAISE;
36583 WHEN OTHERS THEN
36584 xla_exceptions_pkg.raise_message
36585 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_98');
36586 END AcctLineType_98;
36587 --
36588
36589 ---------------------------------------
36590 --
36591 -- PRIVATE FUNCTION
36592 -- AcctLineType_99
36593 --
36594 ---------------------------------------
36595 PROCEDURE AcctLineType_99 (
36596 p_application_id IN NUMBER
36597 ,p_event_id IN NUMBER
36598 ,p_calculate_acctd_flag IN VARCHAR2
36599 ,p_calculate_g_l_flag IN VARCHAR2
36600 ,p_actual_flag IN OUT VARCHAR2
36601 ,p_balance_type_code OUT VARCHAR2
36602 ,p_gain_or_loss_ref OUT VARCHAR2
36603
36604 --Transaction Account
36605 , p_source_1 IN NUMBER
36606 --Journal Line Type
36607 , p_source_2 IN VARCHAR2
36608 --Entered Amount
36609 , p_source_3 IN NUMBER
36610 --First Distribution Identifier
36611 , p_source_5 IN NUMBER
36612 --Distribution Type
36613 , p_source_6 IN VARCHAR2
36614 --Currency Code
36615 , p_source_7 IN VARCHAR2
36616 --Currency Conversion Date
36617 , p_source_8 IN DATE
36618 --Currency Conversion Rate
36619 , p_source_9 IN NUMBER
36620 --Currency Conversion Type
36621 , p_source_10 IN VARCHAR2
36622 --Accounted Amount
36623 , p_source_11 IN NUMBER
36624 )
36625 IS
36626
36627 l_component_type VARCHAR2(80);
36628 l_component_code VARCHAR2(30);
36629 l_component_type_code VARCHAR2(1);
36630 l_component_appl_id INTEGER;
36631 l_amb_context_code VARCHAR2(30);
36632 l_entity_code VARCHAR2(30);
36633 l_event_class_code VARCHAR2(30);
36634 l_ae_header_id NUMBER;
36635 l_event_type_code VARCHAR2(30);
36636 l_line_definition_code VARCHAR2(30);
36637 l_line_definition_owner_code VARCHAR2(1);
36638 --
36639 -- adr variables
36640 l_segment VARCHAR2(30);
36641 l_ccid NUMBER;
36642 l_adr_transaction_coa_id NUMBER;
36643 l_adr_accounting_coa_id NUMBER;
36644 l_adr_flexfield_segment_code VARCHAR2(30);
36645 l_adr_flex_value_set_id NUMBER;
36646 l_adr_value_type_code VARCHAR2(30);
36647 l_adr_value_combination_id NUMBER;
36648 l_adr_value_segment_code VARCHAR2(30);
36649
36650 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
36651 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
36652 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
36653 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
36654
36655 -- 4262811 Variables ------------------------------------------------------------------------------------------
36656 l_entered_amt_idx NUMBER;
36657 l_accted_amt_idx NUMBER;
36658 l_acc_rev_flag VARCHAR2(1);
36659 l_accrual_line_num NUMBER;
36660 l_tmp_amt NUMBER;
36661 l_acc_rev_natural_side_code VARCHAR2(1);
36662
36663 l_num_entries NUMBER;
36664 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
36665 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
36666 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
36670
36667 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
36668 l_recog_line_1 NUMBER;
36669 l_recog_line_2 NUMBER;
36671 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
36672 l_bflow_applied_to_amt NUMBER; -- 5132302
36673 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
36674
36675 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36676
36677 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
36678 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
36679
36680 ---------------------------------------------------------------------------------------------------------------
36681
36682
36683 --
36684 -- bulk performance
36685 --
36686 l_balance_type_code VARCHAR2(1);
36687 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
36688 l_log_module VARCHAR2(240);
36689
36690 --
36691 -- Upgrade strategy
36692 --
36693 l_actual_upg_option VARCHAR2(1);
36694 l_enc_upg_option VARCHAR2(1);
36695
36696 --
36697 BEGIN
36698 --
36699 IF g_log_enabled THEN
36700 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
36701 END IF;
36702 --
36703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36704
36705 trace
36706 (p_msg => 'BEGIN of AcctLineType_99'
36707 ,p_level => C_LEVEL_PROCEDURE
36708 ,p_module => l_log_module);
36709
36710 END IF;
36711 --
36712 l_component_type := 'AMB_JLT';
36713 l_component_code := 'EXP';
36714 l_component_type_code := 'S';
36715 l_component_appl_id := 555;
36716 l_amb_context_code := 'DEFAULT';
36717 l_entity_code := 'INVENTORY';
36718 l_event_class_code := 'FOB_RCPT_SENDER_SHIP';
36719 l_event_type_code := 'FOB_RCPT_SENDER_SHIP';
36720 l_line_definition_owner_code := 'S';
36721 l_line_definition_code := 'FOB_RCPT_SENDER_SHIP';
36722 --
36723 l_balance_type_code := 'A';
36724 l_segment := NULL;
36725 l_ccid := NULL;
36726 l_adr_transaction_coa_id := NULL;
36727 l_adr_accounting_coa_id := NULL;
36728 l_adr_flexfield_segment_code := NULL;
36729 l_adr_flex_value_set_id := NULL;
36730 l_adr_value_type_code := NULL;
36731 l_adr_value_combination_id := NULL;
36732 l_adr_value_segment_code := NULL;
36733
36734 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
36735 l_bflow_class_code := ''; -- 4219869 Business Flow
36736 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
36737 l_budgetary_control_flag := 'N';
36738
36739 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36740 l_bflow_applied_to_amt := NULL; -- 5132302
36741 l_entered_amt_idx := NULL; -- 4262811
36742 l_accted_amt_idx := NULL; -- 4262811
36743 l_acc_rev_flag := NULL; -- 4262811
36744 l_accrual_line_num := NULL; -- 4262811
36745 l_tmp_amt := NULL; -- 4262811
36746 --
36747
36748 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36749 l_balance_type_code <> 'B' THEN
36750 IF NVL(p_source_2,'
36751 ') = 'EXP'
36752 THEN
36753
36754 --
36755 XLA_AE_LINES_PKG.SetNewLine;
36756
36757 p_balance_type_code := l_balance_type_code;
36758 -- set the flag so later we will know whether the gain loss line needs to be created
36759
36760 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36761 p_actual_flag :='A';
36762 END IF;
36763
36764 --
36765 -- bulk performance
36766 --
36767 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36768 p_header_num => 0); -- 4262811
36769 --
36770 -- set accounting line options
36771 --
36772 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36773 p_natural_side_code => 'D'
36774 , p_gain_or_loss_flag => 'N'
36775 , p_gl_transfer_mode_code => 'D'
36776 , p_acct_entry_type_code => 'A'
36777 , p_switch_side_flag => 'Y'
36778 , p_merge_duplicate_code => 'W'
36779 );
36780 --
36781 l_acc_rev_natural_side_code := 'C'; -- 4262811
36782 --
36783 --
36784 -- set accounting line type info
36785 --
36786 xla_ae_lines_pkg.SetAcctLineType
36787 (p_component_type => l_component_type
36788 ,p_event_type_code => l_event_type_code
36789 ,p_line_definition_owner_code => l_line_definition_owner_code
36790 ,p_line_definition_code => l_line_definition_code
36791 ,p_accounting_line_code => l_component_code
36792 ,p_accounting_line_type_code => l_component_type_code
36793 ,p_accounting_line_appl_id => l_component_appl_id
36794 ,p_amb_context_code => l_amb_context_code
36795 ,p_entity_code => l_entity_code
36796 ,p_event_class_code => l_event_class_code);
36797 --
36798 -- set accounting class
36799 --
36803 );
36800 xla_ae_lines_pkg.SetAcctClass(
36801 p_accounting_class_code => 'EXPENSE'
36802 , p_ae_header_id => l_ae_header_id
36804
36805 --
36806 -- set rounding class
36807 --
36808 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36809 'EXPENSE';
36810
36811 --
36812 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36813 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36814 --
36815 -- bulk performance
36816 --
36817 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36818
36819 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36820 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36821
36822 -- 4955764
36823 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36824 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36825
36826 -- 4458381 Public Sector Enh
36827
36828 --
36829 -- set accounting attributes for the line type
36830 --
36831 l_entered_amt_idx := 3;
36832 l_accted_amt_idx := 8;
36833 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36834 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36835 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
36836 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36837 l_rec_acct_attrs.array_char_value(2) := p_source_6;
36838 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36839 l_rec_acct_attrs.array_num_value(3) := p_source_3;
36840 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36841 l_rec_acct_attrs.array_char_value(4) := p_source_7;
36842 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36843 l_rec_acct_attrs.array_date_value(5) := p_source_8;
36844 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36845 l_rec_acct_attrs.array_num_value(6) := p_source_9;
36846 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36847 l_rec_acct_attrs.array_char_value(7) := p_source_10;
36848 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36849 l_rec_acct_attrs.array_num_value(8) := p_source_11;
36850
36851 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36852 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36853
36854 ---------------------------------------------------------------------------------------------------------------
36855 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36856 ---------------------------------------------------------------------------------------------------------------
36857 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36858
36859 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36860 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36861
36862 IF xla_accounting_cache_pkg.GetValueChar
36863 (p_source_code => 'LEDGER_CATEGORY_CODE'
36864 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36865 AND l_bflow_method_code = 'PRIOR_ENTRY'
36866 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36867 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36868 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36869 )
36870 THEN
36871 xla_ae_lines_pkg.BflowUpgEntry
36872 (p_business_method_code => l_bflow_method_code
36873 ,p_business_class_code => l_bflow_class_code
36874 ,p_balance_type => l_balance_type_code);
36875 ELSE
36876 NULL;
36877 -- No business flow processing for business flow method of NONE.
36878 END IF;
36879
36880 --
36881 -- call analytical criteria
36882 --
36883
36884 --
36885 -- call description
36886 --
36887 -- No description or it is inherited.
36888 --
36889 -- call ADRs
36890 -- Bug 4922099
36891 --
36892 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36893 (NVL(l_actual_upg_option, 'N') = 'O') OR
36894 (NVL(l_enc_upg_option, 'N') = 'O')
36895 )
36896 THEN
36897 NULL;
36898 --
36899 --
36900
36901 l_ccid := AcctDerRule_12(
36902 p_application_id => p_application_id
36903 , p_ae_header_id => l_ae_header_id
36904 , p_source_1 => p_source_1
36905 , p_source_2 => p_source_2
36906 , x_transaction_coa_id => l_adr_transaction_coa_id
36907 , x_accounting_coa_id => l_adr_accounting_coa_id
36908 , x_value_type_code => l_adr_value_type_code
36909 , p_side => 'NA'
36910 );
36911
36912 xla_ae_lines_pkg.set_ccid(
36913 p_code_combination_id => l_ccid
36914 , p_value_type_code => l_adr_value_type_code
36915 , p_transaction_coa_id => l_adr_transaction_coa_id
36919 , p_component_type => l_component_type
36916 , p_accounting_coa_id => l_adr_accounting_coa_id
36917 , p_adr_code => 'EXP'
36918 , p_adr_type_code => 'S'
36920 , p_component_code => l_component_code
36921 , p_component_type_code => l_component_type_code
36922 , p_component_appl_id => l_component_appl_id
36923 , p_amb_context_code => l_amb_context_code
36924 , p_side => 'NA'
36925 );
36926
36927
36928 --
36929 --
36930 END IF;
36931 --
36932 -- Bug 4922099
36933 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36934 (NVL(l_enc_upg_option, 'N') = 'O')
36935 ) AND
36936 (l_bflow_method_code = 'PRIOR_ENTRY')
36937 )
36938 THEN
36939 IF
36940 --
36941 1 = 2
36942 --
36943 THEN
36944 xla_accounting_err_pkg.build_message
36945 (p_appli_s_name => 'XLA'
36946 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36947 ,p_token_1 => 'LINE_NUMBER'
36948 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
36949 ,p_token_2 => 'LINE_TYPE_NAME'
36950 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
36951 l_component_type
36952 ,l_component_code
36953 ,l_component_type_code
36954 ,l_component_appl_id
36955 ,l_amb_context_code
36956 ,l_entity_code
36957 ,l_event_class_code
36958 )
36959 ,p_token_3 => 'OWNER'
36960 ,p_value_3 => xla_lookups_pkg.get_meaning(
36961 p_lookup_type => 'XLA_OWNER_TYPE'
36962 ,p_lookup_code => l_component_type_code
36963 )
36964 ,p_token_4 => 'PRODUCT_NAME'
36965 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36966 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36967 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36968 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36969 ,p_ae_header_id => NULL
36970 );
36971
36972 IF (C_LEVEL_ERROR>= g_log_level) THEN
36973 trace
36974 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36975 ,p_level => C_LEVEL_ERROR
36976 ,p_module => l_log_module);
36977 END IF;
36978 END IF;
36979 END IF;
36980 --
36981 --
36982 ------------------------------------------------------------------------------------------------
36983 -- 4219869 Business Flow
36984 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36985 -- Prior Entry. Currently, the following code is always generated.
36986 ------------------------------------------------------------------------------------------------
36987 XLA_AE_LINES_PKG.ValidateCurrentLine;
36988
36989 ------------------------------------------------------------------------------------
36990 -- 4219869 Business Flow
36991 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36992 ------------------------------------------------------------------------------------
36993 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36994
36995 ----------------------------------------------------------------------------------
36996 -- 4219869 Business Flow
36997 -- Update journal entry status -- Need to generate this within IF <condition>
36998 ----------------------------------------------------------------------------------
36999 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37000 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37001 ,p_balance_type_code => l_balance_type_code
37002 );
37003
37004 -------------------------------------------------------------------------------------------
37005 -- 4262811 - Generate the Accrual Reversal lines
37006 -------------------------------------------------------------------------------------------
37007 BEGIN
37008 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37012 END IF;
37009 (g_array_event(p_event_id).array_value_num('header_index'));
37010 IF l_acc_rev_flag IS NULL THEN
37011 l_acc_rev_flag := 'N';
37013 EXCEPTION
37014 WHEN OTHERS THEN
37015 l_acc_rev_flag := 'N';
37016 END;
37017 --
37018 IF (l_acc_rev_flag = 'Y') THEN
37019
37020 -- 4645092 ------------------------------------------------------------------------------
37021 -- To allow MPA report to determine if it should generate report process
37022 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37023 ------------------------------------------------------------------------------------------
37024
37025 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37026 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37027 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
37028 -- call ADRs
37029 -- Bug 4922099
37030 --
37031 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37032 (NVL(l_actual_upg_option, 'N') = 'O') OR
37033 (NVL(l_enc_upg_option, 'N') = 'O')
37034 )
37035 THEN
37036 NULL;
37037 --
37038 --
37039
37040 l_ccid := AcctDerRule_12(
37041 p_application_id => p_application_id
37042 , p_ae_header_id => l_ae_header_id
37043 , p_source_1 => p_source_1
37044 , p_source_2 => p_source_2
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 => 'EXP'
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
37123
37120 -----------------------------------------------------------------------------------------
37121 -- No MPA option is assigned.
37122
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_99'
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_00555_AAD_S_000001_PKG.AcctLineType_99');
37142 END AcctLineType_99;
37143 --
37144
37145 ---------------------------------------
37146 --
37147 -- PRIVATE FUNCTION
37148 -- AcctLineType_100
37149 --
37150 ---------------------------------------
37151 PROCEDURE AcctLineType_100 (
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 --Transaction Account
37161 , p_source_1 IN NUMBER
37162 --Journal Line Type
37163 , p_source_2 IN VARCHAR2
37164 --Entered Amount
37165 , p_source_3 IN NUMBER
37166 --First Distribution Identifier
37167 , p_source_5 IN NUMBER
37168 --Distribution Type
37169 , p_source_6 IN VARCHAR2
37170 --Currency Code
37171 , p_source_7 IN VARCHAR2
37172 --Currency Conversion Date
37173 , p_source_8 IN DATE
37174 --Currency Conversion Rate
37175 , p_source_9 IN NUMBER
37176 --Currency Conversion Type
37177 , p_source_10 IN VARCHAR2
37178 --Accounted Amount
37179 , p_source_11 IN NUMBER
37180 )
37181 IS
37182
37183 l_component_type VARCHAR2(80);
37184 l_component_code VARCHAR2(30);
37185 l_component_type_code VARCHAR2(1);
37186 l_component_appl_id INTEGER;
37187 l_amb_context_code VARCHAR2(30);
37188 l_entity_code VARCHAR2(30);
37189 l_event_class_code VARCHAR2(30);
37190 l_ae_header_id NUMBER;
37191 l_event_type_code VARCHAR2(30);
37192 l_line_definition_code VARCHAR2(30);
37193 l_line_definition_owner_code VARCHAR2(1);
37194 --
37195 -- adr variables
37196 l_segment VARCHAR2(30);
37197 l_ccid NUMBER;
37198 l_adr_transaction_coa_id NUMBER;
37199 l_adr_accounting_coa_id NUMBER;
37200 l_adr_flexfield_segment_code VARCHAR2(30);
37201 l_adr_flex_value_set_id NUMBER;
37202 l_adr_value_type_code VARCHAR2(30);
37203 l_adr_value_combination_id NUMBER;
37204 l_adr_value_segment_code VARCHAR2(30);
37205
37206 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
37207 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
37208 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
37209 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
37210
37211 -- 4262811 Variables ------------------------------------------------------------------------------------------
37212 l_entered_amt_idx NUMBER;
37213 l_accted_amt_idx NUMBER;
37214 l_acc_rev_flag VARCHAR2(1);
37215 l_accrual_line_num NUMBER;
37216 l_tmp_amt NUMBER;
37217 l_acc_rev_natural_side_code VARCHAR2(1);
37218
37219 l_num_entries NUMBER;
37220 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
37221 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
37222 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
37223 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
37224 l_recog_line_1 NUMBER;
37225 l_recog_line_2 NUMBER;
37226
37227 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
37228 l_bflow_applied_to_amt NUMBER; -- 5132302
37229 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
37230
37231 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37232
37233 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
37234 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
37235
37236 ---------------------------------------------------------------------------------------------------------------
37237
37238
37239 --
37240 -- bulk performance
37241 --
37242 l_balance_type_code VARCHAR2(1);
37243 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
37244 l_log_module VARCHAR2(240);
37245
37246 --
37247 -- Upgrade strategy
37248 --
37249 l_actual_upg_option VARCHAR2(1);
37250 l_enc_upg_option VARCHAR2(1);
37251
37252 --
37253 BEGIN
37254 --
37255 IF g_log_enabled THEN
37256 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
37257 END IF;
37258 --
37259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37260
37264 ,p_module => l_log_module);
37261 trace
37262 (p_msg => 'BEGIN of AcctLineType_100'
37263 ,p_level => C_LEVEL_PROCEDURE
37265
37266 END IF;
37267 --
37268 l_component_type := 'AMB_JLT';
37269 l_component_code := 'EXP';
37270 l_component_type_code := 'S';
37271 l_component_appl_id := 555;
37272 l_amb_context_code := 'DEFAULT';
37273 l_entity_code := 'PURCHASING';
37274 l_event_class_code := 'DELIVER';
37275 l_event_type_code := 'INT_REQ_RECEIPT_ADJ';
37276 l_line_definition_owner_code := 'S';
37277 l_line_definition_code := 'INT_REQ_RCPT_ADJ';
37278 --
37279 l_balance_type_code := 'A';
37280 l_segment := NULL;
37281 l_ccid := NULL;
37282 l_adr_transaction_coa_id := NULL;
37283 l_adr_accounting_coa_id := NULL;
37284 l_adr_flexfield_segment_code := NULL;
37285 l_adr_flex_value_set_id := NULL;
37286 l_adr_value_type_code := NULL;
37287 l_adr_value_combination_id := NULL;
37288 l_adr_value_segment_code := NULL;
37289
37290 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
37291 l_bflow_class_code := ''; -- 4219869 Business Flow
37292 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
37293 l_budgetary_control_flag := 'N';
37294
37295 l_bflow_applied_to_amt_idx := NULL; -- 5132302
37296 l_bflow_applied_to_amt := NULL; -- 5132302
37297 l_entered_amt_idx := NULL; -- 4262811
37298 l_accted_amt_idx := NULL; -- 4262811
37299 l_acc_rev_flag := NULL; -- 4262811
37300 l_accrual_line_num := NULL; -- 4262811
37301 l_tmp_amt := NULL; -- 4262811
37302 --
37303
37304 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37305 l_balance_type_code <> 'B' THEN
37306 IF NVL(p_source_2,'
37307 ') = 'EXP'
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 => 'D'
37332 , p_acct_entry_type_code => 'A'
37333 , p_switch_side_flag => 'Y'
37334 , p_merge_duplicate_code => 'W'
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 => 'EXPENSE'
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 'EXPENSE';
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;
37392 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
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_5);
37393 l_rec_acct_attrs.array_char_value(2) := p_source_6;
37394 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37395 l_rec_acct_attrs.array_num_value(3) := p_source_3;
37396 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37397 l_rec_acct_attrs.array_char_value(4) := p_source_7;
37398 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37399 l_rec_acct_attrs.array_date_value(5) := p_source_8;
37400 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37401 l_rec_acct_attrs.array_num_value(6) := p_source_9;
37402 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37403 l_rec_acct_attrs.array_char_value(7) := p_source_10;
37404 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37405 l_rec_acct_attrs.array_num_value(8) := p_source_11;
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_12(
37458 p_application_id => p_application_id
37459 , p_ae_header_id => l_ae_header_id
37460 , p_source_1 => p_source_1
37461 , p_source_2 => p_source_2
37462 , x_transaction_coa_id => l_adr_transaction_coa_id
37463 , x_accounting_coa_id => l_adr_accounting_coa_id
37464 , x_value_type_code => l_adr_value_type_code
37465 , p_side => 'NA'
37466 );
37467
37468 xla_ae_lines_pkg.set_ccid(
37469 p_code_combination_id => l_ccid
37470 , p_value_type_code => l_adr_value_type_code
37471 , p_transaction_coa_id => l_adr_transaction_coa_id
37472 , p_accounting_coa_id => l_adr_accounting_coa_id
37473 , p_adr_code => 'EXP'
37474 , p_adr_type_code => 'S'
37475 , p_component_type => l_component_type
37476 , p_component_code => l_component_code
37477 , p_component_type_code => l_component_type_code
37478 , p_component_appl_id => l_component_appl_id
37479 , p_amb_context_code => l_amb_context_code
37480 , p_side => 'NA'
37481 );
37482
37483
37484 --
37485 --
37486 END IF;
37487 --
37488 -- Bug 4922099
37489 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37490 (NVL(l_enc_upg_option, 'N') = 'O')
37491 ) AND
37492 (l_bflow_method_code = 'PRIOR_ENTRY')
37493 )
37494 THEN
37495 IF
37496 --
37497 1 = 2
37498 --
37499 THEN
37500 xla_accounting_err_pkg.build_message
37501 (p_appli_s_name => 'XLA'
37502 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37503 ,p_token_1 => 'LINE_NUMBER'
37504 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
37505 ,p_token_2 => 'LINE_TYPE_NAME'
37509 ,l_component_type_code
37506 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
37507 l_component_type
37508 ,l_component_code
37510 ,l_component_appl_id
37511 ,l_amb_context_code
37512 ,l_entity_code
37513 ,l_event_class_code
37514 )
37515 ,p_token_3 => 'OWNER'
37516 ,p_value_3 => xla_lookups_pkg.get_meaning(
37517 p_lookup_type => 'XLA_OWNER_TYPE'
37518 ,p_lookup_code => l_component_type_code
37519 )
37520 ,p_token_4 => 'PRODUCT_NAME'
37521 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37522 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37523 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37524 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37525 ,p_ae_header_id => NULL
37526 );
37527
37528 IF (C_LEVEL_ERROR>= g_log_level) THEN
37529 trace
37530 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37531 ,p_level => C_LEVEL_ERROR
37532 ,p_module => l_log_module);
37533 END IF;
37534 END IF;
37535 END IF;
37536 --
37537 --
37538 ------------------------------------------------------------------------------------------------
37539 -- 4219869 Business Flow
37540 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37541 -- Prior Entry. Currently, the following code is always generated.
37542 ------------------------------------------------------------------------------------------------
37543 XLA_AE_LINES_PKG.ValidateCurrentLine;
37544
37545 ------------------------------------------------------------------------------------
37546 -- 4219869 Business Flow
37547 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37548 ------------------------------------------------------------------------------------
37549 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37550
37551 ----------------------------------------------------------------------------------
37552 -- 4219869 Business Flow
37553 -- Update journal entry status -- Need to generate this within IF <condition>
37554 ----------------------------------------------------------------------------------
37555 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37556 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37557 ,p_balance_type_code => l_balance_type_code
37558 );
37559
37560 -------------------------------------------------------------------------------------------
37561 -- 4262811 - Generate the Accrual Reversal lines
37562 -------------------------------------------------------------------------------------------
37563 BEGIN
37564 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37565 (g_array_event(p_event_id).array_value_num('header_index'));
37566 IF l_acc_rev_flag IS NULL THEN
37567 l_acc_rev_flag := 'N';
37568 END IF;
37569 EXCEPTION
37570 WHEN OTHERS THEN
37571 l_acc_rev_flag := 'N';
37572 END;
37573 --
37574 IF (l_acc_rev_flag = 'Y') THEN
37575
37576 -- 4645092 ------------------------------------------------------------------------------
37577 -- To allow MPA report to determine if it should generate report process
37578 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37579 ------------------------------------------------------------------------------------------
37580
37581 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37582 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37583 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
37584 -- call ADRs
37585 -- Bug 4922099
37586 --
37587 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37588 (NVL(l_actual_upg_option, 'N') = 'O') OR
37589 (NVL(l_enc_upg_option, 'N') = 'O')
37590 )
37591 THEN
37592 NULL;
37593 --
37594 --
37595
37596 l_ccid := AcctDerRule_12(
37597 p_application_id => p_application_id
37598 , p_ae_header_id => l_ae_header_id
37599 , p_source_1 => p_source_1
37603 , x_value_type_code => l_adr_value_type_code
37600 , p_source_2 => p_source_2
37601 , x_transaction_coa_id => l_adr_transaction_coa_id
37602 , x_accounting_coa_id => l_adr_accounting_coa_id
37604 , p_side => 'NA'
37605 );
37606
37607 xla_ae_lines_pkg.set_ccid(
37608 p_code_combination_id => l_ccid
37609 , p_value_type_code => l_adr_value_type_code
37610 , p_transaction_coa_id => l_adr_transaction_coa_id
37611 , p_accounting_coa_id => l_adr_accounting_coa_id
37612 , p_adr_code => 'EXP'
37613 , p_adr_type_code => 'S'
37614 , p_component_type => l_component_type
37615 , p_component_code => l_component_code
37616 , p_component_type_code => l_component_type_code
37617 , p_component_appl_id => l_component_appl_id
37618 , p_amb_context_code => l_amb_context_code
37619 , p_side => 'NA'
37620 );
37621
37622
37623 --
37624 --
37625 END IF;
37626
37627 --
37628 -- Update the line information that should be overwritten
37629 --
37630 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37631 p_header_num => 1);
37632 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
37633
37634 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37635
37636 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
37637 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37638 END IF;
37639
37640 --
37641 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37642 --
37643 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37644 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
37645 ELSE
37646 ---------------------------------------------------------------------------------------------------
37647 -- 4262811a Switch Sign
37648 ---------------------------------------------------------------------------------------------------
37649 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
37650 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37651 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37652 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37653 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37654 -- 5132302
37655 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37656 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37657
37658 END IF;
37659
37660 -- 4955764
37661 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37662 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37663
37664
37665 XLA_AE_LINES_PKG.ValidateCurrentLine;
37666 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37667
37668 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37669 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37670 ,p_balance_type_code => l_balance_type_code);
37671
37672 END IF;
37673
37674 -----------------------------------------------------------------------------------------
37675 -- 4262811 Multiperiod Accounting
37676 -----------------------------------------------------------------------------------------
37677 -- No MPA option is assigned.
37678
37679
37680 END IF;
37681 END IF;
37682 --
37683
37684 --
37685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37686 trace
37687 (p_msg => 'END of AcctLineType_100'
37688 ,p_level => C_LEVEL_PROCEDURE
37689 ,p_module => l_log_module);
37690 END IF;
37691 --
37692 EXCEPTION
37693 WHEN xla_exceptions_pkg.application_exception THEN
37694 RAISE;
37695 WHEN OTHERS THEN
37696 xla_exceptions_pkg.raise_message
37697 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_100');
37698 END AcctLineType_100;
37699 --
37700
37701 ---------------------------------------
37702 --
37703 -- PRIVATE FUNCTION
37704 -- AcctLineType_101
37705 --
37706 ---------------------------------------
37707 PROCEDURE AcctLineType_101 (
37708 p_application_id IN NUMBER
37709 ,p_event_id IN NUMBER
37710 ,p_calculate_acctd_flag IN VARCHAR2
37711 ,p_calculate_g_l_flag IN VARCHAR2
37712 ,p_actual_flag IN OUT VARCHAR2
37713 ,p_balance_type_code OUT VARCHAR2
37714 ,p_gain_or_loss_ref OUT VARCHAR2
37715
37716 --Transaction Account
37717 , p_source_1 IN NUMBER
37718 --Journal Line Type
37719 , p_source_2 IN VARCHAR2
37720 --Entered Amount
37721 , p_source_3 IN NUMBER
37725 , p_source_6 IN VARCHAR2
37722 --First Distribution Identifier
37723 , p_source_5 IN NUMBER
37724 --Distribution Type
37726 --Currency Code
37727 , p_source_7 IN VARCHAR2
37728 --Currency Conversion Date
37729 , p_source_8 IN DATE
37730 --Currency Conversion Rate
37731 , p_source_9 IN NUMBER
37732 --Currency Conversion Type
37733 , p_source_10 IN VARCHAR2
37734 --Accounted Amount
37735 , p_source_11 IN NUMBER
37736 )
37737 IS
37738
37739 l_component_type VARCHAR2(80);
37740 l_component_code VARCHAR2(30);
37741 l_component_type_code VARCHAR2(1);
37742 l_component_appl_id INTEGER;
37743 l_amb_context_code VARCHAR2(30);
37744 l_entity_code VARCHAR2(30);
37745 l_event_class_code VARCHAR2(30);
37746 l_ae_header_id NUMBER;
37747 l_event_type_code VARCHAR2(30);
37748 l_line_definition_code VARCHAR2(30);
37749 l_line_definition_owner_code VARCHAR2(1);
37750 --
37751 -- adr variables
37752 l_segment VARCHAR2(30);
37753 l_ccid NUMBER;
37754 l_adr_transaction_coa_id NUMBER;
37755 l_adr_accounting_coa_id NUMBER;
37756 l_adr_flexfield_segment_code VARCHAR2(30);
37757 l_adr_flex_value_set_id NUMBER;
37758 l_adr_value_type_code VARCHAR2(30);
37759 l_adr_value_combination_id NUMBER;
37760 l_adr_value_segment_code VARCHAR2(30);
37761
37762 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
37763 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
37764 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
37765 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
37766
37767 -- 4262811 Variables ------------------------------------------------------------------------------------------
37768 l_entered_amt_idx NUMBER;
37769 l_accted_amt_idx NUMBER;
37770 l_acc_rev_flag VARCHAR2(1);
37771 l_accrual_line_num NUMBER;
37772 l_tmp_amt NUMBER;
37773 l_acc_rev_natural_side_code VARCHAR2(1);
37774
37775 l_num_entries NUMBER;
37776 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
37777 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
37778 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
37779 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
37780 l_recog_line_1 NUMBER;
37781 l_recog_line_2 NUMBER;
37782
37783 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
37784 l_bflow_applied_to_amt NUMBER; -- 5132302
37785 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
37786
37787 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37788
37789 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
37790 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
37791
37792 ---------------------------------------------------------------------------------------------------------------
37793
37794
37795 --
37796 -- bulk performance
37797 --
37798 l_balance_type_code VARCHAR2(1);
37799 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
37800 l_log_module VARCHAR2(240);
37801
37802 --
37803 -- Upgrade strategy
37804 --
37805 l_actual_upg_option VARCHAR2(1);
37806 l_enc_upg_option VARCHAR2(1);
37807
37808 --
37809 BEGIN
37810 --
37811 IF g_log_enabled THEN
37812 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
37813 END IF;
37814 --
37815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37816
37817 trace
37818 (p_msg => 'BEGIN of AcctLineType_101'
37819 ,p_level => C_LEVEL_PROCEDURE
37820 ,p_module => l_log_module);
37821
37822 END IF;
37823 --
37824 l_component_type := 'AMB_JLT';
37825 l_component_code := 'EXP';
37826 l_component_type_code := 'S';
37827 l_component_appl_id := 555;
37828 l_amb_context_code := 'DEFAULT';
37829 l_entity_code := 'PURCHASING';
37830 l_event_class_code := 'DELIVER';
37831 l_event_type_code := 'LOG_PO_RCV_ADJ';
37832 l_line_definition_owner_code := 'S';
37833 l_line_definition_code := 'LOG_PO_RCV_ADJ';
37834 --
37835 l_balance_type_code := 'A';
37836 l_segment := NULL;
37837 l_ccid := NULL;
37838 l_adr_transaction_coa_id := NULL;
37839 l_adr_accounting_coa_id := NULL;
37840 l_adr_flexfield_segment_code := NULL;
37841 l_adr_flex_value_set_id := NULL;
37842 l_adr_value_type_code := NULL;
37843 l_adr_value_combination_id := NULL;
37844 l_adr_value_segment_code := NULL;
37845
37846 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
37847 l_bflow_class_code := ''; -- 4219869 Business Flow
37848 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
37849 l_budgetary_control_flag := 'N';
37850
37851 l_bflow_applied_to_amt_idx := NULL; -- 5132302
37852 l_bflow_applied_to_amt := NULL; -- 5132302
37856 l_accrual_line_num := NULL; -- 4262811
37853 l_entered_amt_idx := NULL; -- 4262811
37854 l_accted_amt_idx := NULL; -- 4262811
37855 l_acc_rev_flag := NULL; -- 4262811
37857 l_tmp_amt := NULL; -- 4262811
37858 --
37859
37860 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37861 l_balance_type_code <> 'B' THEN
37862 IF NVL(p_source_2,'
37863 ') = 'EXP'
37864 THEN
37865
37866 --
37867 XLA_AE_LINES_PKG.SetNewLine;
37868
37869 p_balance_type_code := l_balance_type_code;
37870 -- set the flag so later we will know whether the gain loss line needs to be created
37871
37872 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37873 p_actual_flag :='A';
37874 END IF;
37875
37876 --
37877 -- bulk performance
37878 --
37879 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37880 p_header_num => 0); -- 4262811
37881 --
37882 -- set accounting line options
37883 --
37884 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37885 p_natural_side_code => 'D'
37886 , p_gain_or_loss_flag => 'N'
37887 , p_gl_transfer_mode_code => 'D'
37888 , p_acct_entry_type_code => 'A'
37889 , p_switch_side_flag => 'Y'
37890 , p_merge_duplicate_code => 'W'
37891 );
37892 --
37893 l_acc_rev_natural_side_code := 'C'; -- 4262811
37894 --
37895 --
37896 -- set accounting line type info
37897 --
37898 xla_ae_lines_pkg.SetAcctLineType
37899 (p_component_type => l_component_type
37900 ,p_event_type_code => l_event_type_code
37901 ,p_line_definition_owner_code => l_line_definition_owner_code
37902 ,p_line_definition_code => l_line_definition_code
37903 ,p_accounting_line_code => l_component_code
37904 ,p_accounting_line_type_code => l_component_type_code
37905 ,p_accounting_line_appl_id => l_component_appl_id
37906 ,p_amb_context_code => l_amb_context_code
37907 ,p_entity_code => l_entity_code
37908 ,p_event_class_code => l_event_class_code);
37909 --
37910 -- set accounting class
37911 --
37912 xla_ae_lines_pkg.SetAcctClass(
37913 p_accounting_class_code => 'EXPENSE'
37914 , p_ae_header_id => l_ae_header_id
37915 );
37916
37917 --
37918 -- set rounding class
37919 --
37920 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37921 'EXPENSE';
37922
37923 --
37924 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37925 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37926 --
37927 -- bulk performance
37928 --
37929 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37930
37931 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37932 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37933
37934 -- 4955764
37935 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37936 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37937
37938 -- 4458381 Public Sector Enh
37939
37940 --
37941 -- set accounting attributes for the line type
37942 --
37943 l_entered_amt_idx := 3;
37944 l_accted_amt_idx := 8;
37945 l_bflow_applied_to_amt_idx := NULL; -- 5132302
37946 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37947 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
37948 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37949 l_rec_acct_attrs.array_char_value(2) := p_source_6;
37950 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37951 l_rec_acct_attrs.array_num_value(3) := p_source_3;
37952 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37953 l_rec_acct_attrs.array_char_value(4) := p_source_7;
37954 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37955 l_rec_acct_attrs.array_date_value(5) := p_source_8;
37956 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37957 l_rec_acct_attrs.array_num_value(6) := p_source_9;
37958 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37959 l_rec_acct_attrs.array_char_value(7) := p_source_10;
37960 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37961 l_rec_acct_attrs.array_num_value(8) := p_source_11;
37962
37963 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37964 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37965
37966 ---------------------------------------------------------------------------------------------------------------
37967 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37968 ---------------------------------------------------------------------------------------------------------------
37972 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37969 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37970
37971 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37973
37974 IF xla_accounting_cache_pkg.GetValueChar
37975 (p_source_code => 'LEDGER_CATEGORY_CODE'
37976 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37977 AND l_bflow_method_code = 'PRIOR_ENTRY'
37978 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37979 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37980 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37981 )
37982 THEN
37983 xla_ae_lines_pkg.BflowUpgEntry
37984 (p_business_method_code => l_bflow_method_code
37985 ,p_business_class_code => l_bflow_class_code
37986 ,p_balance_type => l_balance_type_code);
37987 ELSE
37988 NULL;
37989 -- No business flow processing for business flow method of NONE.
37990 END IF;
37991
37992 --
37993 -- call analytical criteria
37994 --
37995
37996 --
37997 -- call description
37998 --
37999 -- No description or it is inherited.
38000 --
38001 -- call ADRs
38002 -- Bug 4922099
38003 --
38004 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38005 (NVL(l_actual_upg_option, 'N') = 'O') OR
38006 (NVL(l_enc_upg_option, 'N') = 'O')
38007 )
38008 THEN
38009 NULL;
38010 --
38011 --
38012
38013 l_ccid := AcctDerRule_12(
38014 p_application_id => p_application_id
38015 , p_ae_header_id => l_ae_header_id
38016 , p_source_1 => p_source_1
38017 , p_source_2 => p_source_2
38018 , x_transaction_coa_id => l_adr_transaction_coa_id
38019 , x_accounting_coa_id => l_adr_accounting_coa_id
38020 , x_value_type_code => l_adr_value_type_code
38021 , p_side => 'NA'
38022 );
38023
38024 xla_ae_lines_pkg.set_ccid(
38025 p_code_combination_id => l_ccid
38026 , p_value_type_code => l_adr_value_type_code
38027 , p_transaction_coa_id => l_adr_transaction_coa_id
38028 , p_accounting_coa_id => l_adr_accounting_coa_id
38029 , p_adr_code => 'EXP'
38030 , p_adr_type_code => 'S'
38031 , p_component_type => l_component_type
38032 , p_component_code => l_component_code
38033 , p_component_type_code => l_component_type_code
38034 , p_component_appl_id => l_component_appl_id
38035 , p_amb_context_code => l_amb_context_code
38036 , p_side => 'NA'
38037 );
38038
38039
38040 --
38041 --
38042 END IF;
38043 --
38044 -- Bug 4922099
38045 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38046 (NVL(l_enc_upg_option, 'N') = 'O')
38047 ) AND
38048 (l_bflow_method_code = 'PRIOR_ENTRY')
38049 )
38050 THEN
38051 IF
38052 --
38053 1 = 2
38054 --
38055 THEN
38056 xla_accounting_err_pkg.build_message
38057 (p_appli_s_name => 'XLA'
38058 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38059 ,p_token_1 => 'LINE_NUMBER'
38060 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
38061 ,p_token_2 => 'LINE_TYPE_NAME'
38062 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
38063 l_component_type
38064 ,l_component_code
38065 ,l_component_type_code
38066 ,l_component_appl_id
38067 ,l_amb_context_code
38068 ,l_entity_code
38069 ,l_event_class_code
38070 )
38071 ,p_token_3 => 'OWNER'
38072 ,p_value_3 => xla_lookups_pkg.get_meaning(
38073 p_lookup_type => 'XLA_OWNER_TYPE'
38074 ,p_lookup_code => l_component_type_code
38075 )
38076 ,p_token_4 => 'PRODUCT_NAME'
38077 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38081 ,p_ae_header_id => NULL
38078 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38079 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38080 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38082 );
38083
38084 IF (C_LEVEL_ERROR>= g_log_level) THEN
38085 trace
38086 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38087 ,p_level => C_LEVEL_ERROR
38088 ,p_module => l_log_module);
38089 END IF;
38090 END IF;
38091 END IF;
38092 --
38093 --
38094 ------------------------------------------------------------------------------------------------
38095 -- 4219869 Business Flow
38096 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38097 -- Prior Entry. Currently, the following code is always generated.
38098 ------------------------------------------------------------------------------------------------
38099 XLA_AE_LINES_PKG.ValidateCurrentLine;
38100
38101 ------------------------------------------------------------------------------------
38102 -- 4219869 Business Flow
38103 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38104 ------------------------------------------------------------------------------------
38105 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38106
38107 ----------------------------------------------------------------------------------
38108 -- 4219869 Business Flow
38109 -- Update journal entry status -- Need to generate this within IF <condition>
38110 ----------------------------------------------------------------------------------
38111 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38112 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38113 ,p_balance_type_code => l_balance_type_code
38114 );
38115
38116 -------------------------------------------------------------------------------------------
38117 -- 4262811 - Generate the Accrual Reversal lines
38118 -------------------------------------------------------------------------------------------
38119 BEGIN
38120 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38121 (g_array_event(p_event_id).array_value_num('header_index'));
38122 IF l_acc_rev_flag IS NULL THEN
38123 l_acc_rev_flag := 'N';
38124 END IF;
38125 EXCEPTION
38126 WHEN OTHERS THEN
38127 l_acc_rev_flag := 'N';
38128 END;
38129 --
38130 IF (l_acc_rev_flag = 'Y') THEN
38131
38132 -- 4645092 ------------------------------------------------------------------------------
38133 -- To allow MPA report to determine if it should generate report process
38134 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38135 ------------------------------------------------------------------------------------------
38136
38137 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38138 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38139 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
38140 -- call ADRs
38141 -- Bug 4922099
38142 --
38143 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38144 (NVL(l_actual_upg_option, 'N') = 'O') OR
38145 (NVL(l_enc_upg_option, 'N') = 'O')
38146 )
38147 THEN
38148 NULL;
38149 --
38150 --
38151
38152 l_ccid := AcctDerRule_12(
38153 p_application_id => p_application_id
38154 , p_ae_header_id => l_ae_header_id
38155 , p_source_1 => p_source_1
38156 , p_source_2 => p_source_2
38157 , x_transaction_coa_id => l_adr_transaction_coa_id
38158 , x_accounting_coa_id => l_adr_accounting_coa_id
38159 , x_value_type_code => l_adr_value_type_code
38160 , p_side => 'NA'
38161 );
38162
38163 xla_ae_lines_pkg.set_ccid(
38164 p_code_combination_id => l_ccid
38165 , p_value_type_code => l_adr_value_type_code
38166 , p_transaction_coa_id => l_adr_transaction_coa_id
38167 , p_accounting_coa_id => l_adr_accounting_coa_id
38168 , p_adr_code => 'EXP'
38169 , p_adr_type_code => 'S'
38170 , p_component_type => l_component_type
38171 , p_component_code => l_component_code
38172 , p_component_type_code => l_component_type_code
38173 , p_component_appl_id => l_component_appl_id
38174 , p_amb_context_code => l_amb_context_code
38175 , p_side => 'NA'
38176 );
38177
38178
38179 --
38180 --
38181 END IF;
38182
38183 --
38184 -- Update the line information that should be overwritten
38185 --
38186 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38187 p_header_num => 1);
38188 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
38189
38193 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38190 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38191
38192 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
38194 END IF;
38195
38196 --
38197 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38198 --
38199 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38200 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
38201 ELSE
38202 ---------------------------------------------------------------------------------------------------
38203 -- 4262811a Switch Sign
38204 ---------------------------------------------------------------------------------------------------
38205 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
38206 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38207 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38208 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38209 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38210 -- 5132302
38211 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38212 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38213
38214 END IF;
38215
38216 -- 4955764
38217 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38218 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38219
38220
38221 XLA_AE_LINES_PKG.ValidateCurrentLine;
38222 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38223
38224 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38225 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38226 ,p_balance_type_code => l_balance_type_code);
38227
38228 END IF;
38229
38230 -----------------------------------------------------------------------------------------
38231 -- 4262811 Multiperiod Accounting
38232 -----------------------------------------------------------------------------------------
38233 -- No MPA option is assigned.
38234
38235
38236 END IF;
38237 END IF;
38238 --
38239
38240 --
38241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38242 trace
38243 (p_msg => 'END of AcctLineType_101'
38244 ,p_level => C_LEVEL_PROCEDURE
38245 ,p_module => l_log_module);
38246 END IF;
38247 --
38248 EXCEPTION
38249 WHEN xla_exceptions_pkg.application_exception THEN
38250 RAISE;
38251 WHEN OTHERS THEN
38252 xla_exceptions_pkg.raise_message
38253 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_101');
38254 END AcctLineType_101;
38255 --
38256
38257 ---------------------------------------
38258 --
38259 -- PRIVATE FUNCTION
38260 -- AcctLineType_102
38261 --
38262 ---------------------------------------
38263 PROCEDURE AcctLineType_102 (
38264 p_application_id IN NUMBER
38265 ,p_event_id IN NUMBER
38266 ,p_calculate_acctd_flag IN VARCHAR2
38267 ,p_calculate_g_l_flag IN VARCHAR2
38268 ,p_actual_flag IN OUT VARCHAR2
38269 ,p_balance_type_code OUT VARCHAR2
38270 ,p_gain_or_loss_ref OUT VARCHAR2
38271
38272 --Transaction Account
38273 , p_source_1 IN NUMBER
38274 --Journal Line Type
38275 , p_source_2 IN VARCHAR2
38276 --Entered Amount
38277 , p_source_3 IN NUMBER
38278 --First Distribution Identifier
38279 , p_source_5 IN NUMBER
38280 --Distribution Type
38281 , p_source_6 IN VARCHAR2
38282 --Currency Code
38283 , p_source_7 IN VARCHAR2
38284 --Currency Conversion Date
38285 , p_source_8 IN DATE
38286 --Currency Conversion Rate
38287 , p_source_9 IN NUMBER
38288 --Currency Conversion Type
38289 , p_source_10 IN VARCHAR2
38290 --Accounted Amount
38291 , p_source_11 IN NUMBER
38292 )
38293 IS
38294
38295 l_component_type VARCHAR2(80);
38296 l_component_code VARCHAR2(30);
38297 l_component_type_code VARCHAR2(1);
38298 l_component_appl_id INTEGER;
38299 l_amb_context_code VARCHAR2(30);
38300 l_entity_code VARCHAR2(30);
38301 l_event_class_code VARCHAR2(30);
38302 l_ae_header_id NUMBER;
38303 l_event_type_code VARCHAR2(30);
38304 l_line_definition_code VARCHAR2(30);
38305 l_line_definition_owner_code VARCHAR2(1);
38306 --
38307 -- adr variables
38308 l_segment VARCHAR2(30);
38309 l_ccid NUMBER;
38310 l_adr_transaction_coa_id NUMBER;
38311 l_adr_accounting_coa_id NUMBER;
38312 l_adr_flexfield_segment_code VARCHAR2(30);
38313 l_adr_flex_value_set_id NUMBER;
38314 l_adr_value_type_code VARCHAR2(30);
38315 l_adr_value_combination_id NUMBER;
38319 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
38316 l_adr_value_segment_code VARCHAR2(30);
38317
38318 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
38320 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
38321 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
38322
38323 -- 4262811 Variables ------------------------------------------------------------------------------------------
38324 l_entered_amt_idx NUMBER;
38325 l_accted_amt_idx NUMBER;
38326 l_acc_rev_flag VARCHAR2(1);
38327 l_accrual_line_num NUMBER;
38328 l_tmp_amt NUMBER;
38329 l_acc_rev_natural_side_code VARCHAR2(1);
38330
38331 l_num_entries NUMBER;
38332 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
38333 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
38334 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
38335 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
38336 l_recog_line_1 NUMBER;
38337 l_recog_line_2 NUMBER;
38338
38339 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
38340 l_bflow_applied_to_amt NUMBER; -- 5132302
38341 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
38342
38343 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38344
38345 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
38346 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
38347
38348 ---------------------------------------------------------------------------------------------------------------
38349
38350
38351 --
38352 -- bulk performance
38353 --
38354 l_balance_type_code VARCHAR2(1);
38355 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
38356 l_log_module VARCHAR2(240);
38357
38358 --
38359 -- Upgrade strategy
38360 --
38361 l_actual_upg_option VARCHAR2(1);
38362 l_enc_upg_option VARCHAR2(1);
38363
38364 --
38365 BEGIN
38366 --
38367 IF g_log_enabled THEN
38368 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
38369 END IF;
38370 --
38371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38372
38373 trace
38374 (p_msg => 'BEGIN of AcctLineType_102'
38375 ,p_level => C_LEVEL_PROCEDURE
38376 ,p_module => l_log_module);
38377
38378 END IF;
38379 --
38380 l_component_type := 'AMB_JLT';
38381 l_component_code := 'EXP';
38382 l_component_type_code := 'S';
38383 l_component_appl_id := 555;
38384 l_amb_context_code := 'DEFAULT';
38385 l_entity_code := 'PURCHASING';
38386 l_event_class_code := 'DELIVER';
38387 l_event_type_code := 'PO_RECEIPT_ADJ';
38388 l_line_definition_owner_code := 'S';
38389 l_line_definition_code := 'PO_RECEIPT_ADJ';
38390 --
38391 l_balance_type_code := 'A';
38392 l_segment := NULL;
38393 l_ccid := NULL;
38394 l_adr_transaction_coa_id := NULL;
38395 l_adr_accounting_coa_id := NULL;
38396 l_adr_flexfield_segment_code := NULL;
38397 l_adr_flex_value_set_id := NULL;
38398 l_adr_value_type_code := NULL;
38399 l_adr_value_combination_id := NULL;
38400 l_adr_value_segment_code := NULL;
38401
38402 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
38403 l_bflow_class_code := ''; -- 4219869 Business Flow
38404 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
38405 l_budgetary_control_flag := 'N';
38406
38407 l_bflow_applied_to_amt_idx := NULL; -- 5132302
38408 l_bflow_applied_to_amt := NULL; -- 5132302
38409 l_entered_amt_idx := NULL; -- 4262811
38410 l_accted_amt_idx := NULL; -- 4262811
38411 l_acc_rev_flag := NULL; -- 4262811
38412 l_accrual_line_num := NULL; -- 4262811
38413 l_tmp_amt := NULL; -- 4262811
38414 --
38415
38416 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38417 l_balance_type_code <> 'B' THEN
38418 IF NVL(p_source_2,'
38419 ') = 'EXP'
38420 THEN
38421
38422 --
38423 XLA_AE_LINES_PKG.SetNewLine;
38424
38425 p_balance_type_code := l_balance_type_code;
38426 -- set the flag so later we will know whether the gain loss line needs to be created
38427
38428 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38429 p_actual_flag :='A';
38430 END IF;
38431
38432 --
38433 -- bulk performance
38434 --
38435 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38436 p_header_num => 0); -- 4262811
38437 --
38438 -- set accounting line options
38439 --
38440 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38441 p_natural_side_code => 'D'
38442 , p_gain_or_loss_flag => 'N'
38443 , p_gl_transfer_mode_code => 'D'
38447 );
38444 , p_acct_entry_type_code => 'A'
38445 , p_switch_side_flag => 'Y'
38446 , p_merge_duplicate_code => 'W'
38448 --
38449 l_acc_rev_natural_side_code := 'C'; -- 4262811
38450 --
38451 --
38452 -- set accounting line type info
38453 --
38454 xla_ae_lines_pkg.SetAcctLineType
38455 (p_component_type => l_component_type
38456 ,p_event_type_code => l_event_type_code
38457 ,p_line_definition_owner_code => l_line_definition_owner_code
38458 ,p_line_definition_code => l_line_definition_code
38459 ,p_accounting_line_code => l_component_code
38460 ,p_accounting_line_type_code => l_component_type_code
38461 ,p_accounting_line_appl_id => l_component_appl_id
38462 ,p_amb_context_code => l_amb_context_code
38463 ,p_entity_code => l_entity_code
38464 ,p_event_class_code => l_event_class_code);
38465 --
38466 -- set accounting class
38467 --
38468 xla_ae_lines_pkg.SetAcctClass(
38469 p_accounting_class_code => 'EXPENSE'
38470 , p_ae_header_id => l_ae_header_id
38471 );
38472
38473 --
38474 -- set rounding class
38475 --
38476 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38477 'EXPENSE';
38478
38479 --
38480 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38481 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38482 --
38483 -- bulk performance
38484 --
38485 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38486
38487 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38488 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38489
38490 -- 4955764
38491 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38492 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38493
38494 -- 4458381 Public Sector Enh
38495
38496 --
38497 -- set accounting attributes for the line type
38498 --
38499 l_entered_amt_idx := 3;
38500 l_accted_amt_idx := 8;
38501 l_bflow_applied_to_amt_idx := NULL; -- 5132302
38502 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38503 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
38504 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38505 l_rec_acct_attrs.array_char_value(2) := p_source_6;
38506 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38507 l_rec_acct_attrs.array_num_value(3) := p_source_3;
38508 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38509 l_rec_acct_attrs.array_char_value(4) := p_source_7;
38510 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38511 l_rec_acct_attrs.array_date_value(5) := p_source_8;
38512 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38513 l_rec_acct_attrs.array_num_value(6) := p_source_9;
38514 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38515 l_rec_acct_attrs.array_char_value(7) := p_source_10;
38516 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38517 l_rec_acct_attrs.array_num_value(8) := p_source_11;
38518
38519 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38520 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38521
38522 ---------------------------------------------------------------------------------------------------------------
38523 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38524 ---------------------------------------------------------------------------------------------------------------
38525 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38526
38527 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38528 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38529
38530 IF xla_accounting_cache_pkg.GetValueChar
38531 (p_source_code => 'LEDGER_CATEGORY_CODE'
38532 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38533 AND l_bflow_method_code = 'PRIOR_ENTRY'
38534 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38535 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38536 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38537 )
38538 THEN
38539 xla_ae_lines_pkg.BflowUpgEntry
38540 (p_business_method_code => l_bflow_method_code
38541 ,p_business_class_code => l_bflow_class_code
38542 ,p_balance_type => l_balance_type_code);
38543 ELSE
38544 NULL;
38545 -- No business flow processing for business flow method of NONE.
38546 END IF;
38547
38548 --
38549 -- call analytical criteria
38550 --
38551
38552 --
38553 -- call description
38554 --
38555 -- No description or it is inherited.
38556 --
38557 -- call ADRs
38561 (NVL(l_actual_upg_option, 'N') = 'O') OR
38558 -- Bug 4922099
38559 --
38560 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38562 (NVL(l_enc_upg_option, 'N') = 'O')
38563 )
38564 THEN
38565 NULL;
38566 --
38567 --
38568
38569 l_ccid := AcctDerRule_12(
38570 p_application_id => p_application_id
38571 , p_ae_header_id => l_ae_header_id
38572 , p_source_1 => p_source_1
38573 , p_source_2 => p_source_2
38574 , x_transaction_coa_id => l_adr_transaction_coa_id
38575 , x_accounting_coa_id => l_adr_accounting_coa_id
38576 , x_value_type_code => l_adr_value_type_code
38577 , p_side => 'NA'
38578 );
38579
38580 xla_ae_lines_pkg.set_ccid(
38581 p_code_combination_id => l_ccid
38582 , p_value_type_code => l_adr_value_type_code
38583 , p_transaction_coa_id => l_adr_transaction_coa_id
38584 , p_accounting_coa_id => l_adr_accounting_coa_id
38585 , p_adr_code => 'EXP'
38586 , p_adr_type_code => 'S'
38587 , p_component_type => l_component_type
38588 , p_component_code => l_component_code
38589 , p_component_type_code => l_component_type_code
38590 , p_component_appl_id => l_component_appl_id
38591 , p_amb_context_code => l_amb_context_code
38592 , p_side => 'NA'
38593 );
38594
38595
38596 --
38597 --
38598 END IF;
38599 --
38600 -- Bug 4922099
38601 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38602 (NVL(l_enc_upg_option, 'N') = 'O')
38603 ) AND
38604 (l_bflow_method_code = 'PRIOR_ENTRY')
38605 )
38606 THEN
38607 IF
38608 --
38609 1 = 2
38610 --
38611 THEN
38612 xla_accounting_err_pkg.build_message
38613 (p_appli_s_name => 'XLA'
38614 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38615 ,p_token_1 => 'LINE_NUMBER'
38616 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
38617 ,p_token_2 => 'LINE_TYPE_NAME'
38618 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
38619 l_component_type
38620 ,l_component_code
38621 ,l_component_type_code
38622 ,l_component_appl_id
38623 ,l_amb_context_code
38624 ,l_entity_code
38625 ,l_event_class_code
38626 )
38627 ,p_token_3 => 'OWNER'
38628 ,p_value_3 => xla_lookups_pkg.get_meaning(
38629 p_lookup_type => 'XLA_OWNER_TYPE'
38630 ,p_lookup_code => l_component_type_code
38631 )
38632 ,p_token_4 => 'PRODUCT_NAME'
38633 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38634 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38635 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38636 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38637 ,p_ae_header_id => NULL
38638 );
38639
38640 IF (C_LEVEL_ERROR>= g_log_level) THEN
38641 trace
38642 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38643 ,p_level => C_LEVEL_ERROR
38644 ,p_module => l_log_module);
38645 END IF;
38646 END IF;
38647 END IF;
38648 --
38649 --
38650 ------------------------------------------------------------------------------------------------
38651 -- 4219869 Business Flow
38652 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38653 -- Prior Entry. Currently, the following code is always generated.
38654 ------------------------------------------------------------------------------------------------
38655 XLA_AE_LINES_PKG.ValidateCurrentLine;
38656
38657 ------------------------------------------------------------------------------------
38658 -- 4219869 Business Flow
38662
38659 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38660 ------------------------------------------------------------------------------------
38661 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38663 ----------------------------------------------------------------------------------
38664 -- 4219869 Business Flow
38665 -- Update journal entry status -- Need to generate this within IF <condition>
38666 ----------------------------------------------------------------------------------
38667 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38668 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38669 ,p_balance_type_code => l_balance_type_code
38670 );
38671
38672 -------------------------------------------------------------------------------------------
38673 -- 4262811 - Generate the Accrual Reversal lines
38674 -------------------------------------------------------------------------------------------
38675 BEGIN
38676 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38677 (g_array_event(p_event_id).array_value_num('header_index'));
38678 IF l_acc_rev_flag IS NULL THEN
38679 l_acc_rev_flag := 'N';
38680 END IF;
38681 EXCEPTION
38682 WHEN OTHERS THEN
38683 l_acc_rev_flag := 'N';
38684 END;
38685 --
38686 IF (l_acc_rev_flag = 'Y') THEN
38687
38688 -- 4645092 ------------------------------------------------------------------------------
38689 -- To allow MPA report to determine if it should generate report process
38690 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38691 ------------------------------------------------------------------------------------------
38692
38693 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38694 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38695 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
38696 -- call ADRs
38697 -- Bug 4922099
38698 --
38699 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38700 (NVL(l_actual_upg_option, 'N') = 'O') OR
38701 (NVL(l_enc_upg_option, 'N') = 'O')
38702 )
38703 THEN
38704 NULL;
38705 --
38706 --
38707
38708 l_ccid := AcctDerRule_12(
38709 p_application_id => p_application_id
38710 , p_ae_header_id => l_ae_header_id
38711 , p_source_1 => p_source_1
38712 , p_source_2 => p_source_2
38713 , x_transaction_coa_id => l_adr_transaction_coa_id
38714 , x_accounting_coa_id => l_adr_accounting_coa_id
38715 , x_value_type_code => l_adr_value_type_code
38716 , p_side => 'NA'
38717 );
38718
38719 xla_ae_lines_pkg.set_ccid(
38720 p_code_combination_id => l_ccid
38721 , p_value_type_code => l_adr_value_type_code
38722 , p_transaction_coa_id => l_adr_transaction_coa_id
38723 , p_accounting_coa_id => l_adr_accounting_coa_id
38724 , p_adr_code => 'EXP'
38725 , p_adr_type_code => 'S'
38726 , p_component_type => l_component_type
38727 , p_component_code => l_component_code
38728 , p_component_type_code => l_component_type_code
38729 , p_component_appl_id => l_component_appl_id
38730 , p_amb_context_code => l_amb_context_code
38731 , p_side => 'NA'
38732 );
38733
38734
38735 --
38736 --
38737 END IF;
38738
38739 --
38740 -- Update the line information that should be overwritten
38741 --
38742 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38743 p_header_num => 1);
38744 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
38745
38746 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38747
38748 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
38749 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38750 END IF;
38751
38752 --
38753 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38754 --
38755 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38756 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
38757 ELSE
38758 ---------------------------------------------------------------------------------------------------
38759 -- 4262811a Switch Sign
38760 ---------------------------------------------------------------------------------------------------
38761 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
38762 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38763 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38764 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38765 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38766 -- 5132302
38767 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38771
38768 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38769
38770 END IF;
38772 -- 4955764
38773 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38774 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38775
38776
38777 XLA_AE_LINES_PKG.ValidateCurrentLine;
38778 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38779
38780 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38781 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38782 ,p_balance_type_code => l_balance_type_code);
38783
38784 END IF;
38785
38786 -----------------------------------------------------------------------------------------
38787 -- 4262811 Multiperiod Accounting
38788 -----------------------------------------------------------------------------------------
38789 -- No MPA option is assigned.
38790
38791
38792 END IF;
38793 END IF;
38794 --
38795
38796 --
38797 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38798 trace
38799 (p_msg => 'END of AcctLineType_102'
38800 ,p_level => C_LEVEL_PROCEDURE
38801 ,p_module => l_log_module);
38802 END IF;
38803 --
38804 EXCEPTION
38805 WHEN xla_exceptions_pkg.application_exception THEN
38806 RAISE;
38807 WHEN OTHERS THEN
38808 xla_exceptions_pkg.raise_message
38809 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_102');
38810 END AcctLineType_102;
38811 --
38812
38813 ---------------------------------------
38814 --
38815 -- PRIVATE FUNCTION
38816 -- AcctLineType_103
38817 --
38818 ---------------------------------------
38819 PROCEDURE AcctLineType_103 (
38820 p_application_id IN NUMBER
38821 ,p_event_id IN NUMBER
38822 ,p_calculate_acctd_flag IN VARCHAR2
38823 ,p_calculate_g_l_flag IN VARCHAR2
38824 ,p_actual_flag IN OUT VARCHAR2
38825 ,p_balance_type_code OUT VARCHAR2
38826 ,p_gain_or_loss_ref OUT VARCHAR2
38827
38828 --Transaction Account
38829 , p_source_1 IN NUMBER
38830 --Journal Line Type
38831 , p_source_2 IN VARCHAR2
38832 --Entered Amount
38833 , p_source_3 IN NUMBER
38834 --First Distribution Identifier
38835 , p_source_5 IN NUMBER
38836 --Distribution Type
38837 , p_source_6 IN VARCHAR2
38838 --Currency Code
38839 , p_source_7 IN VARCHAR2
38840 --Currency Conversion Date
38841 , p_source_8 IN DATE
38842 --Currency Conversion Rate
38843 , p_source_9 IN NUMBER
38844 --Currency Conversion Type
38845 , p_source_10 IN VARCHAR2
38846 --Accounted Amount
38847 , p_source_11 IN NUMBER
38848 )
38849 IS
38850
38851 l_component_type VARCHAR2(80);
38852 l_component_code VARCHAR2(30);
38853 l_component_type_code VARCHAR2(1);
38854 l_component_appl_id INTEGER;
38855 l_amb_context_code VARCHAR2(30);
38856 l_entity_code VARCHAR2(30);
38857 l_event_class_code VARCHAR2(30);
38858 l_ae_header_id NUMBER;
38859 l_event_type_code VARCHAR2(30);
38860 l_line_definition_code VARCHAR2(30);
38861 l_line_definition_owner_code VARCHAR2(1);
38862 --
38863 -- adr variables
38864 l_segment VARCHAR2(30);
38865 l_ccid NUMBER;
38866 l_adr_transaction_coa_id NUMBER;
38867 l_adr_accounting_coa_id NUMBER;
38868 l_adr_flexfield_segment_code VARCHAR2(30);
38869 l_adr_flex_value_set_id NUMBER;
38870 l_adr_value_type_code VARCHAR2(30);
38871 l_adr_value_combination_id NUMBER;
38872 l_adr_value_segment_code VARCHAR2(30);
38873
38874 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
38875 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
38876 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
38877 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
38878
38879 -- 4262811 Variables ------------------------------------------------------------------------------------------
38880 l_entered_amt_idx NUMBER;
38881 l_accted_amt_idx NUMBER;
38882 l_acc_rev_flag VARCHAR2(1);
38883 l_accrual_line_num NUMBER;
38884 l_tmp_amt NUMBER;
38885 l_acc_rev_natural_side_code VARCHAR2(1);
38886
38887 l_num_entries NUMBER;
38888 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
38889 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
38890 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
38891 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
38892 l_recog_line_1 NUMBER;
38893 l_recog_line_2 NUMBER;
38894
38895 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
38896 l_bflow_applied_to_amt NUMBER; -- 5132302
38897 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
38898
38899 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38903
38900
38901 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
38902 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
38904 ---------------------------------------------------------------------------------------------------------------
38905
38906
38907 --
38908 -- bulk performance
38909 --
38910 l_balance_type_code VARCHAR2(1);
38911 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
38912 l_log_module VARCHAR2(240);
38913
38914 --
38915 -- Upgrade strategy
38916 --
38917 l_actual_upg_option VARCHAR2(1);
38918 l_enc_upg_option VARCHAR2(1);
38919
38920 --
38921 BEGIN
38922 --
38923 IF g_log_enabled THEN
38924 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
38925 END IF;
38926 --
38927 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38928
38929 trace
38930 (p_msg => 'BEGIN of AcctLineType_103'
38931 ,p_level => C_LEVEL_PROCEDURE
38932 ,p_module => l_log_module);
38933
38934 END IF;
38935 --
38936 l_component_type := 'AMB_JLT';
38937 l_component_code := 'EXP';
38938 l_component_type_code := 'S';
38939 l_component_appl_id := 555;
38940 l_amb_context_code := 'DEFAULT';
38941 l_entity_code := 'PURCHASING';
38942 l_event_class_code := 'DELIVER';
38943 l_event_type_code := 'RET_TO_RECEIVING';
38944 l_line_definition_owner_code := 'S';
38945 l_line_definition_code := 'PO_RETURN';
38946 --
38947 l_balance_type_code := 'A';
38948 l_segment := NULL;
38949 l_ccid := NULL;
38950 l_adr_transaction_coa_id := NULL;
38951 l_adr_accounting_coa_id := NULL;
38952 l_adr_flexfield_segment_code := NULL;
38953 l_adr_flex_value_set_id := NULL;
38954 l_adr_value_type_code := NULL;
38955 l_adr_value_combination_id := NULL;
38956 l_adr_value_segment_code := NULL;
38957
38958 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
38959 l_bflow_class_code := ''; -- 4219869 Business Flow
38960 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
38961 l_budgetary_control_flag := 'N';
38962
38963 l_bflow_applied_to_amt_idx := NULL; -- 5132302
38964 l_bflow_applied_to_amt := NULL; -- 5132302
38965 l_entered_amt_idx := NULL; -- 4262811
38966 l_accted_amt_idx := NULL; -- 4262811
38967 l_acc_rev_flag := NULL; -- 4262811
38968 l_accrual_line_num := NULL; -- 4262811
38969 l_tmp_amt := NULL; -- 4262811
38970 --
38971
38972 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38973 l_balance_type_code <> 'B' THEN
38974 IF NVL(p_source_2,'
38975 ') = 'EXP'
38976 THEN
38977
38978 --
38979 XLA_AE_LINES_PKG.SetNewLine;
38980
38981 p_balance_type_code := l_balance_type_code;
38982 -- set the flag so later we will know whether the gain loss line needs to be created
38983
38984 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38985 p_actual_flag :='A';
38986 END IF;
38987
38988 --
38989 -- bulk performance
38990 --
38991 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38992 p_header_num => 0); -- 4262811
38993 --
38994 -- set accounting line options
38995 --
38996 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38997 p_natural_side_code => 'D'
38998 , p_gain_or_loss_flag => 'N'
38999 , p_gl_transfer_mode_code => 'D'
39000 , p_acct_entry_type_code => 'A'
39001 , p_switch_side_flag => 'Y'
39002 , p_merge_duplicate_code => 'W'
39003 );
39004 --
39005 l_acc_rev_natural_side_code := 'C'; -- 4262811
39006 --
39007 --
39008 -- set accounting line type info
39009 --
39010 xla_ae_lines_pkg.SetAcctLineType
39011 (p_component_type => l_component_type
39012 ,p_event_type_code => l_event_type_code
39013 ,p_line_definition_owner_code => l_line_definition_owner_code
39014 ,p_line_definition_code => l_line_definition_code
39015 ,p_accounting_line_code => l_component_code
39016 ,p_accounting_line_type_code => l_component_type_code
39017 ,p_accounting_line_appl_id => l_component_appl_id
39018 ,p_amb_context_code => l_amb_context_code
39019 ,p_entity_code => l_entity_code
39020 ,p_event_class_code => l_event_class_code);
39021 --
39022 -- set accounting class
39023 --
39024 xla_ae_lines_pkg.SetAcctClass(
39025 p_accounting_class_code => 'EXPENSE'
39026 , p_ae_header_id => l_ae_header_id
39027 );
39028
39029 --
39030 -- set rounding class
39031 --
39032 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39033 'EXPENSE';
39034
39035 --
39039 -- bulk performance
39036 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39037 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39038 --
39040 --
39041 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39042
39043 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39044 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39045
39046 -- 4955764
39047 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39048 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39049
39050 -- 4458381 Public Sector Enh
39051
39052 --
39053 -- set accounting attributes for the line type
39054 --
39055 l_entered_amt_idx := 3;
39056 l_accted_amt_idx := 8;
39057 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39058 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39059 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
39060 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39061 l_rec_acct_attrs.array_char_value(2) := p_source_6;
39062 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39063 l_rec_acct_attrs.array_num_value(3) := p_source_3;
39064 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39065 l_rec_acct_attrs.array_char_value(4) := p_source_7;
39066 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39067 l_rec_acct_attrs.array_date_value(5) := p_source_8;
39068 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39069 l_rec_acct_attrs.array_num_value(6) := p_source_9;
39070 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39071 l_rec_acct_attrs.array_char_value(7) := p_source_10;
39072 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39073 l_rec_acct_attrs.array_num_value(8) := p_source_11;
39074
39075 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39076 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39077
39078 ---------------------------------------------------------------------------------------------------------------
39079 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39080 ---------------------------------------------------------------------------------------------------------------
39081 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39082
39083 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39084 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39085
39086 IF xla_accounting_cache_pkg.GetValueChar
39087 (p_source_code => 'LEDGER_CATEGORY_CODE'
39088 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39089 AND l_bflow_method_code = 'PRIOR_ENTRY'
39090 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39091 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39092 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39093 )
39094 THEN
39095 xla_ae_lines_pkg.BflowUpgEntry
39096 (p_business_method_code => l_bflow_method_code
39097 ,p_business_class_code => l_bflow_class_code
39098 ,p_balance_type => l_balance_type_code);
39099 ELSE
39100 NULL;
39101 -- No business flow processing for business flow method of NONE.
39102 END IF;
39103
39104 --
39105 -- call analytical criteria
39106 --
39107
39108 --
39109 -- call description
39110 --
39111 -- No description or it is inherited.
39112 --
39113 -- call ADRs
39114 -- Bug 4922099
39115 --
39116 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39117 (NVL(l_actual_upg_option, 'N') = 'O') OR
39118 (NVL(l_enc_upg_option, 'N') = 'O')
39119 )
39120 THEN
39121 NULL;
39122 --
39123 --
39124
39125 l_ccid := AcctDerRule_12(
39126 p_application_id => p_application_id
39127 , p_ae_header_id => l_ae_header_id
39128 , p_source_1 => p_source_1
39129 , p_source_2 => p_source_2
39130 , x_transaction_coa_id => l_adr_transaction_coa_id
39131 , x_accounting_coa_id => l_adr_accounting_coa_id
39132 , x_value_type_code => l_adr_value_type_code
39133 , p_side => 'NA'
39134 );
39135
39136 xla_ae_lines_pkg.set_ccid(
39137 p_code_combination_id => l_ccid
39138 , p_value_type_code => l_adr_value_type_code
39139 , p_transaction_coa_id => l_adr_transaction_coa_id
39140 , p_accounting_coa_id => l_adr_accounting_coa_id
39141 , p_adr_code => 'EXP'
39142 , p_adr_type_code => 'S'
39143 , p_component_type => l_component_type
39144 , p_component_code => l_component_code
39148 , p_side => 'NA'
39145 , p_component_type_code => l_component_type_code
39146 , p_component_appl_id => l_component_appl_id
39147 , p_amb_context_code => l_amb_context_code
39149 );
39150
39151
39152 --
39153 --
39154 END IF;
39155 --
39156 -- Bug 4922099
39157 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39158 (NVL(l_enc_upg_option, 'N') = 'O')
39159 ) AND
39160 (l_bflow_method_code = 'PRIOR_ENTRY')
39161 )
39162 THEN
39163 IF
39164 --
39165 1 = 2
39166 --
39167 THEN
39168 xla_accounting_err_pkg.build_message
39169 (p_appli_s_name => 'XLA'
39170 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39171 ,p_token_1 => 'LINE_NUMBER'
39172 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
39173 ,p_token_2 => 'LINE_TYPE_NAME'
39174 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
39175 l_component_type
39176 ,l_component_code
39177 ,l_component_type_code
39178 ,l_component_appl_id
39179 ,l_amb_context_code
39180 ,l_entity_code
39181 ,l_event_class_code
39182 )
39183 ,p_token_3 => 'OWNER'
39184 ,p_value_3 => xla_lookups_pkg.get_meaning(
39185 p_lookup_type => 'XLA_OWNER_TYPE'
39186 ,p_lookup_code => l_component_type_code
39187 )
39188 ,p_token_4 => 'PRODUCT_NAME'
39189 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39190 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39191 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39192 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39193 ,p_ae_header_id => NULL
39194 );
39195
39196 IF (C_LEVEL_ERROR>= g_log_level) THEN
39197 trace
39198 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39199 ,p_level => C_LEVEL_ERROR
39200 ,p_module => l_log_module);
39201 END IF;
39202 END IF;
39203 END IF;
39204 --
39205 --
39206 ------------------------------------------------------------------------------------------------
39207 -- 4219869 Business Flow
39208 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39209 -- Prior Entry. Currently, the following code is always generated.
39210 ------------------------------------------------------------------------------------------------
39211 XLA_AE_LINES_PKG.ValidateCurrentLine;
39212
39213 ------------------------------------------------------------------------------------
39214 -- 4219869 Business Flow
39215 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39216 ------------------------------------------------------------------------------------
39217 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39218
39219 ----------------------------------------------------------------------------------
39220 -- 4219869 Business Flow
39221 -- Update journal entry status -- Need to generate this within IF <condition>
39222 ----------------------------------------------------------------------------------
39223 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39224 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39225 ,p_balance_type_code => l_balance_type_code
39226 );
39227
39228 -------------------------------------------------------------------------------------------
39229 -- 4262811 - Generate the Accrual Reversal lines
39230 -------------------------------------------------------------------------------------------
39231 BEGIN
39232 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39233 (g_array_event(p_event_id).array_value_num('header_index'));
39234 IF l_acc_rev_flag IS NULL THEN
39235 l_acc_rev_flag := 'N';
39236 END IF;
39237 EXCEPTION
39238 WHEN OTHERS THEN
39239 l_acc_rev_flag := 'N';
39240 END;
39241 --
39242 IF (l_acc_rev_flag = 'Y') THEN
39243
39247 ------------------------------------------------------------------------------------------
39244 -- 4645092 ------------------------------------------------------------------------------
39245 -- To allow MPA report to determine if it should generate report process
39246 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39248
39249 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39250 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39251 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
39252 -- call ADRs
39253 -- Bug 4922099
39254 --
39255 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39256 (NVL(l_actual_upg_option, 'N') = 'O') OR
39257 (NVL(l_enc_upg_option, 'N') = 'O')
39258 )
39259 THEN
39260 NULL;
39261 --
39262 --
39263
39264 l_ccid := AcctDerRule_12(
39265 p_application_id => p_application_id
39266 , p_ae_header_id => l_ae_header_id
39267 , p_source_1 => p_source_1
39268 , p_source_2 => p_source_2
39269 , x_transaction_coa_id => l_adr_transaction_coa_id
39270 , x_accounting_coa_id => l_adr_accounting_coa_id
39271 , x_value_type_code => l_adr_value_type_code
39272 , p_side => 'NA'
39273 );
39274
39275 xla_ae_lines_pkg.set_ccid(
39276 p_code_combination_id => l_ccid
39277 , p_value_type_code => l_adr_value_type_code
39278 , p_transaction_coa_id => l_adr_transaction_coa_id
39279 , p_accounting_coa_id => l_adr_accounting_coa_id
39280 , p_adr_code => 'EXP'
39281 , p_adr_type_code => 'S'
39282 , p_component_type => l_component_type
39283 , p_component_code => l_component_code
39284 , p_component_type_code => l_component_type_code
39285 , p_component_appl_id => l_component_appl_id
39286 , p_amb_context_code => l_amb_context_code
39287 , p_side => 'NA'
39288 );
39289
39290
39291 --
39292 --
39293 END IF;
39294
39295 --
39296 -- Update the line information that should be overwritten
39297 --
39298 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39299 p_header_num => 1);
39300 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
39301
39302 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39303
39304 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
39305 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39306 END IF;
39307
39308 --
39309 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39310 --
39311 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39312 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
39313 ELSE
39314 ---------------------------------------------------------------------------------------------------
39315 -- 4262811a Switch Sign
39316 ---------------------------------------------------------------------------------------------------
39317 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
39318 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39319 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39320 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39321 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39322 -- 5132302
39323 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39324 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39325
39326 END IF;
39327
39328 -- 4955764
39329 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39330 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39331
39332
39333 XLA_AE_LINES_PKG.ValidateCurrentLine;
39334 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39335
39336 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39337 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39338 ,p_balance_type_code => l_balance_type_code);
39339
39340 END IF;
39341
39342 -----------------------------------------------------------------------------------------
39343 -- 4262811 Multiperiod Accounting
39344 -----------------------------------------------------------------------------------------
39345 -- No MPA option is assigned.
39346
39347
39348 END IF;
39349 END IF;
39350 --
39351
39352 --
39353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39354 trace
39355 (p_msg => 'END of AcctLineType_103'
39356 ,p_level => C_LEVEL_PROCEDURE
39357 ,p_module => l_log_module);
39358 END IF;
39359 --
39360 EXCEPTION
39364 xla_exceptions_pkg.raise_message
39361 WHEN xla_exceptions_pkg.application_exception THEN
39362 RAISE;
39363 WHEN OTHERS THEN
39365 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_103');
39366 END AcctLineType_103;
39367 --
39368
39369 ---------------------------------------
39370 --
39371 -- PRIVATE FUNCTION
39372 -- AcctLineType_104
39373 --
39374 ---------------------------------------
39375 PROCEDURE AcctLineType_104 (
39376 p_application_id IN NUMBER
39377 ,p_event_id IN NUMBER
39378 ,p_calculate_acctd_flag IN VARCHAR2
39379 ,p_calculate_g_l_flag IN VARCHAR2
39380 ,p_actual_flag IN OUT VARCHAR2
39381 ,p_balance_type_code OUT VARCHAR2
39382 ,p_gain_or_loss_ref OUT VARCHAR2
39383
39384 --Transaction Account
39385 , p_source_1 IN NUMBER
39386 --Journal Line Type
39387 , p_source_2 IN VARCHAR2
39388 --Entered Amount
39389 , p_source_3 IN NUMBER
39390 --First Distribution Identifier
39391 , p_source_5 IN NUMBER
39392 --Distribution Type
39393 , p_source_6 IN VARCHAR2
39394 --Currency Code
39395 , p_source_7 IN VARCHAR2
39396 --Currency Conversion Date
39397 , p_source_8 IN DATE
39398 --Currency Conversion Rate
39399 , p_source_9 IN NUMBER
39400 --Currency Conversion Type
39401 , p_source_10 IN VARCHAR2
39402 --Accounted Amount
39403 , p_source_11 IN NUMBER
39404 )
39405 IS
39406
39407 l_component_type VARCHAR2(80);
39408 l_component_code VARCHAR2(30);
39409 l_component_type_code VARCHAR2(1);
39410 l_component_appl_id INTEGER;
39411 l_amb_context_code VARCHAR2(30);
39412 l_entity_code VARCHAR2(30);
39413 l_event_class_code VARCHAR2(30);
39414 l_ae_header_id NUMBER;
39415 l_event_type_code VARCHAR2(30);
39416 l_line_definition_code VARCHAR2(30);
39417 l_line_definition_owner_code VARCHAR2(1);
39418 --
39419 -- adr variables
39420 l_segment VARCHAR2(30);
39421 l_ccid NUMBER;
39422 l_adr_transaction_coa_id NUMBER;
39423 l_adr_accounting_coa_id NUMBER;
39424 l_adr_flexfield_segment_code VARCHAR2(30);
39425 l_adr_flex_value_set_id NUMBER;
39426 l_adr_value_type_code VARCHAR2(30);
39427 l_adr_value_combination_id NUMBER;
39428 l_adr_value_segment_code VARCHAR2(30);
39429
39430 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
39431 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
39432 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
39433 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
39434
39435 -- 4262811 Variables ------------------------------------------------------------------------------------------
39436 l_entered_amt_idx NUMBER;
39437 l_accted_amt_idx NUMBER;
39438 l_acc_rev_flag VARCHAR2(1);
39439 l_accrual_line_num NUMBER;
39440 l_tmp_amt NUMBER;
39441 l_acc_rev_natural_side_code VARCHAR2(1);
39442
39443 l_num_entries NUMBER;
39444 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
39445 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
39446 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
39447 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
39448 l_recog_line_1 NUMBER;
39449 l_recog_line_2 NUMBER;
39450
39451 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
39452 l_bflow_applied_to_amt NUMBER; -- 5132302
39453 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
39454
39455 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39456
39457 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
39458 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
39459
39460 ---------------------------------------------------------------------------------------------------------------
39461
39462
39463 --
39464 -- bulk performance
39465 --
39466 l_balance_type_code VARCHAR2(1);
39467 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
39468 l_log_module VARCHAR2(240);
39469
39470 --
39471 -- Upgrade strategy
39472 --
39473 l_actual_upg_option VARCHAR2(1);
39474 l_enc_upg_option VARCHAR2(1);
39475
39476 --
39477 BEGIN
39478 --
39479 IF g_log_enabled THEN
39480 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
39481 END IF;
39482 --
39483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39484
39485 trace
39486 (p_msg => 'BEGIN of AcctLineType_104'
39487 ,p_level => C_LEVEL_PROCEDURE
39488 ,p_module => l_log_module);
39489
39490 END IF;
39491 --
39492 l_component_type := 'AMB_JLT';
39493 l_component_code := 'EXP';
39494 l_component_type_code := 'S';
39495 l_component_appl_id := 555;
39499 l_event_type_code := 'PO_RECEIPT';
39496 l_amb_context_code := 'DEFAULT';
39497 l_entity_code := 'PURCHASING';
39498 l_event_class_code := 'DELIVER';
39500 l_line_definition_owner_code := 'S';
39501 l_line_definition_code := 'DELIVER';
39502 --
39503 l_balance_type_code := 'A';
39504 l_segment := NULL;
39505 l_ccid := NULL;
39506 l_adr_transaction_coa_id := NULL;
39507 l_adr_accounting_coa_id := NULL;
39508 l_adr_flexfield_segment_code := NULL;
39509 l_adr_flex_value_set_id := NULL;
39510 l_adr_value_type_code := NULL;
39511 l_adr_value_combination_id := NULL;
39512 l_adr_value_segment_code := NULL;
39513
39514 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
39515 l_bflow_class_code := ''; -- 4219869 Business Flow
39516 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
39517 l_budgetary_control_flag := 'N';
39518
39519 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39520 l_bflow_applied_to_amt := NULL; -- 5132302
39521 l_entered_amt_idx := NULL; -- 4262811
39522 l_accted_amt_idx := NULL; -- 4262811
39523 l_acc_rev_flag := NULL; -- 4262811
39524 l_accrual_line_num := NULL; -- 4262811
39525 l_tmp_amt := NULL; -- 4262811
39526 --
39527
39528 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39529 l_balance_type_code <> 'B' THEN
39530 IF NVL(p_source_2,'
39531 ') = 'EXP'
39532 THEN
39533
39534 --
39535 XLA_AE_LINES_PKG.SetNewLine;
39536
39537 p_balance_type_code := l_balance_type_code;
39538 -- set the flag so later we will know whether the gain loss line needs to be created
39539
39540 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39541 p_actual_flag :='A';
39542 END IF;
39543
39544 --
39545 -- bulk performance
39546 --
39547 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39548 p_header_num => 0); -- 4262811
39549 --
39550 -- set accounting line options
39551 --
39552 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39553 p_natural_side_code => 'D'
39554 , p_gain_or_loss_flag => 'N'
39555 , p_gl_transfer_mode_code => 'D'
39556 , p_acct_entry_type_code => 'A'
39557 , p_switch_side_flag => 'Y'
39558 , p_merge_duplicate_code => 'W'
39559 );
39560 --
39561 l_acc_rev_natural_side_code := 'C'; -- 4262811
39562 --
39563 --
39564 -- set accounting line type info
39565 --
39566 xla_ae_lines_pkg.SetAcctLineType
39567 (p_component_type => l_component_type
39568 ,p_event_type_code => l_event_type_code
39569 ,p_line_definition_owner_code => l_line_definition_owner_code
39570 ,p_line_definition_code => l_line_definition_code
39571 ,p_accounting_line_code => l_component_code
39572 ,p_accounting_line_type_code => l_component_type_code
39573 ,p_accounting_line_appl_id => l_component_appl_id
39574 ,p_amb_context_code => l_amb_context_code
39575 ,p_entity_code => l_entity_code
39576 ,p_event_class_code => l_event_class_code);
39577 --
39578 -- set accounting class
39579 --
39580 xla_ae_lines_pkg.SetAcctClass(
39581 p_accounting_class_code => 'EXPENSE'
39582 , p_ae_header_id => l_ae_header_id
39583 );
39584
39585 --
39586 -- set rounding class
39587 --
39588 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39589 'EXPENSE';
39590
39591 --
39592 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39593 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39594 --
39595 -- bulk performance
39596 --
39597 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39598
39599 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39600 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39601
39602 -- 4955764
39603 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39604 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39605
39606 -- 4458381 Public Sector Enh
39607
39608 --
39609 -- set accounting attributes for the line type
39610 --
39611 l_entered_amt_idx := 3;
39612 l_accted_amt_idx := 8;
39613 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39614 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39615 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
39616 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39617 l_rec_acct_attrs.array_char_value(2) := p_source_6;
39618 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39619 l_rec_acct_attrs.array_num_value(3) := p_source_3;
39620 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39624 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39621 l_rec_acct_attrs.array_char_value(4) := p_source_7;
39622 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39623 l_rec_acct_attrs.array_date_value(5) := p_source_8;
39625 l_rec_acct_attrs.array_num_value(6) := p_source_9;
39626 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39627 l_rec_acct_attrs.array_char_value(7) := p_source_10;
39628 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39629 l_rec_acct_attrs.array_num_value(8) := p_source_11;
39630
39631 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39632 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39633
39634 ---------------------------------------------------------------------------------------------------------------
39635 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39636 ---------------------------------------------------------------------------------------------------------------
39637 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39638
39639 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39640 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39641
39642 IF xla_accounting_cache_pkg.GetValueChar
39643 (p_source_code => 'LEDGER_CATEGORY_CODE'
39644 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39645 AND l_bflow_method_code = 'PRIOR_ENTRY'
39646 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39647 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39648 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39649 )
39650 THEN
39651 xla_ae_lines_pkg.BflowUpgEntry
39652 (p_business_method_code => l_bflow_method_code
39653 ,p_business_class_code => l_bflow_class_code
39654 ,p_balance_type => l_balance_type_code);
39655 ELSE
39656 NULL;
39657 -- No business flow processing for business flow method of NONE.
39658 END IF;
39659
39660 --
39661 -- call analytical criteria
39662 --
39663
39664 --
39665 -- call description
39666 --
39667 -- No description or it is inherited.
39668 --
39669 -- call ADRs
39670 -- Bug 4922099
39671 --
39672 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39673 (NVL(l_actual_upg_option, 'N') = 'O') OR
39674 (NVL(l_enc_upg_option, 'N') = 'O')
39675 )
39676 THEN
39677 NULL;
39678 --
39679 --
39680
39681 l_ccid := AcctDerRule_12(
39682 p_application_id => p_application_id
39683 , p_ae_header_id => l_ae_header_id
39684 , p_source_1 => p_source_1
39685 , p_source_2 => p_source_2
39686 , x_transaction_coa_id => l_adr_transaction_coa_id
39687 , x_accounting_coa_id => l_adr_accounting_coa_id
39688 , x_value_type_code => l_adr_value_type_code
39689 , p_side => 'NA'
39690 );
39691
39692 xla_ae_lines_pkg.set_ccid(
39693 p_code_combination_id => l_ccid
39694 , p_value_type_code => l_adr_value_type_code
39695 , p_transaction_coa_id => l_adr_transaction_coa_id
39696 , p_accounting_coa_id => l_adr_accounting_coa_id
39697 , p_adr_code => 'EXP'
39698 , p_adr_type_code => 'S'
39699 , p_component_type => l_component_type
39700 , p_component_code => l_component_code
39701 , p_component_type_code => l_component_type_code
39702 , p_component_appl_id => l_component_appl_id
39703 , p_amb_context_code => l_amb_context_code
39704 , p_side => 'NA'
39705 );
39706
39707
39708 --
39709 --
39710 END IF;
39711 --
39712 -- Bug 4922099
39713 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39714 (NVL(l_enc_upg_option, 'N') = 'O')
39715 ) AND
39716 (l_bflow_method_code = 'PRIOR_ENTRY')
39717 )
39718 THEN
39719 IF
39720 --
39721 1 = 2
39722 --
39723 THEN
39724 xla_accounting_err_pkg.build_message
39725 (p_appli_s_name => 'XLA'
39726 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39727 ,p_token_1 => 'LINE_NUMBER'
39728 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
39729 ,p_token_2 => 'LINE_TYPE_NAME'
39730 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
39731 l_component_type
39732 ,l_component_code
39733 ,l_component_type_code
39737 ,l_event_class_code
39734 ,l_component_appl_id
39735 ,l_amb_context_code
39736 ,l_entity_code
39738 )
39739 ,p_token_3 => 'OWNER'
39740 ,p_value_3 => xla_lookups_pkg.get_meaning(
39741 p_lookup_type => 'XLA_OWNER_TYPE'
39742 ,p_lookup_code => l_component_type_code
39743 )
39744 ,p_token_4 => 'PRODUCT_NAME'
39745 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39746 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39747 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39748 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39749 ,p_ae_header_id => NULL
39750 );
39751
39752 IF (C_LEVEL_ERROR>= g_log_level) THEN
39753 trace
39754 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39755 ,p_level => C_LEVEL_ERROR
39756 ,p_module => l_log_module);
39757 END IF;
39758 END IF;
39759 END IF;
39760 --
39761 --
39762 ------------------------------------------------------------------------------------------------
39763 -- 4219869 Business Flow
39764 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39765 -- Prior Entry. Currently, the following code is always generated.
39766 ------------------------------------------------------------------------------------------------
39767 XLA_AE_LINES_PKG.ValidateCurrentLine;
39768
39769 ------------------------------------------------------------------------------------
39770 -- 4219869 Business Flow
39771 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39772 ------------------------------------------------------------------------------------
39773 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39774
39775 ----------------------------------------------------------------------------------
39776 -- 4219869 Business Flow
39777 -- Update journal entry status -- Need to generate this within IF <condition>
39778 ----------------------------------------------------------------------------------
39779 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39780 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39781 ,p_balance_type_code => l_balance_type_code
39782 );
39783
39784 -------------------------------------------------------------------------------------------
39785 -- 4262811 - Generate the Accrual Reversal lines
39786 -------------------------------------------------------------------------------------------
39787 BEGIN
39788 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39789 (g_array_event(p_event_id).array_value_num('header_index'));
39790 IF l_acc_rev_flag IS NULL THEN
39791 l_acc_rev_flag := 'N';
39792 END IF;
39793 EXCEPTION
39794 WHEN OTHERS THEN
39795 l_acc_rev_flag := 'N';
39796 END;
39797 --
39798 IF (l_acc_rev_flag = 'Y') THEN
39799
39800 -- 4645092 ------------------------------------------------------------------------------
39801 -- To allow MPA report to determine if it should generate report process
39802 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39803 ------------------------------------------------------------------------------------------
39804
39805 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39806 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39807 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
39808 -- call ADRs
39809 -- Bug 4922099
39810 --
39811 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39812 (NVL(l_actual_upg_option, 'N') = 'O') OR
39813 (NVL(l_enc_upg_option, 'N') = 'O')
39814 )
39815 THEN
39816 NULL;
39817 --
39818 --
39819
39820 l_ccid := AcctDerRule_12(
39821 p_application_id => p_application_id
39822 , p_ae_header_id => l_ae_header_id
39823 , p_source_1 => p_source_1
39824 , p_source_2 => p_source_2
39825 , x_transaction_coa_id => l_adr_transaction_coa_id
39826 , x_accounting_coa_id => l_adr_accounting_coa_id
39827 , x_value_type_code => l_adr_value_type_code
39828 , p_side => 'NA'
39829 );
39830
39831 xla_ae_lines_pkg.set_ccid(
39832 p_code_combination_id => l_ccid
39833 , p_value_type_code => l_adr_value_type_code
39837 , p_adr_type_code => 'S'
39834 , p_transaction_coa_id => l_adr_transaction_coa_id
39835 , p_accounting_coa_id => l_adr_accounting_coa_id
39836 , p_adr_code => 'EXP'
39838 , p_component_type => l_component_type
39839 , p_component_code => l_component_code
39840 , p_component_type_code => l_component_type_code
39841 , p_component_appl_id => l_component_appl_id
39842 , p_amb_context_code => l_amb_context_code
39843 , p_side => 'NA'
39844 );
39845
39846
39847 --
39848 --
39849 END IF;
39850
39851 --
39852 -- Update the line information that should be overwritten
39853 --
39854 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39855 p_header_num => 1);
39856 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
39857
39858 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39859
39860 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
39861 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39862 END IF;
39863
39864 --
39865 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39866 --
39867 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39868 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
39869 ELSE
39870 ---------------------------------------------------------------------------------------------------
39871 -- 4262811a Switch Sign
39872 ---------------------------------------------------------------------------------------------------
39873 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
39874 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39875 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39876 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39877 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39878 -- 5132302
39879 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39880 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39881
39882 END IF;
39883
39884 -- 4955764
39885 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39886 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39887
39888
39889 XLA_AE_LINES_PKG.ValidateCurrentLine;
39890 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39891
39892 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39893 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39894 ,p_balance_type_code => l_balance_type_code);
39895
39896 END IF;
39897
39898 -----------------------------------------------------------------------------------------
39899 -- 4262811 Multiperiod Accounting
39900 -----------------------------------------------------------------------------------------
39901 -- No MPA option is assigned.
39902
39903
39904 END IF;
39905 END IF;
39906 --
39907
39908 --
39909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39910 trace
39911 (p_msg => 'END of AcctLineType_104'
39912 ,p_level => C_LEVEL_PROCEDURE
39913 ,p_module => l_log_module);
39914 END IF;
39915 --
39916 EXCEPTION
39917 WHEN xla_exceptions_pkg.application_exception THEN
39918 RAISE;
39919 WHEN OTHERS THEN
39920 xla_exceptions_pkg.raise_message
39921 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_104');
39922 END AcctLineType_104;
39923 --
39924
39925 ---------------------------------------
39926 --
39927 -- PRIVATE FUNCTION
39928 -- AcctLineType_105
39929 --
39930 ---------------------------------------
39931 PROCEDURE AcctLineType_105 (
39932 p_application_id IN NUMBER
39933 ,p_event_id IN NUMBER
39934 ,p_calculate_acctd_flag IN VARCHAR2
39935 ,p_calculate_g_l_flag IN VARCHAR2
39936 ,p_actual_flag IN OUT VARCHAR2
39937 ,p_balance_type_code OUT VARCHAR2
39938 ,p_gain_or_loss_ref OUT VARCHAR2
39939
39940 --Transaction Account
39941 , p_source_1 IN NUMBER
39942 --Journal Line Type
39943 , p_source_2 IN VARCHAR2
39944 --Entered Amount
39945 , p_source_3 IN NUMBER
39946 --First Distribution Identifier
39947 , p_source_5 IN NUMBER
39948 --Distribution Type
39949 , p_source_6 IN VARCHAR2
39950 --Currency Code
39951 , p_source_7 IN VARCHAR2
39952 --Currency Conversion Date
39953 , p_source_8 IN DATE
39954 --Currency Conversion Rate
39955 , p_source_9 IN NUMBER
39956 --Currency Conversion Type
39957 , p_source_10 IN VARCHAR2
39958 --Accounted Amount
39962
39959 , p_source_11 IN NUMBER
39960 )
39961 IS
39963 l_component_type VARCHAR2(80);
39964 l_component_code VARCHAR2(30);
39965 l_component_type_code VARCHAR2(1);
39966 l_component_appl_id INTEGER;
39967 l_amb_context_code VARCHAR2(30);
39968 l_entity_code VARCHAR2(30);
39969 l_event_class_code VARCHAR2(30);
39970 l_ae_header_id NUMBER;
39971 l_event_type_code VARCHAR2(30);
39972 l_line_definition_code VARCHAR2(30);
39973 l_line_definition_owner_code VARCHAR2(1);
39974 --
39975 -- adr variables
39976 l_segment VARCHAR2(30);
39977 l_ccid NUMBER;
39978 l_adr_transaction_coa_id NUMBER;
39979 l_adr_accounting_coa_id NUMBER;
39980 l_adr_flexfield_segment_code VARCHAR2(30);
39981 l_adr_flex_value_set_id NUMBER;
39982 l_adr_value_type_code VARCHAR2(30);
39983 l_adr_value_combination_id NUMBER;
39984 l_adr_value_segment_code VARCHAR2(30);
39985
39986 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
39987 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
39988 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
39989 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
39990
39991 -- 4262811 Variables ------------------------------------------------------------------------------------------
39992 l_entered_amt_idx NUMBER;
39993 l_accted_amt_idx NUMBER;
39994 l_acc_rev_flag VARCHAR2(1);
39995 l_accrual_line_num NUMBER;
39996 l_tmp_amt NUMBER;
39997 l_acc_rev_natural_side_code VARCHAR2(1);
39998
39999 l_num_entries NUMBER;
40000 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
40001 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
40002 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
40003 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
40004 l_recog_line_1 NUMBER;
40005 l_recog_line_2 NUMBER;
40006
40007 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
40008 l_bflow_applied_to_amt NUMBER; -- 5132302
40009 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
40010
40011 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40012
40013 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
40014 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
40015
40016 ---------------------------------------------------------------------------------------------------------------
40017
40018
40019 --
40020 -- bulk performance
40021 --
40022 l_balance_type_code VARCHAR2(1);
40023 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
40024 l_log_module VARCHAR2(240);
40025
40026 --
40027 -- Upgrade strategy
40028 --
40029 l_actual_upg_option VARCHAR2(1);
40030 l_enc_upg_option VARCHAR2(1);
40031
40032 --
40033 BEGIN
40034 --
40035 IF g_log_enabled THEN
40036 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
40037 END IF;
40038 --
40039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40040
40041 trace
40042 (p_msg => 'BEGIN of AcctLineType_105'
40043 ,p_level => C_LEVEL_PROCEDURE
40044 ,p_module => l_log_module);
40045
40046 END IF;
40047 --
40048 l_component_type := 'AMB_JLT';
40049 l_component_code := 'EXP';
40050 l_component_type_code := 'S';
40051 l_component_appl_id := 555;
40052 l_amb_context_code := 'DEFAULT';
40053 l_entity_code := 'INVENTORY';
40054 l_event_class_code := 'DIR_INTERORG_RCPT';
40055 l_event_type_code := 'DIR_INTERORG_RCPT';
40056 l_line_definition_owner_code := 'S';
40057 l_line_definition_code := 'DIRECT_XFER_RECV';
40058 --
40059 l_balance_type_code := 'A';
40060 l_segment := NULL;
40061 l_ccid := NULL;
40062 l_adr_transaction_coa_id := NULL;
40063 l_adr_accounting_coa_id := NULL;
40064 l_adr_flexfield_segment_code := NULL;
40065 l_adr_flex_value_set_id := NULL;
40066 l_adr_value_type_code := NULL;
40067 l_adr_value_combination_id := NULL;
40068 l_adr_value_segment_code := NULL;
40069
40070 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
40071 l_bflow_class_code := ''; -- 4219869 Business Flow
40072 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
40073 l_budgetary_control_flag := 'N';
40074
40075 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40076 l_bflow_applied_to_amt := NULL; -- 5132302
40077 l_entered_amt_idx := NULL; -- 4262811
40078 l_accted_amt_idx := NULL; -- 4262811
40079 l_acc_rev_flag := NULL; -- 4262811
40080 l_accrual_line_num := NULL; -- 4262811
40081 l_tmp_amt := NULL; -- 4262811
40082 --
40083
40087 ') = 'EXP'
40084 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40085 l_balance_type_code <> 'B' THEN
40086 IF NVL(p_source_2,'
40088 THEN
40089
40090 --
40091 XLA_AE_LINES_PKG.SetNewLine;
40092
40093 p_balance_type_code := l_balance_type_code;
40094 -- set the flag so later we will know whether the gain loss line needs to be created
40095
40096 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40097 p_actual_flag :='A';
40098 END IF;
40099
40100 --
40101 -- bulk performance
40102 --
40103 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40104 p_header_num => 0); -- 4262811
40105 --
40106 -- set accounting line options
40107 --
40108 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40109 p_natural_side_code => 'D'
40110 , p_gain_or_loss_flag => 'N'
40111 , p_gl_transfer_mode_code => 'D'
40112 , p_acct_entry_type_code => 'A'
40113 , p_switch_side_flag => 'Y'
40114 , p_merge_duplicate_code => 'W'
40115 );
40116 --
40117 l_acc_rev_natural_side_code := 'C'; -- 4262811
40118 --
40119 --
40120 -- set accounting line type info
40121 --
40122 xla_ae_lines_pkg.SetAcctLineType
40123 (p_component_type => l_component_type
40124 ,p_event_type_code => l_event_type_code
40125 ,p_line_definition_owner_code => l_line_definition_owner_code
40126 ,p_line_definition_code => l_line_definition_code
40127 ,p_accounting_line_code => l_component_code
40128 ,p_accounting_line_type_code => l_component_type_code
40129 ,p_accounting_line_appl_id => l_component_appl_id
40130 ,p_amb_context_code => l_amb_context_code
40131 ,p_entity_code => l_entity_code
40132 ,p_event_class_code => l_event_class_code);
40133 --
40134 -- set accounting class
40135 --
40136 xla_ae_lines_pkg.SetAcctClass(
40137 p_accounting_class_code => 'EXPENSE'
40138 , p_ae_header_id => l_ae_header_id
40139 );
40140
40141 --
40142 -- set rounding class
40143 --
40144 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40145 'EXPENSE';
40146
40147 --
40148 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40149 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40150 --
40151 -- bulk performance
40152 --
40153 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40154
40155 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40156 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40157
40158 -- 4955764
40159 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40160 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40161
40162 -- 4458381 Public Sector Enh
40163
40164 --
40165 -- set accounting attributes for the line type
40166 --
40167 l_entered_amt_idx := 3;
40168 l_accted_amt_idx := 8;
40169 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40170 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40171 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
40172 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40173 l_rec_acct_attrs.array_char_value(2) := p_source_6;
40174 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40175 l_rec_acct_attrs.array_num_value(3) := p_source_3;
40176 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40177 l_rec_acct_attrs.array_char_value(4) := p_source_7;
40178 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40179 l_rec_acct_attrs.array_date_value(5) := p_source_8;
40180 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40181 l_rec_acct_attrs.array_num_value(6) := p_source_9;
40182 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40183 l_rec_acct_attrs.array_char_value(7) := p_source_10;
40184 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40185 l_rec_acct_attrs.array_num_value(8) := p_source_11;
40186
40187 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40188 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40189
40190 ---------------------------------------------------------------------------------------------------------------
40191 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40192 ---------------------------------------------------------------------------------------------------------------
40193 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40194
40195 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40199 (p_source_code => 'LEDGER_CATEGORY_CODE'
40196 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40197
40198 IF xla_accounting_cache_pkg.GetValueChar
40200 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40201 AND l_bflow_method_code = 'PRIOR_ENTRY'
40202 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40203 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40204 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40205 )
40206 THEN
40207 xla_ae_lines_pkg.BflowUpgEntry
40208 (p_business_method_code => l_bflow_method_code
40209 ,p_business_class_code => l_bflow_class_code
40210 ,p_balance_type => l_balance_type_code);
40211 ELSE
40212 NULL;
40213 -- No business flow processing for business flow method of NONE.
40214 END IF;
40215
40216 --
40217 -- call analytical criteria
40218 --
40219
40220 --
40221 -- call description
40222 --
40223 -- No description or it is inherited.
40224 --
40225 -- call ADRs
40226 -- Bug 4922099
40227 --
40228 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40229 (NVL(l_actual_upg_option, 'N') = 'O') OR
40230 (NVL(l_enc_upg_option, 'N') = 'O')
40231 )
40232 THEN
40233 NULL;
40234 --
40235 --
40236
40237 l_ccid := AcctDerRule_12(
40238 p_application_id => p_application_id
40239 , p_ae_header_id => l_ae_header_id
40240 , p_source_1 => p_source_1
40241 , p_source_2 => p_source_2
40242 , x_transaction_coa_id => l_adr_transaction_coa_id
40243 , x_accounting_coa_id => l_adr_accounting_coa_id
40244 , x_value_type_code => l_adr_value_type_code
40245 , p_side => 'NA'
40246 );
40247
40248 xla_ae_lines_pkg.set_ccid(
40249 p_code_combination_id => l_ccid
40250 , p_value_type_code => l_adr_value_type_code
40251 , p_transaction_coa_id => l_adr_transaction_coa_id
40252 , p_accounting_coa_id => l_adr_accounting_coa_id
40253 , p_adr_code => 'EXP'
40254 , p_adr_type_code => 'S'
40255 , p_component_type => l_component_type
40256 , p_component_code => l_component_code
40257 , p_component_type_code => l_component_type_code
40258 , p_component_appl_id => l_component_appl_id
40259 , p_amb_context_code => l_amb_context_code
40260 , p_side => 'NA'
40261 );
40262
40263
40264 --
40265 --
40266 END IF;
40267 --
40268 -- Bug 4922099
40269 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40270 (NVL(l_enc_upg_option, 'N') = 'O')
40271 ) AND
40272 (l_bflow_method_code = 'PRIOR_ENTRY')
40273 )
40274 THEN
40275 IF
40276 --
40277 1 = 2
40278 --
40279 THEN
40280 xla_accounting_err_pkg.build_message
40281 (p_appli_s_name => 'XLA'
40282 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40283 ,p_token_1 => 'LINE_NUMBER'
40284 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
40285 ,p_token_2 => 'LINE_TYPE_NAME'
40286 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
40287 l_component_type
40288 ,l_component_code
40289 ,l_component_type_code
40290 ,l_component_appl_id
40291 ,l_amb_context_code
40292 ,l_entity_code
40293 ,l_event_class_code
40294 )
40295 ,p_token_3 => 'OWNER'
40296 ,p_value_3 => xla_lookups_pkg.get_meaning(
40297 p_lookup_type => 'XLA_OWNER_TYPE'
40298 ,p_lookup_code => l_component_type_code
40299 )
40300 ,p_token_4 => 'PRODUCT_NAME'
40301 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40302 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40303 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40307
40304 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40305 ,p_ae_header_id => NULL
40306 );
40308 IF (C_LEVEL_ERROR>= g_log_level) THEN
40309 trace
40310 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40311 ,p_level => C_LEVEL_ERROR
40312 ,p_module => l_log_module);
40313 END IF;
40314 END IF;
40315 END IF;
40316 --
40317 --
40318 ------------------------------------------------------------------------------------------------
40319 -- 4219869 Business Flow
40320 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40321 -- Prior Entry. Currently, the following code is always generated.
40322 ------------------------------------------------------------------------------------------------
40323 XLA_AE_LINES_PKG.ValidateCurrentLine;
40324
40325 ------------------------------------------------------------------------------------
40326 -- 4219869 Business Flow
40327 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40328 ------------------------------------------------------------------------------------
40329 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40330
40331 ----------------------------------------------------------------------------------
40332 -- 4219869 Business Flow
40333 -- Update journal entry status -- Need to generate this within IF <condition>
40334 ----------------------------------------------------------------------------------
40335 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40336 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40337 ,p_balance_type_code => l_balance_type_code
40338 );
40339
40340 -------------------------------------------------------------------------------------------
40341 -- 4262811 - Generate the Accrual Reversal lines
40342 -------------------------------------------------------------------------------------------
40343 BEGIN
40344 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40345 (g_array_event(p_event_id).array_value_num('header_index'));
40346 IF l_acc_rev_flag IS NULL THEN
40347 l_acc_rev_flag := 'N';
40348 END IF;
40349 EXCEPTION
40350 WHEN OTHERS THEN
40351 l_acc_rev_flag := 'N';
40352 END;
40353 --
40354 IF (l_acc_rev_flag = 'Y') THEN
40355
40356 -- 4645092 ------------------------------------------------------------------------------
40357 -- To allow MPA report to determine if it should generate report process
40358 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40359 ------------------------------------------------------------------------------------------
40360
40361 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40362 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40363 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
40364 -- call ADRs
40365 -- Bug 4922099
40366 --
40367 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40368 (NVL(l_actual_upg_option, 'N') = 'O') OR
40369 (NVL(l_enc_upg_option, 'N') = 'O')
40370 )
40371 THEN
40372 NULL;
40373 --
40374 --
40375
40376 l_ccid := AcctDerRule_12(
40377 p_application_id => p_application_id
40378 , p_ae_header_id => l_ae_header_id
40379 , p_source_1 => p_source_1
40380 , p_source_2 => p_source_2
40381 , x_transaction_coa_id => l_adr_transaction_coa_id
40382 , x_accounting_coa_id => l_adr_accounting_coa_id
40383 , x_value_type_code => l_adr_value_type_code
40384 , p_side => 'NA'
40385 );
40386
40387 xla_ae_lines_pkg.set_ccid(
40388 p_code_combination_id => l_ccid
40389 , p_value_type_code => l_adr_value_type_code
40390 , p_transaction_coa_id => l_adr_transaction_coa_id
40391 , p_accounting_coa_id => l_adr_accounting_coa_id
40392 , p_adr_code => 'EXP'
40393 , p_adr_type_code => 'S'
40394 , p_component_type => l_component_type
40395 , p_component_code => l_component_code
40396 , p_component_type_code => l_component_type_code
40397 , p_component_appl_id => l_component_appl_id
40398 , p_amb_context_code => l_amb_context_code
40399 , p_side => 'NA'
40400 );
40401
40402
40403 --
40404 --
40405 END IF;
40406
40407 --
40408 -- Update the line information that should be overwritten
40409 --
40410 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40411 p_header_num => 1);
40412 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
40413
40414 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40415
40416 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
40417 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40421 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40418 END IF;
40419
40420 --
40422 --
40423 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40424 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
40425 ELSE
40426 ---------------------------------------------------------------------------------------------------
40427 -- 4262811a Switch Sign
40428 ---------------------------------------------------------------------------------------------------
40429 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
40430 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40431 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40432 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40433 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40434 -- 5132302
40435 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40436 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40437
40438 END IF;
40439
40440 -- 4955764
40441 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40442 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40443
40444
40445 XLA_AE_LINES_PKG.ValidateCurrentLine;
40446 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40447
40448 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40449 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40450 ,p_balance_type_code => l_balance_type_code);
40451
40452 END IF;
40453
40454 -----------------------------------------------------------------------------------------
40455 -- 4262811 Multiperiod Accounting
40456 -----------------------------------------------------------------------------------------
40457 -- No MPA option is assigned.
40458
40459
40460 END IF;
40461 END IF;
40462 --
40463
40464 --
40465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40466 trace
40467 (p_msg => 'END of AcctLineType_105'
40468 ,p_level => C_LEVEL_PROCEDURE
40469 ,p_module => l_log_module);
40470 END IF;
40471 --
40472 EXCEPTION
40473 WHEN xla_exceptions_pkg.application_exception THEN
40474 RAISE;
40475 WHEN OTHERS THEN
40476 xla_exceptions_pkg.raise_message
40477 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_105');
40478 END AcctLineType_105;
40479 --
40480
40481 ---------------------------------------
40482 --
40483 -- PRIVATE FUNCTION
40484 -- AcctLineType_106
40485 --
40486 ---------------------------------------
40487 PROCEDURE AcctLineType_106 (
40488 p_application_id IN NUMBER
40489 ,p_event_id IN NUMBER
40490 ,p_calculate_acctd_flag IN VARCHAR2
40491 ,p_calculate_g_l_flag IN VARCHAR2
40492 ,p_actual_flag IN OUT VARCHAR2
40493 ,p_balance_type_code OUT VARCHAR2
40494 ,p_gain_or_loss_ref OUT VARCHAR2
40495
40496 --Transaction Account
40497 , p_source_1 IN NUMBER
40498 --Journal Line Type
40499 , p_source_2 IN VARCHAR2
40500 --Entered Amount
40501 , p_source_3 IN NUMBER
40502 --First Distribution Identifier
40503 , p_source_5 IN NUMBER
40504 --Distribution Type
40505 , p_source_6 IN VARCHAR2
40506 --Currency Code
40507 , p_source_7 IN VARCHAR2
40508 --Currency Conversion Date
40509 , p_source_8 IN DATE
40510 --Currency Conversion Rate
40511 , p_source_9 IN NUMBER
40512 --Currency Conversion Type
40513 , p_source_10 IN VARCHAR2
40514 --Accounted Amount
40515 , p_source_11 IN NUMBER
40516 )
40517 IS
40518
40519 l_component_type VARCHAR2(80);
40520 l_component_code VARCHAR2(30);
40521 l_component_type_code VARCHAR2(1);
40522 l_component_appl_id INTEGER;
40523 l_amb_context_code VARCHAR2(30);
40524 l_entity_code VARCHAR2(30);
40525 l_event_class_code VARCHAR2(30);
40526 l_ae_header_id NUMBER;
40527 l_event_type_code VARCHAR2(30);
40528 l_line_definition_code VARCHAR2(30);
40529 l_line_definition_owner_code VARCHAR2(1);
40530 --
40531 -- adr variables
40532 l_segment VARCHAR2(30);
40533 l_ccid NUMBER;
40534 l_adr_transaction_coa_id NUMBER;
40535 l_adr_accounting_coa_id NUMBER;
40536 l_adr_flexfield_segment_code VARCHAR2(30);
40537 l_adr_flex_value_set_id NUMBER;
40538 l_adr_value_type_code VARCHAR2(30);
40539 l_adr_value_combination_id NUMBER;
40540 l_adr_value_segment_code VARCHAR2(30);
40541
40542 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
40543 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
40547 -- 4262811 Variables ------------------------------------------------------------------------------------------
40544 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
40545 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
40546
40548 l_entered_amt_idx NUMBER;
40549 l_accted_amt_idx NUMBER;
40550 l_acc_rev_flag VARCHAR2(1);
40551 l_accrual_line_num NUMBER;
40552 l_tmp_amt NUMBER;
40553 l_acc_rev_natural_side_code VARCHAR2(1);
40554
40555 l_num_entries NUMBER;
40556 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
40557 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
40558 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
40559 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
40560 l_recog_line_1 NUMBER;
40561 l_recog_line_2 NUMBER;
40562
40563 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
40564 l_bflow_applied_to_amt NUMBER; -- 5132302
40565 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
40566
40567 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40568
40569 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
40570 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
40571
40572 ---------------------------------------------------------------------------------------------------------------
40573
40574
40575 --
40576 -- bulk performance
40577 --
40578 l_balance_type_code VARCHAR2(1);
40579 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
40580 l_log_module VARCHAR2(240);
40581
40582 --
40583 -- Upgrade strategy
40584 --
40585 l_actual_upg_option VARCHAR2(1);
40586 l_enc_upg_option VARCHAR2(1);
40587
40588 --
40589 BEGIN
40590 --
40591 IF g_log_enabled THEN
40592 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
40593 END IF;
40594 --
40595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40596
40597 trace
40598 (p_msg => 'BEGIN of AcctLineType_106'
40599 ,p_level => C_LEVEL_PROCEDURE
40600 ,p_module => l_log_module);
40601
40602 END IF;
40603 --
40604 l_component_type := 'AMB_JLT';
40605 l_component_code := 'EXP';
40606 l_component_type_code := 'S';
40607 l_component_appl_id := 555;
40608 l_amb_context_code := 'DEFAULT';
40609 l_entity_code := 'INVENTORY';
40610 l_event_class_code := 'INT_ORDER_TO_EXP';
40611 l_event_type_code := 'EXP_REQ_RCPT';
40612 l_line_definition_owner_code := 'S';
40613 l_line_definition_code := 'EXP_REQ_RCPT';
40614 --
40615 l_balance_type_code := 'A';
40616 l_segment := NULL;
40617 l_ccid := NULL;
40618 l_adr_transaction_coa_id := NULL;
40619 l_adr_accounting_coa_id := NULL;
40620 l_adr_flexfield_segment_code := NULL;
40621 l_adr_flex_value_set_id := NULL;
40622 l_adr_value_type_code := NULL;
40623 l_adr_value_combination_id := NULL;
40624 l_adr_value_segment_code := NULL;
40625
40626 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
40627 l_bflow_class_code := ''; -- 4219869 Business Flow
40628 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
40629 l_budgetary_control_flag := 'N';
40630
40631 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40632 l_bflow_applied_to_amt := NULL; -- 5132302
40633 l_entered_amt_idx := NULL; -- 4262811
40634 l_accted_amt_idx := NULL; -- 4262811
40635 l_acc_rev_flag := NULL; -- 4262811
40636 l_accrual_line_num := NULL; -- 4262811
40637 l_tmp_amt := NULL; -- 4262811
40638 --
40639
40640 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40641 l_balance_type_code <> 'B' THEN
40642 IF NVL(p_source_2,'
40643 ') = 'EXP'
40644 THEN
40645
40646 --
40647 XLA_AE_LINES_PKG.SetNewLine;
40648
40649 p_balance_type_code := l_balance_type_code;
40650 -- set the flag so later we will know whether the gain loss line needs to be created
40651
40652 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40653 p_actual_flag :='A';
40654 END IF;
40655
40656 --
40657 -- bulk performance
40658 --
40659 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40660 p_header_num => 0); -- 4262811
40661 --
40662 -- set accounting line options
40663 --
40664 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40665 p_natural_side_code => 'D'
40666 , p_gain_or_loss_flag => 'N'
40667 , p_gl_transfer_mode_code => 'D'
40668 , p_acct_entry_type_code => 'A'
40669 , p_switch_side_flag => 'Y'
40670 , p_merge_duplicate_code => 'W'
40671 );
40672 --
40673 l_acc_rev_natural_side_code := 'C'; -- 4262811
40674 --
40675 --
40679 (p_component_type => l_component_type
40676 -- set accounting line type info
40677 --
40678 xla_ae_lines_pkg.SetAcctLineType
40680 ,p_event_type_code => l_event_type_code
40681 ,p_line_definition_owner_code => l_line_definition_owner_code
40682 ,p_line_definition_code => l_line_definition_code
40683 ,p_accounting_line_code => l_component_code
40684 ,p_accounting_line_type_code => l_component_type_code
40685 ,p_accounting_line_appl_id => l_component_appl_id
40686 ,p_amb_context_code => l_amb_context_code
40687 ,p_entity_code => l_entity_code
40688 ,p_event_class_code => l_event_class_code);
40689 --
40690 -- set accounting class
40691 --
40692 xla_ae_lines_pkg.SetAcctClass(
40693 p_accounting_class_code => 'EXPENSE'
40694 , p_ae_header_id => l_ae_header_id
40695 );
40696
40697 --
40698 -- set rounding class
40699 --
40700 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40701 'EXPENSE';
40702
40703 --
40704 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40705 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40706 --
40707 -- bulk performance
40708 --
40709 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40710
40711 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40712 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40713
40714 -- 4955764
40715 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40716 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40717
40718 -- 4458381 Public Sector Enh
40719
40720 --
40721 -- set accounting attributes for the line type
40722 --
40723 l_entered_amt_idx := 3;
40724 l_accted_amt_idx := 8;
40725 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40726 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40727 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
40728 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40729 l_rec_acct_attrs.array_char_value(2) := p_source_6;
40730 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40731 l_rec_acct_attrs.array_num_value(3) := p_source_3;
40732 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40733 l_rec_acct_attrs.array_char_value(4) := p_source_7;
40734 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40735 l_rec_acct_attrs.array_date_value(5) := p_source_8;
40736 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40737 l_rec_acct_attrs.array_num_value(6) := p_source_9;
40738 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40739 l_rec_acct_attrs.array_char_value(7) := p_source_10;
40740 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40741 l_rec_acct_attrs.array_num_value(8) := p_source_11;
40742
40743 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40744 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40745
40746 ---------------------------------------------------------------------------------------------------------------
40747 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40748 ---------------------------------------------------------------------------------------------------------------
40749 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40750
40751 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40752 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40753
40754 IF xla_accounting_cache_pkg.GetValueChar
40755 (p_source_code => 'LEDGER_CATEGORY_CODE'
40756 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40757 AND l_bflow_method_code = 'PRIOR_ENTRY'
40758 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40759 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40760 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40761 )
40762 THEN
40763 xla_ae_lines_pkg.BflowUpgEntry
40764 (p_business_method_code => l_bflow_method_code
40765 ,p_business_class_code => l_bflow_class_code
40766 ,p_balance_type => l_balance_type_code);
40767 ELSE
40768 NULL;
40769 -- No business flow processing for business flow method of NONE.
40770 END IF;
40771
40772 --
40773 -- call analytical criteria
40774 --
40775
40776 --
40777 -- call description
40778 --
40779 -- No description or it is inherited.
40780 --
40781 -- call ADRs
40782 -- Bug 4922099
40783 --
40784 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40785 (NVL(l_actual_upg_option, 'N') = 'O') OR
40786 (NVL(l_enc_upg_option, 'N') = 'O')
40787 )
40788 THEN
40792
40789 NULL;
40790 --
40791 --
40793 l_ccid := AcctDerRule_12(
40794 p_application_id => p_application_id
40795 , p_ae_header_id => l_ae_header_id
40796 , p_source_1 => p_source_1
40797 , p_source_2 => p_source_2
40798 , x_transaction_coa_id => l_adr_transaction_coa_id
40799 , x_accounting_coa_id => l_adr_accounting_coa_id
40800 , x_value_type_code => l_adr_value_type_code
40801 , p_side => 'NA'
40802 );
40803
40804 xla_ae_lines_pkg.set_ccid(
40805 p_code_combination_id => l_ccid
40806 , p_value_type_code => l_adr_value_type_code
40807 , p_transaction_coa_id => l_adr_transaction_coa_id
40808 , p_accounting_coa_id => l_adr_accounting_coa_id
40809 , p_adr_code => 'EXP'
40810 , p_adr_type_code => 'S'
40811 , p_component_type => l_component_type
40812 , p_component_code => l_component_code
40813 , p_component_type_code => l_component_type_code
40814 , p_component_appl_id => l_component_appl_id
40815 , p_amb_context_code => l_amb_context_code
40816 , p_side => 'NA'
40817 );
40818
40819
40820 --
40821 --
40822 END IF;
40823 --
40824 -- Bug 4922099
40825 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40826 (NVL(l_enc_upg_option, 'N') = 'O')
40827 ) AND
40828 (l_bflow_method_code = 'PRIOR_ENTRY')
40829 )
40830 THEN
40831 IF
40832 --
40833 1 = 2
40834 --
40835 THEN
40836 xla_accounting_err_pkg.build_message
40837 (p_appli_s_name => 'XLA'
40838 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40839 ,p_token_1 => 'LINE_NUMBER'
40840 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
40841 ,p_token_2 => 'LINE_TYPE_NAME'
40842 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
40843 l_component_type
40844 ,l_component_code
40845 ,l_component_type_code
40846 ,l_component_appl_id
40847 ,l_amb_context_code
40848 ,l_entity_code
40849 ,l_event_class_code
40850 )
40851 ,p_token_3 => 'OWNER'
40852 ,p_value_3 => xla_lookups_pkg.get_meaning(
40853 p_lookup_type => 'XLA_OWNER_TYPE'
40854 ,p_lookup_code => l_component_type_code
40855 )
40856 ,p_token_4 => 'PRODUCT_NAME'
40857 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40858 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40859 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40860 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40861 ,p_ae_header_id => NULL
40862 );
40863
40864 IF (C_LEVEL_ERROR>= g_log_level) THEN
40865 trace
40866 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40867 ,p_level => C_LEVEL_ERROR
40868 ,p_module => l_log_module);
40869 END IF;
40870 END IF;
40871 END IF;
40872 --
40873 --
40874 ------------------------------------------------------------------------------------------------
40875 -- 4219869 Business Flow
40876 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40877 -- Prior Entry. Currently, the following code is always generated.
40878 ------------------------------------------------------------------------------------------------
40879 XLA_AE_LINES_PKG.ValidateCurrentLine;
40880
40881 ------------------------------------------------------------------------------------
40882 -- 4219869 Business Flow
40883 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40884 ------------------------------------------------------------------------------------
40885 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40886
40887 ----------------------------------------------------------------------------------
40888 -- 4219869 Business Flow
40892 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40889 -- Update journal entry status -- Need to generate this within IF <condition>
40890 ----------------------------------------------------------------------------------
40891 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40893 ,p_balance_type_code => l_balance_type_code
40894 );
40895
40896 -------------------------------------------------------------------------------------------
40897 -- 4262811 - Generate the Accrual Reversal lines
40898 -------------------------------------------------------------------------------------------
40899 BEGIN
40900 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40901 (g_array_event(p_event_id).array_value_num('header_index'));
40902 IF l_acc_rev_flag IS NULL THEN
40903 l_acc_rev_flag := 'N';
40904 END IF;
40905 EXCEPTION
40906 WHEN OTHERS THEN
40907 l_acc_rev_flag := 'N';
40908 END;
40909 --
40910 IF (l_acc_rev_flag = 'Y') THEN
40911
40912 -- 4645092 ------------------------------------------------------------------------------
40913 -- To allow MPA report to determine if it should generate report process
40914 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40915 ------------------------------------------------------------------------------------------
40916
40917 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40918 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40919 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
40920 -- call ADRs
40921 -- Bug 4922099
40922 --
40923 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40924 (NVL(l_actual_upg_option, 'N') = 'O') OR
40925 (NVL(l_enc_upg_option, 'N') = 'O')
40926 )
40927 THEN
40928 NULL;
40929 --
40930 --
40931
40932 l_ccid := AcctDerRule_12(
40933 p_application_id => p_application_id
40934 , p_ae_header_id => l_ae_header_id
40935 , p_source_1 => p_source_1
40936 , p_source_2 => p_source_2
40937 , x_transaction_coa_id => l_adr_transaction_coa_id
40938 , x_accounting_coa_id => l_adr_accounting_coa_id
40939 , x_value_type_code => l_adr_value_type_code
40940 , p_side => 'NA'
40941 );
40942
40943 xla_ae_lines_pkg.set_ccid(
40944 p_code_combination_id => l_ccid
40945 , p_value_type_code => l_adr_value_type_code
40946 , p_transaction_coa_id => l_adr_transaction_coa_id
40947 , p_accounting_coa_id => l_adr_accounting_coa_id
40948 , p_adr_code => 'EXP'
40949 , p_adr_type_code => 'S'
40950 , p_component_type => l_component_type
40951 , p_component_code => l_component_code
40952 , p_component_type_code => l_component_type_code
40953 , p_component_appl_id => l_component_appl_id
40954 , p_amb_context_code => l_amb_context_code
40955 , p_side => 'NA'
40956 );
40957
40958
40959 --
40960 --
40961 END IF;
40962
40963 --
40964 -- Update the line information that should be overwritten
40965 --
40966 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40967 p_header_num => 1);
40968 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
40969
40970 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40971
40972 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
40973 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40974 END IF;
40975
40976 --
40977 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40978 --
40979 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40980 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
40981 ELSE
40982 ---------------------------------------------------------------------------------------------------
40983 -- 4262811a Switch Sign
40984 ---------------------------------------------------------------------------------------------------
40985 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
40986 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40987 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40988 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40989 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40990 -- 5132302
40991 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40992 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40993
40994 END IF;
40995
40996 -- 4955764
40997 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41001 XLA_AE_LINES_PKG.ValidateCurrentLine;
40998 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40999
41000
41002 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41003
41004 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41005 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41006 ,p_balance_type_code => l_balance_type_code);
41007
41008 END IF;
41009
41010 -----------------------------------------------------------------------------------------
41011 -- 4262811 Multiperiod Accounting
41012 -----------------------------------------------------------------------------------------
41013 -- No MPA option is assigned.
41014
41015
41016 END IF;
41017 END IF;
41018 --
41019
41020 --
41021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41022 trace
41023 (p_msg => 'END of AcctLineType_106'
41024 ,p_level => C_LEVEL_PROCEDURE
41025 ,p_module => l_log_module);
41026 END IF;
41027 --
41028 EXCEPTION
41029 WHEN xla_exceptions_pkg.application_exception THEN
41030 RAISE;
41031 WHEN OTHERS THEN
41032 xla_exceptions_pkg.raise_message
41033 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_106');
41034 END AcctLineType_106;
41035 --
41036
41037 ---------------------------------------
41038 --
41039 -- PRIVATE FUNCTION
41040 -- AcctLineType_107
41041 --
41042 ---------------------------------------
41043 PROCEDURE AcctLineType_107 (
41044 p_application_id IN NUMBER
41045 ,p_event_id IN NUMBER
41046 ,p_calculate_acctd_flag IN VARCHAR2
41047 ,p_calculate_g_l_flag IN VARCHAR2
41048 ,p_actual_flag IN OUT VARCHAR2
41049 ,p_balance_type_code OUT VARCHAR2
41050 ,p_gain_or_loss_ref OUT VARCHAR2
41051
41052 --Transaction Account
41053 , p_source_1 IN NUMBER
41054 --Journal Line Type
41055 , p_source_2 IN VARCHAR2
41056 --Entered Amount
41057 , p_source_3 IN NUMBER
41058 --First Distribution Identifier
41059 , p_source_5 IN NUMBER
41060 --Distribution Type
41061 , p_source_6 IN VARCHAR2
41062 --Currency Code
41063 , p_source_7 IN VARCHAR2
41064 --Currency Conversion Date
41065 , p_source_8 IN DATE
41066 --Currency Conversion Rate
41067 , p_source_9 IN NUMBER
41068 --Currency Conversion Type
41069 , p_source_10 IN VARCHAR2
41070 --Accounted Amount
41071 , p_source_11 IN NUMBER
41072 )
41073 IS
41074
41075 l_component_type VARCHAR2(80);
41076 l_component_code VARCHAR2(30);
41077 l_component_type_code VARCHAR2(1);
41078 l_component_appl_id INTEGER;
41079 l_amb_context_code VARCHAR2(30);
41080 l_entity_code VARCHAR2(30);
41081 l_event_class_code VARCHAR2(30);
41082 l_ae_header_id NUMBER;
41083 l_event_type_code VARCHAR2(30);
41084 l_line_definition_code VARCHAR2(30);
41085 l_line_definition_owner_code VARCHAR2(1);
41086 --
41087 -- adr variables
41088 l_segment VARCHAR2(30);
41089 l_ccid NUMBER;
41090 l_adr_transaction_coa_id NUMBER;
41091 l_adr_accounting_coa_id NUMBER;
41092 l_adr_flexfield_segment_code VARCHAR2(30);
41093 l_adr_flex_value_set_id NUMBER;
41094 l_adr_value_type_code VARCHAR2(30);
41095 l_adr_value_combination_id NUMBER;
41096 l_adr_value_segment_code VARCHAR2(30);
41097
41098 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
41099 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
41100 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
41101 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
41102
41103 -- 4262811 Variables ------------------------------------------------------------------------------------------
41104 l_entered_amt_idx NUMBER;
41105 l_accted_amt_idx NUMBER;
41106 l_acc_rev_flag VARCHAR2(1);
41107 l_accrual_line_num NUMBER;
41108 l_tmp_amt NUMBER;
41109 l_acc_rev_natural_side_code VARCHAR2(1);
41110
41111 l_num_entries NUMBER;
41112 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
41113 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
41114 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
41115 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
41116 l_recog_line_1 NUMBER;
41117 l_recog_line_2 NUMBER;
41118
41119 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
41120 l_bflow_applied_to_amt NUMBER; -- 5132302
41121 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
41122
41123 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41124
41125 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
41126 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
41127
41131 --
41128 ---------------------------------------------------------------------------------------------------------------
41129
41130
41132 -- bulk performance
41133 --
41134 l_balance_type_code VARCHAR2(1);
41135 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
41136 l_log_module VARCHAR2(240);
41137
41138 --
41139 -- Upgrade strategy
41140 --
41141 l_actual_upg_option VARCHAR2(1);
41142 l_enc_upg_option VARCHAR2(1);
41143
41144 --
41145 BEGIN
41146 --
41147 IF g_log_enabled THEN
41148 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
41149 END IF;
41150 --
41151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41152
41153 trace
41154 (p_msg => 'BEGIN of AcctLineType_107'
41155 ,p_level => C_LEVEL_PROCEDURE
41156 ,p_module => l_log_module);
41157
41158 END IF;
41159 --
41160 l_component_type := 'AMB_JLT';
41161 l_component_code := 'EXP';
41162 l_component_type_code := 'S';
41163 l_component_appl_id := 555;
41164 l_amb_context_code := 'DEFAULT';
41165 l_entity_code := 'INVENTORY';
41166 l_event_class_code := 'INT_ORDER_TO_EXP';
41167 l_event_type_code := 'INT_ORDER_ISSUE';
41168 l_line_definition_owner_code := 'S';
41169 l_line_definition_code := 'INT_ORDER_ISSUE';
41170 --
41171 l_balance_type_code := 'A';
41172 l_segment := NULL;
41173 l_ccid := NULL;
41174 l_adr_transaction_coa_id := NULL;
41175 l_adr_accounting_coa_id := NULL;
41176 l_adr_flexfield_segment_code := NULL;
41177 l_adr_flex_value_set_id := NULL;
41178 l_adr_value_type_code := NULL;
41179 l_adr_value_combination_id := NULL;
41180 l_adr_value_segment_code := NULL;
41181
41182 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
41183 l_bflow_class_code := ''; -- 4219869 Business Flow
41184 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
41185 l_budgetary_control_flag := 'N';
41186
41187 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41188 l_bflow_applied_to_amt := NULL; -- 5132302
41189 l_entered_amt_idx := NULL; -- 4262811
41190 l_accted_amt_idx := NULL; -- 4262811
41191 l_acc_rev_flag := NULL; -- 4262811
41192 l_accrual_line_num := NULL; -- 4262811
41193 l_tmp_amt := NULL; -- 4262811
41194 --
41195
41196 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41197 l_balance_type_code <> 'B' THEN
41198 IF NVL(p_source_2,'
41199 ') = 'EXP'
41200 THEN
41201
41202 --
41203 XLA_AE_LINES_PKG.SetNewLine;
41204
41205 p_balance_type_code := l_balance_type_code;
41206 -- set the flag so later we will know whether the gain loss line needs to be created
41207
41208 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41209 p_actual_flag :='A';
41210 END IF;
41211
41212 --
41213 -- bulk performance
41214 --
41215 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41216 p_header_num => 0); -- 4262811
41217 --
41218 -- set accounting line options
41219 --
41220 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41221 p_natural_side_code => 'D'
41222 , p_gain_or_loss_flag => 'N'
41223 , p_gl_transfer_mode_code => 'D'
41224 , p_acct_entry_type_code => 'A'
41225 , p_switch_side_flag => 'Y'
41226 , p_merge_duplicate_code => 'W'
41227 );
41228 --
41229 l_acc_rev_natural_side_code := 'C'; -- 4262811
41230 --
41231 --
41232 -- set accounting line type info
41233 --
41234 xla_ae_lines_pkg.SetAcctLineType
41235 (p_component_type => l_component_type
41236 ,p_event_type_code => l_event_type_code
41237 ,p_line_definition_owner_code => l_line_definition_owner_code
41238 ,p_line_definition_code => l_line_definition_code
41239 ,p_accounting_line_code => l_component_code
41240 ,p_accounting_line_type_code => l_component_type_code
41241 ,p_accounting_line_appl_id => l_component_appl_id
41242 ,p_amb_context_code => l_amb_context_code
41243 ,p_entity_code => l_entity_code
41244 ,p_event_class_code => l_event_class_code);
41245 --
41246 -- set accounting class
41247 --
41248 xla_ae_lines_pkg.SetAcctClass(
41249 p_accounting_class_code => 'EXPENSE'
41250 , p_ae_header_id => l_ae_header_id
41251 );
41252
41253 --
41254 -- set rounding class
41255 --
41256 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41257 'EXPENSE';
41258
41259 --
41260 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41261 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41262 --
41263 -- bulk performance
41267 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41264 --
41265 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41266
41268 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41269
41270 -- 4955764
41271 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41272 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41273
41274 -- 4458381 Public Sector Enh
41275
41276 --
41277 -- set accounting attributes for the line type
41278 --
41279 l_entered_amt_idx := 3;
41280 l_accted_amt_idx := 8;
41281 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41282 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41283 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
41284 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41285 l_rec_acct_attrs.array_char_value(2) := p_source_6;
41286 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41287 l_rec_acct_attrs.array_num_value(3) := p_source_3;
41288 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41289 l_rec_acct_attrs.array_char_value(4) := p_source_7;
41290 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41291 l_rec_acct_attrs.array_date_value(5) := p_source_8;
41292 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41293 l_rec_acct_attrs.array_num_value(6) := p_source_9;
41294 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41295 l_rec_acct_attrs.array_char_value(7) := p_source_10;
41296 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41297 l_rec_acct_attrs.array_num_value(8) := p_source_11;
41298
41299 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41300 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41301
41302 ---------------------------------------------------------------------------------------------------------------
41303 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41304 ---------------------------------------------------------------------------------------------------------------
41305 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41306
41307 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41308 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41309
41310 IF xla_accounting_cache_pkg.GetValueChar
41311 (p_source_code => 'LEDGER_CATEGORY_CODE'
41312 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41313 AND l_bflow_method_code = 'PRIOR_ENTRY'
41314 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41315 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41316 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41317 )
41318 THEN
41319 xla_ae_lines_pkg.BflowUpgEntry
41320 (p_business_method_code => l_bflow_method_code
41321 ,p_business_class_code => l_bflow_class_code
41322 ,p_balance_type => l_balance_type_code);
41323 ELSE
41324 NULL;
41325 -- No business flow processing for business flow method of NONE.
41326 END IF;
41327
41328 --
41329 -- call analytical criteria
41330 --
41331
41332 --
41333 -- call description
41334 --
41335 -- No description or it is inherited.
41336 --
41337 -- call ADRs
41338 -- Bug 4922099
41339 --
41340 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41341 (NVL(l_actual_upg_option, 'N') = 'O') OR
41342 (NVL(l_enc_upg_option, 'N') = 'O')
41343 )
41344 THEN
41345 NULL;
41346 --
41347 --
41348
41349 l_ccid := AcctDerRule_12(
41350 p_application_id => p_application_id
41351 , p_ae_header_id => l_ae_header_id
41352 , p_source_1 => p_source_1
41353 , p_source_2 => p_source_2
41354 , x_transaction_coa_id => l_adr_transaction_coa_id
41355 , x_accounting_coa_id => l_adr_accounting_coa_id
41356 , x_value_type_code => l_adr_value_type_code
41357 , p_side => 'NA'
41358 );
41359
41360 xla_ae_lines_pkg.set_ccid(
41361 p_code_combination_id => l_ccid
41362 , p_value_type_code => l_adr_value_type_code
41363 , p_transaction_coa_id => l_adr_transaction_coa_id
41364 , p_accounting_coa_id => l_adr_accounting_coa_id
41365 , p_adr_code => 'EXP'
41366 , p_adr_type_code => 'S'
41367 , p_component_type => l_component_type
41368 , p_component_code => l_component_code
41369 , p_component_type_code => l_component_type_code
41370 , p_component_appl_id => l_component_appl_id
41371 , p_amb_context_code => l_amb_context_code
41372 , p_side => 'NA'
41373 );
41374
41375
41376 --
41377 --
41378 END IF;
41379 --
41380 -- Bug 4922099
41384 (l_bflow_method_code = 'PRIOR_ENTRY')
41381 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41382 (NVL(l_enc_upg_option, 'N') = 'O')
41383 ) AND
41385 )
41386 THEN
41387 IF
41388 --
41389 1 = 2
41390 --
41391 THEN
41392 xla_accounting_err_pkg.build_message
41393 (p_appli_s_name => 'XLA'
41394 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41395 ,p_token_1 => 'LINE_NUMBER'
41396 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
41397 ,p_token_2 => 'LINE_TYPE_NAME'
41398 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
41399 l_component_type
41400 ,l_component_code
41401 ,l_component_type_code
41402 ,l_component_appl_id
41403 ,l_amb_context_code
41404 ,l_entity_code
41405 ,l_event_class_code
41406 )
41407 ,p_token_3 => 'OWNER'
41408 ,p_value_3 => xla_lookups_pkg.get_meaning(
41409 p_lookup_type => 'XLA_OWNER_TYPE'
41410 ,p_lookup_code => l_component_type_code
41411 )
41412 ,p_token_4 => 'PRODUCT_NAME'
41413 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41414 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41415 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41416 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41417 ,p_ae_header_id => NULL
41418 );
41419
41420 IF (C_LEVEL_ERROR>= g_log_level) THEN
41421 trace
41422 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41423 ,p_level => C_LEVEL_ERROR
41424 ,p_module => l_log_module);
41425 END IF;
41426 END IF;
41427 END IF;
41428 --
41429 --
41430 ------------------------------------------------------------------------------------------------
41431 -- 4219869 Business Flow
41432 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41433 -- Prior Entry. Currently, the following code is always generated.
41434 ------------------------------------------------------------------------------------------------
41435 XLA_AE_LINES_PKG.ValidateCurrentLine;
41436
41437 ------------------------------------------------------------------------------------
41438 -- 4219869 Business Flow
41439 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41440 ------------------------------------------------------------------------------------
41441 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41442
41443 ----------------------------------------------------------------------------------
41444 -- 4219869 Business Flow
41445 -- Update journal entry status -- Need to generate this within IF <condition>
41446 ----------------------------------------------------------------------------------
41447 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41448 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41449 ,p_balance_type_code => l_balance_type_code
41450 );
41451
41452 -------------------------------------------------------------------------------------------
41453 -- 4262811 - Generate the Accrual Reversal lines
41454 -------------------------------------------------------------------------------------------
41455 BEGIN
41456 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41457 (g_array_event(p_event_id).array_value_num('header_index'));
41458 IF l_acc_rev_flag IS NULL THEN
41459 l_acc_rev_flag := 'N';
41460 END IF;
41461 EXCEPTION
41462 WHEN OTHERS THEN
41463 l_acc_rev_flag := 'N';
41464 END;
41465 --
41466 IF (l_acc_rev_flag = 'Y') THEN
41467
41468 -- 4645092 ------------------------------------------------------------------------------
41469 -- To allow MPA report to determine if it should generate report process
41470 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41471 ------------------------------------------------------------------------------------------
41475 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
41472
41473 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41474 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41476 -- call ADRs
41477 -- Bug 4922099
41478 --
41479 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41480 (NVL(l_actual_upg_option, 'N') = 'O') OR
41481 (NVL(l_enc_upg_option, 'N') = 'O')
41482 )
41483 THEN
41484 NULL;
41485 --
41486 --
41487
41488 l_ccid := AcctDerRule_12(
41489 p_application_id => p_application_id
41490 , p_ae_header_id => l_ae_header_id
41491 , p_source_1 => p_source_1
41492 , p_source_2 => p_source_2
41493 , x_transaction_coa_id => l_adr_transaction_coa_id
41494 , x_accounting_coa_id => l_adr_accounting_coa_id
41495 , x_value_type_code => l_adr_value_type_code
41496 , p_side => 'NA'
41497 );
41498
41499 xla_ae_lines_pkg.set_ccid(
41500 p_code_combination_id => l_ccid
41501 , p_value_type_code => l_adr_value_type_code
41502 , p_transaction_coa_id => l_adr_transaction_coa_id
41503 , p_accounting_coa_id => l_adr_accounting_coa_id
41504 , p_adr_code => 'EXP'
41505 , p_adr_type_code => 'S'
41506 , p_component_type => l_component_type
41507 , p_component_code => l_component_code
41508 , p_component_type_code => l_component_type_code
41509 , p_component_appl_id => l_component_appl_id
41510 , p_amb_context_code => l_amb_context_code
41511 , p_side => 'NA'
41512 );
41513
41514
41515 --
41516 --
41517 END IF;
41518
41519 --
41520 -- Update the line information that should be overwritten
41521 --
41522 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41523 p_header_num => 1);
41524 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
41525
41526 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41527
41528 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
41529 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41530 END IF;
41531
41532 --
41533 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41534 --
41535 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41536 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
41537 ELSE
41538 ---------------------------------------------------------------------------------------------------
41539 -- 4262811a Switch Sign
41540 ---------------------------------------------------------------------------------------------------
41541 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
41542 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41543 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41544 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41545 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41546 -- 5132302
41547 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41548 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41549
41550 END IF;
41551
41552 -- 4955764
41553 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41554 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41555
41556
41557 XLA_AE_LINES_PKG.ValidateCurrentLine;
41558 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41559
41560 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41561 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41562 ,p_balance_type_code => l_balance_type_code);
41563
41564 END IF;
41565
41566 -----------------------------------------------------------------------------------------
41567 -- 4262811 Multiperiod Accounting
41568 -----------------------------------------------------------------------------------------
41569 -- No MPA option is assigned.
41570
41571
41572 END IF;
41573 END IF;
41574 --
41575
41576 --
41577 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41578 trace
41579 (p_msg => 'END of AcctLineType_107'
41580 ,p_level => C_LEVEL_PROCEDURE
41581 ,p_module => l_log_module);
41582 END IF;
41583 --
41584 EXCEPTION
41585 WHEN xla_exceptions_pkg.application_exception THEN
41586 RAISE;
41587 WHEN OTHERS THEN
41588 xla_exceptions_pkg.raise_message
41589 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_107');
41590 END AcctLineType_107;
41591 --
41595 -- PRIVATE FUNCTION
41592
41593 ---------------------------------------
41594 --
41596 -- AcctLineType_108
41597 --
41598 ---------------------------------------
41599 PROCEDURE AcctLineType_108 (
41600 p_application_id IN NUMBER
41601 ,p_event_id IN NUMBER
41602 ,p_calculate_acctd_flag IN VARCHAR2
41603 ,p_calculate_g_l_flag IN VARCHAR2
41604 ,p_actual_flag IN OUT VARCHAR2
41605 ,p_balance_type_code OUT VARCHAR2
41606 ,p_gain_or_loss_ref OUT VARCHAR2
41607
41608 --Transaction Account
41609 , p_source_1 IN NUMBER
41610 --Journal Line Type
41611 , p_source_2 IN VARCHAR2
41612 --Entered Amount
41613 , p_source_3 IN NUMBER
41614 --First Distribution Identifier
41615 , p_source_5 IN NUMBER
41616 --Distribution Type
41617 , p_source_6 IN VARCHAR2
41618 --Currency Code
41619 , p_source_7 IN VARCHAR2
41620 --Currency Conversion Date
41621 , p_source_8 IN DATE
41622 --Currency Conversion Rate
41623 , p_source_9 IN NUMBER
41624 --Currency Conversion Type
41625 , p_source_10 IN VARCHAR2
41626 --Accounted Amount
41627 , p_source_11 IN NUMBER
41628 )
41629 IS
41630
41631 l_component_type VARCHAR2(80);
41632 l_component_code VARCHAR2(30);
41633 l_component_type_code VARCHAR2(1);
41634 l_component_appl_id INTEGER;
41635 l_amb_context_code VARCHAR2(30);
41636 l_entity_code VARCHAR2(30);
41637 l_event_class_code VARCHAR2(30);
41638 l_ae_header_id NUMBER;
41639 l_event_type_code VARCHAR2(30);
41640 l_line_definition_code VARCHAR2(30);
41641 l_line_definition_owner_code VARCHAR2(1);
41642 --
41643 -- adr variables
41644 l_segment VARCHAR2(30);
41645 l_ccid NUMBER;
41646 l_adr_transaction_coa_id NUMBER;
41647 l_adr_accounting_coa_id NUMBER;
41648 l_adr_flexfield_segment_code VARCHAR2(30);
41649 l_adr_flex_value_set_id NUMBER;
41650 l_adr_value_type_code VARCHAR2(30);
41651 l_adr_value_combination_id NUMBER;
41652 l_adr_value_segment_code VARCHAR2(30);
41653
41654 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
41655 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
41656 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
41657 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
41658
41659 -- 4262811 Variables ------------------------------------------------------------------------------------------
41660 l_entered_amt_idx NUMBER;
41661 l_accted_amt_idx NUMBER;
41662 l_acc_rev_flag VARCHAR2(1);
41663 l_accrual_line_num NUMBER;
41664 l_tmp_amt NUMBER;
41665 l_acc_rev_natural_side_code VARCHAR2(1);
41666
41667 l_num_entries NUMBER;
41668 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
41669 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
41670 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
41671 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
41672 l_recog_line_1 NUMBER;
41673 l_recog_line_2 NUMBER;
41674
41675 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
41676 l_bflow_applied_to_amt NUMBER; -- 5132302
41677 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
41678
41679 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41680
41681 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
41682 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
41683
41684 ---------------------------------------------------------------------------------------------------------------
41685
41686
41687 --
41688 -- bulk performance
41689 --
41690 l_balance_type_code VARCHAR2(1);
41691 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
41692 l_log_module VARCHAR2(240);
41693
41694 --
41695 -- Upgrade strategy
41696 --
41697 l_actual_upg_option VARCHAR2(1);
41698 l_enc_upg_option VARCHAR2(1);
41699
41700 --
41701 BEGIN
41702 --
41703 IF g_log_enabled THEN
41704 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
41705 END IF;
41706 --
41707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41708
41709 trace
41710 (p_msg => 'BEGIN of AcctLineType_108'
41711 ,p_level => C_LEVEL_PROCEDURE
41712 ,p_module => l_log_module);
41713
41714 END IF;
41715 --
41716 l_component_type := 'AMB_JLT';
41717 l_component_code := 'EXP';
41718 l_component_type_code := 'S';
41719 l_component_appl_id := 555;
41720 l_amb_context_code := 'DEFAULT';
41721 l_entity_code := 'INVENTORY';
41722 l_event_class_code := 'LOG_INTERCOMPANY';
41723 l_event_type_code := 'LOG_IC_SALES_RETURN';
41724 l_line_definition_owner_code := 'S';
41725 l_line_definition_code := 'LOG_IC_SALES_RETURN';
41726 --
41730 l_adr_transaction_coa_id := NULL;
41727 l_balance_type_code := 'A';
41728 l_segment := NULL;
41729 l_ccid := NULL;
41731 l_adr_accounting_coa_id := NULL;
41732 l_adr_flexfield_segment_code := NULL;
41733 l_adr_flex_value_set_id := NULL;
41734 l_adr_value_type_code := NULL;
41735 l_adr_value_combination_id := NULL;
41736 l_adr_value_segment_code := NULL;
41737
41738 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
41739 l_bflow_class_code := ''; -- 4219869 Business Flow
41740 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
41741 l_budgetary_control_flag := 'N';
41742
41743 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41744 l_bflow_applied_to_amt := NULL; -- 5132302
41745 l_entered_amt_idx := NULL; -- 4262811
41746 l_accted_amt_idx := NULL; -- 4262811
41747 l_acc_rev_flag := NULL; -- 4262811
41748 l_accrual_line_num := NULL; -- 4262811
41749 l_tmp_amt := NULL; -- 4262811
41750 --
41751
41752 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41753 l_balance_type_code <> 'B' THEN
41754 IF NVL(p_source_2,'
41755 ') = 'EXP'
41756 THEN
41757
41758 --
41759 XLA_AE_LINES_PKG.SetNewLine;
41760
41761 p_balance_type_code := l_balance_type_code;
41762 -- set the flag so later we will know whether the gain loss line needs to be created
41763
41764 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41765 p_actual_flag :='A';
41766 END IF;
41767
41768 --
41769 -- bulk performance
41770 --
41771 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41772 p_header_num => 0); -- 4262811
41773 --
41774 -- set accounting line options
41775 --
41776 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41777 p_natural_side_code => 'D'
41778 , p_gain_or_loss_flag => 'N'
41779 , p_gl_transfer_mode_code => 'D'
41780 , p_acct_entry_type_code => 'A'
41781 , p_switch_side_flag => 'Y'
41782 , p_merge_duplicate_code => 'W'
41783 );
41784 --
41785 l_acc_rev_natural_side_code := 'C'; -- 4262811
41786 --
41787 --
41788 -- set accounting line type info
41789 --
41790 xla_ae_lines_pkg.SetAcctLineType
41791 (p_component_type => l_component_type
41792 ,p_event_type_code => l_event_type_code
41793 ,p_line_definition_owner_code => l_line_definition_owner_code
41794 ,p_line_definition_code => l_line_definition_code
41795 ,p_accounting_line_code => l_component_code
41796 ,p_accounting_line_type_code => l_component_type_code
41797 ,p_accounting_line_appl_id => l_component_appl_id
41798 ,p_amb_context_code => l_amb_context_code
41799 ,p_entity_code => l_entity_code
41800 ,p_event_class_code => l_event_class_code);
41801 --
41802 -- set accounting class
41803 --
41804 xla_ae_lines_pkg.SetAcctClass(
41805 p_accounting_class_code => 'EXPENSE'
41806 , p_ae_header_id => l_ae_header_id
41807 );
41808
41809 --
41810 -- set rounding class
41811 --
41812 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41813 'EXPENSE';
41814
41815 --
41816 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41817 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41818 --
41819 -- bulk performance
41820 --
41821 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41822
41823 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41824 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41825
41826 -- 4955764
41827 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41828 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41829
41830 -- 4458381 Public Sector Enh
41831
41832 --
41833 -- set accounting attributes for the line type
41834 --
41835 l_entered_amt_idx := 3;
41836 l_accted_amt_idx := 8;
41837 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41838 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41839 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
41840 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41841 l_rec_acct_attrs.array_char_value(2) := p_source_6;
41842 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41843 l_rec_acct_attrs.array_num_value(3) := p_source_3;
41844 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41845 l_rec_acct_attrs.array_char_value(4) := p_source_7;
41846 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41847 l_rec_acct_attrs.array_date_value(5) := p_source_8;
41848 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41852 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41849 l_rec_acct_attrs.array_num_value(6) := p_source_9;
41850 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41851 l_rec_acct_attrs.array_char_value(7) := p_source_10;
41853 l_rec_acct_attrs.array_num_value(8) := p_source_11;
41854
41855 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41856 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41857
41858 ---------------------------------------------------------------------------------------------------------------
41859 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41860 ---------------------------------------------------------------------------------------------------------------
41861 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41862
41863 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41864 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41865
41866 IF xla_accounting_cache_pkg.GetValueChar
41867 (p_source_code => 'LEDGER_CATEGORY_CODE'
41868 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41869 AND l_bflow_method_code = 'PRIOR_ENTRY'
41870 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41871 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41872 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41873 )
41874 THEN
41875 xla_ae_lines_pkg.BflowUpgEntry
41876 (p_business_method_code => l_bflow_method_code
41877 ,p_business_class_code => l_bflow_class_code
41878 ,p_balance_type => l_balance_type_code);
41879 ELSE
41880 NULL;
41881 -- No business flow processing for business flow method of NONE.
41882 END IF;
41883
41884 --
41885 -- call analytical criteria
41886 --
41887
41888 --
41889 -- call description
41890 --
41891 -- No description or it is inherited.
41892 --
41893 -- call ADRs
41894 -- Bug 4922099
41895 --
41896 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41897 (NVL(l_actual_upg_option, 'N') = 'O') OR
41898 (NVL(l_enc_upg_option, 'N') = 'O')
41899 )
41900 THEN
41901 NULL;
41902 --
41903 --
41904
41905 l_ccid := AcctDerRule_12(
41906 p_application_id => p_application_id
41907 , p_ae_header_id => l_ae_header_id
41908 , p_source_1 => p_source_1
41909 , p_source_2 => p_source_2
41910 , x_transaction_coa_id => l_adr_transaction_coa_id
41911 , x_accounting_coa_id => l_adr_accounting_coa_id
41912 , x_value_type_code => l_adr_value_type_code
41913 , p_side => 'NA'
41914 );
41915
41916 xla_ae_lines_pkg.set_ccid(
41917 p_code_combination_id => l_ccid
41918 , p_value_type_code => l_adr_value_type_code
41919 , p_transaction_coa_id => l_adr_transaction_coa_id
41920 , p_accounting_coa_id => l_adr_accounting_coa_id
41921 , p_adr_code => 'EXP'
41922 , p_adr_type_code => 'S'
41923 , p_component_type => l_component_type
41924 , p_component_code => l_component_code
41925 , p_component_type_code => l_component_type_code
41926 , p_component_appl_id => l_component_appl_id
41927 , p_amb_context_code => l_amb_context_code
41928 , p_side => 'NA'
41929 );
41930
41931
41932 --
41933 --
41934 END IF;
41935 --
41936 -- Bug 4922099
41937 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41938 (NVL(l_enc_upg_option, 'N') = 'O')
41939 ) AND
41940 (l_bflow_method_code = 'PRIOR_ENTRY')
41941 )
41942 THEN
41943 IF
41944 --
41945 1 = 2
41946 --
41947 THEN
41948 xla_accounting_err_pkg.build_message
41949 (p_appli_s_name => 'XLA'
41950 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41951 ,p_token_1 => 'LINE_NUMBER'
41952 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
41953 ,p_token_2 => 'LINE_TYPE_NAME'
41954 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
41955 l_component_type
41956 ,l_component_code
41957 ,l_component_type_code
41958 ,l_component_appl_id
41959 ,l_amb_context_code
41960 ,l_entity_code
41964 ,p_value_3 => xla_lookups_pkg.get_meaning(
41961 ,l_event_class_code
41962 )
41963 ,p_token_3 => 'OWNER'
41965 p_lookup_type => 'XLA_OWNER_TYPE'
41966 ,p_lookup_code => l_component_type_code
41967 )
41968 ,p_token_4 => 'PRODUCT_NAME'
41969 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41970 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41971 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41972 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41973 ,p_ae_header_id => NULL
41974 );
41975
41976 IF (C_LEVEL_ERROR>= g_log_level) THEN
41977 trace
41978 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41979 ,p_level => C_LEVEL_ERROR
41980 ,p_module => l_log_module);
41981 END IF;
41982 END IF;
41983 END IF;
41984 --
41985 --
41986 ------------------------------------------------------------------------------------------------
41987 -- 4219869 Business Flow
41988 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41989 -- Prior Entry. Currently, the following code is always generated.
41990 ------------------------------------------------------------------------------------------------
41991 XLA_AE_LINES_PKG.ValidateCurrentLine;
41992
41993 ------------------------------------------------------------------------------------
41994 -- 4219869 Business Flow
41995 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41996 ------------------------------------------------------------------------------------
41997 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41998
41999 ----------------------------------------------------------------------------------
42000 -- 4219869 Business Flow
42001 -- Update journal entry status -- Need to generate this within IF <condition>
42002 ----------------------------------------------------------------------------------
42003 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42004 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42005 ,p_balance_type_code => l_balance_type_code
42006 );
42007
42008 -------------------------------------------------------------------------------------------
42009 -- 4262811 - Generate the Accrual Reversal lines
42010 -------------------------------------------------------------------------------------------
42011 BEGIN
42012 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42013 (g_array_event(p_event_id).array_value_num('header_index'));
42014 IF l_acc_rev_flag IS NULL THEN
42015 l_acc_rev_flag := 'N';
42016 END IF;
42017 EXCEPTION
42018 WHEN OTHERS THEN
42019 l_acc_rev_flag := 'N';
42020 END;
42021 --
42022 IF (l_acc_rev_flag = 'Y') THEN
42023
42024 -- 4645092 ------------------------------------------------------------------------------
42025 -- To allow MPA report to determine if it should generate report process
42026 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42027 ------------------------------------------------------------------------------------------
42028
42029 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42030 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42031 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
42032 -- call ADRs
42033 -- Bug 4922099
42034 --
42035 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42036 (NVL(l_actual_upg_option, 'N') = 'O') OR
42037 (NVL(l_enc_upg_option, 'N') = 'O')
42038 )
42039 THEN
42040 NULL;
42041 --
42042 --
42043
42044 l_ccid := AcctDerRule_12(
42045 p_application_id => p_application_id
42046 , p_ae_header_id => l_ae_header_id
42047 , p_source_1 => p_source_1
42048 , p_source_2 => p_source_2
42049 , x_transaction_coa_id => l_adr_transaction_coa_id
42050 , x_accounting_coa_id => l_adr_accounting_coa_id
42051 , x_value_type_code => l_adr_value_type_code
42052 , p_side => 'NA'
42053 );
42054
42055 xla_ae_lines_pkg.set_ccid(
42056 p_code_combination_id => l_ccid
42057 , p_value_type_code => l_adr_value_type_code
42058 , p_transaction_coa_id => l_adr_transaction_coa_id
42059 , p_accounting_coa_id => l_adr_accounting_coa_id
42060 , p_adr_code => 'EXP'
42061 , p_adr_type_code => 'S'
42062 , p_component_type => l_component_type
42063 , p_component_code => l_component_code
42067 , p_side => 'NA'
42064 , p_component_type_code => l_component_type_code
42065 , p_component_appl_id => l_component_appl_id
42066 , p_amb_context_code => l_amb_context_code
42068 );
42069
42070
42071 --
42072 --
42073 END IF;
42074
42075 --
42076 -- Update the line information that should be overwritten
42077 --
42078 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42079 p_header_num => 1);
42080 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
42081
42082 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42083
42084 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
42085 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42086 END IF;
42087
42088 --
42089 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42090 --
42091 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42092 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
42093 ELSE
42094 ---------------------------------------------------------------------------------------------------
42095 -- 4262811a Switch Sign
42096 ---------------------------------------------------------------------------------------------------
42097 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
42098 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42099 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42100 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42101 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42102 -- 5132302
42103 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42104 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42105
42106 END IF;
42107
42108 -- 4955764
42109 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42110 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42111
42112
42113 XLA_AE_LINES_PKG.ValidateCurrentLine;
42114 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42115
42116 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42117 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42118 ,p_balance_type_code => l_balance_type_code);
42119
42120 END IF;
42121
42122 -----------------------------------------------------------------------------------------
42123 -- 4262811 Multiperiod Accounting
42124 -----------------------------------------------------------------------------------------
42125 -- No MPA option is assigned.
42126
42127
42128 END IF;
42129 END IF;
42130 --
42131
42132 --
42133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42134 trace
42135 (p_msg => 'END of AcctLineType_108'
42136 ,p_level => C_LEVEL_PROCEDURE
42137 ,p_module => l_log_module);
42138 END IF;
42139 --
42140 EXCEPTION
42141 WHEN xla_exceptions_pkg.application_exception THEN
42142 RAISE;
42143 WHEN OTHERS THEN
42144 xla_exceptions_pkg.raise_message
42145 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_108');
42146 END AcctLineType_108;
42147 --
42148
42149 ---------------------------------------
42150 --
42151 -- PRIVATE FUNCTION
42152 -- AcctLineType_109
42153 --
42154 ---------------------------------------
42155 PROCEDURE AcctLineType_109 (
42156 p_application_id IN NUMBER
42157 ,p_event_id IN NUMBER
42158 ,p_calculate_acctd_flag IN VARCHAR2
42159 ,p_calculate_g_l_flag IN VARCHAR2
42160 ,p_actual_flag IN OUT VARCHAR2
42161 ,p_balance_type_code OUT VARCHAR2
42162 ,p_gain_or_loss_ref OUT VARCHAR2
42163
42164 --Transaction Account
42165 , p_source_1 IN NUMBER
42166 --Journal Line Type
42167 , p_source_2 IN VARCHAR2
42168 --Entered Amount
42169 , p_source_3 IN NUMBER
42170 --First Distribution Identifier
42171 , p_source_5 IN NUMBER
42172 --Distribution Type
42173 , p_source_6 IN VARCHAR2
42174 --Currency Code
42175 , p_source_7 IN VARCHAR2
42176 --Currency Conversion Date
42177 , p_source_8 IN DATE
42178 --Currency Conversion Rate
42179 , p_source_9 IN NUMBER
42180 --Currency Conversion Type
42181 , p_source_10 IN VARCHAR2
42182 --Accounted Amount
42183 , p_source_11 IN NUMBER
42184 )
42185 IS
42186
42187 l_component_type VARCHAR2(80);
42188 l_component_code VARCHAR2(30);
42189 l_component_type_code VARCHAR2(1);
42190 l_component_appl_id INTEGER;
42194 l_ae_header_id NUMBER;
42191 l_amb_context_code VARCHAR2(30);
42192 l_entity_code VARCHAR2(30);
42193 l_event_class_code VARCHAR2(30);
42195 l_event_type_code VARCHAR2(30);
42196 l_line_definition_code VARCHAR2(30);
42197 l_line_definition_owner_code VARCHAR2(1);
42198 --
42199 -- adr variables
42200 l_segment VARCHAR2(30);
42201 l_ccid NUMBER;
42202 l_adr_transaction_coa_id NUMBER;
42203 l_adr_accounting_coa_id NUMBER;
42204 l_adr_flexfield_segment_code VARCHAR2(30);
42205 l_adr_flex_value_set_id NUMBER;
42206 l_adr_value_type_code VARCHAR2(30);
42207 l_adr_value_combination_id NUMBER;
42208 l_adr_value_segment_code VARCHAR2(30);
42209
42210 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
42211 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
42212 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
42213 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
42214
42215 -- 4262811 Variables ------------------------------------------------------------------------------------------
42216 l_entered_amt_idx NUMBER;
42217 l_accted_amt_idx NUMBER;
42218 l_acc_rev_flag VARCHAR2(1);
42219 l_accrual_line_num NUMBER;
42220 l_tmp_amt NUMBER;
42221 l_acc_rev_natural_side_code VARCHAR2(1);
42222
42223 l_num_entries NUMBER;
42224 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
42225 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
42226 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
42227 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
42228 l_recog_line_1 NUMBER;
42229 l_recog_line_2 NUMBER;
42230
42231 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
42232 l_bflow_applied_to_amt NUMBER; -- 5132302
42233 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
42234
42235 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42236
42237 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
42238 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
42239
42240 ---------------------------------------------------------------------------------------------------------------
42241
42242
42243 --
42244 -- bulk performance
42245 --
42246 l_balance_type_code VARCHAR2(1);
42247 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
42248 l_log_module VARCHAR2(240);
42249
42250 --
42251 -- Upgrade strategy
42252 --
42253 l_actual_upg_option VARCHAR2(1);
42254 l_enc_upg_option VARCHAR2(1);
42255
42256 --
42257 BEGIN
42258 --
42259 IF g_log_enabled THEN
42260 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
42261 END IF;
42262 --
42263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42264
42265 trace
42266 (p_msg => 'BEGIN of AcctLineType_109'
42267 ,p_level => C_LEVEL_PROCEDURE
42268 ,p_module => l_log_module);
42269
42270 END IF;
42271 --
42272 l_component_type := 'AMB_JLT';
42273 l_component_code := 'EXP';
42274 l_component_type_code := 'S';
42275 l_component_appl_id := 555;
42276 l_amb_context_code := 'DEFAULT';
42277 l_entity_code := 'PURCHASING';
42278 l_event_class_code := 'DELIVER';
42279 l_event_type_code := 'XFER_TO_CONSIGNED';
42280 l_line_definition_owner_code := 'S';
42281 l_line_definition_code := 'XFER_TO_CONSIGN';
42282 --
42283 l_balance_type_code := 'A';
42284 l_segment := NULL;
42285 l_ccid := NULL;
42286 l_adr_transaction_coa_id := NULL;
42287 l_adr_accounting_coa_id := NULL;
42288 l_adr_flexfield_segment_code := NULL;
42289 l_adr_flex_value_set_id := NULL;
42290 l_adr_value_type_code := NULL;
42291 l_adr_value_combination_id := NULL;
42292 l_adr_value_segment_code := NULL;
42293
42294 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
42295 l_bflow_class_code := ''; -- 4219869 Business Flow
42296 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
42297 l_budgetary_control_flag := 'N';
42298
42299 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42300 l_bflow_applied_to_amt := NULL; -- 5132302
42301 l_entered_amt_idx := NULL; -- 4262811
42302 l_accted_amt_idx := NULL; -- 4262811
42303 l_acc_rev_flag := NULL; -- 4262811
42304 l_accrual_line_num := NULL; -- 4262811
42305 l_tmp_amt := NULL; -- 4262811
42306 --
42307
42308 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42309 l_balance_type_code <> 'B' THEN
42310 IF NVL(p_source_2,'
42311 ') = 'EXP'
42312 THEN
42313
42314 --
42315 XLA_AE_LINES_PKG.SetNewLine;
42316
42317 p_balance_type_code := l_balance_type_code;
42321 p_actual_flag :='A';
42318 -- set the flag so later we will know whether the gain loss line needs to be created
42319
42320 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42322 END IF;
42323
42324 --
42325 -- bulk performance
42326 --
42327 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42328 p_header_num => 0); -- 4262811
42329 --
42330 -- set accounting line options
42331 --
42332 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42333 p_natural_side_code => 'D'
42334 , p_gain_or_loss_flag => 'N'
42335 , p_gl_transfer_mode_code => 'D'
42336 , p_acct_entry_type_code => 'A'
42337 , p_switch_side_flag => 'Y'
42338 , p_merge_duplicate_code => 'W'
42339 );
42340 --
42341 l_acc_rev_natural_side_code := 'C'; -- 4262811
42342 --
42343 --
42344 -- set accounting line type info
42345 --
42346 xla_ae_lines_pkg.SetAcctLineType
42347 (p_component_type => l_component_type
42348 ,p_event_type_code => l_event_type_code
42349 ,p_line_definition_owner_code => l_line_definition_owner_code
42350 ,p_line_definition_code => l_line_definition_code
42351 ,p_accounting_line_code => l_component_code
42352 ,p_accounting_line_type_code => l_component_type_code
42353 ,p_accounting_line_appl_id => l_component_appl_id
42354 ,p_amb_context_code => l_amb_context_code
42355 ,p_entity_code => l_entity_code
42356 ,p_event_class_code => l_event_class_code);
42357 --
42358 -- set accounting class
42359 --
42360 xla_ae_lines_pkg.SetAcctClass(
42361 p_accounting_class_code => 'EXPENSE'
42362 , p_ae_header_id => l_ae_header_id
42363 );
42364
42365 --
42366 -- set rounding class
42367 --
42368 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42369 'EXPENSE';
42370
42371 --
42372 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42373 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42374 --
42375 -- bulk performance
42376 --
42377 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42378
42379 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42380 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42381
42382 -- 4955764
42383 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42384 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42385
42386 -- 4458381 Public Sector Enh
42387
42388 --
42389 -- set accounting attributes for the line type
42390 --
42391 l_entered_amt_idx := 3;
42392 l_accted_amt_idx := 8;
42393 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42394 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42395 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
42396 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42397 l_rec_acct_attrs.array_char_value(2) := p_source_6;
42398 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42399 l_rec_acct_attrs.array_num_value(3) := p_source_3;
42400 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42401 l_rec_acct_attrs.array_char_value(4) := p_source_7;
42402 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42403 l_rec_acct_attrs.array_date_value(5) := p_source_8;
42404 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42405 l_rec_acct_attrs.array_num_value(6) := p_source_9;
42406 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42407 l_rec_acct_attrs.array_char_value(7) := p_source_10;
42408 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42409 l_rec_acct_attrs.array_num_value(8) := p_source_11;
42410
42411 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42412 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42413
42414 ---------------------------------------------------------------------------------------------------------------
42415 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42416 ---------------------------------------------------------------------------------------------------------------
42417 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42418
42419 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42420 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42421
42422 IF xla_accounting_cache_pkg.GetValueChar
42423 (p_source_code => 'LEDGER_CATEGORY_CODE'
42424 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42428 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42425 AND l_bflow_method_code = 'PRIOR_ENTRY'
42426 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42427 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42429 )
42430 THEN
42431 xla_ae_lines_pkg.BflowUpgEntry
42432 (p_business_method_code => l_bflow_method_code
42433 ,p_business_class_code => l_bflow_class_code
42434 ,p_balance_type => l_balance_type_code);
42435 ELSE
42436 NULL;
42437 -- No business flow processing for business flow method of NONE.
42438 END IF;
42439
42440 --
42441 -- call analytical criteria
42442 --
42443
42444 --
42445 -- call description
42446 --
42447 -- No description or it is inherited.
42448 --
42449 -- call ADRs
42450 -- Bug 4922099
42451 --
42452 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42453 (NVL(l_actual_upg_option, 'N') = 'O') OR
42454 (NVL(l_enc_upg_option, 'N') = 'O')
42455 )
42456 THEN
42457 NULL;
42458 --
42459 --
42460
42461 l_ccid := AcctDerRule_12(
42462 p_application_id => p_application_id
42463 , p_ae_header_id => l_ae_header_id
42464 , p_source_1 => p_source_1
42465 , p_source_2 => p_source_2
42466 , x_transaction_coa_id => l_adr_transaction_coa_id
42467 , x_accounting_coa_id => l_adr_accounting_coa_id
42468 , x_value_type_code => l_adr_value_type_code
42469 , p_side => 'NA'
42470 );
42471
42472 xla_ae_lines_pkg.set_ccid(
42473 p_code_combination_id => l_ccid
42474 , p_value_type_code => l_adr_value_type_code
42475 , p_transaction_coa_id => l_adr_transaction_coa_id
42476 , p_accounting_coa_id => l_adr_accounting_coa_id
42477 , p_adr_code => 'EXP'
42478 , p_adr_type_code => 'S'
42479 , p_component_type => l_component_type
42480 , p_component_code => l_component_code
42481 , p_component_type_code => l_component_type_code
42482 , p_component_appl_id => l_component_appl_id
42483 , p_amb_context_code => l_amb_context_code
42484 , p_side => 'NA'
42485 );
42486
42487
42488 --
42489 --
42490 END IF;
42491 --
42492 -- Bug 4922099
42493 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42494 (NVL(l_enc_upg_option, 'N') = 'O')
42495 ) AND
42496 (l_bflow_method_code = 'PRIOR_ENTRY')
42497 )
42498 THEN
42499 IF
42500 --
42501 1 = 2
42502 --
42503 THEN
42504 xla_accounting_err_pkg.build_message
42505 (p_appli_s_name => 'XLA'
42506 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42507 ,p_token_1 => 'LINE_NUMBER'
42508 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
42509 ,p_token_2 => 'LINE_TYPE_NAME'
42510 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
42511 l_component_type
42512 ,l_component_code
42513 ,l_component_type_code
42514 ,l_component_appl_id
42515 ,l_amb_context_code
42516 ,l_entity_code
42517 ,l_event_class_code
42518 )
42519 ,p_token_3 => 'OWNER'
42520 ,p_value_3 => xla_lookups_pkg.get_meaning(
42521 p_lookup_type => 'XLA_OWNER_TYPE'
42522 ,p_lookup_code => l_component_type_code
42523 )
42524 ,p_token_4 => 'PRODUCT_NAME'
42525 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42526 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42527 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42528 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42529 ,p_ae_header_id => NULL
42530 );
42531
42532 IF (C_LEVEL_ERROR>= g_log_level) THEN
42533 trace
42534 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42535 ,p_level => C_LEVEL_ERROR
42539 END IF;
42536 ,p_module => l_log_module);
42537 END IF;
42538 END IF;
42540 --
42541 --
42542 ------------------------------------------------------------------------------------------------
42543 -- 4219869 Business Flow
42544 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42545 -- Prior Entry. Currently, the following code is always generated.
42546 ------------------------------------------------------------------------------------------------
42547 XLA_AE_LINES_PKG.ValidateCurrentLine;
42548
42549 ------------------------------------------------------------------------------------
42550 -- 4219869 Business Flow
42551 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42552 ------------------------------------------------------------------------------------
42553 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42554
42555 ----------------------------------------------------------------------------------
42556 -- 4219869 Business Flow
42557 -- Update journal entry status -- Need to generate this within IF <condition>
42558 ----------------------------------------------------------------------------------
42559 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42560 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42561 ,p_balance_type_code => l_balance_type_code
42562 );
42563
42564 -------------------------------------------------------------------------------------------
42565 -- 4262811 - Generate the Accrual Reversal lines
42566 -------------------------------------------------------------------------------------------
42567 BEGIN
42568 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42569 (g_array_event(p_event_id).array_value_num('header_index'));
42570 IF l_acc_rev_flag IS NULL THEN
42571 l_acc_rev_flag := 'N';
42572 END IF;
42573 EXCEPTION
42574 WHEN OTHERS THEN
42575 l_acc_rev_flag := 'N';
42576 END;
42577 --
42578 IF (l_acc_rev_flag = 'Y') THEN
42579
42580 -- 4645092 ------------------------------------------------------------------------------
42581 -- To allow MPA report to determine if it should generate report process
42582 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42583 ------------------------------------------------------------------------------------------
42584
42585 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42586 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42587 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
42588 -- call ADRs
42589 -- Bug 4922099
42590 --
42591 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42592 (NVL(l_actual_upg_option, 'N') = 'O') OR
42593 (NVL(l_enc_upg_option, 'N') = 'O')
42594 )
42595 THEN
42596 NULL;
42597 --
42598 --
42599
42600 l_ccid := AcctDerRule_12(
42601 p_application_id => p_application_id
42602 , p_ae_header_id => l_ae_header_id
42603 , p_source_1 => p_source_1
42604 , p_source_2 => p_source_2
42605 , x_transaction_coa_id => l_adr_transaction_coa_id
42606 , x_accounting_coa_id => l_adr_accounting_coa_id
42607 , x_value_type_code => l_adr_value_type_code
42608 , p_side => 'NA'
42609 );
42610
42611 xla_ae_lines_pkg.set_ccid(
42612 p_code_combination_id => l_ccid
42613 , p_value_type_code => l_adr_value_type_code
42614 , p_transaction_coa_id => l_adr_transaction_coa_id
42615 , p_accounting_coa_id => l_adr_accounting_coa_id
42616 , p_adr_code => 'EXP'
42617 , p_adr_type_code => 'S'
42618 , p_component_type => l_component_type
42619 , p_component_code => l_component_code
42620 , p_component_type_code => l_component_type_code
42621 , p_component_appl_id => l_component_appl_id
42622 , p_amb_context_code => l_amb_context_code
42623 , p_side => 'NA'
42624 );
42625
42626
42627 --
42628 --
42629 END IF;
42630
42631 --
42632 -- Update the line information that should be overwritten
42633 --
42634 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42635 p_header_num => 1);
42636 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
42637
42638 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42639
42640 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
42641 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42642 END IF;
42643
42644 --
42645 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42646 --
42647 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42648 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
42649 ELSE
42653 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
42650 ---------------------------------------------------------------------------------------------------
42651 -- 4262811a Switch Sign
42652 ---------------------------------------------------------------------------------------------------
42654 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42655 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42656 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42657 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42658 -- 5132302
42659 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42660 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42661
42662 END IF;
42663
42664 -- 4955764
42665 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42666 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42667
42668
42669 XLA_AE_LINES_PKG.ValidateCurrentLine;
42670 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42671
42672 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42673 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42674 ,p_balance_type_code => l_balance_type_code);
42675
42676 END IF;
42677
42678 -----------------------------------------------------------------------------------------
42679 -- 4262811 Multiperiod Accounting
42680 -----------------------------------------------------------------------------------------
42681 -- No MPA option is assigned.
42682
42683
42684 END IF;
42685 END IF;
42686 --
42687
42688 --
42689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42690 trace
42691 (p_msg => 'END of AcctLineType_109'
42692 ,p_level => C_LEVEL_PROCEDURE
42693 ,p_module => l_log_module);
42694 END IF;
42695 --
42696 EXCEPTION
42697 WHEN xla_exceptions_pkg.application_exception THEN
42698 RAISE;
42699 WHEN OTHERS THEN
42700 xla_exceptions_pkg.raise_message
42701 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_109');
42702 END AcctLineType_109;
42703 --
42704
42705 ---------------------------------------
42706 --
42707 -- PRIVATE FUNCTION
42708 -- AcctLineType_110
42709 --
42710 ---------------------------------------
42711 PROCEDURE AcctLineType_110 (
42712 p_application_id IN NUMBER
42713 ,p_event_id IN NUMBER
42714 ,p_calculate_acctd_flag IN VARCHAR2
42715 ,p_calculate_g_l_flag IN VARCHAR2
42716 ,p_actual_flag IN OUT VARCHAR2
42717 ,p_balance_type_code OUT VARCHAR2
42718 ,p_gain_or_loss_ref OUT VARCHAR2
42719
42720 --Transaction Account
42721 , p_source_1 IN NUMBER
42722 --Journal Line Type
42723 , p_source_2 IN VARCHAR2
42724 --Entered Amount
42725 , p_source_3 IN NUMBER
42726 --Line Number
42727 , p_source_4 IN NUMBER
42728 --First Distribution Identifier
42729 , p_source_5 IN NUMBER
42730 --Distribution Type
42731 , p_source_6 IN VARCHAR2
42732 --Currency Code
42733 , p_source_7 IN VARCHAR2
42734 --Currency Conversion Date
42735 , p_source_8 IN DATE
42736 --Currency Conversion Rate
42737 , p_source_9 IN NUMBER
42738 --Currency Conversion Type
42739 , p_source_10 IN VARCHAR2
42740 --Accounted Amount
42741 , p_source_11 IN NUMBER
42742 )
42743 IS
42744
42745 l_component_type VARCHAR2(80);
42746 l_component_code VARCHAR2(30);
42747 l_component_type_code VARCHAR2(1);
42748 l_component_appl_id INTEGER;
42749 l_amb_context_code VARCHAR2(30);
42750 l_entity_code VARCHAR2(30);
42751 l_event_class_code VARCHAR2(30);
42752 l_ae_header_id NUMBER;
42753 l_event_type_code VARCHAR2(30);
42754 l_line_definition_code VARCHAR2(30);
42755 l_line_definition_owner_code VARCHAR2(1);
42756 --
42757 -- adr variables
42758 l_segment VARCHAR2(30);
42759 l_ccid NUMBER;
42760 l_adr_transaction_coa_id NUMBER;
42761 l_adr_accounting_coa_id NUMBER;
42762 l_adr_flexfield_segment_code VARCHAR2(30);
42763 l_adr_flex_value_set_id NUMBER;
42764 l_adr_value_type_code VARCHAR2(30);
42765 l_adr_value_combination_id NUMBER;
42766 l_adr_value_segment_code VARCHAR2(30);
42767
42768 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
42769 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
42770 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
42771 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
42772
42773 -- 4262811 Variables ------------------------------------------------------------------------------------------
42774 l_entered_amt_idx NUMBER;
42775 l_accted_amt_idx NUMBER;
42779 l_acc_rev_natural_side_code VARCHAR2(1);
42776 l_acc_rev_flag VARCHAR2(1);
42777 l_accrual_line_num NUMBER;
42778 l_tmp_amt NUMBER;
42780
42781 l_num_entries NUMBER;
42782 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
42783 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
42784 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
42785 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
42786 l_recog_line_1 NUMBER;
42787 l_recog_line_2 NUMBER;
42788
42789 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
42790 l_bflow_applied_to_amt NUMBER; -- 5132302
42791 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
42792
42793 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42794
42795 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
42796 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
42797
42798 ---------------------------------------------------------------------------------------------------------------
42799
42800
42801 --
42802 -- bulk performance
42803 --
42804 l_balance_type_code VARCHAR2(1);
42805 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
42806 l_log_module VARCHAR2(240);
42807
42808 --
42809 -- Upgrade strategy
42810 --
42811 l_actual_upg_option VARCHAR2(1);
42812 l_enc_upg_option VARCHAR2(1);
42813
42814 --
42815 BEGIN
42816 --
42817 IF g_log_enabled THEN
42818 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_110';
42819 END IF;
42820 --
42821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42822
42823 trace
42824 (p_msg => 'BEGIN of AcctLineType_110'
42825 ,p_level => C_LEVEL_PROCEDURE
42826 ,p_module => l_log_module);
42827
42828 END IF;
42829 --
42830 l_component_type := 'AMB_JLT';
42831 l_component_code := 'EXP_SUB_FROM';
42832 l_component_type_code := 'S';
42833 l_component_appl_id := 555;
42834 l_amb_context_code := 'DEFAULT';
42835 l_entity_code := 'INVENTORY';
42836 l_event_class_code := 'SUBINV_XFER';
42837 l_event_type_code := 'SUBINV_XFER_ALL';
42838 l_line_definition_owner_code := 'S';
42839 l_line_definition_code := 'SUBINV_XFER';
42840 --
42841 l_balance_type_code := 'A';
42842 l_segment := NULL;
42843 l_ccid := NULL;
42844 l_adr_transaction_coa_id := NULL;
42845 l_adr_accounting_coa_id := NULL;
42846 l_adr_flexfield_segment_code := NULL;
42847 l_adr_flex_value_set_id := NULL;
42848 l_adr_value_type_code := NULL;
42849 l_adr_value_combination_id := NULL;
42850 l_adr_value_segment_code := NULL;
42851
42852 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
42853 l_bflow_class_code := ''; -- 4219869 Business Flow
42854 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
42855 l_budgetary_control_flag := 'N';
42856
42857 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42858 l_bflow_applied_to_amt := NULL; -- 5132302
42859 l_entered_amt_idx := NULL; -- 4262811
42860 l_accted_amt_idx := NULL; -- 4262811
42861 l_acc_rev_flag := NULL; -- 4262811
42862 l_accrual_line_num := NULL; -- 4262811
42863 l_tmp_amt := NULL; -- 4262811
42864 --
42865
42866 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42867 l_balance_type_code <> 'B' THEN
42868 IF (NVL(p_source_2,'
42869 ') = 'EXP' AND
42870 p_source_3 < 0) OR
42871 (NVL(p_source_2,'
42872 ') = 'EXP' AND
42873 NVL(p_source_3,9E125) = 0 AND
42874 NVL(p_source_4,9E125) = 1)
42875 THEN
42876
42877 --
42878 XLA_AE_LINES_PKG.SetNewLine;
42879
42880 p_balance_type_code := l_balance_type_code;
42881 -- set the flag so later we will know whether the gain loss line needs to be created
42882
42883 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42884 p_actual_flag :='A';
42885 END IF;
42886
42887 --
42888 -- bulk performance
42889 --
42890 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42891 p_header_num => 0); -- 4262811
42892 --
42893 -- set accounting line options
42894 --
42895 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42896 p_natural_side_code => 'D'
42897 , p_gain_or_loss_flag => 'N'
42898 , p_gl_transfer_mode_code => 'D'
42899 , p_acct_entry_type_code => 'A'
42900 , p_switch_side_flag => 'Y'
42901 , p_merge_duplicate_code => 'W'
42902 );
42903 --
42904 l_acc_rev_natural_side_code := 'C'; -- 4262811
42905 --
42906 --
42907 -- set accounting line type info
42908 --
42909 xla_ae_lines_pkg.SetAcctLineType
42910 (p_component_type => l_component_type
42914 ,p_accounting_line_code => l_component_code
42911 ,p_event_type_code => l_event_type_code
42912 ,p_line_definition_owner_code => l_line_definition_owner_code
42913 ,p_line_definition_code => l_line_definition_code
42915 ,p_accounting_line_type_code => l_component_type_code
42916 ,p_accounting_line_appl_id => l_component_appl_id
42917 ,p_amb_context_code => l_amb_context_code
42918 ,p_entity_code => l_entity_code
42919 ,p_event_class_code => l_event_class_code);
42920 --
42921 -- set accounting class
42922 --
42923 xla_ae_lines_pkg.SetAcctClass(
42924 p_accounting_class_code => 'XFR'
42925 , p_ae_header_id => l_ae_header_id
42926 );
42927
42928 --
42929 -- set rounding class
42930 --
42931 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42932 'XFR';
42933
42934 --
42935 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42936 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42937 --
42938 -- bulk performance
42939 --
42940 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42941
42942 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42943 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42944
42945 -- 4955764
42946 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42947 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42948
42949 -- 4458381 Public Sector Enh
42950
42951 --
42952 -- set accounting attributes for the line type
42953 --
42954 l_entered_amt_idx := 3;
42955 l_accted_amt_idx := 8;
42956 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42957 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42958 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
42959 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42960 l_rec_acct_attrs.array_char_value(2) := p_source_6;
42961 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42962 l_rec_acct_attrs.array_num_value(3) := p_source_3;
42963 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42964 l_rec_acct_attrs.array_char_value(4) := p_source_7;
42965 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42966 l_rec_acct_attrs.array_date_value(5) := p_source_8;
42967 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42968 l_rec_acct_attrs.array_num_value(6) := p_source_9;
42969 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42970 l_rec_acct_attrs.array_char_value(7) := p_source_10;
42971 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42972 l_rec_acct_attrs.array_num_value(8) := p_source_11;
42973
42974 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42975 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42976
42977 ---------------------------------------------------------------------------------------------------------------
42978 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42979 ---------------------------------------------------------------------------------------------------------------
42980 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42981
42982 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42983 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42984
42985 IF xla_accounting_cache_pkg.GetValueChar
42986 (p_source_code => 'LEDGER_CATEGORY_CODE'
42987 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42988 AND l_bflow_method_code = 'PRIOR_ENTRY'
42989 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42990 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42991 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42992 )
42993 THEN
42994 xla_ae_lines_pkg.BflowUpgEntry
42995 (p_business_method_code => l_bflow_method_code
42996 ,p_business_class_code => l_bflow_class_code
42997 ,p_balance_type => l_balance_type_code);
42998 ELSE
42999 NULL;
43000 -- No business flow processing for business flow method of NONE.
43001 END IF;
43002
43003 --
43004 -- call analytical criteria
43005 --
43006
43007 --
43008 -- call description
43009 --
43010 -- No description or it is inherited.
43011 --
43012 -- call ADRs
43013 -- Bug 4922099
43014 --
43015 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43016 (NVL(l_actual_upg_option, 'N') = 'O') OR
43017 (NVL(l_enc_upg_option, 'N') = 'O')
43018 )
43019 THEN
43020 NULL;
43021 --
43022 --
43023
43024 l_ccid := AcctDerRule_12(
43028 , p_source_2 => p_source_2
43025 p_application_id => p_application_id
43026 , p_ae_header_id => l_ae_header_id
43027 , p_source_1 => p_source_1
43029 , x_transaction_coa_id => l_adr_transaction_coa_id
43030 , x_accounting_coa_id => l_adr_accounting_coa_id
43031 , x_value_type_code => l_adr_value_type_code
43032 , p_side => 'NA'
43033 );
43034
43035 xla_ae_lines_pkg.set_ccid(
43036 p_code_combination_id => l_ccid
43037 , p_value_type_code => l_adr_value_type_code
43038 , p_transaction_coa_id => l_adr_transaction_coa_id
43039 , p_accounting_coa_id => l_adr_accounting_coa_id
43040 , p_adr_code => 'EXP'
43041 , p_adr_type_code => 'S'
43042 , p_component_type => l_component_type
43043 , p_component_code => l_component_code
43044 , p_component_type_code => l_component_type_code
43045 , p_component_appl_id => l_component_appl_id
43046 , p_amb_context_code => l_amb_context_code
43047 , p_side => 'NA'
43048 );
43049
43050
43051 --
43052 --
43053 END IF;
43054 --
43055 -- Bug 4922099
43056 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43057 (NVL(l_enc_upg_option, 'N') = 'O')
43058 ) AND
43059 (l_bflow_method_code = 'PRIOR_ENTRY')
43060 )
43061 THEN
43062 IF
43063 --
43064 1 = 2
43065 --
43066 THEN
43067 xla_accounting_err_pkg.build_message
43068 (p_appli_s_name => 'XLA'
43069 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43070 ,p_token_1 => 'LINE_NUMBER'
43071 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
43072 ,p_token_2 => 'LINE_TYPE_NAME'
43073 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
43074 l_component_type
43075 ,l_component_code
43076 ,l_component_type_code
43077 ,l_component_appl_id
43078 ,l_amb_context_code
43079 ,l_entity_code
43080 ,l_event_class_code
43081 )
43082 ,p_token_3 => 'OWNER'
43083 ,p_value_3 => xla_lookups_pkg.get_meaning(
43084 p_lookup_type => 'XLA_OWNER_TYPE'
43085 ,p_lookup_code => l_component_type_code
43086 )
43087 ,p_token_4 => 'PRODUCT_NAME'
43088 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43089 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43090 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43091 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43092 ,p_ae_header_id => NULL
43093 );
43094
43095 IF (C_LEVEL_ERROR>= g_log_level) THEN
43096 trace
43097 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43098 ,p_level => C_LEVEL_ERROR
43099 ,p_module => l_log_module);
43100 END IF;
43101 END IF;
43102 END IF;
43103 --
43104 --
43105 ------------------------------------------------------------------------------------------------
43106 -- 4219869 Business Flow
43107 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43108 -- Prior Entry. Currently, the following code is always generated.
43109 ------------------------------------------------------------------------------------------------
43110 XLA_AE_LINES_PKG.ValidateCurrentLine;
43111
43112 ------------------------------------------------------------------------------------
43113 -- 4219869 Business Flow
43114 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43115 ------------------------------------------------------------------------------------
43116 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43117
43118 ----------------------------------------------------------------------------------
43119 -- 4219869 Business Flow
43120 -- Update journal entry status -- Need to generate this within IF <condition>
43124 ,p_balance_type_code => l_balance_type_code
43121 ----------------------------------------------------------------------------------
43122 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43123 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43125 );
43126
43127 -------------------------------------------------------------------------------------------
43128 -- 4262811 - Generate the Accrual Reversal lines
43129 -------------------------------------------------------------------------------------------
43130 BEGIN
43131 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43132 (g_array_event(p_event_id).array_value_num('header_index'));
43133 IF l_acc_rev_flag IS NULL THEN
43134 l_acc_rev_flag := 'N';
43135 END IF;
43136 EXCEPTION
43137 WHEN OTHERS THEN
43138 l_acc_rev_flag := 'N';
43139 END;
43140 --
43141 IF (l_acc_rev_flag = 'Y') THEN
43142
43143 -- 4645092 ------------------------------------------------------------------------------
43144 -- To allow MPA report to determine if it should generate report process
43145 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43146 ------------------------------------------------------------------------------------------
43147
43148 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43149 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43150 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
43151 -- call ADRs
43152 -- Bug 4922099
43153 --
43154 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43155 (NVL(l_actual_upg_option, 'N') = 'O') OR
43156 (NVL(l_enc_upg_option, 'N') = 'O')
43157 )
43158 THEN
43159 NULL;
43160 --
43161 --
43162
43163 l_ccid := AcctDerRule_12(
43164 p_application_id => p_application_id
43165 , p_ae_header_id => l_ae_header_id
43166 , p_source_1 => p_source_1
43167 , p_source_2 => p_source_2
43168 , x_transaction_coa_id => l_adr_transaction_coa_id
43169 , x_accounting_coa_id => l_adr_accounting_coa_id
43170 , x_value_type_code => l_adr_value_type_code
43171 , p_side => 'NA'
43172 );
43173
43174 xla_ae_lines_pkg.set_ccid(
43175 p_code_combination_id => l_ccid
43176 , p_value_type_code => l_adr_value_type_code
43177 , p_transaction_coa_id => l_adr_transaction_coa_id
43178 , p_accounting_coa_id => l_adr_accounting_coa_id
43179 , p_adr_code => 'EXP'
43180 , p_adr_type_code => 'S'
43181 , p_component_type => l_component_type
43182 , p_component_code => l_component_code
43183 , p_component_type_code => l_component_type_code
43184 , p_component_appl_id => l_component_appl_id
43185 , p_amb_context_code => l_amb_context_code
43186 , p_side => 'NA'
43187 );
43188
43189
43190 --
43191 --
43192 END IF;
43193
43194 --
43195 -- Update the line information that should be overwritten
43196 --
43197 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43198 p_header_num => 1);
43199 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
43200
43201 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43202
43203 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
43204 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43205 END IF;
43206
43207 --
43208 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43209 --
43210 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43211 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
43212 ELSE
43213 ---------------------------------------------------------------------------------------------------
43214 -- 4262811a Switch Sign
43215 ---------------------------------------------------------------------------------------------------
43216 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
43217 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43218 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43219 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43220 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43221 -- 5132302
43222 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43223 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43224
43225 END IF;
43226
43227 -- 4955764
43228 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43229 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43230
43231
43235 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43232 XLA_AE_LINES_PKG.ValidateCurrentLine;
43233 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43234
43236 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43237 ,p_balance_type_code => l_balance_type_code);
43238
43239 END IF;
43240
43241 -----------------------------------------------------------------------------------------
43242 -- 4262811 Multiperiod Accounting
43243 -----------------------------------------------------------------------------------------
43244 -- No MPA option is assigned.
43245
43246
43247 END IF;
43248 END IF;
43249 --
43250
43251 --
43252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43253 trace
43254 (p_msg => 'END of AcctLineType_110'
43255 ,p_level => C_LEVEL_PROCEDURE
43256 ,p_module => l_log_module);
43257 END IF;
43258 --
43259 EXCEPTION
43260 WHEN xla_exceptions_pkg.application_exception THEN
43261 RAISE;
43262 WHEN OTHERS THEN
43263 xla_exceptions_pkg.raise_message
43264 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_110');
43265 END AcctLineType_110;
43266 --
43267
43268 ---------------------------------------
43269 --
43270 -- PRIVATE FUNCTION
43271 -- AcctLineType_111
43272 --
43273 ---------------------------------------
43274 PROCEDURE AcctLineType_111 (
43275 p_application_id IN NUMBER
43276 ,p_event_id IN NUMBER
43277 ,p_calculate_acctd_flag IN VARCHAR2
43278 ,p_calculate_g_l_flag IN VARCHAR2
43279 ,p_actual_flag IN OUT VARCHAR2
43280 ,p_balance_type_code OUT VARCHAR2
43281 ,p_gain_or_loss_ref OUT VARCHAR2
43282
43283 --Transaction Account
43284 , p_source_1 IN NUMBER
43285 --Journal Line Type
43286 , p_source_2 IN VARCHAR2
43287 --Entered Amount
43288 , p_source_3 IN NUMBER
43289 --Line Number
43290 , p_source_4 IN NUMBER
43291 --First Distribution Identifier
43292 , p_source_5 IN NUMBER
43293 --Distribution Type
43294 , p_source_6 IN VARCHAR2
43295 --Currency Code
43296 , p_source_7 IN VARCHAR2
43297 --Currency Conversion Date
43298 , p_source_8 IN DATE
43299 --Currency Conversion Rate
43300 , p_source_9 IN NUMBER
43301 --Currency Conversion Type
43302 , p_source_10 IN VARCHAR2
43303 --Accounted Amount
43304 , p_source_11 IN NUMBER
43305 )
43306 IS
43307
43308 l_component_type VARCHAR2(80);
43309 l_component_code VARCHAR2(30);
43310 l_component_type_code VARCHAR2(1);
43311 l_component_appl_id INTEGER;
43312 l_amb_context_code VARCHAR2(30);
43313 l_entity_code VARCHAR2(30);
43314 l_event_class_code VARCHAR2(30);
43315 l_ae_header_id NUMBER;
43316 l_event_type_code VARCHAR2(30);
43317 l_line_definition_code VARCHAR2(30);
43318 l_line_definition_owner_code VARCHAR2(1);
43319 --
43320 -- adr variables
43321 l_segment VARCHAR2(30);
43322 l_ccid NUMBER;
43323 l_adr_transaction_coa_id NUMBER;
43324 l_adr_accounting_coa_id NUMBER;
43325 l_adr_flexfield_segment_code VARCHAR2(30);
43326 l_adr_flex_value_set_id NUMBER;
43327 l_adr_value_type_code VARCHAR2(30);
43328 l_adr_value_combination_id NUMBER;
43329 l_adr_value_segment_code VARCHAR2(30);
43330
43331 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
43332 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
43333 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
43334 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
43335
43336 -- 4262811 Variables ------------------------------------------------------------------------------------------
43337 l_entered_amt_idx NUMBER;
43338 l_accted_amt_idx NUMBER;
43339 l_acc_rev_flag VARCHAR2(1);
43340 l_accrual_line_num NUMBER;
43341 l_tmp_amt NUMBER;
43342 l_acc_rev_natural_side_code VARCHAR2(1);
43343
43344 l_num_entries NUMBER;
43345 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
43346 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
43347 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
43348 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
43349 l_recog_line_1 NUMBER;
43350 l_recog_line_2 NUMBER;
43351
43352 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
43353 l_bflow_applied_to_amt NUMBER; -- 5132302
43354 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
43355
43356 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43357
43358 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
43359 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
43360
43361 ---------------------------------------------------------------------------------------------------------------
43362
43366 --
43363
43364 --
43365 -- bulk performance
43367 l_balance_type_code VARCHAR2(1);
43368 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
43369 l_log_module VARCHAR2(240);
43370
43371 --
43372 -- Upgrade strategy
43373 --
43374 l_actual_upg_option VARCHAR2(1);
43375 l_enc_upg_option VARCHAR2(1);
43376
43377 --
43378 BEGIN
43379 --
43380 IF g_log_enabled THEN
43381 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_111';
43382 END IF;
43383 --
43384 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43385
43386 trace
43387 (p_msg => 'BEGIN of AcctLineType_111'
43388 ,p_level => C_LEVEL_PROCEDURE
43389 ,p_module => l_log_module);
43390
43391 END IF;
43392 --
43393 l_component_type := 'AMB_JLT';
43394 l_component_code := 'EXP_SUB_TO';
43395 l_component_type_code := 'S';
43396 l_component_appl_id := 555;
43397 l_amb_context_code := 'DEFAULT';
43398 l_entity_code := 'INVENTORY';
43399 l_event_class_code := 'SUBINV_XFER';
43400 l_event_type_code := 'SUBINV_XFER_ALL';
43401 l_line_definition_owner_code := 'S';
43402 l_line_definition_code := 'SUBINV_XFER';
43403 --
43404 l_balance_type_code := 'A';
43405 l_segment := NULL;
43406 l_ccid := NULL;
43407 l_adr_transaction_coa_id := NULL;
43408 l_adr_accounting_coa_id := NULL;
43409 l_adr_flexfield_segment_code := NULL;
43410 l_adr_flex_value_set_id := NULL;
43411 l_adr_value_type_code := NULL;
43412 l_adr_value_combination_id := NULL;
43413 l_adr_value_segment_code := NULL;
43414
43415 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
43416 l_bflow_class_code := ''; -- 4219869 Business Flow
43417 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
43418 l_budgetary_control_flag := 'N';
43419
43420 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43421 l_bflow_applied_to_amt := NULL; -- 5132302
43422 l_entered_amt_idx := NULL; -- 4262811
43423 l_accted_amt_idx := NULL; -- 4262811
43424 l_acc_rev_flag := NULL; -- 4262811
43425 l_accrual_line_num := NULL; -- 4262811
43426 l_tmp_amt := NULL; -- 4262811
43427 --
43428
43429 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43430 l_balance_type_code <> 'B' THEN
43431 IF (NVL(p_source_2,'
43432 ') = 'EXP' AND
43433 p_source_3 > 0) OR
43434 (NVL(p_source_2,'
43435 ') = 'EXP' AND
43436 NVL(p_source_3,9E125) = 0 AND
43437 NVL(p_source_4,9E125) = 2)
43438 THEN
43439
43440 --
43441 XLA_AE_LINES_PKG.SetNewLine;
43442
43443 p_balance_type_code := l_balance_type_code;
43444 -- set the flag so later we will know whether the gain loss line needs to be created
43445
43446 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43447 p_actual_flag :='A';
43448 END IF;
43449
43450 --
43451 -- bulk performance
43452 --
43453 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43454 p_header_num => 0); -- 4262811
43455 --
43456 -- set accounting line options
43457 --
43458 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43459 p_natural_side_code => 'D'
43460 , p_gain_or_loss_flag => 'N'
43461 , p_gl_transfer_mode_code => 'D'
43462 , p_acct_entry_type_code => 'A'
43463 , p_switch_side_flag => 'Y'
43464 , p_merge_duplicate_code => 'W'
43465 );
43466 --
43467 l_acc_rev_natural_side_code := 'C'; -- 4262811
43468 --
43469 --
43470 -- set accounting line type info
43471 --
43472 xla_ae_lines_pkg.SetAcctLineType
43473 (p_component_type => l_component_type
43474 ,p_event_type_code => l_event_type_code
43475 ,p_line_definition_owner_code => l_line_definition_owner_code
43476 ,p_line_definition_code => l_line_definition_code
43477 ,p_accounting_line_code => l_component_code
43478 ,p_accounting_line_type_code => l_component_type_code
43479 ,p_accounting_line_appl_id => l_component_appl_id
43480 ,p_amb_context_code => l_amb_context_code
43481 ,p_entity_code => l_entity_code
43482 ,p_event_class_code => l_event_class_code);
43483 --
43484 -- set accounting class
43485 --
43486 xla_ae_lines_pkg.SetAcctClass(
43487 p_accounting_class_code => 'XFR'
43488 , p_ae_header_id => l_ae_header_id
43489 );
43490
43491 --
43492 -- set rounding class
43493 --
43494 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43495 'XFR';
43496
43497 --
43498 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43499 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43503 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43500 --
43501 -- bulk performance
43502 --
43504
43505 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43506 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43507
43508 -- 4955764
43509 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43510 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43511
43512 -- 4458381 Public Sector Enh
43513
43514 --
43515 -- set accounting attributes for the line type
43516 --
43517 l_entered_amt_idx := 3;
43518 l_accted_amt_idx := 8;
43519 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43520 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43521 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
43522 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43523 l_rec_acct_attrs.array_char_value(2) := p_source_6;
43524 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43525 l_rec_acct_attrs.array_num_value(3) := p_source_3;
43526 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43527 l_rec_acct_attrs.array_char_value(4) := p_source_7;
43528 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43529 l_rec_acct_attrs.array_date_value(5) := p_source_8;
43530 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43531 l_rec_acct_attrs.array_num_value(6) := p_source_9;
43532 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43533 l_rec_acct_attrs.array_char_value(7) := p_source_10;
43534 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43535 l_rec_acct_attrs.array_num_value(8) := p_source_11;
43536
43537 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43538 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43539
43540 ---------------------------------------------------------------------------------------------------------------
43541 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43542 ---------------------------------------------------------------------------------------------------------------
43543 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43544
43545 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43546 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43547
43548 IF xla_accounting_cache_pkg.GetValueChar
43549 (p_source_code => 'LEDGER_CATEGORY_CODE'
43550 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43551 AND l_bflow_method_code = 'PRIOR_ENTRY'
43552 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43553 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43554 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43555 )
43556 THEN
43557 xla_ae_lines_pkg.BflowUpgEntry
43558 (p_business_method_code => l_bflow_method_code
43559 ,p_business_class_code => l_bflow_class_code
43560 ,p_balance_type => l_balance_type_code);
43561 ELSE
43562 NULL;
43563 -- No business flow processing for business flow method of NONE.
43564 END IF;
43565
43566 --
43567 -- call analytical criteria
43568 --
43569
43570 --
43571 -- call description
43572 --
43573 -- No description or it is inherited.
43574 --
43575 -- call ADRs
43576 -- Bug 4922099
43577 --
43578 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43579 (NVL(l_actual_upg_option, 'N') = 'O') OR
43580 (NVL(l_enc_upg_option, 'N') = 'O')
43581 )
43582 THEN
43583 NULL;
43584 --
43585 --
43586
43587 l_ccid := AcctDerRule_12(
43588 p_application_id => p_application_id
43589 , p_ae_header_id => l_ae_header_id
43590 , p_source_1 => p_source_1
43591 , p_source_2 => p_source_2
43592 , x_transaction_coa_id => l_adr_transaction_coa_id
43593 , x_accounting_coa_id => l_adr_accounting_coa_id
43594 , x_value_type_code => l_adr_value_type_code
43595 , p_side => 'NA'
43596 );
43597
43598 xla_ae_lines_pkg.set_ccid(
43599 p_code_combination_id => l_ccid
43600 , p_value_type_code => l_adr_value_type_code
43601 , p_transaction_coa_id => l_adr_transaction_coa_id
43602 , p_accounting_coa_id => l_adr_accounting_coa_id
43603 , p_adr_code => 'EXP'
43604 , p_adr_type_code => 'S'
43605 , p_component_type => l_component_type
43606 , p_component_code => l_component_code
43607 , p_component_type_code => l_component_type_code
43608 , p_component_appl_id => l_component_appl_id
43609 , p_amb_context_code => l_amb_context_code
43610 , p_side => 'NA'
43611 );
43612
43613
43614 --
43615 --
43616 END IF;
43620 (NVL(l_enc_upg_option, 'N') = 'O')
43617 --
43618 -- Bug 4922099
43619 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43621 ) AND
43622 (l_bflow_method_code = 'PRIOR_ENTRY')
43623 )
43624 THEN
43625 IF
43626 --
43627 1 = 2
43628 --
43629 THEN
43630 xla_accounting_err_pkg.build_message
43631 (p_appli_s_name => 'XLA'
43632 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43633 ,p_token_1 => 'LINE_NUMBER'
43634 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
43635 ,p_token_2 => 'LINE_TYPE_NAME'
43636 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
43637 l_component_type
43638 ,l_component_code
43639 ,l_component_type_code
43640 ,l_component_appl_id
43641 ,l_amb_context_code
43642 ,l_entity_code
43643 ,l_event_class_code
43644 )
43645 ,p_token_3 => 'OWNER'
43646 ,p_value_3 => xla_lookups_pkg.get_meaning(
43647 p_lookup_type => 'XLA_OWNER_TYPE'
43648 ,p_lookup_code => l_component_type_code
43649 )
43650 ,p_token_4 => 'PRODUCT_NAME'
43651 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43652 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43653 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43654 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43655 ,p_ae_header_id => NULL
43656 );
43657
43658 IF (C_LEVEL_ERROR>= g_log_level) THEN
43659 trace
43660 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43661 ,p_level => C_LEVEL_ERROR
43662 ,p_module => l_log_module);
43663 END IF;
43664 END IF;
43665 END IF;
43666 --
43667 --
43668 ------------------------------------------------------------------------------------------------
43669 -- 4219869 Business Flow
43670 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43671 -- Prior Entry. Currently, the following code is always generated.
43672 ------------------------------------------------------------------------------------------------
43673 XLA_AE_LINES_PKG.ValidateCurrentLine;
43674
43675 ------------------------------------------------------------------------------------
43676 -- 4219869 Business Flow
43677 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43678 ------------------------------------------------------------------------------------
43679 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43680
43681 ----------------------------------------------------------------------------------
43682 -- 4219869 Business Flow
43683 -- Update journal entry status -- Need to generate this within IF <condition>
43684 ----------------------------------------------------------------------------------
43685 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43686 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43687 ,p_balance_type_code => l_balance_type_code
43688 );
43689
43690 -------------------------------------------------------------------------------------------
43691 -- 4262811 - Generate the Accrual Reversal lines
43692 -------------------------------------------------------------------------------------------
43693 BEGIN
43694 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43695 (g_array_event(p_event_id).array_value_num('header_index'));
43696 IF l_acc_rev_flag IS NULL THEN
43697 l_acc_rev_flag := 'N';
43698 END IF;
43699 EXCEPTION
43700 WHEN OTHERS THEN
43701 l_acc_rev_flag := 'N';
43702 END;
43703 --
43704 IF (l_acc_rev_flag = 'Y') THEN
43705
43706 -- 4645092 ------------------------------------------------------------------------------
43707 -- To allow MPA report to determine if it should generate report process
43708 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43709 ------------------------------------------------------------------------------------------
43710
43714 -- call ADRs
43711 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43712 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43713 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
43715 -- Bug 4922099
43716 --
43717 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43718 (NVL(l_actual_upg_option, 'N') = 'O') OR
43719 (NVL(l_enc_upg_option, 'N') = 'O')
43720 )
43721 THEN
43722 NULL;
43723 --
43724 --
43725
43726 l_ccid := AcctDerRule_12(
43727 p_application_id => p_application_id
43728 , p_ae_header_id => l_ae_header_id
43729 , p_source_1 => p_source_1
43730 , p_source_2 => p_source_2
43731 , x_transaction_coa_id => l_adr_transaction_coa_id
43732 , x_accounting_coa_id => l_adr_accounting_coa_id
43733 , x_value_type_code => l_adr_value_type_code
43734 , p_side => 'NA'
43735 );
43736
43737 xla_ae_lines_pkg.set_ccid(
43738 p_code_combination_id => l_ccid
43739 , p_value_type_code => l_adr_value_type_code
43740 , p_transaction_coa_id => l_adr_transaction_coa_id
43741 , p_accounting_coa_id => l_adr_accounting_coa_id
43742 , p_adr_code => 'EXP'
43743 , p_adr_type_code => 'S'
43744 , p_component_type => l_component_type
43745 , p_component_code => l_component_code
43746 , p_component_type_code => l_component_type_code
43747 , p_component_appl_id => l_component_appl_id
43748 , p_amb_context_code => l_amb_context_code
43749 , p_side => 'NA'
43750 );
43751
43752
43753 --
43754 --
43755 END IF;
43756
43757 --
43758 -- Update the line information that should be overwritten
43759 --
43760 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43761 p_header_num => 1);
43762 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
43763
43764 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43765
43766 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
43767 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43768 END IF;
43769
43770 --
43771 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43772 --
43773 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43774 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
43775 ELSE
43776 ---------------------------------------------------------------------------------------------------
43777 -- 4262811a Switch Sign
43778 ---------------------------------------------------------------------------------------------------
43779 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
43780 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43781 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43782 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43783 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43784 -- 5132302
43785 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43786 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43787
43788 END IF;
43789
43790 -- 4955764
43791 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43792 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43793
43794
43795 XLA_AE_LINES_PKG.ValidateCurrentLine;
43796 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43797
43798 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43799 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43800 ,p_balance_type_code => l_balance_type_code);
43801
43802 END IF;
43803
43804 -----------------------------------------------------------------------------------------
43805 -- 4262811 Multiperiod Accounting
43806 -----------------------------------------------------------------------------------------
43807 -- No MPA option is assigned.
43808
43809
43810 END IF;
43811 END IF;
43812 --
43813
43814 --
43815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43816 trace
43817 (p_msg => 'END of AcctLineType_111'
43818 ,p_level => C_LEVEL_PROCEDURE
43819 ,p_module => l_log_module);
43820 END IF;
43821 --
43822 EXCEPTION
43823 WHEN xla_exceptions_pkg.application_exception THEN
43824 RAISE;
43825 WHEN OTHERS THEN
43826 xla_exceptions_pkg.raise_message
43830
43827 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_111');
43828 END AcctLineType_111;
43829 --
43831 ---------------------------------------
43832 --
43833 -- PRIVATE FUNCTION
43834 -- AcctLineType_112
43835 --
43836 ---------------------------------------
43837 PROCEDURE AcctLineType_112 (
43838 p_application_id IN NUMBER
43839 ,p_event_id IN NUMBER
43840 ,p_calculate_acctd_flag IN VARCHAR2
43841 ,p_calculate_g_l_flag IN VARCHAR2
43842 ,p_actual_flag IN OUT VARCHAR2
43843 ,p_balance_type_code OUT VARCHAR2
43844 ,p_gain_or_loss_ref OUT VARCHAR2
43845
43846 --Transaction Account
43847 , p_source_1 IN NUMBER
43848 --Journal Line Type
43849 , p_source_2 IN VARCHAR2
43850 --Entered Amount
43851 , p_source_3 IN NUMBER
43852 --First Distribution Identifier
43853 , p_source_5 IN NUMBER
43854 --Distribution Type
43855 , p_source_6 IN VARCHAR2
43856 --Currency Code
43857 , p_source_7 IN VARCHAR2
43858 --Currency Conversion Date
43859 , p_source_8 IN DATE
43860 --Currency Conversion Rate
43861 , p_source_9 IN NUMBER
43862 --Currency Conversion Type
43863 , p_source_10 IN VARCHAR2
43864 --Accounted Amount
43865 , p_source_11 IN NUMBER
43866 )
43867 IS
43868
43869 l_component_type VARCHAR2(80);
43870 l_component_code VARCHAR2(30);
43871 l_component_type_code VARCHAR2(1);
43872 l_component_appl_id INTEGER;
43873 l_amb_context_code VARCHAR2(30);
43874 l_entity_code VARCHAR2(30);
43875 l_event_class_code VARCHAR2(30);
43876 l_ae_header_id NUMBER;
43877 l_event_type_code VARCHAR2(30);
43878 l_line_definition_code VARCHAR2(30);
43879 l_line_definition_owner_code VARCHAR2(1);
43880 --
43881 -- adr variables
43882 l_segment VARCHAR2(30);
43883 l_ccid NUMBER;
43884 l_adr_transaction_coa_id NUMBER;
43885 l_adr_accounting_coa_id NUMBER;
43886 l_adr_flexfield_segment_code VARCHAR2(30);
43887 l_adr_flex_value_set_id NUMBER;
43888 l_adr_value_type_code VARCHAR2(30);
43889 l_adr_value_combination_id NUMBER;
43890 l_adr_value_segment_code VARCHAR2(30);
43891
43892 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
43893 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
43894 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
43895 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
43896
43897 -- 4262811 Variables ------------------------------------------------------------------------------------------
43898 l_entered_amt_idx NUMBER;
43899 l_accted_amt_idx NUMBER;
43900 l_acc_rev_flag VARCHAR2(1);
43901 l_accrual_line_num NUMBER;
43902 l_tmp_amt NUMBER;
43903 l_acc_rev_natural_side_code VARCHAR2(1);
43904
43905 l_num_entries NUMBER;
43906 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
43907 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
43908 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
43909 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
43910 l_recog_line_1 NUMBER;
43911 l_recog_line_2 NUMBER;
43912
43913 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
43914 l_bflow_applied_to_amt NUMBER; -- 5132302
43915 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
43916
43917 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43918
43919 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
43920 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
43921
43922 ---------------------------------------------------------------------------------------------------------------
43923
43924
43925 --
43926 -- bulk performance
43927 --
43928 l_balance_type_code VARCHAR2(1);
43929 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
43930 l_log_module VARCHAR2(240);
43931
43932 --
43933 -- Upgrade strategy
43934 --
43935 l_actual_upg_option VARCHAR2(1);
43936 l_enc_upg_option VARCHAR2(1);
43937
43938 --
43939 BEGIN
43940 --
43941 IF g_log_enabled THEN
43942 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_112';
43943 END IF;
43944 --
43945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43946
43947 trace
43948 (p_msg => 'BEGIN of AcctLineType_112'
43949 ,p_level => C_LEVEL_PROCEDURE
43950 ,p_module => l_log_module);
43951
43952 END IF;
43953 --
43954 l_component_type := 'AMB_JLT';
43955 l_component_code := 'FRT';
43956 l_component_type_code := 'S';
43957 l_component_appl_id := 555;
43958 l_amb_context_code := 'DEFAULT';
43959 l_entity_code := 'INVENTORY';
43960 l_event_class_code := 'DIR_INTERORG_SHIP';
43961 l_event_type_code := 'DIR_INTERORG_SHIP_TP';
43962 l_line_definition_owner_code := 'S';
43966 l_segment := NULL;
43963 l_line_definition_code := 'DIRECT_XFER_SHIP_TP';
43964 --
43965 l_balance_type_code := 'A';
43967 l_ccid := NULL;
43968 l_adr_transaction_coa_id := NULL;
43969 l_adr_accounting_coa_id := NULL;
43970 l_adr_flexfield_segment_code := NULL;
43971 l_adr_flex_value_set_id := NULL;
43972 l_adr_value_type_code := NULL;
43973 l_adr_value_combination_id := NULL;
43974 l_adr_value_segment_code := NULL;
43975
43976 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
43977 l_bflow_class_code := ''; -- 4219869 Business Flow
43978 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
43979 l_budgetary_control_flag := 'N';
43980
43981 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43982 l_bflow_applied_to_amt := NULL; -- 5132302
43983 l_entered_amt_idx := NULL; -- 4262811
43984 l_accted_amt_idx := NULL; -- 4262811
43985 l_acc_rev_flag := NULL; -- 4262811
43986 l_accrual_line_num := NULL; -- 4262811
43987 l_tmp_amt := NULL; -- 4262811
43988 --
43989
43990 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43991 l_balance_type_code <> 'B' THEN
43992 IF NVL(p_source_2,'
43993 ') = 'FRT'
43994 THEN
43995
43996 --
43997 XLA_AE_LINES_PKG.SetNewLine;
43998
43999 p_balance_type_code := l_balance_type_code;
44000 -- set the flag so later we will know whether the gain loss line needs to be created
44001
44002 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44003 p_actual_flag :='A';
44004 END IF;
44005
44006 --
44007 -- bulk performance
44008 --
44009 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44010 p_header_num => 0); -- 4262811
44011 --
44012 -- set accounting line options
44013 --
44014 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44015 p_natural_side_code => 'D'
44016 , p_gain_or_loss_flag => 'N'
44017 , p_gl_transfer_mode_code => 'D'
44018 , p_acct_entry_type_code => 'A'
44019 , p_switch_side_flag => 'Y'
44020 , p_merge_duplicate_code => 'W'
44021 );
44022 --
44023 l_acc_rev_natural_side_code := 'C'; -- 4262811
44024 --
44025 --
44026 -- set accounting line type info
44027 --
44028 xla_ae_lines_pkg.SetAcctLineType
44029 (p_component_type => l_component_type
44030 ,p_event_type_code => l_event_type_code
44031 ,p_line_definition_owner_code => l_line_definition_owner_code
44032 ,p_line_definition_code => l_line_definition_code
44033 ,p_accounting_line_code => l_component_code
44034 ,p_accounting_line_type_code => l_component_type_code
44035 ,p_accounting_line_appl_id => l_component_appl_id
44036 ,p_amb_context_code => l_amb_context_code
44037 ,p_entity_code => l_entity_code
44038 ,p_event_class_code => l_event_class_code);
44039 --
44040 -- set accounting class
44041 --
44042 xla_ae_lines_pkg.SetAcctClass(
44043 p_accounting_class_code => 'FRT'
44044 , p_ae_header_id => l_ae_header_id
44045 );
44046
44047 --
44048 -- set rounding class
44049 --
44050 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44051 'FRT';
44052
44053 --
44054 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44055 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44056 --
44057 -- bulk performance
44058 --
44059 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44060
44061 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44062 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44063
44064 -- 4955764
44065 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44066 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44067
44068 -- 4458381 Public Sector Enh
44069
44070 --
44071 -- set accounting attributes for the line type
44072 --
44073 l_entered_amt_idx := 3;
44074 l_accted_amt_idx := 8;
44075 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44076 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44077 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
44078 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44079 l_rec_acct_attrs.array_char_value(2) := p_source_6;
44080 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44081 l_rec_acct_attrs.array_num_value(3) := p_source_3;
44082 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44083 l_rec_acct_attrs.array_char_value(4) := p_source_7;
44087 l_rec_acct_attrs.array_num_value(6) := p_source_9;
44084 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44085 l_rec_acct_attrs.array_date_value(5) := p_source_8;
44086 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44088 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44089 l_rec_acct_attrs.array_char_value(7) := p_source_10;
44090 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44091 l_rec_acct_attrs.array_num_value(8) := p_source_11;
44092
44093 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44094 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44095
44096 ---------------------------------------------------------------------------------------------------------------
44097 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44098 ---------------------------------------------------------------------------------------------------------------
44099 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44100
44101 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44102 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44103
44104 IF xla_accounting_cache_pkg.GetValueChar
44105 (p_source_code => 'LEDGER_CATEGORY_CODE'
44106 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44107 AND l_bflow_method_code = 'PRIOR_ENTRY'
44108 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44109 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44110 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44111 )
44112 THEN
44113 xla_ae_lines_pkg.BflowUpgEntry
44114 (p_business_method_code => l_bflow_method_code
44115 ,p_business_class_code => l_bflow_class_code
44116 ,p_balance_type => l_balance_type_code);
44117 ELSE
44118 NULL;
44119 -- No business flow processing for business flow method of NONE.
44120 END IF;
44121
44122 --
44123 -- call analytical criteria
44124 --
44125
44126 --
44127 -- call description
44128 --
44129 -- No description or it is inherited.
44130 --
44131 -- call ADRs
44132 -- Bug 4922099
44133 --
44134 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44135 (NVL(l_actual_upg_option, 'N') = 'O') OR
44136 (NVL(l_enc_upg_option, 'N') = 'O')
44137 )
44138 THEN
44139 NULL;
44140 --
44141 --
44142
44143 l_ccid := AcctDerRule_13(
44144 p_application_id => p_application_id
44145 , p_ae_header_id => l_ae_header_id
44146 , p_source_1 => p_source_1
44147 , p_source_2 => p_source_2
44148 , x_transaction_coa_id => l_adr_transaction_coa_id
44149 , x_accounting_coa_id => l_adr_accounting_coa_id
44150 , x_value_type_code => l_adr_value_type_code
44151 , p_side => 'NA'
44152 );
44153
44154 xla_ae_lines_pkg.set_ccid(
44155 p_code_combination_id => l_ccid
44156 , p_value_type_code => l_adr_value_type_code
44157 , p_transaction_coa_id => l_adr_transaction_coa_id
44158 , p_accounting_coa_id => l_adr_accounting_coa_id
44159 , p_adr_code => 'FRT'
44160 , p_adr_type_code => 'S'
44161 , p_component_type => l_component_type
44162 , p_component_code => l_component_code
44163 , p_component_type_code => l_component_type_code
44164 , p_component_appl_id => l_component_appl_id
44165 , p_amb_context_code => l_amb_context_code
44166 , p_side => 'NA'
44167 );
44168
44169
44170 --
44171 --
44172 END IF;
44173 --
44174 -- Bug 4922099
44175 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44176 (NVL(l_enc_upg_option, 'N') = 'O')
44177 ) AND
44178 (l_bflow_method_code = 'PRIOR_ENTRY')
44179 )
44180 THEN
44181 IF
44182 --
44183 1 = 2
44184 --
44185 THEN
44186 xla_accounting_err_pkg.build_message
44187 (p_appli_s_name => 'XLA'
44188 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44189 ,p_token_1 => 'LINE_NUMBER'
44190 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
44191 ,p_token_2 => 'LINE_TYPE_NAME'
44192 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
44193 l_component_type
44194 ,l_component_code
44195 ,l_component_type_code
44196 ,l_component_appl_id
44197 ,l_amb_context_code
44201 ,p_token_3 => 'OWNER'
44198 ,l_entity_code
44199 ,l_event_class_code
44200 )
44202 ,p_value_3 => xla_lookups_pkg.get_meaning(
44203 p_lookup_type => 'XLA_OWNER_TYPE'
44204 ,p_lookup_code => l_component_type_code
44205 )
44206 ,p_token_4 => 'PRODUCT_NAME'
44207 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44208 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44209 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44210 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44211 ,p_ae_header_id => NULL
44212 );
44213
44214 IF (C_LEVEL_ERROR>= g_log_level) THEN
44215 trace
44216 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44217 ,p_level => C_LEVEL_ERROR
44218 ,p_module => l_log_module);
44219 END IF;
44220 END IF;
44221 END IF;
44222 --
44223 --
44224 ------------------------------------------------------------------------------------------------
44225 -- 4219869 Business Flow
44226 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44227 -- Prior Entry. Currently, the following code is always generated.
44228 ------------------------------------------------------------------------------------------------
44229 XLA_AE_LINES_PKG.ValidateCurrentLine;
44230
44231 ------------------------------------------------------------------------------------
44232 -- 4219869 Business Flow
44233 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44234 ------------------------------------------------------------------------------------
44235 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44236
44237 ----------------------------------------------------------------------------------
44238 -- 4219869 Business Flow
44239 -- Update journal entry status -- Need to generate this within IF <condition>
44240 ----------------------------------------------------------------------------------
44241 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44242 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44243 ,p_balance_type_code => l_balance_type_code
44244 );
44245
44246 -------------------------------------------------------------------------------------------
44247 -- 4262811 - Generate the Accrual Reversal lines
44248 -------------------------------------------------------------------------------------------
44249 BEGIN
44250 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44251 (g_array_event(p_event_id).array_value_num('header_index'));
44252 IF l_acc_rev_flag IS NULL THEN
44253 l_acc_rev_flag := 'N';
44254 END IF;
44255 EXCEPTION
44256 WHEN OTHERS THEN
44257 l_acc_rev_flag := 'N';
44258 END;
44259 --
44260 IF (l_acc_rev_flag = 'Y') THEN
44261
44262 -- 4645092 ------------------------------------------------------------------------------
44263 -- To allow MPA report to determine if it should generate report process
44264 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44265 ------------------------------------------------------------------------------------------
44266
44267 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44268 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44269 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
44270 -- call ADRs
44271 -- Bug 4922099
44272 --
44273 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44274 (NVL(l_actual_upg_option, 'N') = 'O') OR
44275 (NVL(l_enc_upg_option, 'N') = 'O')
44276 )
44277 THEN
44278 NULL;
44279 --
44280 --
44281
44282 l_ccid := AcctDerRule_13(
44283 p_application_id => p_application_id
44284 , p_ae_header_id => l_ae_header_id
44285 , p_source_1 => p_source_1
44286 , p_source_2 => p_source_2
44287 , x_transaction_coa_id => l_adr_transaction_coa_id
44288 , x_accounting_coa_id => l_adr_accounting_coa_id
44289 , x_value_type_code => l_adr_value_type_code
44290 , p_side => 'NA'
44291 );
44292
44293 xla_ae_lines_pkg.set_ccid(
44294 p_code_combination_id => l_ccid
44295 , p_value_type_code => l_adr_value_type_code
44296 , p_transaction_coa_id => l_adr_transaction_coa_id
44297 , p_accounting_coa_id => l_adr_accounting_coa_id
44298 , p_adr_code => 'FRT'
44302 , p_component_type_code => l_component_type_code
44299 , p_adr_type_code => 'S'
44300 , p_component_type => l_component_type
44301 , p_component_code => l_component_code
44303 , p_component_appl_id => l_component_appl_id
44304 , p_amb_context_code => l_amb_context_code
44305 , p_side => 'NA'
44306 );
44307
44308
44309 --
44310 --
44311 END IF;
44312
44313 --
44314 -- Update the line information that should be overwritten
44315 --
44316 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44317 p_header_num => 1);
44318 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
44319
44320 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44321
44322 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
44323 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44324 END IF;
44325
44326 --
44327 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44328 --
44329 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44330 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
44331 ELSE
44332 ---------------------------------------------------------------------------------------------------
44333 -- 4262811a Switch Sign
44334 ---------------------------------------------------------------------------------------------------
44335 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
44336 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44337 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44338 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44339 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44340 -- 5132302
44341 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44342 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44343
44344 END IF;
44345
44346 -- 4955764
44347 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44348 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44349
44350
44351 XLA_AE_LINES_PKG.ValidateCurrentLine;
44352 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44353
44354 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44355 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44356 ,p_balance_type_code => l_balance_type_code);
44357
44358 END IF;
44359
44360 -----------------------------------------------------------------------------------------
44361 -- 4262811 Multiperiod Accounting
44362 -----------------------------------------------------------------------------------------
44363 -- No MPA option is assigned.
44364
44365
44366 END IF;
44367 END IF;
44368 --
44369
44370 --
44371 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44372 trace
44373 (p_msg => 'END of AcctLineType_112'
44374 ,p_level => C_LEVEL_PROCEDURE
44375 ,p_module => l_log_module);
44376 END IF;
44377 --
44378 EXCEPTION
44379 WHEN xla_exceptions_pkg.application_exception THEN
44380 RAISE;
44381 WHEN OTHERS THEN
44382 xla_exceptions_pkg.raise_message
44383 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_112');
44384 END AcctLineType_112;
44385 --
44386
44387 ---------------------------------------
44388 --
44389 -- PRIVATE FUNCTION
44390 -- AcctLineType_113
44391 --
44392 ---------------------------------------
44393 PROCEDURE AcctLineType_113 (
44394 p_application_id IN NUMBER
44395 ,p_event_id IN NUMBER
44396 ,p_calculate_acctd_flag IN VARCHAR2
44397 ,p_calculate_g_l_flag IN VARCHAR2
44398 ,p_actual_flag IN OUT VARCHAR2
44399 ,p_balance_type_code OUT VARCHAR2
44400 ,p_gain_or_loss_ref OUT VARCHAR2
44401
44402 --Transaction Account
44403 , p_source_1 IN NUMBER
44404 --Journal Line Type
44405 , p_source_2 IN VARCHAR2
44406 --Entered Amount
44407 , p_source_3 IN NUMBER
44408 --First Distribution Identifier
44409 , p_source_5 IN NUMBER
44410 --Distribution Type
44411 , p_source_6 IN VARCHAR2
44412 --Currency Code
44413 , p_source_7 IN VARCHAR2
44414 --Currency Conversion Date
44415 , p_source_8 IN DATE
44416 --Currency Conversion Rate
44417 , p_source_9 IN NUMBER
44418 --Currency Conversion Type
44419 , p_source_10 IN VARCHAR2
44420 --Accounted Amount
44421 , p_source_11 IN NUMBER
44422 )
44423 IS
44424
44428 l_component_appl_id INTEGER;
44425 l_component_type VARCHAR2(80);
44426 l_component_code VARCHAR2(30);
44427 l_component_type_code VARCHAR2(1);
44429 l_amb_context_code VARCHAR2(30);
44430 l_entity_code VARCHAR2(30);
44431 l_event_class_code VARCHAR2(30);
44432 l_ae_header_id NUMBER;
44433 l_event_type_code VARCHAR2(30);
44434 l_line_definition_code VARCHAR2(30);
44435 l_line_definition_owner_code VARCHAR2(1);
44436 --
44437 -- adr variables
44438 l_segment VARCHAR2(30);
44439 l_ccid NUMBER;
44440 l_adr_transaction_coa_id NUMBER;
44441 l_adr_accounting_coa_id NUMBER;
44442 l_adr_flexfield_segment_code VARCHAR2(30);
44443 l_adr_flex_value_set_id NUMBER;
44444 l_adr_value_type_code VARCHAR2(30);
44445 l_adr_value_combination_id NUMBER;
44446 l_adr_value_segment_code VARCHAR2(30);
44447
44448 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
44449 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
44450 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
44451 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
44452
44453 -- 4262811 Variables ------------------------------------------------------------------------------------------
44454 l_entered_amt_idx NUMBER;
44455 l_accted_amt_idx NUMBER;
44456 l_acc_rev_flag VARCHAR2(1);
44457 l_accrual_line_num NUMBER;
44458 l_tmp_amt NUMBER;
44459 l_acc_rev_natural_side_code VARCHAR2(1);
44460
44461 l_num_entries NUMBER;
44462 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
44463 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
44464 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
44465 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
44466 l_recog_line_1 NUMBER;
44467 l_recog_line_2 NUMBER;
44468
44469 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
44470 l_bflow_applied_to_amt NUMBER; -- 5132302
44471 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
44472
44473 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44474
44475 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
44476 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
44477
44478 ---------------------------------------------------------------------------------------------------------------
44479
44480
44481 --
44482 -- bulk performance
44483 --
44484 l_balance_type_code VARCHAR2(1);
44485 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
44486 l_log_module VARCHAR2(240);
44487
44488 --
44489 -- Upgrade strategy
44490 --
44491 l_actual_upg_option VARCHAR2(1);
44492 l_enc_upg_option VARCHAR2(1);
44493
44494 --
44495 BEGIN
44496 --
44497 IF g_log_enabled THEN
44498 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
44499 END IF;
44500 --
44501 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44502
44503 trace
44504 (p_msg => 'BEGIN of AcctLineType_113'
44505 ,p_level => C_LEVEL_PROCEDURE
44506 ,p_module => l_log_module);
44507
44508 END IF;
44509 --
44510 l_component_type := 'AMB_JLT';
44511 l_component_code := 'FRT';
44512 l_component_type_code := 'S';
44513 l_component_appl_id := 555;
44514 l_amb_context_code := 'DEFAULT';
44515 l_entity_code := 'INVENTORY';
44516 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
44517 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
44518 l_line_definition_owner_code := 'S';
44519 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
44520 --
44521 l_balance_type_code := 'A';
44522 l_segment := NULL;
44523 l_ccid := NULL;
44524 l_adr_transaction_coa_id := NULL;
44525 l_adr_accounting_coa_id := NULL;
44526 l_adr_flexfield_segment_code := NULL;
44527 l_adr_flex_value_set_id := NULL;
44528 l_adr_value_type_code := NULL;
44529 l_adr_value_combination_id := NULL;
44530 l_adr_value_segment_code := NULL;
44531
44532 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
44533 l_bflow_class_code := ''; -- 4219869 Business Flow
44534 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
44535 l_budgetary_control_flag := 'N';
44536
44537 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44538 l_bflow_applied_to_amt := NULL; -- 5132302
44539 l_entered_amt_idx := NULL; -- 4262811
44540 l_accted_amt_idx := NULL; -- 4262811
44541 l_acc_rev_flag := NULL; -- 4262811
44542 l_accrual_line_num := NULL; -- 4262811
44543 l_tmp_amt := NULL; -- 4262811
44544 --
44545
44546 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44550 THEN
44547 l_balance_type_code <> 'B' THEN
44548 IF NVL(p_source_2,'
44549 ') = 'FRT'
44551
44552 --
44553 XLA_AE_LINES_PKG.SetNewLine;
44554
44555 p_balance_type_code := l_balance_type_code;
44556 -- set the flag so later we will know whether the gain loss line needs to be created
44557
44558 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44559 p_actual_flag :='A';
44560 END IF;
44561
44562 --
44563 -- bulk performance
44564 --
44565 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44566 p_header_num => 0); -- 4262811
44567 --
44568 -- set accounting line options
44569 --
44570 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44571 p_natural_side_code => 'D'
44572 , p_gain_or_loss_flag => 'N'
44573 , p_gl_transfer_mode_code => 'D'
44574 , p_acct_entry_type_code => 'A'
44575 , p_switch_side_flag => 'Y'
44576 , p_merge_duplicate_code => 'W'
44577 );
44578 --
44579 l_acc_rev_natural_side_code := 'C'; -- 4262811
44580 --
44581 --
44582 -- set accounting line type info
44583 --
44584 xla_ae_lines_pkg.SetAcctLineType
44585 (p_component_type => l_component_type
44586 ,p_event_type_code => l_event_type_code
44587 ,p_line_definition_owner_code => l_line_definition_owner_code
44588 ,p_line_definition_code => l_line_definition_code
44589 ,p_accounting_line_code => l_component_code
44590 ,p_accounting_line_type_code => l_component_type_code
44591 ,p_accounting_line_appl_id => l_component_appl_id
44592 ,p_amb_context_code => l_amb_context_code
44593 ,p_entity_code => l_entity_code
44594 ,p_event_class_code => l_event_class_code);
44595 --
44596 -- set accounting class
44597 --
44598 xla_ae_lines_pkg.SetAcctClass(
44599 p_accounting_class_code => 'FRT'
44600 , p_ae_header_id => l_ae_header_id
44601 );
44602
44603 --
44604 -- set rounding class
44605 --
44606 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44607 'FRT';
44608
44609 --
44610 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44611 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44612 --
44613 -- bulk performance
44614 --
44615 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44616
44617 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44618 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44619
44620 -- 4955764
44621 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44622 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44623
44624 -- 4458381 Public Sector Enh
44625
44626 --
44627 -- set accounting attributes for the line type
44628 --
44629 l_entered_amt_idx := 3;
44630 l_accted_amt_idx := 8;
44631 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44632 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44633 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
44634 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44635 l_rec_acct_attrs.array_char_value(2) := p_source_6;
44636 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44637 l_rec_acct_attrs.array_num_value(3) := p_source_3;
44638 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44639 l_rec_acct_attrs.array_char_value(4) := p_source_7;
44640 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44641 l_rec_acct_attrs.array_date_value(5) := p_source_8;
44642 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44643 l_rec_acct_attrs.array_num_value(6) := p_source_9;
44644 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44645 l_rec_acct_attrs.array_char_value(7) := p_source_10;
44646 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44647 l_rec_acct_attrs.array_num_value(8) := p_source_11;
44648
44649 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44650 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44651
44652 ---------------------------------------------------------------------------------------------------------------
44653 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44654 ---------------------------------------------------------------------------------------------------------------
44655 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44656
44657 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44658 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44659
44660 IF xla_accounting_cache_pkg.GetValueChar
44661 (p_source_code => 'LEDGER_CATEGORY_CODE'
44665 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44662 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44663 AND l_bflow_method_code = 'PRIOR_ENTRY'
44664 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44666 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44667 )
44668 THEN
44669 xla_ae_lines_pkg.BflowUpgEntry
44670 (p_business_method_code => l_bflow_method_code
44671 ,p_business_class_code => l_bflow_class_code
44672 ,p_balance_type => l_balance_type_code);
44673 ELSE
44674 NULL;
44675 -- No business flow processing for business flow method of NONE.
44676 END IF;
44677
44678 --
44679 -- call analytical criteria
44680 --
44681
44682 --
44683 -- call description
44684 --
44685 -- No description or it is inherited.
44686 --
44687 -- call ADRs
44688 -- Bug 4922099
44689 --
44690 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44691 (NVL(l_actual_upg_option, 'N') = 'O') OR
44692 (NVL(l_enc_upg_option, 'N') = 'O')
44693 )
44694 THEN
44695 NULL;
44696 --
44697 --
44698
44699 l_ccid := AcctDerRule_13(
44700 p_application_id => p_application_id
44701 , p_ae_header_id => l_ae_header_id
44702 , p_source_1 => p_source_1
44703 , p_source_2 => p_source_2
44704 , x_transaction_coa_id => l_adr_transaction_coa_id
44705 , x_accounting_coa_id => l_adr_accounting_coa_id
44706 , x_value_type_code => l_adr_value_type_code
44707 , p_side => 'NA'
44708 );
44709
44710 xla_ae_lines_pkg.set_ccid(
44711 p_code_combination_id => l_ccid
44712 , p_value_type_code => l_adr_value_type_code
44713 , p_transaction_coa_id => l_adr_transaction_coa_id
44714 , p_accounting_coa_id => l_adr_accounting_coa_id
44715 , p_adr_code => 'FRT'
44716 , p_adr_type_code => 'S'
44717 , p_component_type => l_component_type
44718 , p_component_code => l_component_code
44719 , p_component_type_code => l_component_type_code
44720 , p_component_appl_id => l_component_appl_id
44721 , p_amb_context_code => l_amb_context_code
44722 , p_side => 'NA'
44723 );
44724
44725
44726 --
44727 --
44728 END IF;
44729 --
44730 -- Bug 4922099
44731 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44732 (NVL(l_enc_upg_option, 'N') = 'O')
44733 ) AND
44734 (l_bflow_method_code = 'PRIOR_ENTRY')
44735 )
44736 THEN
44737 IF
44738 --
44739 1 = 2
44740 --
44741 THEN
44742 xla_accounting_err_pkg.build_message
44743 (p_appli_s_name => 'XLA'
44744 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44745 ,p_token_1 => 'LINE_NUMBER'
44746 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
44747 ,p_token_2 => 'LINE_TYPE_NAME'
44748 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
44749 l_component_type
44750 ,l_component_code
44751 ,l_component_type_code
44752 ,l_component_appl_id
44753 ,l_amb_context_code
44754 ,l_entity_code
44755 ,l_event_class_code
44756 )
44757 ,p_token_3 => 'OWNER'
44758 ,p_value_3 => xla_lookups_pkg.get_meaning(
44759 p_lookup_type => 'XLA_OWNER_TYPE'
44760 ,p_lookup_code => l_component_type_code
44761 )
44762 ,p_token_4 => 'PRODUCT_NAME'
44763 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44764 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44765 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44766 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44767 ,p_ae_header_id => NULL
44768 );
44769
44770 IF (C_LEVEL_ERROR>= g_log_level) THEN
44771 trace
44775 END IF;
44772 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44773 ,p_level => C_LEVEL_ERROR
44774 ,p_module => l_log_module);
44776 END IF;
44777 END IF;
44778 --
44779 --
44780 ------------------------------------------------------------------------------------------------
44781 -- 4219869 Business Flow
44782 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44783 -- Prior Entry. Currently, the following code is always generated.
44784 ------------------------------------------------------------------------------------------------
44785 XLA_AE_LINES_PKG.ValidateCurrentLine;
44786
44787 ------------------------------------------------------------------------------------
44788 -- 4219869 Business Flow
44789 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44790 ------------------------------------------------------------------------------------
44791 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44792
44793 ----------------------------------------------------------------------------------
44794 -- 4219869 Business Flow
44795 -- Update journal entry status -- Need to generate this within IF <condition>
44796 ----------------------------------------------------------------------------------
44797 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44798 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44799 ,p_balance_type_code => l_balance_type_code
44800 );
44801
44802 -------------------------------------------------------------------------------------------
44803 -- 4262811 - Generate the Accrual Reversal lines
44804 -------------------------------------------------------------------------------------------
44805 BEGIN
44806 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44807 (g_array_event(p_event_id).array_value_num('header_index'));
44808 IF l_acc_rev_flag IS NULL THEN
44809 l_acc_rev_flag := 'N';
44810 END IF;
44811 EXCEPTION
44812 WHEN OTHERS THEN
44813 l_acc_rev_flag := 'N';
44814 END;
44815 --
44816 IF (l_acc_rev_flag = 'Y') THEN
44817
44818 -- 4645092 ------------------------------------------------------------------------------
44819 -- To allow MPA report to determine if it should generate report process
44820 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44821 ------------------------------------------------------------------------------------------
44822
44823 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44824 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44825 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
44826 -- call ADRs
44827 -- Bug 4922099
44828 --
44829 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44830 (NVL(l_actual_upg_option, 'N') = 'O') OR
44831 (NVL(l_enc_upg_option, 'N') = 'O')
44832 )
44833 THEN
44834 NULL;
44835 --
44836 --
44837
44838 l_ccid := AcctDerRule_13(
44839 p_application_id => p_application_id
44840 , p_ae_header_id => l_ae_header_id
44841 , p_source_1 => p_source_1
44842 , p_source_2 => p_source_2
44843 , x_transaction_coa_id => l_adr_transaction_coa_id
44844 , x_accounting_coa_id => l_adr_accounting_coa_id
44845 , x_value_type_code => l_adr_value_type_code
44846 , p_side => 'NA'
44847 );
44848
44849 xla_ae_lines_pkg.set_ccid(
44850 p_code_combination_id => l_ccid
44851 , p_value_type_code => l_adr_value_type_code
44852 , p_transaction_coa_id => l_adr_transaction_coa_id
44853 , p_accounting_coa_id => l_adr_accounting_coa_id
44854 , p_adr_code => 'FRT'
44855 , p_adr_type_code => 'S'
44856 , p_component_type => l_component_type
44857 , p_component_code => l_component_code
44858 , p_component_type_code => l_component_type_code
44859 , p_component_appl_id => l_component_appl_id
44860 , p_amb_context_code => l_amb_context_code
44861 , p_side => 'NA'
44862 );
44863
44864
44865 --
44866 --
44867 END IF;
44868
44869 --
44870 -- Update the line information that should be overwritten
44871 --
44872 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44873 p_header_num => 1);
44874 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
44875
44876 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44877
44878 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
44879 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44880 END IF;
44881
44882 --
44883 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44884 --
44885 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44889 -- 4262811a Switch Sign
44886 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
44887 ELSE
44888 ---------------------------------------------------------------------------------------------------
44890 ---------------------------------------------------------------------------------------------------
44891 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
44892 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44893 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44894 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44895 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44896 -- 5132302
44897 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44898 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44899
44900 END IF;
44901
44902 -- 4955764
44903 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44904 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44905
44906
44907 XLA_AE_LINES_PKG.ValidateCurrentLine;
44908 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44909
44910 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44911 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44912 ,p_balance_type_code => l_balance_type_code);
44913
44914 END IF;
44915
44916 -----------------------------------------------------------------------------------------
44917 -- 4262811 Multiperiod Accounting
44918 -----------------------------------------------------------------------------------------
44919 -- No MPA option is assigned.
44920
44921
44922 END IF;
44923 END IF;
44924 --
44925
44926 --
44927 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44928 trace
44929 (p_msg => 'END of AcctLineType_113'
44930 ,p_level => C_LEVEL_PROCEDURE
44931 ,p_module => l_log_module);
44932 END IF;
44933 --
44934 EXCEPTION
44935 WHEN xla_exceptions_pkg.application_exception THEN
44936 RAISE;
44937 WHEN OTHERS THEN
44938 xla_exceptions_pkg.raise_message
44939 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_113');
44940 END AcctLineType_113;
44941 --
44942
44943 ---------------------------------------
44944 --
44945 -- PRIVATE FUNCTION
44946 -- AcctLineType_114
44947 --
44948 ---------------------------------------
44949 PROCEDURE AcctLineType_114 (
44950 p_application_id IN NUMBER
44951 ,p_event_id IN NUMBER
44952 ,p_calculate_acctd_flag IN VARCHAR2
44953 ,p_calculate_g_l_flag IN VARCHAR2
44954 ,p_actual_flag IN OUT VARCHAR2
44955 ,p_balance_type_code OUT VARCHAR2
44956 ,p_gain_or_loss_ref OUT VARCHAR2
44957
44958 --Transaction Account
44959 , p_source_1 IN NUMBER
44960 --Journal Line Type
44961 , p_source_2 IN VARCHAR2
44962 --Entered Amount
44963 , p_source_3 IN NUMBER
44964 --First Distribution Identifier
44965 , p_source_5 IN NUMBER
44966 --Distribution Type
44967 , p_source_6 IN VARCHAR2
44968 --Currency Code
44969 , p_source_7 IN VARCHAR2
44970 --Currency Conversion Date
44971 , p_source_8 IN DATE
44972 --Currency Conversion Rate
44973 , p_source_9 IN NUMBER
44974 --Currency Conversion Type
44975 , p_source_10 IN VARCHAR2
44976 --Accounted Amount
44977 , p_source_11 IN NUMBER
44978 )
44979 IS
44980
44981 l_component_type VARCHAR2(80);
44982 l_component_code VARCHAR2(30);
44983 l_component_type_code VARCHAR2(1);
44984 l_component_appl_id INTEGER;
44985 l_amb_context_code VARCHAR2(30);
44986 l_entity_code VARCHAR2(30);
44987 l_event_class_code VARCHAR2(30);
44988 l_ae_header_id NUMBER;
44989 l_event_type_code VARCHAR2(30);
44990 l_line_definition_code VARCHAR2(30);
44991 l_line_definition_owner_code VARCHAR2(1);
44992 --
44993 -- adr variables
44994 l_segment VARCHAR2(30);
44995 l_ccid NUMBER;
44996 l_adr_transaction_coa_id NUMBER;
44997 l_adr_accounting_coa_id NUMBER;
44998 l_adr_flexfield_segment_code VARCHAR2(30);
44999 l_adr_flex_value_set_id NUMBER;
45000 l_adr_value_type_code VARCHAR2(30);
45001 l_adr_value_combination_id NUMBER;
45002 l_adr_value_segment_code VARCHAR2(30);
45003
45004 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
45005 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
45006 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
45007 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
45008
45009 -- 4262811 Variables ------------------------------------------------------------------------------------------
45010 l_entered_amt_idx NUMBER;
45011 l_accted_amt_idx NUMBER;
45015 l_acc_rev_natural_side_code VARCHAR2(1);
45012 l_acc_rev_flag VARCHAR2(1);
45013 l_accrual_line_num NUMBER;
45014 l_tmp_amt NUMBER;
45016
45017 l_num_entries NUMBER;
45018 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
45019 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
45020 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
45021 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
45022 l_recog_line_1 NUMBER;
45023 l_recog_line_2 NUMBER;
45024
45025 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
45026 l_bflow_applied_to_amt NUMBER; -- 5132302
45027 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
45028
45029 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45030
45031 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
45032 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
45033
45034 ---------------------------------------------------------------------------------------------------------------
45035
45036
45037 --
45038 -- bulk performance
45039 --
45040 l_balance_type_code VARCHAR2(1);
45041 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
45042 l_log_module VARCHAR2(240);
45043
45044 --
45045 -- Upgrade strategy
45046 --
45047 l_actual_upg_option VARCHAR2(1);
45048 l_enc_upg_option VARCHAR2(1);
45049
45050 --
45051 BEGIN
45052 --
45053 IF g_log_enabled THEN
45054 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
45055 END IF;
45056 --
45057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45058
45059 trace
45060 (p_msg => 'BEGIN of AcctLineType_114'
45061 ,p_level => C_LEVEL_PROCEDURE
45062 ,p_module => l_log_module);
45063
45064 END IF;
45065 --
45066 l_component_type := 'AMB_JLT';
45067 l_component_code := 'FRT';
45068 l_component_type_code := 'S';
45069 l_component_appl_id := 555;
45070 l_amb_context_code := 'DEFAULT';
45071 l_entity_code := 'INVENTORY';
45072 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
45073 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
45074 l_line_definition_owner_code := 'S';
45075 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
45076 --
45077 l_balance_type_code := 'A';
45078 l_segment := NULL;
45079 l_ccid := NULL;
45080 l_adr_transaction_coa_id := NULL;
45081 l_adr_accounting_coa_id := NULL;
45082 l_adr_flexfield_segment_code := NULL;
45083 l_adr_flex_value_set_id := NULL;
45084 l_adr_value_type_code := NULL;
45085 l_adr_value_combination_id := NULL;
45086 l_adr_value_segment_code := NULL;
45087
45088 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
45089 l_bflow_class_code := ''; -- 4219869 Business Flow
45090 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
45091 l_budgetary_control_flag := 'N';
45092
45093 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45094 l_bflow_applied_to_amt := NULL; -- 5132302
45095 l_entered_amt_idx := NULL; -- 4262811
45096 l_accted_amt_idx := NULL; -- 4262811
45097 l_acc_rev_flag := NULL; -- 4262811
45098 l_accrual_line_num := NULL; -- 4262811
45099 l_tmp_amt := NULL; -- 4262811
45100 --
45101
45102 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45103 l_balance_type_code <> 'B' THEN
45104 IF NVL(p_source_2,'
45105 ') = 'FRT'
45106 THEN
45107
45108 --
45109 XLA_AE_LINES_PKG.SetNewLine;
45110
45111 p_balance_type_code := l_balance_type_code;
45112 -- set the flag so later we will know whether the gain loss line needs to be created
45113
45114 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45115 p_actual_flag :='A';
45116 END IF;
45117
45118 --
45119 -- bulk performance
45120 --
45121 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45122 p_header_num => 0); -- 4262811
45123 --
45124 -- set accounting line options
45125 --
45126 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45127 p_natural_side_code => 'D'
45128 , p_gain_or_loss_flag => 'N'
45129 , p_gl_transfer_mode_code => 'D'
45130 , p_acct_entry_type_code => 'A'
45131 , p_switch_side_flag => 'Y'
45132 , p_merge_duplicate_code => 'W'
45133 );
45134 --
45135 l_acc_rev_natural_side_code := 'C'; -- 4262811
45136 --
45137 --
45138 -- set accounting line type info
45139 --
45140 xla_ae_lines_pkg.SetAcctLineType
45141 (p_component_type => l_component_type
45145 ,p_accounting_line_code => l_component_code
45142 ,p_event_type_code => l_event_type_code
45143 ,p_line_definition_owner_code => l_line_definition_owner_code
45144 ,p_line_definition_code => l_line_definition_code
45146 ,p_accounting_line_type_code => l_component_type_code
45147 ,p_accounting_line_appl_id => l_component_appl_id
45148 ,p_amb_context_code => l_amb_context_code
45149 ,p_entity_code => l_entity_code
45150 ,p_event_class_code => l_event_class_code);
45151 --
45152 -- set accounting class
45153 --
45154 xla_ae_lines_pkg.SetAcctClass(
45155 p_accounting_class_code => 'FRT'
45156 , p_ae_header_id => l_ae_header_id
45157 );
45158
45159 --
45160 -- set rounding class
45161 --
45162 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45163 'FRT';
45164
45165 --
45166 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45167 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45168 --
45169 -- bulk performance
45170 --
45171 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45172
45173 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45174 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45175
45176 -- 4955764
45177 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45178 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45179
45180 -- 4458381 Public Sector Enh
45181
45182 --
45183 -- set accounting attributes for the line type
45184 --
45185 l_entered_amt_idx := 3;
45186 l_accted_amt_idx := 8;
45187 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45188 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45189 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
45190 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45191 l_rec_acct_attrs.array_char_value(2) := p_source_6;
45192 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45193 l_rec_acct_attrs.array_num_value(3) := p_source_3;
45194 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45195 l_rec_acct_attrs.array_char_value(4) := p_source_7;
45196 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45197 l_rec_acct_attrs.array_date_value(5) := p_source_8;
45198 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45199 l_rec_acct_attrs.array_num_value(6) := p_source_9;
45200 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45201 l_rec_acct_attrs.array_char_value(7) := p_source_10;
45202 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45203 l_rec_acct_attrs.array_num_value(8) := p_source_11;
45204
45205 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45206 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45207
45208 ---------------------------------------------------------------------------------------------------------------
45209 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45210 ---------------------------------------------------------------------------------------------------------------
45211 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45212
45213 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45214 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45215
45216 IF xla_accounting_cache_pkg.GetValueChar
45217 (p_source_code => 'LEDGER_CATEGORY_CODE'
45218 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45219 AND l_bflow_method_code = 'PRIOR_ENTRY'
45220 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45221 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45222 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45223 )
45224 THEN
45225 xla_ae_lines_pkg.BflowUpgEntry
45226 (p_business_method_code => l_bflow_method_code
45227 ,p_business_class_code => l_bflow_class_code
45228 ,p_balance_type => l_balance_type_code);
45229 ELSE
45230 NULL;
45231 -- No business flow processing for business flow method of NONE.
45232 END IF;
45233
45234 --
45235 -- call analytical criteria
45236 --
45237
45238 --
45239 -- call description
45240 --
45241 -- No description or it is inherited.
45242 --
45243 -- call ADRs
45244 -- Bug 4922099
45245 --
45246 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45247 (NVL(l_actual_upg_option, 'N') = 'O') OR
45248 (NVL(l_enc_upg_option, 'N') = 'O')
45249 )
45250 THEN
45251 NULL;
45252 --
45253 --
45254
45255 l_ccid := AcctDerRule_13(
45256 p_application_id => p_application_id
45257 , p_ae_header_id => l_ae_header_id
45258 , p_source_1 => p_source_1
45259 , p_source_2 => p_source_2
45263 , p_side => 'NA'
45260 , x_transaction_coa_id => l_adr_transaction_coa_id
45261 , x_accounting_coa_id => l_adr_accounting_coa_id
45262 , x_value_type_code => l_adr_value_type_code
45264 );
45265
45266 xla_ae_lines_pkg.set_ccid(
45267 p_code_combination_id => l_ccid
45268 , p_value_type_code => l_adr_value_type_code
45269 , p_transaction_coa_id => l_adr_transaction_coa_id
45270 , p_accounting_coa_id => l_adr_accounting_coa_id
45271 , p_adr_code => 'FRT'
45272 , p_adr_type_code => 'S'
45273 , p_component_type => l_component_type
45274 , p_component_code => l_component_code
45275 , p_component_type_code => l_component_type_code
45276 , p_component_appl_id => l_component_appl_id
45277 , p_amb_context_code => l_amb_context_code
45278 , p_side => 'NA'
45279 );
45280
45281
45282 --
45283 --
45284 END IF;
45285 --
45286 -- Bug 4922099
45287 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45288 (NVL(l_enc_upg_option, 'N') = 'O')
45289 ) AND
45290 (l_bflow_method_code = 'PRIOR_ENTRY')
45291 )
45292 THEN
45293 IF
45294 --
45295 1 = 2
45296 --
45297 THEN
45298 xla_accounting_err_pkg.build_message
45299 (p_appli_s_name => 'XLA'
45300 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45301 ,p_token_1 => 'LINE_NUMBER'
45302 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
45303 ,p_token_2 => 'LINE_TYPE_NAME'
45304 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
45305 l_component_type
45306 ,l_component_code
45307 ,l_component_type_code
45308 ,l_component_appl_id
45309 ,l_amb_context_code
45310 ,l_entity_code
45311 ,l_event_class_code
45312 )
45313 ,p_token_3 => 'OWNER'
45314 ,p_value_3 => xla_lookups_pkg.get_meaning(
45315 p_lookup_type => 'XLA_OWNER_TYPE'
45316 ,p_lookup_code => l_component_type_code
45317 )
45318 ,p_token_4 => 'PRODUCT_NAME'
45319 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45320 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45321 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45322 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45323 ,p_ae_header_id => NULL
45324 );
45325
45326 IF (C_LEVEL_ERROR>= g_log_level) THEN
45327 trace
45328 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45329 ,p_level => C_LEVEL_ERROR
45330 ,p_module => l_log_module);
45331 END IF;
45332 END IF;
45333 END IF;
45334 --
45335 --
45336 ------------------------------------------------------------------------------------------------
45337 -- 4219869 Business Flow
45338 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45339 -- Prior Entry. Currently, the following code is always generated.
45340 ------------------------------------------------------------------------------------------------
45341 XLA_AE_LINES_PKG.ValidateCurrentLine;
45342
45343 ------------------------------------------------------------------------------------
45344 -- 4219869 Business Flow
45345 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45346 ------------------------------------------------------------------------------------
45347 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45348
45349 ----------------------------------------------------------------------------------
45350 -- 4219869 Business Flow
45351 -- Update journal entry status -- Need to generate this within IF <condition>
45352 ----------------------------------------------------------------------------------
45353 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45354 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45358 -------------------------------------------------------------------------------------------
45355 ,p_balance_type_code => l_balance_type_code
45356 );
45357
45359 -- 4262811 - Generate the Accrual Reversal lines
45360 -------------------------------------------------------------------------------------------
45361 BEGIN
45362 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45363 (g_array_event(p_event_id).array_value_num('header_index'));
45364 IF l_acc_rev_flag IS NULL THEN
45365 l_acc_rev_flag := 'N';
45366 END IF;
45367 EXCEPTION
45368 WHEN OTHERS THEN
45369 l_acc_rev_flag := 'N';
45370 END;
45371 --
45372 IF (l_acc_rev_flag = 'Y') THEN
45373
45374 -- 4645092 ------------------------------------------------------------------------------
45375 -- To allow MPA report to determine if it should generate report process
45376 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45377 ------------------------------------------------------------------------------------------
45378
45379 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45380 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45381 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
45382 -- call ADRs
45383 -- Bug 4922099
45384 --
45385 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45386 (NVL(l_actual_upg_option, 'N') = 'O') OR
45387 (NVL(l_enc_upg_option, 'N') = 'O')
45388 )
45389 THEN
45390 NULL;
45391 --
45392 --
45393
45394 l_ccid := AcctDerRule_13(
45395 p_application_id => p_application_id
45396 , p_ae_header_id => l_ae_header_id
45397 , p_source_1 => p_source_1
45398 , p_source_2 => p_source_2
45399 , x_transaction_coa_id => l_adr_transaction_coa_id
45400 , x_accounting_coa_id => l_adr_accounting_coa_id
45401 , x_value_type_code => l_adr_value_type_code
45402 , p_side => 'NA'
45403 );
45404
45405 xla_ae_lines_pkg.set_ccid(
45406 p_code_combination_id => l_ccid
45407 , p_value_type_code => l_adr_value_type_code
45408 , p_transaction_coa_id => l_adr_transaction_coa_id
45409 , p_accounting_coa_id => l_adr_accounting_coa_id
45410 , p_adr_code => 'FRT'
45411 , p_adr_type_code => 'S'
45412 , p_component_type => l_component_type
45413 , p_component_code => l_component_code
45414 , p_component_type_code => l_component_type_code
45415 , p_component_appl_id => l_component_appl_id
45416 , p_amb_context_code => l_amb_context_code
45417 , p_side => 'NA'
45418 );
45419
45420
45421 --
45422 --
45423 END IF;
45424
45425 --
45426 -- Update the line information that should be overwritten
45427 --
45428 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45429 p_header_num => 1);
45430 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
45431
45432 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45433
45434 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
45435 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45436 END IF;
45437
45438 --
45439 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45440 --
45441 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45442 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
45443 ELSE
45444 ---------------------------------------------------------------------------------------------------
45445 -- 4262811a Switch Sign
45446 ---------------------------------------------------------------------------------------------------
45447 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
45448 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45449 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45450 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45451 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45452 -- 5132302
45453 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45454 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45455
45456 END IF;
45457
45458 -- 4955764
45459 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45460 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45461
45462
45463 XLA_AE_LINES_PKG.ValidateCurrentLine;
45464 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45468 ,p_balance_type_code => l_balance_type_code);
45465
45466 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45467 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45469
45470 END IF;
45471
45472 -----------------------------------------------------------------------------------------
45473 -- 4262811 Multiperiod Accounting
45474 -----------------------------------------------------------------------------------------
45475 -- No MPA option is assigned.
45476
45477
45478 END IF;
45479 END IF;
45480 --
45481
45482 --
45483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45484 trace
45485 (p_msg => 'END of AcctLineType_114'
45486 ,p_level => C_LEVEL_PROCEDURE
45487 ,p_module => l_log_module);
45488 END IF;
45489 --
45490 EXCEPTION
45491 WHEN xla_exceptions_pkg.application_exception THEN
45492 RAISE;
45493 WHEN OTHERS THEN
45494 xla_exceptions_pkg.raise_message
45495 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_114');
45496 END AcctLineType_114;
45497 --
45498
45499 ---------------------------------------
45500 --
45501 -- PRIVATE FUNCTION
45502 -- AcctLineType_115
45503 --
45504 ---------------------------------------
45505 PROCEDURE AcctLineType_115 (
45506 p_application_id IN NUMBER
45507 ,p_event_id IN NUMBER
45508 ,p_calculate_acctd_flag IN VARCHAR2
45509 ,p_calculate_g_l_flag IN VARCHAR2
45510 ,p_actual_flag IN OUT VARCHAR2
45511 ,p_balance_type_code OUT VARCHAR2
45512 ,p_gain_or_loss_ref OUT VARCHAR2
45513
45514 --Transaction Account
45515 , p_source_1 IN NUMBER
45516 --Journal Line Type
45517 , p_source_2 IN VARCHAR2
45518 --Entered Amount
45519 , p_source_3 IN NUMBER
45520 --First Distribution Identifier
45521 , p_source_5 IN NUMBER
45522 --Distribution Type
45523 , p_source_6 IN VARCHAR2
45524 --Currency Code
45525 , p_source_7 IN VARCHAR2
45526 --Currency Conversion Date
45527 , p_source_8 IN DATE
45528 --Currency Conversion Rate
45529 , p_source_9 IN NUMBER
45530 --Currency Conversion Type
45531 , p_source_10 IN VARCHAR2
45532 --Accounted Amount
45533 , p_source_11 IN NUMBER
45534 )
45535 IS
45536
45537 l_component_type VARCHAR2(80);
45538 l_component_code VARCHAR2(30);
45539 l_component_type_code VARCHAR2(1);
45540 l_component_appl_id INTEGER;
45541 l_amb_context_code VARCHAR2(30);
45542 l_entity_code VARCHAR2(30);
45543 l_event_class_code VARCHAR2(30);
45544 l_ae_header_id NUMBER;
45545 l_event_type_code VARCHAR2(30);
45546 l_line_definition_code VARCHAR2(30);
45547 l_line_definition_owner_code VARCHAR2(1);
45548 --
45549 -- adr variables
45550 l_segment VARCHAR2(30);
45551 l_ccid NUMBER;
45552 l_adr_transaction_coa_id NUMBER;
45553 l_adr_accounting_coa_id NUMBER;
45554 l_adr_flexfield_segment_code VARCHAR2(30);
45555 l_adr_flex_value_set_id NUMBER;
45556 l_adr_value_type_code VARCHAR2(30);
45557 l_adr_value_combination_id NUMBER;
45558 l_adr_value_segment_code VARCHAR2(30);
45559
45560 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
45561 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
45562 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
45563 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
45564
45565 -- 4262811 Variables ------------------------------------------------------------------------------------------
45566 l_entered_amt_idx NUMBER;
45567 l_accted_amt_idx NUMBER;
45568 l_acc_rev_flag VARCHAR2(1);
45569 l_accrual_line_num NUMBER;
45570 l_tmp_amt NUMBER;
45571 l_acc_rev_natural_side_code VARCHAR2(1);
45572
45573 l_num_entries NUMBER;
45574 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
45575 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
45576 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
45577 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
45578 l_recog_line_1 NUMBER;
45579 l_recog_line_2 NUMBER;
45580
45581 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
45582 l_bflow_applied_to_amt NUMBER; -- 5132302
45583 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
45584
45585 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45586
45587 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
45588 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
45589
45590 ---------------------------------------------------------------------------------------------------------------
45591
45592
45593 --
45594 -- bulk performance
45595 --
45599
45596 l_balance_type_code VARCHAR2(1);
45597 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
45598 l_log_module VARCHAR2(240);
45600 --
45601 -- Upgrade strategy
45602 --
45603 l_actual_upg_option VARCHAR2(1);
45604 l_enc_upg_option VARCHAR2(1);
45605
45606 --
45607 BEGIN
45608 --
45609 IF g_log_enabled THEN
45610 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
45611 END IF;
45612 --
45613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45614
45615 trace
45616 (p_msg => 'BEGIN of AcctLineType_115'
45617 ,p_level => C_LEVEL_PROCEDURE
45618 ,p_module => l_log_module);
45619
45620 END IF;
45621 --
45622 l_component_type := 'AMB_JLT';
45623 l_component_code := 'FRT';
45624 l_component_type_code := 'S';
45625 l_component_appl_id := 555;
45626 l_amb_context_code := 'DEFAULT';
45627 l_entity_code := 'INVENTORY';
45628 l_event_class_code := 'DIR_INTERORG_SHIP';
45629 l_event_type_code := 'DIR_INTERORG_SHIP';
45630 l_line_definition_owner_code := 'S';
45631 l_line_definition_code := 'DIRECT_XFER_SHIP';
45632 --
45633 l_balance_type_code := 'A';
45634 l_segment := NULL;
45635 l_ccid := NULL;
45636 l_adr_transaction_coa_id := NULL;
45637 l_adr_accounting_coa_id := NULL;
45638 l_adr_flexfield_segment_code := NULL;
45639 l_adr_flex_value_set_id := NULL;
45640 l_adr_value_type_code := NULL;
45641 l_adr_value_combination_id := NULL;
45642 l_adr_value_segment_code := NULL;
45643
45644 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
45645 l_bflow_class_code := ''; -- 4219869 Business Flow
45646 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
45647 l_budgetary_control_flag := 'N';
45648
45649 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45650 l_bflow_applied_to_amt := NULL; -- 5132302
45651 l_entered_amt_idx := NULL; -- 4262811
45652 l_accted_amt_idx := NULL; -- 4262811
45653 l_acc_rev_flag := NULL; -- 4262811
45654 l_accrual_line_num := NULL; -- 4262811
45655 l_tmp_amt := NULL; -- 4262811
45656 --
45657
45658 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45659 l_balance_type_code <> 'B' THEN
45660 IF NVL(p_source_2,'
45661 ') = 'FRT'
45662 THEN
45663
45664 --
45665 XLA_AE_LINES_PKG.SetNewLine;
45666
45667 p_balance_type_code := l_balance_type_code;
45668 -- set the flag so later we will know whether the gain loss line needs to be created
45669
45670 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45671 p_actual_flag :='A';
45672 END IF;
45673
45674 --
45675 -- bulk performance
45676 --
45677 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45678 p_header_num => 0); -- 4262811
45679 --
45680 -- set accounting line options
45681 --
45682 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45683 p_natural_side_code => 'D'
45684 , p_gain_or_loss_flag => 'N'
45685 , p_gl_transfer_mode_code => 'D'
45686 , p_acct_entry_type_code => 'A'
45687 , p_switch_side_flag => 'Y'
45688 , p_merge_duplicate_code => 'W'
45689 );
45690 --
45691 l_acc_rev_natural_side_code := 'C'; -- 4262811
45692 --
45693 --
45694 -- set accounting line type info
45695 --
45696 xla_ae_lines_pkg.SetAcctLineType
45697 (p_component_type => l_component_type
45698 ,p_event_type_code => l_event_type_code
45699 ,p_line_definition_owner_code => l_line_definition_owner_code
45700 ,p_line_definition_code => l_line_definition_code
45701 ,p_accounting_line_code => l_component_code
45702 ,p_accounting_line_type_code => l_component_type_code
45703 ,p_accounting_line_appl_id => l_component_appl_id
45704 ,p_amb_context_code => l_amb_context_code
45705 ,p_entity_code => l_entity_code
45706 ,p_event_class_code => l_event_class_code);
45707 --
45708 -- set accounting class
45709 --
45710 xla_ae_lines_pkg.SetAcctClass(
45711 p_accounting_class_code => 'FRT'
45712 , p_ae_header_id => l_ae_header_id
45713 );
45714
45715 --
45716 -- set rounding class
45717 --
45718 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45719 'FRT';
45720
45721 --
45722 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45723 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45724 --
45725 -- bulk performance
45726 --
45727 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45728
45729 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45733 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45730 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45731
45732 -- 4955764
45734 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45735
45736 -- 4458381 Public Sector Enh
45737
45738 --
45739 -- set accounting attributes for the line type
45740 --
45741 l_entered_amt_idx := 3;
45742 l_accted_amt_idx := 8;
45743 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45744 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45745 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
45746 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45747 l_rec_acct_attrs.array_char_value(2) := p_source_6;
45748 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45749 l_rec_acct_attrs.array_num_value(3) := p_source_3;
45750 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45751 l_rec_acct_attrs.array_char_value(4) := p_source_7;
45752 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45753 l_rec_acct_attrs.array_date_value(5) := p_source_8;
45754 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45755 l_rec_acct_attrs.array_num_value(6) := p_source_9;
45756 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45757 l_rec_acct_attrs.array_char_value(7) := p_source_10;
45758 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45759 l_rec_acct_attrs.array_num_value(8) := p_source_11;
45760
45761 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45762 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45763
45764 ---------------------------------------------------------------------------------------------------------------
45765 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45766 ---------------------------------------------------------------------------------------------------------------
45767 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45768
45769 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45770 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45771
45772 IF xla_accounting_cache_pkg.GetValueChar
45773 (p_source_code => 'LEDGER_CATEGORY_CODE'
45774 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45775 AND l_bflow_method_code = 'PRIOR_ENTRY'
45776 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45777 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45778 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45779 )
45780 THEN
45781 xla_ae_lines_pkg.BflowUpgEntry
45782 (p_business_method_code => l_bflow_method_code
45783 ,p_business_class_code => l_bflow_class_code
45784 ,p_balance_type => l_balance_type_code);
45785 ELSE
45786 NULL;
45787 -- No business flow processing for business flow method of NONE.
45788 END IF;
45789
45790 --
45791 -- call analytical criteria
45792 --
45793
45794 --
45795 -- call description
45796 --
45797 -- No description or it is inherited.
45798 --
45799 -- call ADRs
45800 -- Bug 4922099
45801 --
45802 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45803 (NVL(l_actual_upg_option, 'N') = 'O') OR
45804 (NVL(l_enc_upg_option, 'N') = 'O')
45805 )
45806 THEN
45807 NULL;
45808 --
45809 --
45810
45811 l_ccid := AcctDerRule_13(
45812 p_application_id => p_application_id
45813 , p_ae_header_id => l_ae_header_id
45814 , p_source_1 => p_source_1
45815 , p_source_2 => p_source_2
45816 , x_transaction_coa_id => l_adr_transaction_coa_id
45817 , x_accounting_coa_id => l_adr_accounting_coa_id
45818 , x_value_type_code => l_adr_value_type_code
45819 , p_side => 'NA'
45820 );
45821
45822 xla_ae_lines_pkg.set_ccid(
45823 p_code_combination_id => l_ccid
45824 , p_value_type_code => l_adr_value_type_code
45825 , p_transaction_coa_id => l_adr_transaction_coa_id
45826 , p_accounting_coa_id => l_adr_accounting_coa_id
45827 , p_adr_code => 'FRT'
45828 , p_adr_type_code => 'S'
45829 , p_component_type => l_component_type
45830 , p_component_code => l_component_code
45831 , p_component_type_code => l_component_type_code
45832 , p_component_appl_id => l_component_appl_id
45833 , p_amb_context_code => l_amb_context_code
45834 , p_side => 'NA'
45835 );
45836
45837
45838 --
45839 --
45840 END IF;
45841 --
45842 -- Bug 4922099
45843 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45844 (NVL(l_enc_upg_option, 'N') = 'O')
45845 ) AND
45846 (l_bflow_method_code = 'PRIOR_ENTRY')
45847 )
45848 THEN
45852 --
45849 IF
45850 --
45851 1 = 2
45853 THEN
45854 xla_accounting_err_pkg.build_message
45855 (p_appli_s_name => 'XLA'
45856 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45857 ,p_token_1 => 'LINE_NUMBER'
45858 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
45859 ,p_token_2 => 'LINE_TYPE_NAME'
45860 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
45861 l_component_type
45862 ,l_component_code
45863 ,l_component_type_code
45864 ,l_component_appl_id
45865 ,l_amb_context_code
45866 ,l_entity_code
45867 ,l_event_class_code
45868 )
45869 ,p_token_3 => 'OWNER'
45870 ,p_value_3 => xla_lookups_pkg.get_meaning(
45871 p_lookup_type => 'XLA_OWNER_TYPE'
45872 ,p_lookup_code => l_component_type_code
45873 )
45874 ,p_token_4 => 'PRODUCT_NAME'
45875 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45876 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45877 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45878 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45879 ,p_ae_header_id => NULL
45880 );
45881
45882 IF (C_LEVEL_ERROR>= g_log_level) THEN
45883 trace
45884 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45885 ,p_level => C_LEVEL_ERROR
45886 ,p_module => l_log_module);
45887 END IF;
45888 END IF;
45889 END IF;
45890 --
45891 --
45892 ------------------------------------------------------------------------------------------------
45893 -- 4219869 Business Flow
45894 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45895 -- Prior Entry. Currently, the following code is always generated.
45896 ------------------------------------------------------------------------------------------------
45897 XLA_AE_LINES_PKG.ValidateCurrentLine;
45898
45899 ------------------------------------------------------------------------------------
45900 -- 4219869 Business Flow
45901 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45902 ------------------------------------------------------------------------------------
45903 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45904
45905 ----------------------------------------------------------------------------------
45906 -- 4219869 Business Flow
45907 -- Update journal entry status -- Need to generate this within IF <condition>
45908 ----------------------------------------------------------------------------------
45909 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45910 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45911 ,p_balance_type_code => l_balance_type_code
45912 );
45913
45914 -------------------------------------------------------------------------------------------
45915 -- 4262811 - Generate the Accrual Reversal lines
45916 -------------------------------------------------------------------------------------------
45917 BEGIN
45918 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45919 (g_array_event(p_event_id).array_value_num('header_index'));
45920 IF l_acc_rev_flag IS NULL THEN
45921 l_acc_rev_flag := 'N';
45922 END IF;
45923 EXCEPTION
45924 WHEN OTHERS THEN
45925 l_acc_rev_flag := 'N';
45926 END;
45927 --
45928 IF (l_acc_rev_flag = 'Y') THEN
45929
45930 -- 4645092 ------------------------------------------------------------------------------
45931 -- To allow MPA report to determine if it should generate report process
45932 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45933 ------------------------------------------------------------------------------------------
45934
45935 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45936 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45937 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
45938 -- call ADRs
45942 (NVL(l_actual_upg_option, 'N') = 'O') OR
45939 -- Bug 4922099
45940 --
45941 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45943 (NVL(l_enc_upg_option, 'N') = 'O')
45944 )
45945 THEN
45946 NULL;
45947 --
45948 --
45949
45950 l_ccid := AcctDerRule_13(
45951 p_application_id => p_application_id
45952 , p_ae_header_id => l_ae_header_id
45953 , p_source_1 => p_source_1
45954 , p_source_2 => p_source_2
45955 , x_transaction_coa_id => l_adr_transaction_coa_id
45956 , x_accounting_coa_id => l_adr_accounting_coa_id
45957 , x_value_type_code => l_adr_value_type_code
45958 , p_side => 'NA'
45959 );
45960
45961 xla_ae_lines_pkg.set_ccid(
45962 p_code_combination_id => l_ccid
45963 , p_value_type_code => l_adr_value_type_code
45964 , p_transaction_coa_id => l_adr_transaction_coa_id
45965 , p_accounting_coa_id => l_adr_accounting_coa_id
45966 , p_adr_code => 'FRT'
45967 , p_adr_type_code => 'S'
45968 , p_component_type => l_component_type
45969 , p_component_code => l_component_code
45970 , p_component_type_code => l_component_type_code
45971 , p_component_appl_id => l_component_appl_id
45972 , p_amb_context_code => l_amb_context_code
45973 , p_side => 'NA'
45974 );
45975
45976
45977 --
45978 --
45979 END IF;
45980
45981 --
45982 -- Update the line information that should be overwritten
45983 --
45984 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45985 p_header_num => 1);
45986 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
45987
45988 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45989
45990 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
45991 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45992 END IF;
45993
45994 --
45995 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45996 --
45997 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45998 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
45999 ELSE
46000 ---------------------------------------------------------------------------------------------------
46001 -- 4262811a Switch Sign
46002 ---------------------------------------------------------------------------------------------------
46003 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
46004 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46005 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46006 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46007 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46008 -- 5132302
46009 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46010 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46011
46012 END IF;
46013
46014 -- 4955764
46015 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46016 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46017
46018
46019 XLA_AE_LINES_PKG.ValidateCurrentLine;
46020 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46021
46022 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46023 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46024 ,p_balance_type_code => l_balance_type_code);
46025
46026 END IF;
46027
46028 -----------------------------------------------------------------------------------------
46029 -- 4262811 Multiperiod Accounting
46030 -----------------------------------------------------------------------------------------
46031 -- No MPA option is assigned.
46032
46033
46034 END IF;
46035 END IF;
46036 --
46037
46038 --
46039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46040 trace
46041 (p_msg => 'END of AcctLineType_115'
46042 ,p_level => C_LEVEL_PROCEDURE
46043 ,p_module => l_log_module);
46044 END IF;
46045 --
46046 EXCEPTION
46047 WHEN xla_exceptions_pkg.application_exception THEN
46048 RAISE;
46049 WHEN OTHERS THEN
46050 xla_exceptions_pkg.raise_message
46051 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_115');
46052 END AcctLineType_115;
46053 --
46054
46055 ---------------------------------------
46056 --
46057 -- PRIVATE FUNCTION
46058 -- AcctLineType_116
46059 --
46060 ---------------------------------------
46061 PROCEDURE AcctLineType_116 (
46065 ,p_calculate_g_l_flag IN VARCHAR2
46062 p_application_id IN NUMBER
46063 ,p_event_id IN NUMBER
46064 ,p_calculate_acctd_flag IN VARCHAR2
46066 ,p_actual_flag IN OUT VARCHAR2
46067 ,p_balance_type_code OUT VARCHAR2
46068 ,p_gain_or_loss_ref OUT VARCHAR2
46069
46070 --Transaction Account
46071 , p_source_1 IN NUMBER
46072 --Journal Line Type
46073 , p_source_2 IN VARCHAR2
46074 --Entered Amount
46075 , p_source_3 IN NUMBER
46076 --First Distribution Identifier
46077 , p_source_5 IN NUMBER
46078 --Distribution Type
46079 , p_source_6 IN VARCHAR2
46080 --Currency Code
46081 , p_source_7 IN VARCHAR2
46082 --Currency Conversion Date
46083 , p_source_8 IN DATE
46084 --Currency Conversion Rate
46085 , p_source_9 IN NUMBER
46086 --Currency Conversion Type
46087 , p_source_10 IN VARCHAR2
46088 --Accounted Amount
46089 , p_source_11 IN NUMBER
46090 )
46091 IS
46092
46093 l_component_type VARCHAR2(80);
46094 l_component_code VARCHAR2(30);
46095 l_component_type_code VARCHAR2(1);
46096 l_component_appl_id INTEGER;
46097 l_amb_context_code VARCHAR2(30);
46098 l_entity_code VARCHAR2(30);
46099 l_event_class_code VARCHAR2(30);
46100 l_ae_header_id NUMBER;
46101 l_event_type_code VARCHAR2(30);
46102 l_line_definition_code VARCHAR2(30);
46103 l_line_definition_owner_code VARCHAR2(1);
46104 --
46105 -- adr variables
46106 l_segment VARCHAR2(30);
46107 l_ccid NUMBER;
46108 l_adr_transaction_coa_id NUMBER;
46109 l_adr_accounting_coa_id NUMBER;
46110 l_adr_flexfield_segment_code VARCHAR2(30);
46111 l_adr_flex_value_set_id NUMBER;
46112 l_adr_value_type_code VARCHAR2(30);
46113 l_adr_value_combination_id NUMBER;
46114 l_adr_value_segment_code VARCHAR2(30);
46115
46116 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
46117 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
46118 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
46119 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
46120
46121 -- 4262811 Variables ------------------------------------------------------------------------------------------
46122 l_entered_amt_idx NUMBER;
46123 l_accted_amt_idx NUMBER;
46124 l_acc_rev_flag VARCHAR2(1);
46125 l_accrual_line_num NUMBER;
46126 l_tmp_amt NUMBER;
46127 l_acc_rev_natural_side_code VARCHAR2(1);
46128
46129 l_num_entries NUMBER;
46130 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
46131 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
46132 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
46133 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
46134 l_recog_line_1 NUMBER;
46135 l_recog_line_2 NUMBER;
46136
46137 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
46138 l_bflow_applied_to_amt NUMBER; -- 5132302
46139 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
46140
46141 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46142
46143 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
46144 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
46145
46146 ---------------------------------------------------------------------------------------------------------------
46147
46148
46149 --
46150 -- bulk performance
46151 --
46152 l_balance_type_code VARCHAR2(1);
46153 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
46154 l_log_module VARCHAR2(240);
46155
46156 --
46157 -- Upgrade strategy
46158 --
46159 l_actual_upg_option VARCHAR2(1);
46160 l_enc_upg_option VARCHAR2(1);
46161
46162 --
46163 BEGIN
46164 --
46165 IF g_log_enabled THEN
46166 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
46167 END IF;
46168 --
46169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46170
46171 trace
46172 (p_msg => 'BEGIN of AcctLineType_116'
46173 ,p_level => C_LEVEL_PROCEDURE
46174 ,p_module => l_log_module);
46175
46176 END IF;
46177 --
46178 l_component_type := 'AMB_JLT';
46179 l_component_code := 'FRT';
46180 l_component_type_code := 'S';
46181 l_component_appl_id := 555;
46182 l_amb_context_code := 'DEFAULT';
46183 l_entity_code := 'INVENTORY';
46184 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
46185 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
46186 l_line_definition_owner_code := 'S';
46187 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
46188 --
46189 l_balance_type_code := 'A';
46190 l_segment := NULL;
46191 l_ccid := NULL;
46192 l_adr_transaction_coa_id := NULL;
46193 l_adr_accounting_coa_id := NULL;
46197 l_adr_value_combination_id := NULL;
46194 l_adr_flexfield_segment_code := NULL;
46195 l_adr_flex_value_set_id := NULL;
46196 l_adr_value_type_code := NULL;
46198 l_adr_value_segment_code := NULL;
46199
46200 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
46201 l_bflow_class_code := ''; -- 4219869 Business Flow
46202 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
46203 l_budgetary_control_flag := 'N';
46204
46205 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46206 l_bflow_applied_to_amt := NULL; -- 5132302
46207 l_entered_amt_idx := NULL; -- 4262811
46208 l_accted_amt_idx := NULL; -- 4262811
46209 l_acc_rev_flag := NULL; -- 4262811
46210 l_accrual_line_num := NULL; -- 4262811
46211 l_tmp_amt := NULL; -- 4262811
46212 --
46213
46214 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46215 l_balance_type_code <> 'B' THEN
46216 IF NVL(p_source_2,'
46217 ') = 'FRT'
46218 THEN
46219
46220 --
46221 XLA_AE_LINES_PKG.SetNewLine;
46222
46223 p_balance_type_code := l_balance_type_code;
46224 -- set the flag so later we will know whether the gain loss line needs to be created
46225
46226 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46227 p_actual_flag :='A';
46228 END IF;
46229
46230 --
46231 -- bulk performance
46232 --
46233 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46234 p_header_num => 0); -- 4262811
46235 --
46236 -- set accounting line options
46237 --
46238 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46239 p_natural_side_code => 'D'
46240 , p_gain_or_loss_flag => 'N'
46241 , p_gl_transfer_mode_code => 'D'
46242 , p_acct_entry_type_code => 'A'
46243 , p_switch_side_flag => 'Y'
46244 , p_merge_duplicate_code => 'W'
46245 );
46246 --
46247 l_acc_rev_natural_side_code := 'C'; -- 4262811
46248 --
46249 --
46250 -- set accounting line type info
46251 --
46252 xla_ae_lines_pkg.SetAcctLineType
46253 (p_component_type => l_component_type
46254 ,p_event_type_code => l_event_type_code
46255 ,p_line_definition_owner_code => l_line_definition_owner_code
46256 ,p_line_definition_code => l_line_definition_code
46257 ,p_accounting_line_code => l_component_code
46258 ,p_accounting_line_type_code => l_component_type_code
46259 ,p_accounting_line_appl_id => l_component_appl_id
46260 ,p_amb_context_code => l_amb_context_code
46261 ,p_entity_code => l_entity_code
46262 ,p_event_class_code => l_event_class_code);
46263 --
46264 -- set accounting class
46265 --
46266 xla_ae_lines_pkg.SetAcctClass(
46267 p_accounting_class_code => 'FRT'
46268 , p_ae_header_id => l_ae_header_id
46269 );
46270
46271 --
46272 -- set rounding class
46273 --
46274 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46275 'FRT';
46276
46277 --
46278 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46279 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46280 --
46281 -- bulk performance
46282 --
46283 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46284
46285 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46286 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46287
46288 -- 4955764
46289 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46290 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46291
46292 -- 4458381 Public Sector Enh
46293
46294 --
46295 -- set accounting attributes for the line type
46296 --
46297 l_entered_amt_idx := 3;
46298 l_accted_amt_idx := 8;
46299 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46300 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46301 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
46302 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46303 l_rec_acct_attrs.array_char_value(2) := p_source_6;
46304 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46305 l_rec_acct_attrs.array_num_value(3) := p_source_3;
46306 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46307 l_rec_acct_attrs.array_char_value(4) := p_source_7;
46308 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46309 l_rec_acct_attrs.array_date_value(5) := p_source_8;
46310 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46311 l_rec_acct_attrs.array_num_value(6) := p_source_9;
46312 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46313 l_rec_acct_attrs.array_char_value(7) := p_source_10;
46314 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46318 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46315 l_rec_acct_attrs.array_num_value(8) := p_source_11;
46316
46317 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46319
46320 ---------------------------------------------------------------------------------------------------------------
46321 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46322 ---------------------------------------------------------------------------------------------------------------
46323 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46324
46325 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46326 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46327
46328 IF xla_accounting_cache_pkg.GetValueChar
46329 (p_source_code => 'LEDGER_CATEGORY_CODE'
46330 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46331 AND l_bflow_method_code = 'PRIOR_ENTRY'
46332 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46333 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46334 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46335 )
46336 THEN
46337 xla_ae_lines_pkg.BflowUpgEntry
46338 (p_business_method_code => l_bflow_method_code
46339 ,p_business_class_code => l_bflow_class_code
46340 ,p_balance_type => l_balance_type_code);
46341 ELSE
46342 NULL;
46343 -- No business flow processing for business flow method of NONE.
46344 END IF;
46345
46346 --
46347 -- call analytical criteria
46348 --
46349
46350 --
46351 -- call description
46352 --
46353 -- No description or it is inherited.
46354 --
46355 -- call ADRs
46356 -- Bug 4922099
46357 --
46358 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46359 (NVL(l_actual_upg_option, 'N') = 'O') OR
46360 (NVL(l_enc_upg_option, 'N') = 'O')
46361 )
46362 THEN
46363 NULL;
46364 --
46365 --
46366
46367 l_ccid := AcctDerRule_13(
46368 p_application_id => p_application_id
46369 , p_ae_header_id => l_ae_header_id
46370 , p_source_1 => p_source_1
46371 , p_source_2 => p_source_2
46372 , x_transaction_coa_id => l_adr_transaction_coa_id
46373 , x_accounting_coa_id => l_adr_accounting_coa_id
46374 , x_value_type_code => l_adr_value_type_code
46375 , p_side => 'NA'
46376 );
46377
46378 xla_ae_lines_pkg.set_ccid(
46379 p_code_combination_id => l_ccid
46380 , p_value_type_code => l_adr_value_type_code
46381 , p_transaction_coa_id => l_adr_transaction_coa_id
46382 , p_accounting_coa_id => l_adr_accounting_coa_id
46383 , p_adr_code => 'FRT'
46384 , p_adr_type_code => 'S'
46385 , p_component_type => l_component_type
46386 , p_component_code => l_component_code
46387 , p_component_type_code => l_component_type_code
46388 , p_component_appl_id => l_component_appl_id
46389 , p_amb_context_code => l_amb_context_code
46390 , p_side => 'NA'
46391 );
46392
46393
46394 --
46395 --
46396 END IF;
46397 --
46398 -- Bug 4922099
46399 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46400 (NVL(l_enc_upg_option, 'N') = 'O')
46401 ) AND
46402 (l_bflow_method_code = 'PRIOR_ENTRY')
46403 )
46404 THEN
46405 IF
46406 --
46407 1 = 2
46408 --
46409 THEN
46410 xla_accounting_err_pkg.build_message
46411 (p_appli_s_name => 'XLA'
46412 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46413 ,p_token_1 => 'LINE_NUMBER'
46414 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
46415 ,p_token_2 => 'LINE_TYPE_NAME'
46416 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
46417 l_component_type
46418 ,l_component_code
46419 ,l_component_type_code
46420 ,l_component_appl_id
46421 ,l_amb_context_code
46422 ,l_entity_code
46423 ,l_event_class_code
46424 )
46425 ,p_token_3 => 'OWNER'
46429 )
46426 ,p_value_3 => xla_lookups_pkg.get_meaning(
46427 p_lookup_type => 'XLA_OWNER_TYPE'
46428 ,p_lookup_code => l_component_type_code
46430 ,p_token_4 => 'PRODUCT_NAME'
46431 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46432 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46433 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46434 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46435 ,p_ae_header_id => NULL
46436 );
46437
46438 IF (C_LEVEL_ERROR>= g_log_level) THEN
46439 trace
46440 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46441 ,p_level => C_LEVEL_ERROR
46442 ,p_module => l_log_module);
46443 END IF;
46444 END IF;
46445 END IF;
46446 --
46447 --
46448 ------------------------------------------------------------------------------------------------
46449 -- 4219869 Business Flow
46450 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46451 -- Prior Entry. Currently, the following code is always generated.
46452 ------------------------------------------------------------------------------------------------
46453 XLA_AE_LINES_PKG.ValidateCurrentLine;
46454
46455 ------------------------------------------------------------------------------------
46456 -- 4219869 Business Flow
46457 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46458 ------------------------------------------------------------------------------------
46459 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46460
46461 ----------------------------------------------------------------------------------
46462 -- 4219869 Business Flow
46463 -- Update journal entry status -- Need to generate this within IF <condition>
46464 ----------------------------------------------------------------------------------
46465 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46466 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46467 ,p_balance_type_code => l_balance_type_code
46468 );
46469
46470 -------------------------------------------------------------------------------------------
46471 -- 4262811 - Generate the Accrual Reversal lines
46472 -------------------------------------------------------------------------------------------
46473 BEGIN
46474 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46475 (g_array_event(p_event_id).array_value_num('header_index'));
46476 IF l_acc_rev_flag IS NULL THEN
46477 l_acc_rev_flag := 'N';
46478 END IF;
46479 EXCEPTION
46480 WHEN OTHERS THEN
46481 l_acc_rev_flag := 'N';
46482 END;
46483 --
46484 IF (l_acc_rev_flag = 'Y') THEN
46485
46486 -- 4645092 ------------------------------------------------------------------------------
46487 -- To allow MPA report to determine if it should generate report process
46488 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46489 ------------------------------------------------------------------------------------------
46490
46491 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46492 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46493 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
46494 -- call ADRs
46495 -- Bug 4922099
46496 --
46497 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46498 (NVL(l_actual_upg_option, 'N') = 'O') OR
46499 (NVL(l_enc_upg_option, 'N') = 'O')
46500 )
46501 THEN
46502 NULL;
46503 --
46504 --
46505
46506 l_ccid := AcctDerRule_13(
46507 p_application_id => p_application_id
46508 , p_ae_header_id => l_ae_header_id
46509 , p_source_1 => p_source_1
46510 , p_source_2 => p_source_2
46511 , x_transaction_coa_id => l_adr_transaction_coa_id
46512 , x_accounting_coa_id => l_adr_accounting_coa_id
46513 , x_value_type_code => l_adr_value_type_code
46514 , p_side => 'NA'
46515 );
46516
46517 xla_ae_lines_pkg.set_ccid(
46518 p_code_combination_id => l_ccid
46519 , p_value_type_code => l_adr_value_type_code
46520 , p_transaction_coa_id => l_adr_transaction_coa_id
46521 , p_accounting_coa_id => l_adr_accounting_coa_id
46522 , p_adr_code => 'FRT'
46523 , p_adr_type_code => 'S'
46524 , p_component_type => l_component_type
46525 , p_component_code => l_component_code
46526 , p_component_type_code => l_component_type_code
46527 , p_component_appl_id => l_component_appl_id
46531
46528 , p_amb_context_code => l_amb_context_code
46529 , p_side => 'NA'
46530 );
46532
46533 --
46534 --
46535 END IF;
46536
46537 --
46538 -- Update the line information that should be overwritten
46539 --
46540 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46541 p_header_num => 1);
46542 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
46543
46544 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46545
46546 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
46547 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46548 END IF;
46549
46550 --
46551 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46552 --
46553 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46554 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
46555 ELSE
46556 ---------------------------------------------------------------------------------------------------
46557 -- 4262811a Switch Sign
46558 ---------------------------------------------------------------------------------------------------
46559 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
46560 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46561 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46562 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46563 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46564 -- 5132302
46565 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46566 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46567
46568 END IF;
46569
46570 -- 4955764
46571 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46572 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46573
46574
46575 XLA_AE_LINES_PKG.ValidateCurrentLine;
46576 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46577
46578 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46579 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46580 ,p_balance_type_code => l_balance_type_code);
46581
46582 END IF;
46583
46584 -----------------------------------------------------------------------------------------
46585 -- 4262811 Multiperiod Accounting
46586 -----------------------------------------------------------------------------------------
46587 -- No MPA option is assigned.
46588
46589
46590 END IF;
46591 END IF;
46592 --
46593
46594 --
46595 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46596 trace
46597 (p_msg => 'END of AcctLineType_116'
46598 ,p_level => C_LEVEL_PROCEDURE
46599 ,p_module => l_log_module);
46600 END IF;
46601 --
46602 EXCEPTION
46603 WHEN xla_exceptions_pkg.application_exception THEN
46604 RAISE;
46605 WHEN OTHERS THEN
46606 xla_exceptions_pkg.raise_message
46607 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_116');
46608 END AcctLineType_116;
46609 --
46610
46611 ---------------------------------------
46612 --
46613 -- PRIVATE FUNCTION
46614 -- AcctLineType_117
46615 --
46616 ---------------------------------------
46617 PROCEDURE AcctLineType_117 (
46618 p_application_id IN NUMBER
46619 ,p_event_id IN NUMBER
46620 ,p_calculate_acctd_flag IN VARCHAR2
46621 ,p_calculate_g_l_flag IN VARCHAR2
46622 ,p_actual_flag IN OUT VARCHAR2
46623 ,p_balance_type_code OUT VARCHAR2
46624 ,p_gain_or_loss_ref OUT VARCHAR2
46625
46626 --Transaction Account
46627 , p_source_1 IN NUMBER
46628 --Journal Line Type
46629 , p_source_2 IN VARCHAR2
46630 --Entered Amount
46631 , p_source_3 IN NUMBER
46632 --First Distribution Identifier
46633 , p_source_5 IN NUMBER
46634 --Distribution Type
46635 , p_source_6 IN VARCHAR2
46636 --Currency Code
46637 , p_source_7 IN VARCHAR2
46638 --Currency Conversion Date
46639 , p_source_8 IN DATE
46640 --Currency Conversion Rate
46641 , p_source_9 IN NUMBER
46642 --Currency Conversion Type
46643 , p_source_10 IN VARCHAR2
46644 --Accounted Amount
46645 , p_source_11 IN NUMBER
46646 )
46647 IS
46648
46649 l_component_type VARCHAR2(80);
46650 l_component_code VARCHAR2(30);
46651 l_component_type_code VARCHAR2(1);
46652 l_component_appl_id INTEGER;
46653 l_amb_context_code VARCHAR2(30);
46654 l_entity_code VARCHAR2(30);
46658 l_line_definition_code VARCHAR2(30);
46655 l_event_class_code VARCHAR2(30);
46656 l_ae_header_id NUMBER;
46657 l_event_type_code VARCHAR2(30);
46659 l_line_definition_owner_code VARCHAR2(1);
46660 --
46661 -- adr variables
46662 l_segment VARCHAR2(30);
46663 l_ccid NUMBER;
46664 l_adr_transaction_coa_id NUMBER;
46665 l_adr_accounting_coa_id NUMBER;
46666 l_adr_flexfield_segment_code VARCHAR2(30);
46667 l_adr_flex_value_set_id NUMBER;
46668 l_adr_value_type_code VARCHAR2(30);
46669 l_adr_value_combination_id NUMBER;
46670 l_adr_value_segment_code VARCHAR2(30);
46671
46672 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
46673 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
46674 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
46675 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
46676
46677 -- 4262811 Variables ------------------------------------------------------------------------------------------
46678 l_entered_amt_idx NUMBER;
46679 l_accted_amt_idx NUMBER;
46680 l_acc_rev_flag VARCHAR2(1);
46681 l_accrual_line_num NUMBER;
46682 l_tmp_amt NUMBER;
46683 l_acc_rev_natural_side_code VARCHAR2(1);
46684
46685 l_num_entries NUMBER;
46686 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
46687 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
46688 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
46689 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
46690 l_recog_line_1 NUMBER;
46691 l_recog_line_2 NUMBER;
46692
46693 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
46694 l_bflow_applied_to_amt NUMBER; -- 5132302
46695 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
46696
46697 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46698
46699 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
46700 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
46701
46702 ---------------------------------------------------------------------------------------------------------------
46703
46704
46705 --
46706 -- bulk performance
46707 --
46708 l_balance_type_code VARCHAR2(1);
46709 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
46710 l_log_module VARCHAR2(240);
46711
46712 --
46713 -- Upgrade strategy
46714 --
46715 l_actual_upg_option VARCHAR2(1);
46716 l_enc_upg_option VARCHAR2(1);
46717
46718 --
46719 BEGIN
46720 --
46721 IF g_log_enabled THEN
46722 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
46723 END IF;
46724 --
46725 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46726
46727 trace
46728 (p_msg => 'BEGIN of AcctLineType_117'
46729 ,p_level => C_LEVEL_PROCEDURE
46730 ,p_module => l_log_module);
46731
46732 END IF;
46733 --
46734 l_component_type := 'AMB_JLT';
46735 l_component_code := 'FRT';
46736 l_component_type_code := 'S';
46737 l_component_appl_id := 555;
46738 l_amb_context_code := 'DEFAULT';
46739 l_entity_code := 'INVENTORY';
46740 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
46741 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_TP';
46742 l_line_definition_owner_code := 'S';
46743 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_TP';
46744 --
46745 l_balance_type_code := 'A';
46746 l_segment := NULL;
46747 l_ccid := NULL;
46748 l_adr_transaction_coa_id := NULL;
46749 l_adr_accounting_coa_id := NULL;
46750 l_adr_flexfield_segment_code := NULL;
46751 l_adr_flex_value_set_id := NULL;
46752 l_adr_value_type_code := NULL;
46753 l_adr_value_combination_id := NULL;
46754 l_adr_value_segment_code := NULL;
46755
46756 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
46757 l_bflow_class_code := ''; -- 4219869 Business Flow
46758 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
46759 l_budgetary_control_flag := 'N';
46760
46761 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46762 l_bflow_applied_to_amt := NULL; -- 5132302
46763 l_entered_amt_idx := NULL; -- 4262811
46764 l_accted_amt_idx := NULL; -- 4262811
46765 l_acc_rev_flag := NULL; -- 4262811
46766 l_accrual_line_num := NULL; -- 4262811
46767 l_tmp_amt := NULL; -- 4262811
46768 --
46769
46770 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46771 l_balance_type_code <> 'B' THEN
46772 IF NVL(p_source_2,'
46773 ') = 'FRT'
46774 THEN
46775
46776 --
46777 XLA_AE_LINES_PKG.SetNewLine;
46778
46779 p_balance_type_code := l_balance_type_code;
46780 -- set the flag so later we will know whether the gain loss line needs to be created
46781
46785
46782 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46783 p_actual_flag :='A';
46784 END IF;
46786 --
46787 -- bulk performance
46788 --
46789 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46790 p_header_num => 0); -- 4262811
46791 --
46792 -- set accounting line options
46793 --
46794 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46795 p_natural_side_code => 'D'
46796 , p_gain_or_loss_flag => 'N'
46797 , p_gl_transfer_mode_code => 'D'
46798 , p_acct_entry_type_code => 'A'
46799 , p_switch_side_flag => 'Y'
46800 , p_merge_duplicate_code => 'W'
46801 );
46802 --
46803 l_acc_rev_natural_side_code := 'C'; -- 4262811
46804 --
46805 --
46806 -- set accounting line type info
46807 --
46808 xla_ae_lines_pkg.SetAcctLineType
46809 (p_component_type => l_component_type
46810 ,p_event_type_code => l_event_type_code
46811 ,p_line_definition_owner_code => l_line_definition_owner_code
46812 ,p_line_definition_code => l_line_definition_code
46813 ,p_accounting_line_code => l_component_code
46814 ,p_accounting_line_type_code => l_component_type_code
46815 ,p_accounting_line_appl_id => l_component_appl_id
46816 ,p_amb_context_code => l_amb_context_code
46817 ,p_entity_code => l_entity_code
46818 ,p_event_class_code => l_event_class_code);
46819 --
46820 -- set accounting class
46821 --
46822 xla_ae_lines_pkg.SetAcctClass(
46823 p_accounting_class_code => 'FRT'
46824 , p_ae_header_id => l_ae_header_id
46825 );
46826
46827 --
46828 -- set rounding class
46829 --
46830 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46831 'FRT';
46832
46833 --
46834 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46835 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46836 --
46837 -- bulk performance
46838 --
46839 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46840
46841 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46842 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46843
46844 -- 4955764
46845 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46846 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46847
46848 -- 4458381 Public Sector Enh
46849
46850 --
46851 -- set accounting attributes for the line type
46852 --
46853 l_entered_amt_idx := 3;
46854 l_accted_amt_idx := 8;
46855 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46856 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46857 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
46858 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46859 l_rec_acct_attrs.array_char_value(2) := p_source_6;
46860 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46861 l_rec_acct_attrs.array_num_value(3) := p_source_3;
46862 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46863 l_rec_acct_attrs.array_char_value(4) := p_source_7;
46864 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46865 l_rec_acct_attrs.array_date_value(5) := p_source_8;
46866 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46867 l_rec_acct_attrs.array_num_value(6) := p_source_9;
46868 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46869 l_rec_acct_attrs.array_char_value(7) := p_source_10;
46870 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46871 l_rec_acct_attrs.array_num_value(8) := p_source_11;
46872
46873 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46874 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46875
46876 ---------------------------------------------------------------------------------------------------------------
46877 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46878 ---------------------------------------------------------------------------------------------------------------
46879 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46880
46881 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46882 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46883
46884 IF xla_accounting_cache_pkg.GetValueChar
46885 (p_source_code => 'LEDGER_CATEGORY_CODE'
46886 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46887 AND l_bflow_method_code = 'PRIOR_ENTRY'
46888 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46889 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46890 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46894 (p_business_method_code => l_bflow_method_code
46891 )
46892 THEN
46893 xla_ae_lines_pkg.BflowUpgEntry
46895 ,p_business_class_code => l_bflow_class_code
46896 ,p_balance_type => l_balance_type_code);
46897 ELSE
46898 NULL;
46899 -- No business flow processing for business flow method of NONE.
46900 END IF;
46901
46902 --
46903 -- call analytical criteria
46904 --
46905
46906 --
46907 -- call description
46908 --
46909 -- No description or it is inherited.
46910 --
46911 -- call ADRs
46912 -- Bug 4922099
46913 --
46914 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46915 (NVL(l_actual_upg_option, 'N') = 'O') OR
46916 (NVL(l_enc_upg_option, 'N') = 'O')
46917 )
46918 THEN
46919 NULL;
46920 --
46921 --
46922
46923 l_ccid := AcctDerRule_13(
46924 p_application_id => p_application_id
46925 , p_ae_header_id => l_ae_header_id
46926 , p_source_1 => p_source_1
46927 , p_source_2 => p_source_2
46928 , x_transaction_coa_id => l_adr_transaction_coa_id
46929 , x_accounting_coa_id => l_adr_accounting_coa_id
46930 , x_value_type_code => l_adr_value_type_code
46931 , p_side => 'NA'
46932 );
46933
46934 xla_ae_lines_pkg.set_ccid(
46935 p_code_combination_id => l_ccid
46936 , p_value_type_code => l_adr_value_type_code
46937 , p_transaction_coa_id => l_adr_transaction_coa_id
46938 , p_accounting_coa_id => l_adr_accounting_coa_id
46939 , p_adr_code => 'FRT'
46940 , p_adr_type_code => 'S'
46941 , p_component_type => l_component_type
46942 , p_component_code => l_component_code
46943 , p_component_type_code => l_component_type_code
46944 , p_component_appl_id => l_component_appl_id
46945 , p_amb_context_code => l_amb_context_code
46946 , p_side => 'NA'
46947 );
46948
46949
46950 --
46951 --
46952 END IF;
46953 --
46954 -- Bug 4922099
46955 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46956 (NVL(l_enc_upg_option, 'N') = 'O')
46957 ) AND
46958 (l_bflow_method_code = 'PRIOR_ENTRY')
46959 )
46960 THEN
46961 IF
46962 --
46963 1 = 2
46964 --
46965 THEN
46966 xla_accounting_err_pkg.build_message
46967 (p_appli_s_name => 'XLA'
46968 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46969 ,p_token_1 => 'LINE_NUMBER'
46970 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
46971 ,p_token_2 => 'LINE_TYPE_NAME'
46972 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
46973 l_component_type
46974 ,l_component_code
46975 ,l_component_type_code
46976 ,l_component_appl_id
46977 ,l_amb_context_code
46978 ,l_entity_code
46979 ,l_event_class_code
46980 )
46981 ,p_token_3 => 'OWNER'
46982 ,p_value_3 => xla_lookups_pkg.get_meaning(
46983 p_lookup_type => 'XLA_OWNER_TYPE'
46984 ,p_lookup_code => l_component_type_code
46985 )
46986 ,p_token_4 => 'PRODUCT_NAME'
46987 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46988 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46989 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46990 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46991 ,p_ae_header_id => NULL
46992 );
46993
46994 IF (C_LEVEL_ERROR>= g_log_level) THEN
46995 trace
46996 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46997 ,p_level => C_LEVEL_ERROR
46998 ,p_module => l_log_module);
46999 END IF;
47000 END IF;
47001 END IF;
47002 --
47003 --
47004 ------------------------------------------------------------------------------------------------
47008 ------------------------------------------------------------------------------------------------
47005 -- 4219869 Business Flow
47006 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47007 -- Prior Entry. Currently, the following code is always generated.
47009 XLA_AE_LINES_PKG.ValidateCurrentLine;
47010
47011 ------------------------------------------------------------------------------------
47012 -- 4219869 Business Flow
47013 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47014 ------------------------------------------------------------------------------------
47015 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47016
47017 ----------------------------------------------------------------------------------
47018 -- 4219869 Business Flow
47019 -- Update journal entry status -- Need to generate this within IF <condition>
47020 ----------------------------------------------------------------------------------
47021 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47022 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47023 ,p_balance_type_code => l_balance_type_code
47024 );
47025
47026 -------------------------------------------------------------------------------------------
47027 -- 4262811 - Generate the Accrual Reversal lines
47028 -------------------------------------------------------------------------------------------
47029 BEGIN
47030 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47031 (g_array_event(p_event_id).array_value_num('header_index'));
47032 IF l_acc_rev_flag IS NULL THEN
47033 l_acc_rev_flag := 'N';
47034 END IF;
47035 EXCEPTION
47036 WHEN OTHERS THEN
47037 l_acc_rev_flag := 'N';
47038 END;
47039 --
47040 IF (l_acc_rev_flag = 'Y') THEN
47041
47042 -- 4645092 ------------------------------------------------------------------------------
47043 -- To allow MPA report to determine if it should generate report process
47044 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47045 ------------------------------------------------------------------------------------------
47046
47047 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47048 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47049 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
47050 -- call ADRs
47051 -- Bug 4922099
47052 --
47053 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47054 (NVL(l_actual_upg_option, 'N') = 'O') OR
47055 (NVL(l_enc_upg_option, 'N') = 'O')
47056 )
47057 THEN
47058 NULL;
47059 --
47060 --
47061
47062 l_ccid := AcctDerRule_13(
47063 p_application_id => p_application_id
47064 , p_ae_header_id => l_ae_header_id
47065 , p_source_1 => p_source_1
47066 , p_source_2 => p_source_2
47067 , x_transaction_coa_id => l_adr_transaction_coa_id
47068 , x_accounting_coa_id => l_adr_accounting_coa_id
47069 , x_value_type_code => l_adr_value_type_code
47070 , p_side => 'NA'
47071 );
47072
47073 xla_ae_lines_pkg.set_ccid(
47074 p_code_combination_id => l_ccid
47075 , p_value_type_code => l_adr_value_type_code
47076 , p_transaction_coa_id => l_adr_transaction_coa_id
47077 , p_accounting_coa_id => l_adr_accounting_coa_id
47078 , p_adr_code => 'FRT'
47079 , p_adr_type_code => 'S'
47080 , p_component_type => l_component_type
47081 , p_component_code => l_component_code
47082 , p_component_type_code => l_component_type_code
47083 , p_component_appl_id => l_component_appl_id
47084 , p_amb_context_code => l_amb_context_code
47085 , p_side => 'NA'
47086 );
47087
47088
47089 --
47090 --
47091 END IF;
47092
47093 --
47094 -- Update the line information that should be overwritten
47095 --
47096 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47097 p_header_num => 1);
47098 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
47099
47100 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47101
47102 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
47103 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47104 END IF;
47105
47106 --
47107 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47108 --
47109 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47110 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
47111 ELSE
47112 ---------------------------------------------------------------------------------------------------
47113 -- 4262811a Switch Sign
47114 ---------------------------------------------------------------------------------------------------
47118 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47115 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
47116 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47117 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47119 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47120 -- 5132302
47121 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47122 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47123
47124 END IF;
47125
47126 -- 4955764
47127 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47128 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47129
47130
47131 XLA_AE_LINES_PKG.ValidateCurrentLine;
47132 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47133
47134 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47135 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47136 ,p_balance_type_code => l_balance_type_code);
47137
47138 END IF;
47139
47140 -----------------------------------------------------------------------------------------
47141 -- 4262811 Multiperiod Accounting
47142 -----------------------------------------------------------------------------------------
47143 -- No MPA option is assigned.
47144
47145
47146 END IF;
47147 END IF;
47148 --
47149
47150 --
47151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47152 trace
47153 (p_msg => 'END of AcctLineType_117'
47154 ,p_level => C_LEVEL_PROCEDURE
47155 ,p_module => l_log_module);
47156 END IF;
47157 --
47158 EXCEPTION
47159 WHEN xla_exceptions_pkg.application_exception THEN
47160 RAISE;
47161 WHEN OTHERS THEN
47162 xla_exceptions_pkg.raise_message
47163 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_117');
47164 END AcctLineType_117;
47165 --
47166
47167 ---------------------------------------
47168 --
47169 -- PRIVATE FUNCTION
47170 -- AcctLineType_118
47171 --
47172 ---------------------------------------
47173 PROCEDURE AcctLineType_118 (
47174 p_application_id IN NUMBER
47175 ,p_event_id IN NUMBER
47176 ,p_calculate_acctd_flag IN VARCHAR2
47177 ,p_calculate_g_l_flag IN VARCHAR2
47178 ,p_actual_flag IN OUT VARCHAR2
47179 ,p_balance_type_code OUT VARCHAR2
47180 ,p_gain_or_loss_ref OUT VARCHAR2
47181
47182 --Transaction Account
47183 , p_source_1 IN NUMBER
47184 --Journal Line Type
47185 , p_source_2 IN VARCHAR2
47186 --Entered Amount
47187 , p_source_3 IN NUMBER
47188 --First Distribution Identifier
47189 , p_source_5 IN NUMBER
47190 --Distribution Type
47191 , p_source_6 IN VARCHAR2
47192 --Currency Code
47193 , p_source_7 IN VARCHAR2
47194 --Currency Conversion Date
47195 , p_source_8 IN DATE
47196 --Currency Conversion Rate
47197 , p_source_9 IN NUMBER
47198 --Currency Conversion Type
47199 , p_source_10 IN VARCHAR2
47200 --Accounted Amount
47201 , p_source_11 IN NUMBER
47202 )
47203 IS
47204
47205 l_component_type VARCHAR2(80);
47206 l_component_code VARCHAR2(30);
47207 l_component_type_code VARCHAR2(1);
47208 l_component_appl_id INTEGER;
47209 l_amb_context_code VARCHAR2(30);
47210 l_entity_code VARCHAR2(30);
47211 l_event_class_code VARCHAR2(30);
47212 l_ae_header_id NUMBER;
47213 l_event_type_code VARCHAR2(30);
47214 l_line_definition_code VARCHAR2(30);
47215 l_line_definition_owner_code VARCHAR2(1);
47216 --
47217 -- adr variables
47218 l_segment VARCHAR2(30);
47219 l_ccid NUMBER;
47220 l_adr_transaction_coa_id NUMBER;
47221 l_adr_accounting_coa_id NUMBER;
47222 l_adr_flexfield_segment_code VARCHAR2(30);
47223 l_adr_flex_value_set_id NUMBER;
47224 l_adr_value_type_code VARCHAR2(30);
47225 l_adr_value_combination_id NUMBER;
47226 l_adr_value_segment_code VARCHAR2(30);
47227
47228 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
47229 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
47230 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
47231 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
47232
47233 -- 4262811 Variables ------------------------------------------------------------------------------------------
47234 l_entered_amt_idx NUMBER;
47235 l_accted_amt_idx NUMBER;
47236 l_acc_rev_flag VARCHAR2(1);
47237 l_accrual_line_num NUMBER;
47238 l_tmp_amt NUMBER;
47239 l_acc_rev_natural_side_code VARCHAR2(1);
47240
47241 l_num_entries NUMBER;
47242 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
47246 l_recog_line_1 NUMBER;
47243 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
47244 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
47245 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
47247 l_recog_line_2 NUMBER;
47248
47249 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
47250 l_bflow_applied_to_amt NUMBER; -- 5132302
47251 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
47252
47253 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47254
47255 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
47256 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
47257
47258 ---------------------------------------------------------------------------------------------------------------
47259
47260
47261 --
47262 -- bulk performance
47263 --
47264 l_balance_type_code VARCHAR2(1);
47265 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
47266 l_log_module VARCHAR2(240);
47267
47268 --
47269 -- Upgrade strategy
47270 --
47271 l_actual_upg_option VARCHAR2(1);
47272 l_enc_upg_option VARCHAR2(1);
47273
47274 --
47275 BEGIN
47276 --
47277 IF g_log_enabled THEN
47278 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
47279 END IF;
47280 --
47281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47282
47283 trace
47284 (p_msg => 'BEGIN of AcctLineType_118'
47285 ,p_level => C_LEVEL_PROCEDURE
47286 ,p_module => l_log_module);
47287
47288 END IF;
47289 --
47290 l_component_type := 'AMB_JLT';
47291 l_component_code := 'ICACC';
47292 l_component_type_code := 'S';
47293 l_component_appl_id := 555;
47294 l_amb_context_code := 'DEFAULT';
47295 l_entity_code := 'PURCHASING';
47296 l_event_class_code := 'RECEIVE';
47297 l_event_type_code := 'ADJUST_RECEIVE';
47298 l_line_definition_owner_code := 'S';
47299 l_line_definition_code := 'ADJUST_RECEIVE';
47300 --
47301 l_balance_type_code := 'A';
47302 l_segment := NULL;
47303 l_ccid := NULL;
47304 l_adr_transaction_coa_id := NULL;
47305 l_adr_accounting_coa_id := NULL;
47306 l_adr_flexfield_segment_code := NULL;
47307 l_adr_flex_value_set_id := NULL;
47308 l_adr_value_type_code := NULL;
47309 l_adr_value_combination_id := NULL;
47310 l_adr_value_segment_code := NULL;
47311
47312 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
47313 l_bflow_class_code := ''; -- 4219869 Business Flow
47314 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
47315 l_budgetary_control_flag := 'N';
47316
47317 l_bflow_applied_to_amt_idx := NULL; -- 5132302
47318 l_bflow_applied_to_amt := NULL; -- 5132302
47319 l_entered_amt_idx := NULL; -- 4262811
47320 l_accted_amt_idx := NULL; -- 4262811
47321 l_acc_rev_flag := NULL; -- 4262811
47322 l_accrual_line_num := NULL; -- 4262811
47323 l_tmp_amt := NULL; -- 4262811
47324 --
47325
47326 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47327 l_balance_type_code <> 'B' THEN
47328 IF NVL(p_source_2,'
47329 ') = 'ICACC'
47330 THEN
47331
47332 --
47333 XLA_AE_LINES_PKG.SetNewLine;
47334
47335 p_balance_type_code := l_balance_type_code;
47336 -- set the flag so later we will know whether the gain loss line needs to be created
47337
47338 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47339 p_actual_flag :='A';
47340 END IF;
47341
47342 --
47343 -- bulk performance
47344 --
47345 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47346 p_header_num => 0); -- 4262811
47347 --
47348 -- set accounting line options
47349 --
47350 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47351 p_natural_side_code => 'D'
47352 , p_gain_or_loss_flag => 'N'
47353 , p_gl_transfer_mode_code => 'D'
47354 , p_acct_entry_type_code => 'A'
47355 , p_switch_side_flag => 'Y'
47356 , p_merge_duplicate_code => 'W'
47357 );
47358 --
47359 l_acc_rev_natural_side_code := 'C'; -- 4262811
47360 --
47361 --
47362 -- set accounting line type info
47363 --
47364 xla_ae_lines_pkg.SetAcctLineType
47365 (p_component_type => l_component_type
47366 ,p_event_type_code => l_event_type_code
47367 ,p_line_definition_owner_code => l_line_definition_owner_code
47368 ,p_line_definition_code => l_line_definition_code
47369 ,p_accounting_line_code => l_component_code
47370 ,p_accounting_line_type_code => l_component_type_code
47371 ,p_accounting_line_appl_id => l_component_appl_id
47372 ,p_amb_context_code => l_amb_context_code
47373 ,p_entity_code => l_entity_code
47374 ,p_event_class_code => l_event_class_code);
47375 --
47379 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
47376 -- set accounting class
47377 --
47378 xla_ae_lines_pkg.SetAcctClass(
47380 , p_ae_header_id => l_ae_header_id
47381 );
47382
47383 --
47384 -- set rounding class
47385 --
47386 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47387 'INTERCOMPANY_ACCRUAL';
47388
47389 --
47390 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47391 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47392 --
47393 -- bulk performance
47394 --
47395 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47396
47397 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47398 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47399
47400 -- 4955764
47401 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47402 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47403
47404 -- 4458381 Public Sector Enh
47405
47406 --
47407 -- set accounting attributes for the line type
47408 --
47409 l_entered_amt_idx := 3;
47410 l_accted_amt_idx := 8;
47411 l_bflow_applied_to_amt_idx := NULL; -- 5132302
47412 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47413 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
47414 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47415 l_rec_acct_attrs.array_char_value(2) := p_source_6;
47416 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47417 l_rec_acct_attrs.array_num_value(3) := p_source_3;
47418 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47419 l_rec_acct_attrs.array_char_value(4) := p_source_7;
47420 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47421 l_rec_acct_attrs.array_date_value(5) := p_source_8;
47422 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47423 l_rec_acct_attrs.array_num_value(6) := p_source_9;
47424 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47425 l_rec_acct_attrs.array_char_value(7) := p_source_10;
47426 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47427 l_rec_acct_attrs.array_num_value(8) := p_source_11;
47428
47429 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47430 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47431
47432 ---------------------------------------------------------------------------------------------------------------
47433 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47434 ---------------------------------------------------------------------------------------------------------------
47435 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47436
47437 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47438 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47439
47440 IF xla_accounting_cache_pkg.GetValueChar
47441 (p_source_code => 'LEDGER_CATEGORY_CODE'
47442 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47443 AND l_bflow_method_code = 'PRIOR_ENTRY'
47444 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47445 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47446 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47447 )
47448 THEN
47449 xla_ae_lines_pkg.BflowUpgEntry
47450 (p_business_method_code => l_bflow_method_code
47451 ,p_business_class_code => l_bflow_class_code
47452 ,p_balance_type => l_balance_type_code);
47453 ELSE
47454 NULL;
47455 -- No business flow processing for business flow method of NONE.
47456 END IF;
47457
47458 --
47459 -- call analytical criteria
47460 --
47461
47462 --
47463 -- call description
47464 --
47465 -- No description or it is inherited.
47466 --
47467 -- call ADRs
47468 -- Bug 4922099
47469 --
47470 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47471 (NVL(l_actual_upg_option, 'N') = 'O') OR
47472 (NVL(l_enc_upg_option, 'N') = 'O')
47473 )
47474 THEN
47475 NULL;
47476 --
47477 --
47478
47479 l_ccid := AcctDerRule_14(
47480 p_application_id => p_application_id
47481 , p_ae_header_id => l_ae_header_id
47482 , p_source_1 => p_source_1
47483 , p_source_2 => p_source_2
47484 , x_transaction_coa_id => l_adr_transaction_coa_id
47485 , x_accounting_coa_id => l_adr_accounting_coa_id
47486 , x_value_type_code => l_adr_value_type_code
47487 , p_side => 'NA'
47488 );
47489
47490 xla_ae_lines_pkg.set_ccid(
47491 p_code_combination_id => l_ccid
47495 , p_adr_code => 'ICACC'
47492 , p_value_type_code => l_adr_value_type_code
47493 , p_transaction_coa_id => l_adr_transaction_coa_id
47494 , p_accounting_coa_id => l_adr_accounting_coa_id
47496 , p_adr_type_code => 'S'
47497 , p_component_type => l_component_type
47498 , p_component_code => l_component_code
47499 , p_component_type_code => l_component_type_code
47500 , p_component_appl_id => l_component_appl_id
47501 , p_amb_context_code => l_amb_context_code
47502 , p_side => 'NA'
47503 );
47504
47505
47506 --
47507 --
47508 END IF;
47509 --
47510 -- Bug 4922099
47511 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47512 (NVL(l_enc_upg_option, 'N') = 'O')
47513 ) AND
47514 (l_bflow_method_code = 'PRIOR_ENTRY')
47515 )
47516 THEN
47517 IF
47518 --
47519 1 = 2
47520 --
47521 THEN
47522 xla_accounting_err_pkg.build_message
47523 (p_appli_s_name => 'XLA'
47524 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47525 ,p_token_1 => 'LINE_NUMBER'
47526 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
47527 ,p_token_2 => 'LINE_TYPE_NAME'
47528 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
47529 l_component_type
47530 ,l_component_code
47531 ,l_component_type_code
47532 ,l_component_appl_id
47533 ,l_amb_context_code
47534 ,l_entity_code
47535 ,l_event_class_code
47536 )
47537 ,p_token_3 => 'OWNER'
47538 ,p_value_3 => xla_lookups_pkg.get_meaning(
47539 p_lookup_type => 'XLA_OWNER_TYPE'
47540 ,p_lookup_code => l_component_type_code
47541 )
47542 ,p_token_4 => 'PRODUCT_NAME'
47543 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47544 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47545 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47546 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47547 ,p_ae_header_id => NULL
47548 );
47549
47550 IF (C_LEVEL_ERROR>= g_log_level) THEN
47551 trace
47552 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47553 ,p_level => C_LEVEL_ERROR
47554 ,p_module => l_log_module);
47555 END IF;
47556 END IF;
47557 END IF;
47558 --
47559 --
47560 ------------------------------------------------------------------------------------------------
47561 -- 4219869 Business Flow
47562 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47563 -- Prior Entry. Currently, the following code is always generated.
47564 ------------------------------------------------------------------------------------------------
47565 XLA_AE_LINES_PKG.ValidateCurrentLine;
47566
47567 ------------------------------------------------------------------------------------
47568 -- 4219869 Business Flow
47569 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47570 ------------------------------------------------------------------------------------
47571 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47572
47573 ----------------------------------------------------------------------------------
47574 -- 4219869 Business Flow
47575 -- Update journal entry status -- Need to generate this within IF <condition>
47576 ----------------------------------------------------------------------------------
47577 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47578 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47579 ,p_balance_type_code => l_balance_type_code
47580 );
47581
47582 -------------------------------------------------------------------------------------------
47583 -- 4262811 - Generate the Accrual Reversal lines
47584 -------------------------------------------------------------------------------------------
47585 BEGIN
47589 l_acc_rev_flag := 'N';
47586 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47587 (g_array_event(p_event_id).array_value_num('header_index'));
47588 IF l_acc_rev_flag IS NULL THEN
47590 END IF;
47591 EXCEPTION
47592 WHEN OTHERS THEN
47593 l_acc_rev_flag := 'N';
47594 END;
47595 --
47596 IF (l_acc_rev_flag = 'Y') THEN
47597
47598 -- 4645092 ------------------------------------------------------------------------------
47599 -- To allow MPA report to determine if it should generate report process
47600 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47601 ------------------------------------------------------------------------------------------
47602
47603 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47604 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47605 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
47606 -- call ADRs
47607 -- Bug 4922099
47608 --
47609 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47610 (NVL(l_actual_upg_option, 'N') = 'O') OR
47611 (NVL(l_enc_upg_option, 'N') = 'O')
47612 )
47613 THEN
47614 NULL;
47615 --
47616 --
47617
47618 l_ccid := AcctDerRule_14(
47619 p_application_id => p_application_id
47620 , p_ae_header_id => l_ae_header_id
47621 , p_source_1 => p_source_1
47622 , p_source_2 => p_source_2
47623 , x_transaction_coa_id => l_adr_transaction_coa_id
47624 , x_accounting_coa_id => l_adr_accounting_coa_id
47625 , x_value_type_code => l_adr_value_type_code
47626 , p_side => 'NA'
47627 );
47628
47629 xla_ae_lines_pkg.set_ccid(
47630 p_code_combination_id => l_ccid
47631 , p_value_type_code => l_adr_value_type_code
47632 , p_transaction_coa_id => l_adr_transaction_coa_id
47633 , p_accounting_coa_id => l_adr_accounting_coa_id
47634 , p_adr_code => 'ICACC'
47635 , p_adr_type_code => 'S'
47636 , p_component_type => l_component_type
47637 , p_component_code => l_component_code
47638 , p_component_type_code => l_component_type_code
47639 , p_component_appl_id => l_component_appl_id
47640 , p_amb_context_code => l_amb_context_code
47641 , p_side => 'NA'
47642 );
47643
47644
47645 --
47646 --
47647 END IF;
47648
47649 --
47650 -- Update the line information that should be overwritten
47651 --
47652 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47653 p_header_num => 1);
47654 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
47655
47656 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47657
47658 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
47659 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47660 END IF;
47661
47662 --
47663 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47664 --
47665 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47666 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
47667 ELSE
47668 ---------------------------------------------------------------------------------------------------
47669 -- 4262811a Switch Sign
47670 ---------------------------------------------------------------------------------------------------
47671 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
47672 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47673 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47674 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47675 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47676 -- 5132302
47677 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47678 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47679
47680 END IF;
47681
47682 -- 4955764
47683 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47684 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47685
47686
47687 XLA_AE_LINES_PKG.ValidateCurrentLine;
47688 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47689
47690 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47691 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47692 ,p_balance_type_code => l_balance_type_code);
47693
47694 END IF;
47695
47699 -- No MPA option is assigned.
47696 -----------------------------------------------------------------------------------------
47697 -- 4262811 Multiperiod Accounting
47698 -----------------------------------------------------------------------------------------
47700
47701
47702 END IF;
47703 END IF;
47704 --
47705
47706 --
47707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47708 trace
47709 (p_msg => 'END of AcctLineType_118'
47710 ,p_level => C_LEVEL_PROCEDURE
47711 ,p_module => l_log_module);
47712 END IF;
47713 --
47714 EXCEPTION
47715 WHEN xla_exceptions_pkg.application_exception THEN
47716 RAISE;
47717 WHEN OTHERS THEN
47718 xla_exceptions_pkg.raise_message
47719 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_118');
47720 END AcctLineType_118;
47721 --
47722
47723 ---------------------------------------
47724 --
47725 -- PRIVATE FUNCTION
47726 -- AcctLineType_119
47727 --
47728 ---------------------------------------
47729 PROCEDURE AcctLineType_119 (
47730 p_application_id IN NUMBER
47731 ,p_event_id IN NUMBER
47732 ,p_calculate_acctd_flag IN VARCHAR2
47733 ,p_calculate_g_l_flag IN VARCHAR2
47734 ,p_actual_flag IN OUT VARCHAR2
47735 ,p_balance_type_code OUT VARCHAR2
47736 ,p_gain_or_loss_ref OUT VARCHAR2
47737
47738 --Transaction Account
47739 , p_source_1 IN NUMBER
47740 --Journal Line Type
47741 , p_source_2 IN VARCHAR2
47742 --Entered Amount
47743 , p_source_3 IN NUMBER
47744 --First Distribution Identifier
47745 , p_source_5 IN NUMBER
47746 --Distribution Type
47747 , p_source_6 IN VARCHAR2
47748 --Currency Code
47749 , p_source_7 IN VARCHAR2
47750 --Currency Conversion Date
47751 , p_source_8 IN DATE
47752 --Currency Conversion Rate
47753 , p_source_9 IN NUMBER
47754 --Currency Conversion Type
47755 , p_source_10 IN VARCHAR2
47756 --Accounted Amount
47757 , p_source_11 IN NUMBER
47758 )
47759 IS
47760
47761 l_component_type VARCHAR2(80);
47762 l_component_code VARCHAR2(30);
47763 l_component_type_code VARCHAR2(1);
47764 l_component_appl_id INTEGER;
47765 l_amb_context_code VARCHAR2(30);
47766 l_entity_code VARCHAR2(30);
47767 l_event_class_code VARCHAR2(30);
47768 l_ae_header_id NUMBER;
47769 l_event_type_code VARCHAR2(30);
47770 l_line_definition_code VARCHAR2(30);
47771 l_line_definition_owner_code VARCHAR2(1);
47772 --
47773 -- adr variables
47774 l_segment VARCHAR2(30);
47775 l_ccid NUMBER;
47776 l_adr_transaction_coa_id NUMBER;
47777 l_adr_accounting_coa_id NUMBER;
47778 l_adr_flexfield_segment_code VARCHAR2(30);
47779 l_adr_flex_value_set_id NUMBER;
47780 l_adr_value_type_code VARCHAR2(30);
47781 l_adr_value_combination_id NUMBER;
47782 l_adr_value_segment_code VARCHAR2(30);
47783
47784 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
47785 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
47786 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
47787 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
47788
47789 -- 4262811 Variables ------------------------------------------------------------------------------------------
47790 l_entered_amt_idx NUMBER;
47791 l_accted_amt_idx NUMBER;
47792 l_acc_rev_flag VARCHAR2(1);
47793 l_accrual_line_num NUMBER;
47794 l_tmp_amt NUMBER;
47795 l_acc_rev_natural_side_code VARCHAR2(1);
47796
47797 l_num_entries NUMBER;
47798 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
47799 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
47800 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
47801 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
47802 l_recog_line_1 NUMBER;
47803 l_recog_line_2 NUMBER;
47804
47805 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
47806 l_bflow_applied_to_amt NUMBER; -- 5132302
47807 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
47808
47809 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47810
47811 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
47812 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
47813
47814 ---------------------------------------------------------------------------------------------------------------
47815
47816
47817 --
47818 -- bulk performance
47819 --
47820 l_balance_type_code VARCHAR2(1);
47821 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
47822 l_log_module VARCHAR2(240);
47823
47824 --
47825 -- Upgrade strategy
47826 --
47827 l_actual_upg_option VARCHAR2(1);
47828 l_enc_upg_option VARCHAR2(1);
47829
47830 --
47831 BEGIN
47832 --
47833 IF g_log_enabled THEN
47837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47834 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
47835 END IF;
47836 --
47838
47839 trace
47840 (p_msg => 'BEGIN of AcctLineType_119'
47841 ,p_level => C_LEVEL_PROCEDURE
47842 ,p_module => l_log_module);
47843
47844 END IF;
47845 --
47846 l_component_type := 'AMB_JLT';
47847 l_component_code := 'ICACC';
47848 l_component_type_code := 'S';
47849 l_component_appl_id := 555;
47850 l_amb_context_code := 'DEFAULT';
47851 l_entity_code := 'INVENTORY';
47852 l_event_class_code := 'LOG_INTERCOMPANY';
47853 l_event_type_code := 'LOG_IC_SHIPMENT_RCPT';
47854 l_line_definition_owner_code := 'S';
47855 l_line_definition_code := 'LOG_IC_SHIPMENT_RCPT';
47856 --
47857 l_balance_type_code := 'A';
47858 l_segment := NULL;
47859 l_ccid := NULL;
47860 l_adr_transaction_coa_id := NULL;
47861 l_adr_accounting_coa_id := NULL;
47862 l_adr_flexfield_segment_code := NULL;
47863 l_adr_flex_value_set_id := NULL;
47864 l_adr_value_type_code := NULL;
47865 l_adr_value_combination_id := NULL;
47866 l_adr_value_segment_code := NULL;
47867
47868 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
47869 l_bflow_class_code := ''; -- 4219869 Business Flow
47870 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
47871 l_budgetary_control_flag := 'N';
47872
47873 l_bflow_applied_to_amt_idx := NULL; -- 5132302
47874 l_bflow_applied_to_amt := NULL; -- 5132302
47875 l_entered_amt_idx := NULL; -- 4262811
47876 l_accted_amt_idx := NULL; -- 4262811
47877 l_acc_rev_flag := NULL; -- 4262811
47878 l_accrual_line_num := NULL; -- 4262811
47879 l_tmp_amt := NULL; -- 4262811
47880 --
47881
47882 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47883 l_balance_type_code <> 'B' THEN
47884 IF NVL(p_source_2,'
47885 ') = 'ICACC'
47886 THEN
47887
47888 --
47889 XLA_AE_LINES_PKG.SetNewLine;
47890
47891 p_balance_type_code := l_balance_type_code;
47892 -- set the flag so later we will know whether the gain loss line needs to be created
47893
47894 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47895 p_actual_flag :='A';
47896 END IF;
47897
47898 --
47899 -- bulk performance
47900 --
47901 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47902 p_header_num => 0); -- 4262811
47903 --
47904 -- set accounting line options
47905 --
47906 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47907 p_natural_side_code => 'D'
47908 , p_gain_or_loss_flag => 'N'
47909 , p_gl_transfer_mode_code => 'D'
47910 , p_acct_entry_type_code => 'A'
47911 , p_switch_side_flag => 'Y'
47912 , p_merge_duplicate_code => 'W'
47913 );
47914 --
47915 l_acc_rev_natural_side_code := 'C'; -- 4262811
47916 --
47917 --
47918 -- set accounting line type info
47919 --
47920 xla_ae_lines_pkg.SetAcctLineType
47921 (p_component_type => l_component_type
47922 ,p_event_type_code => l_event_type_code
47923 ,p_line_definition_owner_code => l_line_definition_owner_code
47924 ,p_line_definition_code => l_line_definition_code
47925 ,p_accounting_line_code => l_component_code
47926 ,p_accounting_line_type_code => l_component_type_code
47927 ,p_accounting_line_appl_id => l_component_appl_id
47928 ,p_amb_context_code => l_amb_context_code
47929 ,p_entity_code => l_entity_code
47930 ,p_event_class_code => l_event_class_code);
47931 --
47932 -- set accounting class
47933 --
47934 xla_ae_lines_pkg.SetAcctClass(
47935 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
47936 , p_ae_header_id => l_ae_header_id
47937 );
47938
47939 --
47940 -- set rounding class
47941 --
47942 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47943 'INTERCOMPANY_ACCRUAL';
47944
47945 --
47946 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47947 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47948 --
47949 -- bulk performance
47950 --
47951 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47952
47953 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47954 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47955
47956 -- 4955764
47957 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47958 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47959
47960 -- 4458381 Public Sector Enh
47961
47962 --
47963 -- set accounting attributes for the line type
47967 l_bflow_applied_to_amt_idx := NULL; -- 5132302
47964 --
47965 l_entered_amt_idx := 3;
47966 l_accted_amt_idx := 8;
47968 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47969 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
47970 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47971 l_rec_acct_attrs.array_char_value(2) := p_source_6;
47972 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47973 l_rec_acct_attrs.array_num_value(3) := p_source_3;
47974 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47975 l_rec_acct_attrs.array_char_value(4) := p_source_7;
47976 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47977 l_rec_acct_attrs.array_date_value(5) := p_source_8;
47978 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47979 l_rec_acct_attrs.array_num_value(6) := p_source_9;
47980 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47981 l_rec_acct_attrs.array_char_value(7) := p_source_10;
47982 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47983 l_rec_acct_attrs.array_num_value(8) := p_source_11;
47984
47985 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47986 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47987
47988 ---------------------------------------------------------------------------------------------------------------
47989 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47990 ---------------------------------------------------------------------------------------------------------------
47991 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47992
47993 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47994 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47995
47996 IF xla_accounting_cache_pkg.GetValueChar
47997 (p_source_code => 'LEDGER_CATEGORY_CODE'
47998 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47999 AND l_bflow_method_code = 'PRIOR_ENTRY'
48000 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48001 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48002 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48003 )
48004 THEN
48005 xla_ae_lines_pkg.BflowUpgEntry
48006 (p_business_method_code => l_bflow_method_code
48007 ,p_business_class_code => l_bflow_class_code
48008 ,p_balance_type => l_balance_type_code);
48009 ELSE
48010 NULL;
48011 -- No business flow processing for business flow method of NONE.
48012 END IF;
48013
48014 --
48015 -- call analytical criteria
48016 --
48017
48018 --
48019 -- call description
48020 --
48021 -- No description or it is inherited.
48022 --
48023 -- call ADRs
48024 -- Bug 4922099
48025 --
48026 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48027 (NVL(l_actual_upg_option, 'N') = 'O') OR
48028 (NVL(l_enc_upg_option, 'N') = 'O')
48029 )
48030 THEN
48031 NULL;
48032 --
48033 --
48034
48035 l_ccid := AcctDerRule_14(
48036 p_application_id => p_application_id
48037 , p_ae_header_id => l_ae_header_id
48038 , p_source_1 => p_source_1
48039 , p_source_2 => p_source_2
48040 , x_transaction_coa_id => l_adr_transaction_coa_id
48041 , x_accounting_coa_id => l_adr_accounting_coa_id
48042 , x_value_type_code => l_adr_value_type_code
48043 , p_side => 'NA'
48044 );
48045
48046 xla_ae_lines_pkg.set_ccid(
48047 p_code_combination_id => l_ccid
48048 , p_value_type_code => l_adr_value_type_code
48049 , p_transaction_coa_id => l_adr_transaction_coa_id
48050 , p_accounting_coa_id => l_adr_accounting_coa_id
48051 , p_adr_code => 'ICACC'
48052 , p_adr_type_code => 'S'
48053 , p_component_type => l_component_type
48054 , p_component_code => l_component_code
48055 , p_component_type_code => l_component_type_code
48056 , p_component_appl_id => l_component_appl_id
48057 , p_amb_context_code => l_amb_context_code
48058 , p_side => 'NA'
48059 );
48060
48061
48062 --
48063 --
48064 END IF;
48065 --
48066 -- Bug 4922099
48067 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48068 (NVL(l_enc_upg_option, 'N') = 'O')
48069 ) AND
48070 (l_bflow_method_code = 'PRIOR_ENTRY')
48071 )
48072 THEN
48073 IF
48074 --
48075 1 = 2
48076 --
48077 THEN
48078 xla_accounting_err_pkg.build_message
48079 (p_appli_s_name => 'XLA'
48080 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48081 ,p_token_1 => 'LINE_NUMBER'
48085 l_component_type
48082 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
48083 ,p_token_2 => 'LINE_TYPE_NAME'
48084 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
48086 ,l_component_code
48087 ,l_component_type_code
48088 ,l_component_appl_id
48089 ,l_amb_context_code
48090 ,l_entity_code
48091 ,l_event_class_code
48092 )
48093 ,p_token_3 => 'OWNER'
48094 ,p_value_3 => xla_lookups_pkg.get_meaning(
48095 p_lookup_type => 'XLA_OWNER_TYPE'
48096 ,p_lookup_code => l_component_type_code
48097 )
48098 ,p_token_4 => 'PRODUCT_NAME'
48099 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48100 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48101 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48102 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48103 ,p_ae_header_id => NULL
48104 );
48105
48106 IF (C_LEVEL_ERROR>= g_log_level) THEN
48107 trace
48108 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48109 ,p_level => C_LEVEL_ERROR
48110 ,p_module => l_log_module);
48111 END IF;
48112 END IF;
48113 END IF;
48114 --
48115 --
48116 ------------------------------------------------------------------------------------------------
48117 -- 4219869 Business Flow
48118 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48119 -- Prior Entry. Currently, the following code is always generated.
48120 ------------------------------------------------------------------------------------------------
48121 XLA_AE_LINES_PKG.ValidateCurrentLine;
48122
48123 ------------------------------------------------------------------------------------
48124 -- 4219869 Business Flow
48125 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48126 ------------------------------------------------------------------------------------
48127 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48128
48129 ----------------------------------------------------------------------------------
48130 -- 4219869 Business Flow
48131 -- Update journal entry status -- Need to generate this within IF <condition>
48132 ----------------------------------------------------------------------------------
48133 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48134 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48135 ,p_balance_type_code => l_balance_type_code
48136 );
48137
48138 -------------------------------------------------------------------------------------------
48139 -- 4262811 - Generate the Accrual Reversal lines
48140 -------------------------------------------------------------------------------------------
48141 BEGIN
48142 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48143 (g_array_event(p_event_id).array_value_num('header_index'));
48144 IF l_acc_rev_flag IS NULL THEN
48145 l_acc_rev_flag := 'N';
48146 END IF;
48147 EXCEPTION
48148 WHEN OTHERS THEN
48149 l_acc_rev_flag := 'N';
48150 END;
48151 --
48152 IF (l_acc_rev_flag = 'Y') THEN
48153
48154 -- 4645092 ------------------------------------------------------------------------------
48155 -- To allow MPA report to determine if it should generate report process
48156 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48157 ------------------------------------------------------------------------------------------
48158
48159 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48160 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48161 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
48162 -- call ADRs
48163 -- Bug 4922099
48164 --
48165 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48166 (NVL(l_actual_upg_option, 'N') = 'O') OR
48167 (NVL(l_enc_upg_option, 'N') = 'O')
48168 )
48169 THEN
48170 NULL;
48171 --
48172 --
48173
48174 l_ccid := AcctDerRule_14(
48175 p_application_id => p_application_id
48179 , x_transaction_coa_id => l_adr_transaction_coa_id
48176 , p_ae_header_id => l_ae_header_id
48177 , p_source_1 => p_source_1
48178 , p_source_2 => p_source_2
48180 , x_accounting_coa_id => l_adr_accounting_coa_id
48181 , x_value_type_code => l_adr_value_type_code
48182 , p_side => 'NA'
48183 );
48184
48185 xla_ae_lines_pkg.set_ccid(
48186 p_code_combination_id => l_ccid
48187 , p_value_type_code => l_adr_value_type_code
48188 , p_transaction_coa_id => l_adr_transaction_coa_id
48189 , p_accounting_coa_id => l_adr_accounting_coa_id
48190 , p_adr_code => 'ICACC'
48191 , p_adr_type_code => 'S'
48192 , p_component_type => l_component_type
48193 , p_component_code => l_component_code
48194 , p_component_type_code => l_component_type_code
48195 , p_component_appl_id => l_component_appl_id
48196 , p_amb_context_code => l_amb_context_code
48197 , p_side => 'NA'
48198 );
48199
48200
48201 --
48202 --
48203 END IF;
48204
48205 --
48206 -- Update the line information that should be overwritten
48207 --
48208 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48209 p_header_num => 1);
48210 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
48211
48212 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48213
48214 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
48215 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48216 END IF;
48217
48218 --
48219 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48220 --
48221 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48222 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
48223 ELSE
48224 ---------------------------------------------------------------------------------------------------
48225 -- 4262811a Switch Sign
48226 ---------------------------------------------------------------------------------------------------
48227 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
48228 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48229 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48230 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48231 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48232 -- 5132302
48233 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48234 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48235
48236 END IF;
48237
48238 -- 4955764
48239 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48240 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48241
48242
48243 XLA_AE_LINES_PKG.ValidateCurrentLine;
48244 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48245
48246 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48247 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48248 ,p_balance_type_code => l_balance_type_code);
48249
48250 END IF;
48251
48252 -----------------------------------------------------------------------------------------
48253 -- 4262811 Multiperiod Accounting
48254 -----------------------------------------------------------------------------------------
48255 -- No MPA option is assigned.
48256
48257
48258 END IF;
48259 END IF;
48260 --
48261
48262 --
48263 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48264 trace
48265 (p_msg => 'END of AcctLineType_119'
48266 ,p_level => C_LEVEL_PROCEDURE
48267 ,p_module => l_log_module);
48268 END IF;
48269 --
48270 EXCEPTION
48271 WHEN xla_exceptions_pkg.application_exception THEN
48272 RAISE;
48273 WHEN OTHERS THEN
48274 xla_exceptions_pkg.raise_message
48275 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_119');
48276 END AcctLineType_119;
48277 --
48278
48279 ---------------------------------------
48280 --
48281 -- PRIVATE FUNCTION
48282 -- AcctLineType_120
48283 --
48284 ---------------------------------------
48285 PROCEDURE AcctLineType_120 (
48286 p_application_id IN NUMBER
48287 ,p_event_id IN NUMBER
48288 ,p_calculate_acctd_flag IN VARCHAR2
48289 ,p_calculate_g_l_flag IN VARCHAR2
48290 ,p_actual_flag IN OUT VARCHAR2
48291 ,p_balance_type_code OUT VARCHAR2
48292 ,p_gain_or_loss_ref OUT VARCHAR2
48293
48297 , p_source_2 IN VARCHAR2
48294 --Transaction Account
48295 , p_source_1 IN NUMBER
48296 --Journal Line Type
48298 --Entered Amount
48299 , p_source_3 IN NUMBER
48300 --First Distribution Identifier
48301 , p_source_5 IN NUMBER
48302 --Distribution Type
48303 , p_source_6 IN VARCHAR2
48304 --Currency Code
48305 , p_source_7 IN VARCHAR2
48306 --Currency Conversion Date
48307 , p_source_8 IN DATE
48308 --Currency Conversion Rate
48309 , p_source_9 IN NUMBER
48310 --Currency Conversion Type
48311 , p_source_10 IN VARCHAR2
48312 --Accounted Amount
48313 , p_source_11 IN NUMBER
48314 )
48315 IS
48316
48317 l_component_type VARCHAR2(80);
48318 l_component_code VARCHAR2(30);
48319 l_component_type_code VARCHAR2(1);
48320 l_component_appl_id INTEGER;
48321 l_amb_context_code VARCHAR2(30);
48322 l_entity_code VARCHAR2(30);
48323 l_event_class_code VARCHAR2(30);
48324 l_ae_header_id NUMBER;
48325 l_event_type_code VARCHAR2(30);
48326 l_line_definition_code VARCHAR2(30);
48327 l_line_definition_owner_code VARCHAR2(1);
48328 --
48329 -- adr variables
48330 l_segment VARCHAR2(30);
48331 l_ccid NUMBER;
48332 l_adr_transaction_coa_id NUMBER;
48333 l_adr_accounting_coa_id NUMBER;
48334 l_adr_flexfield_segment_code VARCHAR2(30);
48335 l_adr_flex_value_set_id NUMBER;
48336 l_adr_value_type_code VARCHAR2(30);
48337 l_adr_value_combination_id NUMBER;
48338 l_adr_value_segment_code VARCHAR2(30);
48339
48340 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
48341 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
48342 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
48343 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
48344
48345 -- 4262811 Variables ------------------------------------------------------------------------------------------
48346 l_entered_amt_idx NUMBER;
48347 l_accted_amt_idx NUMBER;
48348 l_acc_rev_flag VARCHAR2(1);
48349 l_accrual_line_num NUMBER;
48350 l_tmp_amt NUMBER;
48351 l_acc_rev_natural_side_code VARCHAR2(1);
48352
48353 l_num_entries NUMBER;
48354 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
48355 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
48356 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
48357 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
48358 l_recog_line_1 NUMBER;
48359 l_recog_line_2 NUMBER;
48360
48361 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
48362 l_bflow_applied_to_amt NUMBER; -- 5132302
48363 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
48364
48365 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48366
48367 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
48368 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
48369
48370 ---------------------------------------------------------------------------------------------------------------
48371
48372
48373 --
48374 -- bulk performance
48375 --
48376 l_balance_type_code VARCHAR2(1);
48377 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
48378 l_log_module VARCHAR2(240);
48379
48380 --
48381 -- Upgrade strategy
48382 --
48383 l_actual_upg_option VARCHAR2(1);
48384 l_enc_upg_option VARCHAR2(1);
48385
48386 --
48387 BEGIN
48388 --
48389 IF g_log_enabled THEN
48390 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
48391 END IF;
48392 --
48393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48394
48395 trace
48396 (p_msg => 'BEGIN of AcctLineType_120'
48397 ,p_level => C_LEVEL_PROCEDURE
48398 ,p_module => l_log_module);
48399
48400 END IF;
48401 --
48402 l_component_type := 'AMB_JLT';
48403 l_component_code := 'ICACC';
48404 l_component_type_code := 'S';
48405 l_component_appl_id := 555;
48406 l_amb_context_code := 'DEFAULT';
48407 l_entity_code := 'PURCHASING';
48408 l_event_class_code := 'RECEIVE';
48409 l_event_type_code := 'CORRECTION_RECEIVE';
48410 l_line_definition_owner_code := 'S';
48411 l_line_definition_code := 'CORRECTION_RECEIVE';
48412 --
48413 l_balance_type_code := 'A';
48414 l_segment := NULL;
48415 l_ccid := NULL;
48416 l_adr_transaction_coa_id := NULL;
48417 l_adr_accounting_coa_id := NULL;
48418 l_adr_flexfield_segment_code := NULL;
48419 l_adr_flex_value_set_id := NULL;
48420 l_adr_value_type_code := NULL;
48421 l_adr_value_combination_id := NULL;
48422 l_adr_value_segment_code := NULL;
48423
48424 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
48425 l_bflow_class_code := ''; -- 4219869 Business Flow
48426 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
48430 l_bflow_applied_to_amt := NULL; -- 5132302
48427 l_budgetary_control_flag := 'N';
48428
48429 l_bflow_applied_to_amt_idx := NULL; -- 5132302
48431 l_entered_amt_idx := NULL; -- 4262811
48432 l_accted_amt_idx := NULL; -- 4262811
48433 l_acc_rev_flag := NULL; -- 4262811
48434 l_accrual_line_num := NULL; -- 4262811
48435 l_tmp_amt := NULL; -- 4262811
48436 --
48437
48438 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48439 l_balance_type_code <> 'B' THEN
48440 IF NVL(p_source_2,'
48441 ') = 'ICACC'
48442 THEN
48443
48444 --
48445 XLA_AE_LINES_PKG.SetNewLine;
48446
48447 p_balance_type_code := l_balance_type_code;
48448 -- set the flag so later we will know whether the gain loss line needs to be created
48449
48450 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48451 p_actual_flag :='A';
48452 END IF;
48453
48454 --
48455 -- bulk performance
48456 --
48457 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48458 p_header_num => 0); -- 4262811
48459 --
48460 -- set accounting line options
48461 --
48462 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48463 p_natural_side_code => 'D'
48464 , p_gain_or_loss_flag => 'N'
48465 , p_gl_transfer_mode_code => 'D'
48466 , p_acct_entry_type_code => 'A'
48467 , p_switch_side_flag => 'Y'
48468 , p_merge_duplicate_code => 'W'
48469 );
48470 --
48471 l_acc_rev_natural_side_code := 'C'; -- 4262811
48472 --
48473 --
48474 -- set accounting line type info
48475 --
48476 xla_ae_lines_pkg.SetAcctLineType
48477 (p_component_type => l_component_type
48478 ,p_event_type_code => l_event_type_code
48479 ,p_line_definition_owner_code => l_line_definition_owner_code
48480 ,p_line_definition_code => l_line_definition_code
48481 ,p_accounting_line_code => l_component_code
48482 ,p_accounting_line_type_code => l_component_type_code
48483 ,p_accounting_line_appl_id => l_component_appl_id
48484 ,p_amb_context_code => l_amb_context_code
48485 ,p_entity_code => l_entity_code
48486 ,p_event_class_code => l_event_class_code);
48487 --
48488 -- set accounting class
48489 --
48490 xla_ae_lines_pkg.SetAcctClass(
48491 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
48492 , p_ae_header_id => l_ae_header_id
48493 );
48494
48495 --
48496 -- set rounding class
48497 --
48498 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48499 'INTERCOMPANY_ACCRUAL';
48500
48501 --
48502 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48503 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48504 --
48505 -- bulk performance
48506 --
48507 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48508
48509 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48510 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48511
48512 -- 4955764
48513 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48514 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48515
48516 -- 4458381 Public Sector Enh
48517
48518 --
48519 -- set accounting attributes for the line type
48520 --
48521 l_entered_amt_idx := 3;
48522 l_accted_amt_idx := 8;
48523 l_bflow_applied_to_amt_idx := NULL; -- 5132302
48524 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48525 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
48526 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48527 l_rec_acct_attrs.array_char_value(2) := p_source_6;
48528 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48529 l_rec_acct_attrs.array_num_value(3) := p_source_3;
48530 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48531 l_rec_acct_attrs.array_char_value(4) := p_source_7;
48532 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48533 l_rec_acct_attrs.array_date_value(5) := p_source_8;
48534 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48535 l_rec_acct_attrs.array_num_value(6) := p_source_9;
48536 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48537 l_rec_acct_attrs.array_char_value(7) := p_source_10;
48538 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48539 l_rec_acct_attrs.array_num_value(8) := p_source_11;
48540
48541 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48542 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48543
48544 ---------------------------------------------------------------------------------------------------------------
48548
48545 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48546 ---------------------------------------------------------------------------------------------------------------
48547 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48549 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48550 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48551
48552 IF xla_accounting_cache_pkg.GetValueChar
48553 (p_source_code => 'LEDGER_CATEGORY_CODE'
48554 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48555 AND l_bflow_method_code = 'PRIOR_ENTRY'
48556 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48557 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48558 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48559 )
48560 THEN
48561 xla_ae_lines_pkg.BflowUpgEntry
48562 (p_business_method_code => l_bflow_method_code
48563 ,p_business_class_code => l_bflow_class_code
48564 ,p_balance_type => l_balance_type_code);
48565 ELSE
48566 NULL;
48567 -- No business flow processing for business flow method of NONE.
48568 END IF;
48569
48570 --
48571 -- call analytical criteria
48572 --
48573
48574 --
48575 -- call description
48576 --
48577 -- No description or it is inherited.
48578 --
48579 -- call ADRs
48580 -- Bug 4922099
48581 --
48582 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48583 (NVL(l_actual_upg_option, 'N') = 'O') OR
48584 (NVL(l_enc_upg_option, 'N') = 'O')
48585 )
48586 THEN
48587 NULL;
48588 --
48589 --
48590
48591 l_ccid := AcctDerRule_14(
48592 p_application_id => p_application_id
48593 , p_ae_header_id => l_ae_header_id
48594 , p_source_1 => p_source_1
48595 , p_source_2 => p_source_2
48596 , x_transaction_coa_id => l_adr_transaction_coa_id
48597 , x_accounting_coa_id => l_adr_accounting_coa_id
48598 , x_value_type_code => l_adr_value_type_code
48599 , p_side => 'NA'
48600 );
48601
48602 xla_ae_lines_pkg.set_ccid(
48603 p_code_combination_id => l_ccid
48604 , p_value_type_code => l_adr_value_type_code
48605 , p_transaction_coa_id => l_adr_transaction_coa_id
48606 , p_accounting_coa_id => l_adr_accounting_coa_id
48607 , p_adr_code => 'ICACC'
48608 , p_adr_type_code => 'S'
48609 , p_component_type => l_component_type
48610 , p_component_code => l_component_code
48611 , p_component_type_code => l_component_type_code
48612 , p_component_appl_id => l_component_appl_id
48613 , p_amb_context_code => l_amb_context_code
48614 , p_side => 'NA'
48615 );
48616
48617
48618 --
48619 --
48620 END IF;
48621 --
48622 -- Bug 4922099
48623 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48624 (NVL(l_enc_upg_option, 'N') = 'O')
48625 ) AND
48626 (l_bflow_method_code = 'PRIOR_ENTRY')
48627 )
48628 THEN
48629 IF
48630 --
48631 1 = 2
48632 --
48633 THEN
48634 xla_accounting_err_pkg.build_message
48635 (p_appli_s_name => 'XLA'
48636 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48637 ,p_token_1 => 'LINE_NUMBER'
48638 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
48639 ,p_token_2 => 'LINE_TYPE_NAME'
48640 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
48641 l_component_type
48642 ,l_component_code
48643 ,l_component_type_code
48644 ,l_component_appl_id
48645 ,l_amb_context_code
48646 ,l_entity_code
48647 ,l_event_class_code
48648 )
48649 ,p_token_3 => 'OWNER'
48650 ,p_value_3 => xla_lookups_pkg.get_meaning(
48651 p_lookup_type => 'XLA_OWNER_TYPE'
48652 ,p_lookup_code => l_component_type_code
48653 )
48657 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48654 ,p_token_4 => 'PRODUCT_NAME'
48655 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48656 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48658 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48659 ,p_ae_header_id => NULL
48660 );
48661
48662 IF (C_LEVEL_ERROR>= g_log_level) THEN
48663 trace
48664 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48665 ,p_level => C_LEVEL_ERROR
48666 ,p_module => l_log_module);
48667 END IF;
48668 END IF;
48669 END IF;
48670 --
48671 --
48672 ------------------------------------------------------------------------------------------------
48673 -- 4219869 Business Flow
48674 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48675 -- Prior Entry. Currently, the following code is always generated.
48676 ------------------------------------------------------------------------------------------------
48677 XLA_AE_LINES_PKG.ValidateCurrentLine;
48678
48679 ------------------------------------------------------------------------------------
48680 -- 4219869 Business Flow
48681 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48682 ------------------------------------------------------------------------------------
48683 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48684
48685 ----------------------------------------------------------------------------------
48686 -- 4219869 Business Flow
48687 -- Update journal entry status -- Need to generate this within IF <condition>
48688 ----------------------------------------------------------------------------------
48689 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48690 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48691 ,p_balance_type_code => l_balance_type_code
48692 );
48693
48694 -------------------------------------------------------------------------------------------
48695 -- 4262811 - Generate the Accrual Reversal lines
48696 -------------------------------------------------------------------------------------------
48697 BEGIN
48698 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48699 (g_array_event(p_event_id).array_value_num('header_index'));
48700 IF l_acc_rev_flag IS NULL THEN
48701 l_acc_rev_flag := 'N';
48702 END IF;
48703 EXCEPTION
48704 WHEN OTHERS THEN
48705 l_acc_rev_flag := 'N';
48706 END;
48707 --
48708 IF (l_acc_rev_flag = 'Y') THEN
48709
48710 -- 4645092 ------------------------------------------------------------------------------
48711 -- To allow MPA report to determine if it should generate report process
48712 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48713 ------------------------------------------------------------------------------------------
48714
48715 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48716 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48717 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
48718 -- call ADRs
48719 -- Bug 4922099
48720 --
48721 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48722 (NVL(l_actual_upg_option, 'N') = 'O') OR
48723 (NVL(l_enc_upg_option, 'N') = 'O')
48724 )
48725 THEN
48726 NULL;
48727 --
48728 --
48729
48730 l_ccid := AcctDerRule_14(
48731 p_application_id => p_application_id
48732 , p_ae_header_id => l_ae_header_id
48733 , p_source_1 => p_source_1
48734 , p_source_2 => p_source_2
48735 , x_transaction_coa_id => l_adr_transaction_coa_id
48736 , x_accounting_coa_id => l_adr_accounting_coa_id
48737 , x_value_type_code => l_adr_value_type_code
48738 , p_side => 'NA'
48739 );
48740
48741 xla_ae_lines_pkg.set_ccid(
48742 p_code_combination_id => l_ccid
48743 , p_value_type_code => l_adr_value_type_code
48744 , p_transaction_coa_id => l_adr_transaction_coa_id
48745 , p_accounting_coa_id => l_adr_accounting_coa_id
48746 , p_adr_code => 'ICACC'
48747 , p_adr_type_code => 'S'
48748 , p_component_type => l_component_type
48749 , p_component_code => l_component_code
48750 , p_component_type_code => l_component_type_code
48751 , p_component_appl_id => l_component_appl_id
48752 , p_amb_context_code => l_amb_context_code
48753 , p_side => 'NA'
48754 );
48755
48756
48757 --
48758 --
48759 END IF;
48760
48761 --
48765 p_header_num => 1);
48762 -- Update the line information that should be overwritten
48763 --
48764 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48766 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
48767
48768 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48769
48770 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
48771 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48772 END IF;
48773
48774 --
48775 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48776 --
48777 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48778 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
48779 ELSE
48780 ---------------------------------------------------------------------------------------------------
48781 -- 4262811a Switch Sign
48782 ---------------------------------------------------------------------------------------------------
48783 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
48784 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48785 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48786 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48787 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48788 -- 5132302
48789 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48790 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48791
48792 END IF;
48793
48794 -- 4955764
48795 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48796 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48797
48798
48799 XLA_AE_LINES_PKG.ValidateCurrentLine;
48800 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48801
48802 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48803 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48804 ,p_balance_type_code => l_balance_type_code);
48805
48806 END IF;
48807
48808 -----------------------------------------------------------------------------------------
48809 -- 4262811 Multiperiod Accounting
48810 -----------------------------------------------------------------------------------------
48811 -- No MPA option is assigned.
48812
48813
48814 END IF;
48815 END IF;
48816 --
48817
48818 --
48819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48820 trace
48821 (p_msg => 'END of AcctLineType_120'
48822 ,p_level => C_LEVEL_PROCEDURE
48823 ,p_module => l_log_module);
48824 END IF;
48825 --
48826 EXCEPTION
48827 WHEN xla_exceptions_pkg.application_exception THEN
48828 RAISE;
48829 WHEN OTHERS THEN
48830 xla_exceptions_pkg.raise_message
48831 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_120');
48832 END AcctLineType_120;
48833 --
48834
48835 ---------------------------------------
48836 --
48837 -- PRIVATE FUNCTION
48838 -- AcctLineType_121
48839 --
48840 ---------------------------------------
48841 PROCEDURE AcctLineType_121 (
48842 p_application_id IN NUMBER
48843 ,p_event_id IN NUMBER
48844 ,p_calculate_acctd_flag IN VARCHAR2
48845 ,p_calculate_g_l_flag IN VARCHAR2
48846 ,p_actual_flag IN OUT VARCHAR2
48847 ,p_balance_type_code OUT VARCHAR2
48848 ,p_gain_or_loss_ref OUT VARCHAR2
48849
48850 --Transaction Account
48851 , p_source_1 IN NUMBER
48852 --Journal Line Type
48853 , p_source_2 IN VARCHAR2
48854 --Entered Amount
48855 , p_source_3 IN NUMBER
48856 --First Distribution Identifier
48857 , p_source_5 IN NUMBER
48858 --Distribution Type
48859 , p_source_6 IN VARCHAR2
48860 --Currency Code
48861 , p_source_7 IN VARCHAR2
48862 --Currency Conversion Date
48863 , p_source_8 IN DATE
48864 --Currency Conversion Rate
48865 , p_source_9 IN NUMBER
48866 --Currency Conversion Type
48867 , p_source_10 IN VARCHAR2
48868 --Accounted Amount
48869 , p_source_11 IN NUMBER
48870 )
48871 IS
48872
48873 l_component_type VARCHAR2(80);
48874 l_component_code VARCHAR2(30);
48875 l_component_type_code VARCHAR2(1);
48876 l_component_appl_id INTEGER;
48877 l_amb_context_code VARCHAR2(30);
48878 l_entity_code VARCHAR2(30);
48879 l_event_class_code VARCHAR2(30);
48880 l_ae_header_id NUMBER;
48881 l_event_type_code VARCHAR2(30);
48882 l_line_definition_code VARCHAR2(30);
48883 l_line_definition_owner_code VARCHAR2(1);
48884 --
48885 -- adr variables
48889 l_adr_accounting_coa_id NUMBER;
48886 l_segment VARCHAR2(30);
48887 l_ccid NUMBER;
48888 l_adr_transaction_coa_id NUMBER;
48890 l_adr_flexfield_segment_code VARCHAR2(30);
48891 l_adr_flex_value_set_id NUMBER;
48892 l_adr_value_type_code VARCHAR2(30);
48893 l_adr_value_combination_id NUMBER;
48894 l_adr_value_segment_code VARCHAR2(30);
48895
48896 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
48897 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
48898 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
48899 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
48900
48901 -- 4262811 Variables ------------------------------------------------------------------------------------------
48902 l_entered_amt_idx NUMBER;
48903 l_accted_amt_idx NUMBER;
48904 l_acc_rev_flag VARCHAR2(1);
48905 l_accrual_line_num NUMBER;
48906 l_tmp_amt NUMBER;
48907 l_acc_rev_natural_side_code VARCHAR2(1);
48908
48909 l_num_entries NUMBER;
48910 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
48911 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
48912 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
48913 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
48914 l_recog_line_1 NUMBER;
48915 l_recog_line_2 NUMBER;
48916
48917 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
48918 l_bflow_applied_to_amt NUMBER; -- 5132302
48919 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
48920
48921 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48922
48923 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
48924 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
48925
48926 ---------------------------------------------------------------------------------------------------------------
48927
48928
48929 --
48930 -- bulk performance
48931 --
48932 l_balance_type_code VARCHAR2(1);
48933 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
48934 l_log_module VARCHAR2(240);
48935
48936 --
48937 -- Upgrade strategy
48938 --
48939 l_actual_upg_option VARCHAR2(1);
48940 l_enc_upg_option VARCHAR2(1);
48941
48942 --
48943 BEGIN
48944 --
48945 IF g_log_enabled THEN
48946 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
48947 END IF;
48948 --
48949 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48950
48951 trace
48952 (p_msg => 'BEGIN of AcctLineType_121'
48953 ,p_level => C_LEVEL_PROCEDURE
48954 ,p_module => l_log_module);
48955
48956 END IF;
48957 --
48958 l_component_type := 'AMB_JLT';
48959 l_component_code := 'ICACC';
48960 l_component_type_code := 'S';
48961 l_component_appl_id := 555;
48962 l_amb_context_code := 'DEFAULT';
48963 l_entity_code := 'PURCHASING';
48964 l_event_class_code := 'RECEIVE';
48965 l_event_type_code := 'LOG_RECEIVE';
48966 l_line_definition_owner_code := 'S';
48967 l_line_definition_code := 'LOG_RECEIVE';
48968 --
48969 l_balance_type_code := 'A';
48970 l_segment := NULL;
48971 l_ccid := NULL;
48972 l_adr_transaction_coa_id := NULL;
48973 l_adr_accounting_coa_id := NULL;
48974 l_adr_flexfield_segment_code := NULL;
48975 l_adr_flex_value_set_id := NULL;
48976 l_adr_value_type_code := NULL;
48977 l_adr_value_combination_id := NULL;
48978 l_adr_value_segment_code := NULL;
48979
48980 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
48981 l_bflow_class_code := ''; -- 4219869 Business Flow
48982 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
48983 l_budgetary_control_flag := 'N';
48984
48985 l_bflow_applied_to_amt_idx := NULL; -- 5132302
48986 l_bflow_applied_to_amt := NULL; -- 5132302
48987 l_entered_amt_idx := NULL; -- 4262811
48988 l_accted_amt_idx := NULL; -- 4262811
48989 l_acc_rev_flag := NULL; -- 4262811
48990 l_accrual_line_num := NULL; -- 4262811
48991 l_tmp_amt := NULL; -- 4262811
48992 --
48993
48994 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48995 l_balance_type_code <> 'B' THEN
48996 IF NVL(p_source_2,'
48997 ') = 'ICACC'
48998 THEN
48999
49000 --
49001 XLA_AE_LINES_PKG.SetNewLine;
49002
49003 p_balance_type_code := l_balance_type_code;
49004 -- set the flag so later we will know whether the gain loss line needs to be created
49005
49006 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49007 p_actual_flag :='A';
49008 END IF;
49009
49010 --
49011 -- bulk performance
49012 --
49013 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49014 p_header_num => 0); -- 4262811
49018 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49015 --
49016 -- set accounting line options
49017 --
49019 p_natural_side_code => 'D'
49020 , p_gain_or_loss_flag => 'N'
49021 , p_gl_transfer_mode_code => 'D'
49022 , p_acct_entry_type_code => 'A'
49023 , p_switch_side_flag => 'Y'
49024 , p_merge_duplicate_code => 'W'
49025 );
49026 --
49027 l_acc_rev_natural_side_code := 'C'; -- 4262811
49028 --
49029 --
49030 -- set accounting line type info
49031 --
49032 xla_ae_lines_pkg.SetAcctLineType
49033 (p_component_type => l_component_type
49034 ,p_event_type_code => l_event_type_code
49035 ,p_line_definition_owner_code => l_line_definition_owner_code
49036 ,p_line_definition_code => l_line_definition_code
49037 ,p_accounting_line_code => l_component_code
49038 ,p_accounting_line_type_code => l_component_type_code
49039 ,p_accounting_line_appl_id => l_component_appl_id
49040 ,p_amb_context_code => l_amb_context_code
49041 ,p_entity_code => l_entity_code
49042 ,p_event_class_code => l_event_class_code);
49043 --
49044 -- set accounting class
49045 --
49046 xla_ae_lines_pkg.SetAcctClass(
49047 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
49048 , p_ae_header_id => l_ae_header_id
49049 );
49050
49051 --
49052 -- set rounding class
49053 --
49054 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49055 'INTERCOMPANY_ACCRUAL';
49056
49057 --
49058 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49059 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49060 --
49061 -- bulk performance
49062 --
49063 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49064
49065 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49066 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49067
49068 -- 4955764
49069 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49070 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49071
49072 -- 4458381 Public Sector Enh
49073
49074 --
49075 -- set accounting attributes for the line type
49076 --
49077 l_entered_amt_idx := 3;
49078 l_accted_amt_idx := 8;
49079 l_bflow_applied_to_amt_idx := NULL; -- 5132302
49080 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49081 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
49082 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49083 l_rec_acct_attrs.array_char_value(2) := p_source_6;
49084 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49085 l_rec_acct_attrs.array_num_value(3) := p_source_3;
49086 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49087 l_rec_acct_attrs.array_char_value(4) := p_source_7;
49088 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49089 l_rec_acct_attrs.array_date_value(5) := p_source_8;
49090 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49091 l_rec_acct_attrs.array_num_value(6) := p_source_9;
49092 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49093 l_rec_acct_attrs.array_char_value(7) := p_source_10;
49094 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49095 l_rec_acct_attrs.array_num_value(8) := p_source_11;
49096
49097 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49098 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49099
49100 ---------------------------------------------------------------------------------------------------------------
49101 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49102 ---------------------------------------------------------------------------------------------------------------
49103 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49104
49105 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49106 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49107
49108 IF xla_accounting_cache_pkg.GetValueChar
49109 (p_source_code => 'LEDGER_CATEGORY_CODE'
49110 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49111 AND l_bflow_method_code = 'PRIOR_ENTRY'
49112 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49113 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49114 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49115 )
49116 THEN
49117 xla_ae_lines_pkg.BflowUpgEntry
49118 (p_business_method_code => l_bflow_method_code
49119 ,p_business_class_code => l_bflow_class_code
49120 ,p_balance_type => l_balance_type_code);
49124 END IF;
49121 ELSE
49122 NULL;
49123 -- No business flow processing for business flow method of NONE.
49125
49126 --
49127 -- call analytical criteria
49128 --
49129
49130 --
49131 -- call description
49132 --
49133 -- No description or it is inherited.
49134 --
49135 -- call ADRs
49136 -- Bug 4922099
49137 --
49138 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49139 (NVL(l_actual_upg_option, 'N') = 'O') OR
49140 (NVL(l_enc_upg_option, 'N') = 'O')
49141 )
49142 THEN
49143 NULL;
49144 --
49145 --
49146
49147 l_ccid := AcctDerRule_14(
49148 p_application_id => p_application_id
49149 , p_ae_header_id => l_ae_header_id
49150 , p_source_1 => p_source_1
49151 , p_source_2 => p_source_2
49152 , x_transaction_coa_id => l_adr_transaction_coa_id
49153 , x_accounting_coa_id => l_adr_accounting_coa_id
49154 , x_value_type_code => l_adr_value_type_code
49155 , p_side => 'NA'
49156 );
49157
49158 xla_ae_lines_pkg.set_ccid(
49159 p_code_combination_id => l_ccid
49160 , p_value_type_code => l_adr_value_type_code
49161 , p_transaction_coa_id => l_adr_transaction_coa_id
49162 , p_accounting_coa_id => l_adr_accounting_coa_id
49163 , p_adr_code => 'ICACC'
49164 , p_adr_type_code => 'S'
49165 , p_component_type => l_component_type
49166 , p_component_code => l_component_code
49167 , p_component_type_code => l_component_type_code
49168 , p_component_appl_id => l_component_appl_id
49169 , p_amb_context_code => l_amb_context_code
49170 , p_side => 'NA'
49171 );
49172
49173
49174 --
49175 --
49176 END IF;
49177 --
49178 -- Bug 4922099
49179 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49180 (NVL(l_enc_upg_option, 'N') = 'O')
49181 ) AND
49182 (l_bflow_method_code = 'PRIOR_ENTRY')
49183 )
49184 THEN
49185 IF
49186 --
49187 1 = 2
49188 --
49189 THEN
49190 xla_accounting_err_pkg.build_message
49191 (p_appli_s_name => 'XLA'
49192 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49193 ,p_token_1 => 'LINE_NUMBER'
49194 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
49195 ,p_token_2 => 'LINE_TYPE_NAME'
49196 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
49197 l_component_type
49198 ,l_component_code
49199 ,l_component_type_code
49200 ,l_component_appl_id
49201 ,l_amb_context_code
49202 ,l_entity_code
49203 ,l_event_class_code
49204 )
49205 ,p_token_3 => 'OWNER'
49206 ,p_value_3 => xla_lookups_pkg.get_meaning(
49207 p_lookup_type => 'XLA_OWNER_TYPE'
49208 ,p_lookup_code => l_component_type_code
49209 )
49210 ,p_token_4 => 'PRODUCT_NAME'
49211 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49212 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49213 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49214 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49215 ,p_ae_header_id => NULL
49216 );
49217
49218 IF (C_LEVEL_ERROR>= g_log_level) THEN
49219 trace
49220 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49221 ,p_level => C_LEVEL_ERROR
49222 ,p_module => l_log_module);
49223 END IF;
49224 END IF;
49225 END IF;
49226 --
49227 --
49228 ------------------------------------------------------------------------------------------------
49229 -- 4219869 Business Flow
49230 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49231 -- Prior Entry. Currently, the following code is always generated.
49235 ------------------------------------------------------------------------------------
49232 ------------------------------------------------------------------------------------------------
49233 XLA_AE_LINES_PKG.ValidateCurrentLine;
49234
49236 -- 4219869 Business Flow
49237 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49238 ------------------------------------------------------------------------------------
49239 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49240
49241 ----------------------------------------------------------------------------------
49242 -- 4219869 Business Flow
49243 -- Update journal entry status -- Need to generate this within IF <condition>
49244 ----------------------------------------------------------------------------------
49245 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49246 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49247 ,p_balance_type_code => l_balance_type_code
49248 );
49249
49250 -------------------------------------------------------------------------------------------
49251 -- 4262811 - Generate the Accrual Reversal lines
49252 -------------------------------------------------------------------------------------------
49253 BEGIN
49254 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49255 (g_array_event(p_event_id).array_value_num('header_index'));
49256 IF l_acc_rev_flag IS NULL THEN
49257 l_acc_rev_flag := 'N';
49258 END IF;
49259 EXCEPTION
49260 WHEN OTHERS THEN
49261 l_acc_rev_flag := 'N';
49262 END;
49263 --
49264 IF (l_acc_rev_flag = 'Y') THEN
49265
49266 -- 4645092 ------------------------------------------------------------------------------
49267 -- To allow MPA report to determine if it should generate report process
49268 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49269 ------------------------------------------------------------------------------------------
49270
49271 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49272 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49273 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
49274 -- call ADRs
49275 -- Bug 4922099
49276 --
49277 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49278 (NVL(l_actual_upg_option, 'N') = 'O') OR
49279 (NVL(l_enc_upg_option, 'N') = 'O')
49280 )
49281 THEN
49282 NULL;
49283 --
49284 --
49285
49286 l_ccid := AcctDerRule_14(
49287 p_application_id => p_application_id
49288 , p_ae_header_id => l_ae_header_id
49289 , p_source_1 => p_source_1
49290 , p_source_2 => p_source_2
49291 , x_transaction_coa_id => l_adr_transaction_coa_id
49292 , x_accounting_coa_id => l_adr_accounting_coa_id
49293 , x_value_type_code => l_adr_value_type_code
49294 , p_side => 'NA'
49295 );
49296
49297 xla_ae_lines_pkg.set_ccid(
49298 p_code_combination_id => l_ccid
49299 , p_value_type_code => l_adr_value_type_code
49300 , p_transaction_coa_id => l_adr_transaction_coa_id
49301 , p_accounting_coa_id => l_adr_accounting_coa_id
49302 , p_adr_code => 'ICACC'
49303 , p_adr_type_code => 'S'
49304 , p_component_type => l_component_type
49305 , p_component_code => l_component_code
49306 , p_component_type_code => l_component_type_code
49307 , p_component_appl_id => l_component_appl_id
49308 , p_amb_context_code => l_amb_context_code
49309 , p_side => 'NA'
49310 );
49311
49312
49313 --
49314 --
49315 END IF;
49316
49317 --
49318 -- Update the line information that should be overwritten
49319 --
49320 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49321 p_header_num => 1);
49322 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
49323
49324 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49325
49326 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
49327 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49328 END IF;
49329
49330 --
49331 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49332 --
49333 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49334 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
49335 ELSE
49336 ---------------------------------------------------------------------------------------------------
49337 -- 4262811a Switch Sign
49338 ---------------------------------------------------------------------------------------------------
49339 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
49343 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49340 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49341 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49342 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49344 -- 5132302
49345 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49346 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49347
49348 END IF;
49349
49350 -- 4955764
49351 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49352 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49353
49354
49355 XLA_AE_LINES_PKG.ValidateCurrentLine;
49356 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49357
49358 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49359 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49360 ,p_balance_type_code => l_balance_type_code);
49361
49362 END IF;
49363
49364 -----------------------------------------------------------------------------------------
49365 -- 4262811 Multiperiod Accounting
49366 -----------------------------------------------------------------------------------------
49367 -- No MPA option is assigned.
49368
49369
49370 END IF;
49371 END IF;
49372 --
49373
49374 --
49375 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49376 trace
49377 (p_msg => 'END of AcctLineType_121'
49378 ,p_level => C_LEVEL_PROCEDURE
49379 ,p_module => l_log_module);
49380 END IF;
49381 --
49382 EXCEPTION
49383 WHEN xla_exceptions_pkg.application_exception THEN
49384 RAISE;
49385 WHEN OTHERS THEN
49386 xla_exceptions_pkg.raise_message
49387 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_121');
49388 END AcctLineType_121;
49389 --
49390
49391 ---------------------------------------
49392 --
49393 -- PRIVATE FUNCTION
49394 -- AcctLineType_122
49395 --
49396 ---------------------------------------
49397 PROCEDURE AcctLineType_122 (
49398 p_application_id IN NUMBER
49399 ,p_event_id IN NUMBER
49400 ,p_calculate_acctd_flag IN VARCHAR2
49401 ,p_calculate_g_l_flag IN VARCHAR2
49402 ,p_actual_flag IN OUT VARCHAR2
49403 ,p_balance_type_code OUT VARCHAR2
49404 ,p_gain_or_loss_ref OUT VARCHAR2
49405
49406 --Transaction Account
49407 , p_source_1 IN NUMBER
49408 --Journal Line Type
49409 , p_source_2 IN VARCHAR2
49410 --Entered Amount
49411 , p_source_3 IN NUMBER
49412 --First Distribution Identifier
49413 , p_source_5 IN NUMBER
49414 --Distribution Type
49415 , p_source_6 IN VARCHAR2
49416 --Currency Code
49417 , p_source_7 IN VARCHAR2
49418 --Currency Conversion Date
49419 , p_source_8 IN DATE
49420 --Currency Conversion Rate
49421 , p_source_9 IN NUMBER
49422 --Currency Conversion Type
49423 , p_source_10 IN VARCHAR2
49424 --Accounted Amount
49425 , p_source_11 IN NUMBER
49426 )
49427 IS
49428
49429 l_component_type VARCHAR2(80);
49430 l_component_code VARCHAR2(30);
49431 l_component_type_code VARCHAR2(1);
49432 l_component_appl_id INTEGER;
49433 l_amb_context_code VARCHAR2(30);
49434 l_entity_code VARCHAR2(30);
49435 l_event_class_code VARCHAR2(30);
49436 l_ae_header_id NUMBER;
49437 l_event_type_code VARCHAR2(30);
49438 l_line_definition_code VARCHAR2(30);
49439 l_line_definition_owner_code VARCHAR2(1);
49440 --
49441 -- adr variables
49442 l_segment VARCHAR2(30);
49443 l_ccid NUMBER;
49444 l_adr_transaction_coa_id NUMBER;
49445 l_adr_accounting_coa_id NUMBER;
49446 l_adr_flexfield_segment_code VARCHAR2(30);
49447 l_adr_flex_value_set_id NUMBER;
49448 l_adr_value_type_code VARCHAR2(30);
49449 l_adr_value_combination_id NUMBER;
49450 l_adr_value_segment_code VARCHAR2(30);
49451
49452 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
49453 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
49454 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
49455 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
49456
49457 -- 4262811 Variables ------------------------------------------------------------------------------------------
49458 l_entered_amt_idx NUMBER;
49459 l_accted_amt_idx NUMBER;
49460 l_acc_rev_flag VARCHAR2(1);
49461 l_accrual_line_num NUMBER;
49462 l_tmp_amt NUMBER;
49463 l_acc_rev_natural_side_code VARCHAR2(1);
49464
49465 l_num_entries NUMBER;
49466 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
49467 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
49468 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
49469 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
49470 l_recog_line_1 NUMBER;
49474 l_bflow_applied_to_amt NUMBER; -- 5132302
49471 l_recog_line_2 NUMBER;
49472
49473 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
49475 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
49476
49477 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49478
49479 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
49480 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
49481
49482 ---------------------------------------------------------------------------------------------------------------
49483
49484
49485 --
49486 -- bulk performance
49487 --
49488 l_balance_type_code VARCHAR2(1);
49489 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
49490 l_log_module VARCHAR2(240);
49491
49492 --
49493 -- Upgrade strategy
49494 --
49495 l_actual_upg_option VARCHAR2(1);
49496 l_enc_upg_option VARCHAR2(1);
49497
49498 --
49499 BEGIN
49500 --
49501 IF g_log_enabled THEN
49502 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
49503 END IF;
49504 --
49505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49506
49507 trace
49508 (p_msg => 'BEGIN of AcctLineType_122'
49509 ,p_level => C_LEVEL_PROCEDURE
49510 ,p_module => l_log_module);
49511
49512 END IF;
49513 --
49514 l_component_type := 'AMB_JLT';
49515 l_component_code := 'ICACC';
49516 l_component_type_code := 'S';
49517 l_component_appl_id := 555;
49518 l_amb_context_code := 'DEFAULT';
49519 l_entity_code := 'PURCHASING';
49520 l_event_class_code := 'RECEIVE';
49521 l_event_type_code := 'RECEIVE';
49522 l_line_definition_owner_code := 'S';
49523 l_line_definition_code := 'RECEIVE';
49524 --
49525 l_balance_type_code := 'A';
49526 l_segment := NULL;
49527 l_ccid := NULL;
49528 l_adr_transaction_coa_id := NULL;
49529 l_adr_accounting_coa_id := NULL;
49530 l_adr_flexfield_segment_code := NULL;
49531 l_adr_flex_value_set_id := NULL;
49532 l_adr_value_type_code := NULL;
49533 l_adr_value_combination_id := NULL;
49534 l_adr_value_segment_code := NULL;
49535
49536 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
49537 l_bflow_class_code := ''; -- 4219869 Business Flow
49538 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
49539 l_budgetary_control_flag := 'N';
49540
49541 l_bflow_applied_to_amt_idx := NULL; -- 5132302
49542 l_bflow_applied_to_amt := NULL; -- 5132302
49543 l_entered_amt_idx := NULL; -- 4262811
49544 l_accted_amt_idx := NULL; -- 4262811
49545 l_acc_rev_flag := NULL; -- 4262811
49546 l_accrual_line_num := NULL; -- 4262811
49547 l_tmp_amt := NULL; -- 4262811
49548 --
49549
49550 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49551 l_balance_type_code <> 'B' THEN
49552 IF NVL(p_source_2,'
49553 ') = 'ICACC'
49554 THEN
49555
49556 --
49557 XLA_AE_LINES_PKG.SetNewLine;
49558
49559 p_balance_type_code := l_balance_type_code;
49560 -- set the flag so later we will know whether the gain loss line needs to be created
49561
49562 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49563 p_actual_flag :='A';
49564 END IF;
49565
49566 --
49567 -- bulk performance
49568 --
49569 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49570 p_header_num => 0); -- 4262811
49571 --
49572 -- set accounting line options
49573 --
49574 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49575 p_natural_side_code => 'D'
49576 , p_gain_or_loss_flag => 'N'
49577 , p_gl_transfer_mode_code => 'D'
49578 , p_acct_entry_type_code => 'A'
49579 , p_switch_side_flag => 'Y'
49580 , p_merge_duplicate_code => 'W'
49581 );
49582 --
49583 l_acc_rev_natural_side_code := 'C'; -- 4262811
49584 --
49585 --
49586 -- set accounting line type info
49587 --
49588 xla_ae_lines_pkg.SetAcctLineType
49589 (p_component_type => l_component_type
49590 ,p_event_type_code => l_event_type_code
49591 ,p_line_definition_owner_code => l_line_definition_owner_code
49592 ,p_line_definition_code => l_line_definition_code
49593 ,p_accounting_line_code => l_component_code
49594 ,p_accounting_line_type_code => l_component_type_code
49595 ,p_accounting_line_appl_id => l_component_appl_id
49596 ,p_amb_context_code => l_amb_context_code
49597 ,p_entity_code => l_entity_code
49598 ,p_event_class_code => l_event_class_code);
49599 --
49600 -- set accounting class
49601 --
49602 xla_ae_lines_pkg.SetAcctClass(
49603 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
49607 --
49604 , p_ae_header_id => l_ae_header_id
49605 );
49606
49608 -- set rounding class
49609 --
49610 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49611 'INTERCOMPANY_ACCRUAL';
49612
49613 --
49614 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49615 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49616 --
49617 -- bulk performance
49618 --
49619 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49620
49621 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49622 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49623
49624 -- 4955764
49625 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49626 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49627
49628 -- 4458381 Public Sector Enh
49629
49630 --
49631 -- set accounting attributes for the line type
49632 --
49633 l_entered_amt_idx := 3;
49634 l_accted_amt_idx := 8;
49635 l_bflow_applied_to_amt_idx := NULL; -- 5132302
49636 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
49637 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
49638 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
49639 l_rec_acct_attrs.array_char_value(2) := p_source_6;
49640 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
49641 l_rec_acct_attrs.array_num_value(3) := p_source_3;
49642 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
49643 l_rec_acct_attrs.array_char_value(4) := p_source_7;
49644 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
49645 l_rec_acct_attrs.array_date_value(5) := p_source_8;
49646 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
49647 l_rec_acct_attrs.array_num_value(6) := p_source_9;
49648 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
49649 l_rec_acct_attrs.array_char_value(7) := p_source_10;
49650 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
49651 l_rec_acct_attrs.array_num_value(8) := p_source_11;
49652
49653 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49654 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49655
49656 ---------------------------------------------------------------------------------------------------------------
49657 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49658 ---------------------------------------------------------------------------------------------------------------
49659 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49660
49661 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49662 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49663
49664 IF xla_accounting_cache_pkg.GetValueChar
49665 (p_source_code => 'LEDGER_CATEGORY_CODE'
49666 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49667 AND l_bflow_method_code = 'PRIOR_ENTRY'
49668 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49669 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49670 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49671 )
49672 THEN
49673 xla_ae_lines_pkg.BflowUpgEntry
49674 (p_business_method_code => l_bflow_method_code
49675 ,p_business_class_code => l_bflow_class_code
49676 ,p_balance_type => l_balance_type_code);
49677 ELSE
49678 NULL;
49679 -- No business flow processing for business flow method of NONE.
49680 END IF;
49681
49682 --
49683 -- call analytical criteria
49684 --
49685
49686 --
49687 -- call description
49688 --
49689 -- No description or it is inherited.
49690 --
49691 -- call ADRs
49692 -- Bug 4922099
49693 --
49694 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49695 (NVL(l_actual_upg_option, 'N') = 'O') OR
49696 (NVL(l_enc_upg_option, 'N') = 'O')
49697 )
49698 THEN
49699 NULL;
49700 --
49701 --
49702
49703 l_ccid := AcctDerRule_14(
49704 p_application_id => p_application_id
49705 , p_ae_header_id => l_ae_header_id
49706 , p_source_1 => p_source_1
49707 , p_source_2 => p_source_2
49708 , x_transaction_coa_id => l_adr_transaction_coa_id
49709 , x_accounting_coa_id => l_adr_accounting_coa_id
49710 , x_value_type_code => l_adr_value_type_code
49711 , p_side => 'NA'
49712 );
49713
49714 xla_ae_lines_pkg.set_ccid(
49715 p_code_combination_id => l_ccid
49716 , p_value_type_code => l_adr_value_type_code
49717 , p_transaction_coa_id => l_adr_transaction_coa_id
49721 , p_component_type => l_component_type
49718 , p_accounting_coa_id => l_adr_accounting_coa_id
49719 , p_adr_code => 'ICACC'
49720 , p_adr_type_code => 'S'
49722 , p_component_code => l_component_code
49723 , p_component_type_code => l_component_type_code
49724 , p_component_appl_id => l_component_appl_id
49725 , p_amb_context_code => l_amb_context_code
49726 , p_side => 'NA'
49727 );
49728
49729
49730 --
49731 --
49732 END IF;
49733 --
49734 -- Bug 4922099
49735 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49736 (NVL(l_enc_upg_option, 'N') = 'O')
49737 ) AND
49738 (l_bflow_method_code = 'PRIOR_ENTRY')
49739 )
49740 THEN
49741 IF
49742 --
49743 1 = 2
49744 --
49745 THEN
49746 xla_accounting_err_pkg.build_message
49747 (p_appli_s_name => 'XLA'
49748 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49749 ,p_token_1 => 'LINE_NUMBER'
49750 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
49751 ,p_token_2 => 'LINE_TYPE_NAME'
49752 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
49753 l_component_type
49754 ,l_component_code
49755 ,l_component_type_code
49756 ,l_component_appl_id
49757 ,l_amb_context_code
49758 ,l_entity_code
49759 ,l_event_class_code
49760 )
49761 ,p_token_3 => 'OWNER'
49762 ,p_value_3 => xla_lookups_pkg.get_meaning(
49763 p_lookup_type => 'XLA_OWNER_TYPE'
49764 ,p_lookup_code => l_component_type_code
49765 )
49766 ,p_token_4 => 'PRODUCT_NAME'
49767 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49768 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49769 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49770 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49771 ,p_ae_header_id => NULL
49772 );
49773
49774 IF (C_LEVEL_ERROR>= g_log_level) THEN
49775 trace
49776 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49777 ,p_level => C_LEVEL_ERROR
49778 ,p_module => l_log_module);
49779 END IF;
49780 END IF;
49781 END IF;
49782 --
49783 --
49784 ------------------------------------------------------------------------------------------------
49785 -- 4219869 Business Flow
49786 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49787 -- Prior Entry. Currently, the following code is always generated.
49788 ------------------------------------------------------------------------------------------------
49789 XLA_AE_LINES_PKG.ValidateCurrentLine;
49790
49791 ------------------------------------------------------------------------------------
49792 -- 4219869 Business Flow
49793 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49794 ------------------------------------------------------------------------------------
49795 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49796
49797 ----------------------------------------------------------------------------------
49798 -- 4219869 Business Flow
49799 -- Update journal entry status -- Need to generate this within IF <condition>
49800 ----------------------------------------------------------------------------------
49801 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49802 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49803 ,p_balance_type_code => l_balance_type_code
49804 );
49805
49806 -------------------------------------------------------------------------------------------
49807 -- 4262811 - Generate the Accrual Reversal lines
49808 -------------------------------------------------------------------------------------------
49809 BEGIN
49813 l_acc_rev_flag := 'N';
49810 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49811 (g_array_event(p_event_id).array_value_num('header_index'));
49812 IF l_acc_rev_flag IS NULL THEN
49814 END IF;
49815 EXCEPTION
49816 WHEN OTHERS THEN
49817 l_acc_rev_flag := 'N';
49818 END;
49819 --
49820 IF (l_acc_rev_flag = 'Y') THEN
49821
49822 -- 4645092 ------------------------------------------------------------------------------
49823 -- To allow MPA report to determine if it should generate report process
49824 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49825 ------------------------------------------------------------------------------------------
49826
49827 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49828 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49829 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
49830 -- call ADRs
49831 -- Bug 4922099
49832 --
49833 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49834 (NVL(l_actual_upg_option, 'N') = 'O') OR
49835 (NVL(l_enc_upg_option, 'N') = 'O')
49836 )
49837 THEN
49838 NULL;
49839 --
49840 --
49841
49842 l_ccid := AcctDerRule_14(
49843 p_application_id => p_application_id
49844 , p_ae_header_id => l_ae_header_id
49845 , p_source_1 => p_source_1
49846 , p_source_2 => p_source_2
49847 , x_transaction_coa_id => l_adr_transaction_coa_id
49848 , x_accounting_coa_id => l_adr_accounting_coa_id
49849 , x_value_type_code => l_adr_value_type_code
49850 , p_side => 'NA'
49851 );
49852
49853 xla_ae_lines_pkg.set_ccid(
49854 p_code_combination_id => l_ccid
49855 , p_value_type_code => l_adr_value_type_code
49856 , p_transaction_coa_id => l_adr_transaction_coa_id
49857 , p_accounting_coa_id => l_adr_accounting_coa_id
49858 , p_adr_code => 'ICACC'
49859 , p_adr_type_code => 'S'
49860 , p_component_type => l_component_type
49861 , p_component_code => l_component_code
49862 , p_component_type_code => l_component_type_code
49863 , p_component_appl_id => l_component_appl_id
49864 , p_amb_context_code => l_amb_context_code
49865 , p_side => 'NA'
49866 );
49867
49868
49869 --
49870 --
49871 END IF;
49872
49873 --
49874 -- Update the line information that should be overwritten
49875 --
49876 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49877 p_header_num => 1);
49878 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
49879
49880 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49881
49882 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
49883 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49884 END IF;
49885
49886 --
49887 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49888 --
49889 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49890 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
49891 ELSE
49892 ---------------------------------------------------------------------------------------------------
49893 -- 4262811a Switch Sign
49894 ---------------------------------------------------------------------------------------------------
49895 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
49896 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49897 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49898 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49899 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49900 -- 5132302
49901 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49902 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49903
49904 END IF;
49905
49906 -- 4955764
49907 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49908 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49909
49910
49911 XLA_AE_LINES_PKG.ValidateCurrentLine;
49912 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49913
49914 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49915 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49916 ,p_balance_type_code => l_balance_type_code);
49917
49918 END IF;
49919
49920 -----------------------------------------------------------------------------------------
49921 -- 4262811 Multiperiod Accounting
49925
49922 -----------------------------------------------------------------------------------------
49923 -- No MPA option is assigned.
49924
49926 END IF;
49927 END IF;
49928 --
49929
49930 --
49931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49932 trace
49933 (p_msg => 'END of AcctLineType_122'
49934 ,p_level => C_LEVEL_PROCEDURE
49935 ,p_module => l_log_module);
49936 END IF;
49937 --
49938 EXCEPTION
49939 WHEN xla_exceptions_pkg.application_exception THEN
49940 RAISE;
49941 WHEN OTHERS THEN
49942 xla_exceptions_pkg.raise_message
49943 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_122');
49944 END AcctLineType_122;
49945 --
49946
49947 ---------------------------------------
49948 --
49949 -- PRIVATE FUNCTION
49950 -- AcctLineType_123
49951 --
49952 ---------------------------------------
49953 PROCEDURE AcctLineType_123 (
49954 p_application_id IN NUMBER
49955 ,p_event_id IN NUMBER
49956 ,p_calculate_acctd_flag IN VARCHAR2
49957 ,p_calculate_g_l_flag IN VARCHAR2
49958 ,p_actual_flag IN OUT VARCHAR2
49959 ,p_balance_type_code OUT VARCHAR2
49960 ,p_gain_or_loss_ref OUT VARCHAR2
49961
49962 --Transaction Account
49963 , p_source_1 IN NUMBER
49964 --Journal Line Type
49965 , p_source_2 IN VARCHAR2
49966 --Entered Amount
49967 , p_source_3 IN NUMBER
49968 --First Distribution Identifier
49969 , p_source_5 IN NUMBER
49970 --Distribution Type
49971 , p_source_6 IN VARCHAR2
49972 --Currency Code
49973 , p_source_7 IN VARCHAR2
49974 --Currency Conversion Date
49975 , p_source_8 IN DATE
49976 --Currency Conversion Rate
49977 , p_source_9 IN NUMBER
49978 --Currency Conversion Type
49979 , p_source_10 IN VARCHAR2
49980 --Accounted Amount
49981 , p_source_11 IN NUMBER
49982 )
49983 IS
49984
49985 l_component_type VARCHAR2(80);
49986 l_component_code VARCHAR2(30);
49987 l_component_type_code VARCHAR2(1);
49988 l_component_appl_id INTEGER;
49989 l_amb_context_code VARCHAR2(30);
49990 l_entity_code VARCHAR2(30);
49991 l_event_class_code VARCHAR2(30);
49992 l_ae_header_id NUMBER;
49993 l_event_type_code VARCHAR2(30);
49994 l_line_definition_code VARCHAR2(30);
49995 l_line_definition_owner_code VARCHAR2(1);
49996 --
49997 -- adr variables
49998 l_segment VARCHAR2(30);
49999 l_ccid NUMBER;
50000 l_adr_transaction_coa_id NUMBER;
50001 l_adr_accounting_coa_id NUMBER;
50002 l_adr_flexfield_segment_code VARCHAR2(30);
50003 l_adr_flex_value_set_id NUMBER;
50004 l_adr_value_type_code VARCHAR2(30);
50005 l_adr_value_combination_id NUMBER;
50006 l_adr_value_segment_code VARCHAR2(30);
50007
50008 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
50009 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
50010 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
50011 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
50012
50013 -- 4262811 Variables ------------------------------------------------------------------------------------------
50014 l_entered_amt_idx NUMBER;
50015 l_accted_amt_idx NUMBER;
50016 l_acc_rev_flag VARCHAR2(1);
50017 l_accrual_line_num NUMBER;
50018 l_tmp_amt NUMBER;
50019 l_acc_rev_natural_side_code VARCHAR2(1);
50020
50021 l_num_entries NUMBER;
50022 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
50023 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
50024 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
50025 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
50026 l_recog_line_1 NUMBER;
50027 l_recog_line_2 NUMBER;
50028
50029 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
50030 l_bflow_applied_to_amt NUMBER; -- 5132302
50031 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
50032
50033 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50034
50035 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
50036 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
50037
50038 ---------------------------------------------------------------------------------------------------------------
50039
50040
50041 --
50042 -- bulk performance
50043 --
50044 l_balance_type_code VARCHAR2(1);
50045 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
50046 l_log_module VARCHAR2(240);
50047
50048 --
50049 -- Upgrade strategy
50050 --
50051 l_actual_upg_option VARCHAR2(1);
50052 l_enc_upg_option VARCHAR2(1);
50053
50054 --
50055 BEGIN
50056 --
50057 IF g_log_enabled THEN
50058 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
50059 END IF;
50060 --
50061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50062
50066 ,p_module => l_log_module);
50063 trace
50064 (p_msg => 'BEGIN of AcctLineType_123'
50065 ,p_level => C_LEVEL_PROCEDURE
50067
50068 END IF;
50069 --
50070 l_component_type := 'AMB_JLT';
50071 l_component_code := 'ICACC';
50072 l_component_type_code := 'S';
50073 l_component_appl_id := 555;
50074 l_amb_context_code := 'DEFAULT';
50075 l_entity_code := 'INVENTORY';
50076 l_event_class_code := 'LOG_INTERCOMPANY';
50077 l_event_type_code := 'LOG_IC_RCPT_RETURN';
50078 l_line_definition_owner_code := 'S';
50079 l_line_definition_code := 'LOG_IC_RCPT_RETURN';
50080 --
50081 l_balance_type_code := 'A';
50082 l_segment := NULL;
50083 l_ccid := NULL;
50084 l_adr_transaction_coa_id := NULL;
50085 l_adr_accounting_coa_id := NULL;
50086 l_adr_flexfield_segment_code := NULL;
50087 l_adr_flex_value_set_id := NULL;
50088 l_adr_value_type_code := NULL;
50089 l_adr_value_combination_id := NULL;
50090 l_adr_value_segment_code := NULL;
50091
50092 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
50093 l_bflow_class_code := ''; -- 4219869 Business Flow
50094 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
50095 l_budgetary_control_flag := 'N';
50096
50097 l_bflow_applied_to_amt_idx := NULL; -- 5132302
50098 l_bflow_applied_to_amt := NULL; -- 5132302
50099 l_entered_amt_idx := NULL; -- 4262811
50100 l_accted_amt_idx := NULL; -- 4262811
50101 l_acc_rev_flag := NULL; -- 4262811
50102 l_accrual_line_num := NULL; -- 4262811
50103 l_tmp_amt := NULL; -- 4262811
50104 --
50105
50106 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50107 l_balance_type_code <> 'B' THEN
50108 IF NVL(p_source_2,'
50109 ') = 'ICACC'
50110 THEN
50111
50112 --
50113 XLA_AE_LINES_PKG.SetNewLine;
50114
50115 p_balance_type_code := l_balance_type_code;
50116 -- set the flag so later we will know whether the gain loss line needs to be created
50117
50118 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50119 p_actual_flag :='A';
50120 END IF;
50121
50122 --
50123 -- bulk performance
50124 --
50125 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50126 p_header_num => 0); -- 4262811
50127 --
50128 -- set accounting line options
50129 --
50130 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50131 p_natural_side_code => 'D'
50132 , p_gain_or_loss_flag => 'N'
50133 , p_gl_transfer_mode_code => 'D'
50134 , p_acct_entry_type_code => 'A'
50135 , p_switch_side_flag => 'Y'
50136 , p_merge_duplicate_code => 'W'
50137 );
50138 --
50139 l_acc_rev_natural_side_code := 'C'; -- 4262811
50140 --
50141 --
50142 -- set accounting line type info
50143 --
50144 xla_ae_lines_pkg.SetAcctLineType
50145 (p_component_type => l_component_type
50146 ,p_event_type_code => l_event_type_code
50147 ,p_line_definition_owner_code => l_line_definition_owner_code
50148 ,p_line_definition_code => l_line_definition_code
50149 ,p_accounting_line_code => l_component_code
50150 ,p_accounting_line_type_code => l_component_type_code
50151 ,p_accounting_line_appl_id => l_component_appl_id
50152 ,p_amb_context_code => l_amb_context_code
50153 ,p_entity_code => l_entity_code
50154 ,p_event_class_code => l_event_class_code);
50155 --
50156 -- set accounting class
50157 --
50158 xla_ae_lines_pkg.SetAcctClass(
50159 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
50160 , p_ae_header_id => l_ae_header_id
50161 );
50162
50163 --
50164 -- set rounding class
50165 --
50166 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50167 'INTERCOMPANY_ACCRUAL';
50168
50169 --
50170 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50171 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50172 --
50173 -- bulk performance
50174 --
50175 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50176
50177 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50178 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50179
50180 -- 4955764
50181 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50182 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50183
50184 -- 4458381 Public Sector Enh
50185
50186 --
50187 -- set accounting attributes for the line type
50188 --
50189 l_entered_amt_idx := 3;
50193 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
50190 l_accted_amt_idx := 8;
50191 l_bflow_applied_to_amt_idx := NULL; -- 5132302
50192 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50194 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50195 l_rec_acct_attrs.array_char_value(2) := p_source_6;
50196 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50197 l_rec_acct_attrs.array_num_value(3) := p_source_3;
50198 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50199 l_rec_acct_attrs.array_char_value(4) := p_source_7;
50200 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50201 l_rec_acct_attrs.array_date_value(5) := p_source_8;
50202 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50203 l_rec_acct_attrs.array_num_value(6) := p_source_9;
50204 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50205 l_rec_acct_attrs.array_char_value(7) := p_source_10;
50206 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50207 l_rec_acct_attrs.array_num_value(8) := p_source_11;
50208
50209 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50210 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50211
50212 ---------------------------------------------------------------------------------------------------------------
50213 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50214 ---------------------------------------------------------------------------------------------------------------
50215 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50216
50217 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50218 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50219
50220 IF xla_accounting_cache_pkg.GetValueChar
50221 (p_source_code => 'LEDGER_CATEGORY_CODE'
50222 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50223 AND l_bflow_method_code = 'PRIOR_ENTRY'
50224 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50225 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50226 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50227 )
50228 THEN
50229 xla_ae_lines_pkg.BflowUpgEntry
50230 (p_business_method_code => l_bflow_method_code
50231 ,p_business_class_code => l_bflow_class_code
50232 ,p_balance_type => l_balance_type_code);
50233 ELSE
50234 NULL;
50235 -- No business flow processing for business flow method of NONE.
50236 END IF;
50237
50238 --
50239 -- call analytical criteria
50240 --
50241
50242 --
50243 -- call description
50244 --
50245 -- No description or it is inherited.
50246 --
50247 -- call ADRs
50248 -- Bug 4922099
50249 --
50250 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50251 (NVL(l_actual_upg_option, 'N') = 'O') OR
50252 (NVL(l_enc_upg_option, 'N') = 'O')
50253 )
50254 THEN
50255 NULL;
50256 --
50257 --
50258
50259 l_ccid := AcctDerRule_14(
50260 p_application_id => p_application_id
50261 , p_ae_header_id => l_ae_header_id
50262 , p_source_1 => p_source_1
50263 , p_source_2 => p_source_2
50264 , x_transaction_coa_id => l_adr_transaction_coa_id
50265 , x_accounting_coa_id => l_adr_accounting_coa_id
50266 , x_value_type_code => l_adr_value_type_code
50267 , p_side => 'NA'
50268 );
50269
50270 xla_ae_lines_pkg.set_ccid(
50271 p_code_combination_id => l_ccid
50272 , p_value_type_code => l_adr_value_type_code
50273 , p_transaction_coa_id => l_adr_transaction_coa_id
50274 , p_accounting_coa_id => l_adr_accounting_coa_id
50275 , p_adr_code => 'ICACC'
50276 , p_adr_type_code => 'S'
50277 , p_component_type => l_component_type
50278 , p_component_code => l_component_code
50279 , p_component_type_code => l_component_type_code
50280 , p_component_appl_id => l_component_appl_id
50281 , p_amb_context_code => l_amb_context_code
50282 , p_side => 'NA'
50283 );
50284
50285
50286 --
50287 --
50288 END IF;
50289 --
50290 -- Bug 4922099
50291 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50292 (NVL(l_enc_upg_option, 'N') = 'O')
50293 ) AND
50294 (l_bflow_method_code = 'PRIOR_ENTRY')
50295 )
50296 THEN
50297 IF
50298 --
50299 1 = 2
50300 --
50301 THEN
50302 xla_accounting_err_pkg.build_message
50303 (p_appli_s_name => 'XLA'
50304 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50305 ,p_token_1 => 'LINE_NUMBER'
50306 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
50307 ,p_token_2 => 'LINE_TYPE_NAME'
50311 ,l_component_type_code
50308 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
50309 l_component_type
50310 ,l_component_code
50312 ,l_component_appl_id
50313 ,l_amb_context_code
50314 ,l_entity_code
50315 ,l_event_class_code
50316 )
50317 ,p_token_3 => 'OWNER'
50318 ,p_value_3 => xla_lookups_pkg.get_meaning(
50319 p_lookup_type => 'XLA_OWNER_TYPE'
50320 ,p_lookup_code => l_component_type_code
50321 )
50322 ,p_token_4 => 'PRODUCT_NAME'
50323 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50324 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50325 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50326 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50327 ,p_ae_header_id => NULL
50328 );
50329
50330 IF (C_LEVEL_ERROR>= g_log_level) THEN
50331 trace
50332 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50333 ,p_level => C_LEVEL_ERROR
50334 ,p_module => l_log_module);
50335 END IF;
50336 END IF;
50337 END IF;
50338 --
50339 --
50340 ------------------------------------------------------------------------------------------------
50341 -- 4219869 Business Flow
50342 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50343 -- Prior Entry. Currently, the following code is always generated.
50344 ------------------------------------------------------------------------------------------------
50345 XLA_AE_LINES_PKG.ValidateCurrentLine;
50346
50347 ------------------------------------------------------------------------------------
50348 -- 4219869 Business Flow
50349 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50350 ------------------------------------------------------------------------------------
50351 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50352
50353 ----------------------------------------------------------------------------------
50354 -- 4219869 Business Flow
50355 -- Update journal entry status -- Need to generate this within IF <condition>
50356 ----------------------------------------------------------------------------------
50357 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50358 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50359 ,p_balance_type_code => l_balance_type_code
50360 );
50361
50362 -------------------------------------------------------------------------------------------
50363 -- 4262811 - Generate the Accrual Reversal lines
50364 -------------------------------------------------------------------------------------------
50365 BEGIN
50366 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50367 (g_array_event(p_event_id).array_value_num('header_index'));
50368 IF l_acc_rev_flag IS NULL THEN
50369 l_acc_rev_flag := 'N';
50370 END IF;
50371 EXCEPTION
50372 WHEN OTHERS THEN
50373 l_acc_rev_flag := 'N';
50374 END;
50375 --
50376 IF (l_acc_rev_flag = 'Y') THEN
50377
50378 -- 4645092 ------------------------------------------------------------------------------
50379 -- To allow MPA report to determine if it should generate report process
50380 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50381 ------------------------------------------------------------------------------------------
50382
50383 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50384 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50385 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
50386 -- call ADRs
50387 -- Bug 4922099
50388 --
50389 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50390 (NVL(l_actual_upg_option, 'N') = 'O') OR
50391 (NVL(l_enc_upg_option, 'N') = 'O')
50392 )
50393 THEN
50394 NULL;
50395 --
50396 --
50397
50398 l_ccid := AcctDerRule_14(
50399 p_application_id => p_application_id
50400 , p_ae_header_id => l_ae_header_id
50401 , p_source_1 => p_source_1
50405 , x_value_type_code => l_adr_value_type_code
50402 , p_source_2 => p_source_2
50403 , x_transaction_coa_id => l_adr_transaction_coa_id
50404 , x_accounting_coa_id => l_adr_accounting_coa_id
50406 , p_side => 'NA'
50407 );
50408
50409 xla_ae_lines_pkg.set_ccid(
50410 p_code_combination_id => l_ccid
50411 , p_value_type_code => l_adr_value_type_code
50412 , p_transaction_coa_id => l_adr_transaction_coa_id
50413 , p_accounting_coa_id => l_adr_accounting_coa_id
50414 , p_adr_code => 'ICACC'
50415 , p_adr_type_code => 'S'
50416 , p_component_type => l_component_type
50417 , p_component_code => l_component_code
50418 , p_component_type_code => l_component_type_code
50419 , p_component_appl_id => l_component_appl_id
50420 , p_amb_context_code => l_amb_context_code
50421 , p_side => 'NA'
50422 );
50423
50424
50425 --
50426 --
50427 END IF;
50428
50429 --
50430 -- Update the line information that should be overwritten
50431 --
50432 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50433 p_header_num => 1);
50434 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
50435
50436 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50437
50438 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
50439 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50440 END IF;
50441
50442 --
50443 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50444 --
50445 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50446 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
50447 ELSE
50448 ---------------------------------------------------------------------------------------------------
50449 -- 4262811a Switch Sign
50450 ---------------------------------------------------------------------------------------------------
50451 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
50452 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50453 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50454 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50455 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50456 -- 5132302
50457 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50458 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50459
50460 END IF;
50461
50462 -- 4955764
50463 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50464 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50465
50466
50467 XLA_AE_LINES_PKG.ValidateCurrentLine;
50468 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50469
50470 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50471 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50472 ,p_balance_type_code => l_balance_type_code);
50473
50474 END IF;
50475
50476 -----------------------------------------------------------------------------------------
50477 -- 4262811 Multiperiod Accounting
50478 -----------------------------------------------------------------------------------------
50479 -- No MPA option is assigned.
50480
50481
50482 END IF;
50483 END IF;
50484 --
50485
50486 --
50487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50488 trace
50489 (p_msg => 'END of AcctLineType_123'
50490 ,p_level => C_LEVEL_PROCEDURE
50491 ,p_module => l_log_module);
50492 END IF;
50493 --
50494 EXCEPTION
50495 WHEN xla_exceptions_pkg.application_exception THEN
50496 RAISE;
50497 WHEN OTHERS THEN
50498 xla_exceptions_pkg.raise_message
50499 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_123');
50500 END AcctLineType_123;
50501 --
50502
50503 ---------------------------------------
50504 --
50505 -- PRIVATE FUNCTION
50506 -- AcctLineType_124
50507 --
50508 ---------------------------------------
50509 PROCEDURE AcctLineType_124 (
50510 p_application_id IN NUMBER
50511 ,p_event_id IN NUMBER
50512 ,p_calculate_acctd_flag IN VARCHAR2
50513 ,p_calculate_g_l_flag IN VARCHAR2
50514 ,p_actual_flag IN OUT VARCHAR2
50515 ,p_balance_type_code OUT VARCHAR2
50516 ,p_gain_or_loss_ref OUT VARCHAR2
50517
50518 --Transaction Account
50519 , p_source_1 IN NUMBER
50520 --Journal Line Type
50521 , p_source_2 IN VARCHAR2
50522 --Entered Amount
50523 , p_source_3 IN NUMBER
50524 --First Distribution Identifier
50528 --Currency Code
50525 , p_source_5 IN NUMBER
50526 --Distribution Type
50527 , p_source_6 IN VARCHAR2
50529 , p_source_7 IN VARCHAR2
50530 --Currency Conversion Date
50531 , p_source_8 IN DATE
50532 --Currency Conversion Rate
50533 , p_source_9 IN NUMBER
50534 --Currency Conversion Type
50535 , p_source_10 IN VARCHAR2
50536 --Accounted Amount
50537 , p_source_11 IN NUMBER
50538 )
50539 IS
50540
50541 l_component_type VARCHAR2(80);
50542 l_component_code VARCHAR2(30);
50543 l_component_type_code VARCHAR2(1);
50544 l_component_appl_id INTEGER;
50545 l_amb_context_code VARCHAR2(30);
50546 l_entity_code VARCHAR2(30);
50547 l_event_class_code VARCHAR2(30);
50548 l_ae_header_id NUMBER;
50549 l_event_type_code VARCHAR2(30);
50550 l_line_definition_code VARCHAR2(30);
50551 l_line_definition_owner_code VARCHAR2(1);
50552 --
50553 -- adr variables
50554 l_segment VARCHAR2(30);
50555 l_ccid NUMBER;
50556 l_adr_transaction_coa_id NUMBER;
50557 l_adr_accounting_coa_id NUMBER;
50558 l_adr_flexfield_segment_code VARCHAR2(30);
50559 l_adr_flex_value_set_id NUMBER;
50560 l_adr_value_type_code VARCHAR2(30);
50561 l_adr_value_combination_id NUMBER;
50562 l_adr_value_segment_code VARCHAR2(30);
50563
50564 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
50565 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
50566 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
50567 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
50568
50569 -- 4262811 Variables ------------------------------------------------------------------------------------------
50570 l_entered_amt_idx NUMBER;
50571 l_accted_amt_idx NUMBER;
50572 l_acc_rev_flag VARCHAR2(1);
50573 l_accrual_line_num NUMBER;
50574 l_tmp_amt NUMBER;
50575 l_acc_rev_natural_side_code VARCHAR2(1);
50576
50577 l_num_entries NUMBER;
50578 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
50579 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
50580 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
50581 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
50582 l_recog_line_1 NUMBER;
50583 l_recog_line_2 NUMBER;
50584
50585 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
50586 l_bflow_applied_to_amt NUMBER; -- 5132302
50587 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
50588
50589 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50590
50591 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
50592 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
50593
50594 ---------------------------------------------------------------------------------------------------------------
50595
50596
50597 --
50598 -- bulk performance
50599 --
50600 l_balance_type_code VARCHAR2(1);
50601 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
50602 l_log_module VARCHAR2(240);
50603
50604 --
50605 -- Upgrade strategy
50606 --
50607 l_actual_upg_option VARCHAR2(1);
50608 l_enc_upg_option VARCHAR2(1);
50609
50610 --
50611 BEGIN
50612 --
50613 IF g_log_enabled THEN
50614 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
50615 END IF;
50616 --
50617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50618
50619 trace
50620 (p_msg => 'BEGIN of AcctLineType_124'
50621 ,p_level => C_LEVEL_PROCEDURE
50622 ,p_module => l_log_module);
50623
50624 END IF;
50625 --
50626 l_component_type := 'AMB_JLT';
50627 l_component_code := 'ICCOGS';
50628 l_component_type_code := 'S';
50629 l_component_appl_id := 555;
50630 l_amb_context_code := 'DEFAULT';
50631 l_entity_code := 'INVENTORY';
50632 l_event_class_code := 'LOG_INTERCOMPANY';
50633 l_event_type_code := 'LOG_IC_SALES_ISSUE';
50634 l_line_definition_owner_code := 'S';
50635 l_line_definition_code := 'LOG_IC_SALES_ISSUE';
50636 --
50637 l_balance_type_code := 'A';
50638 l_segment := NULL;
50639 l_ccid := NULL;
50640 l_adr_transaction_coa_id := NULL;
50641 l_adr_accounting_coa_id := NULL;
50642 l_adr_flexfield_segment_code := NULL;
50643 l_adr_flex_value_set_id := NULL;
50644 l_adr_value_type_code := NULL;
50645 l_adr_value_combination_id := NULL;
50646 l_adr_value_segment_code := NULL;
50647
50648 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
50649 l_bflow_class_code := ''; -- 4219869 Business Flow
50650 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
50651 l_budgetary_control_flag := 'N';
50652
50653 l_bflow_applied_to_amt_idx := NULL; -- 5132302
50654 l_bflow_applied_to_amt := NULL; -- 5132302
50658 l_accrual_line_num := NULL; -- 4262811
50655 l_entered_amt_idx := NULL; -- 4262811
50656 l_accted_amt_idx := NULL; -- 4262811
50657 l_acc_rev_flag := NULL; -- 4262811
50659 l_tmp_amt := NULL; -- 4262811
50660 --
50661
50662 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50663 l_balance_type_code <> 'B' THEN
50664 IF NVL(p_source_2,'
50665 ') = 'ICCOGS'
50666 THEN
50667
50668 --
50669 XLA_AE_LINES_PKG.SetNewLine;
50670
50671 p_balance_type_code := l_balance_type_code;
50672 -- set the flag so later we will know whether the gain loss line needs to be created
50673
50674 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50675 p_actual_flag :='A';
50676 END IF;
50677
50678 --
50679 -- bulk performance
50680 --
50681 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50682 p_header_num => 0); -- 4262811
50683 --
50684 -- set accounting line options
50685 --
50686 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50687 p_natural_side_code => 'D'
50688 , p_gain_or_loss_flag => 'N'
50689 , p_gl_transfer_mode_code => 'D'
50690 , p_acct_entry_type_code => 'A'
50691 , p_switch_side_flag => 'Y'
50692 , p_merge_duplicate_code => 'W'
50693 );
50694 --
50695 l_acc_rev_natural_side_code := 'C'; -- 4262811
50696 --
50697 --
50698 -- set accounting line type info
50699 --
50700 xla_ae_lines_pkg.SetAcctLineType
50701 (p_component_type => l_component_type
50702 ,p_event_type_code => l_event_type_code
50703 ,p_line_definition_owner_code => l_line_definition_owner_code
50704 ,p_line_definition_code => l_line_definition_code
50705 ,p_accounting_line_code => l_component_code
50706 ,p_accounting_line_type_code => l_component_type_code
50707 ,p_accounting_line_appl_id => l_component_appl_id
50708 ,p_amb_context_code => l_amb_context_code
50709 ,p_entity_code => l_entity_code
50710 ,p_event_class_code => l_event_class_code);
50711 --
50712 -- set accounting class
50713 --
50714 xla_ae_lines_pkg.SetAcctClass(
50715 p_accounting_class_code => 'INTERCOMPANY_COGS'
50716 , p_ae_header_id => l_ae_header_id
50717 );
50718
50719 --
50720 -- set rounding class
50721 --
50722 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50723 'INTERCOMPANY_COGS';
50724
50725 --
50726 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50727 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50728 --
50729 -- bulk performance
50730 --
50731 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50732
50733 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50734 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50735
50736 -- 4955764
50737 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50738 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50739
50740 -- 4458381 Public Sector Enh
50741
50742 --
50743 -- set accounting attributes for the line type
50744 --
50745 l_entered_amt_idx := 3;
50746 l_accted_amt_idx := 8;
50747 l_bflow_applied_to_amt_idx := NULL; -- 5132302
50748 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
50749 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
50750 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
50751 l_rec_acct_attrs.array_char_value(2) := p_source_6;
50752 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
50753 l_rec_acct_attrs.array_num_value(3) := p_source_3;
50754 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
50755 l_rec_acct_attrs.array_char_value(4) := p_source_7;
50756 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
50757 l_rec_acct_attrs.array_date_value(5) := p_source_8;
50758 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
50759 l_rec_acct_attrs.array_num_value(6) := p_source_9;
50760 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
50761 l_rec_acct_attrs.array_char_value(7) := p_source_10;
50762 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
50763 l_rec_acct_attrs.array_num_value(8) := p_source_11;
50764
50765 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50766 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50767
50768 ---------------------------------------------------------------------------------------------------------------
50769 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50773 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50770 ---------------------------------------------------------------------------------------------------------------
50771 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50772
50774 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50775
50776 IF xla_accounting_cache_pkg.GetValueChar
50777 (p_source_code => 'LEDGER_CATEGORY_CODE'
50778 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50779 AND l_bflow_method_code = 'PRIOR_ENTRY'
50780 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50781 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50782 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50783 )
50784 THEN
50785 xla_ae_lines_pkg.BflowUpgEntry
50786 (p_business_method_code => l_bflow_method_code
50787 ,p_business_class_code => l_bflow_class_code
50788 ,p_balance_type => l_balance_type_code);
50789 ELSE
50790 NULL;
50791 -- No business flow processing for business flow method of NONE.
50792 END IF;
50793
50794 --
50795 -- call analytical criteria
50796 --
50797
50798 --
50799 -- call description
50800 --
50801 -- No description or it is inherited.
50802 --
50803 -- call ADRs
50804 -- Bug 4922099
50805 --
50806 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50807 (NVL(l_actual_upg_option, 'N') = 'O') OR
50808 (NVL(l_enc_upg_option, 'N') = 'O')
50809 )
50810 THEN
50811 NULL;
50812 --
50813 --
50814
50815 l_ccid := AcctDerRule_15(
50816 p_application_id => p_application_id
50817 , p_ae_header_id => l_ae_header_id
50818 , p_source_1 => p_source_1
50819 , p_source_2 => p_source_2
50820 , x_transaction_coa_id => l_adr_transaction_coa_id
50821 , x_accounting_coa_id => l_adr_accounting_coa_id
50822 , x_value_type_code => l_adr_value_type_code
50823 , p_side => 'NA'
50824 );
50825
50826 xla_ae_lines_pkg.set_ccid(
50827 p_code_combination_id => l_ccid
50828 , p_value_type_code => l_adr_value_type_code
50829 , p_transaction_coa_id => l_adr_transaction_coa_id
50830 , p_accounting_coa_id => l_adr_accounting_coa_id
50831 , p_adr_code => 'ICCOGS'
50832 , p_adr_type_code => 'S'
50833 , p_component_type => l_component_type
50834 , p_component_code => l_component_code
50835 , p_component_type_code => l_component_type_code
50836 , p_component_appl_id => l_component_appl_id
50837 , p_amb_context_code => l_amb_context_code
50838 , p_side => 'NA'
50839 );
50840
50841
50842 --
50843 --
50844 END IF;
50845 --
50846 -- Bug 4922099
50847 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50848 (NVL(l_enc_upg_option, 'N') = 'O')
50849 ) AND
50850 (l_bflow_method_code = 'PRIOR_ENTRY')
50851 )
50852 THEN
50853 IF
50854 --
50855 1 = 2
50856 --
50857 THEN
50858 xla_accounting_err_pkg.build_message
50859 (p_appli_s_name => 'XLA'
50860 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50861 ,p_token_1 => 'LINE_NUMBER'
50862 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
50863 ,p_token_2 => 'LINE_TYPE_NAME'
50864 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
50865 l_component_type
50866 ,l_component_code
50867 ,l_component_type_code
50868 ,l_component_appl_id
50869 ,l_amb_context_code
50870 ,l_entity_code
50871 ,l_event_class_code
50872 )
50873 ,p_token_3 => 'OWNER'
50874 ,p_value_3 => xla_lookups_pkg.get_meaning(
50875 p_lookup_type => 'XLA_OWNER_TYPE'
50876 ,p_lookup_code => l_component_type_code
50877 )
50878 ,p_token_4 => 'PRODUCT_NAME'
50882 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50879 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50880 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50881 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50883 ,p_ae_header_id => NULL
50884 );
50885
50886 IF (C_LEVEL_ERROR>= g_log_level) THEN
50887 trace
50888 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50889 ,p_level => C_LEVEL_ERROR
50890 ,p_module => l_log_module);
50891 END IF;
50892 END IF;
50893 END IF;
50894 --
50895 --
50896 ------------------------------------------------------------------------------------------------
50897 -- 4219869 Business Flow
50898 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50899 -- Prior Entry. Currently, the following code is always generated.
50900 ------------------------------------------------------------------------------------------------
50901 XLA_AE_LINES_PKG.ValidateCurrentLine;
50902
50903 ------------------------------------------------------------------------------------
50904 -- 4219869 Business Flow
50905 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50906 ------------------------------------------------------------------------------------
50907 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50908
50909 ----------------------------------------------------------------------------------
50910 -- 4219869 Business Flow
50911 -- Update journal entry status -- Need to generate this within IF <condition>
50912 ----------------------------------------------------------------------------------
50913 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50914 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50915 ,p_balance_type_code => l_balance_type_code
50916 );
50917
50918 -------------------------------------------------------------------------------------------
50919 -- 4262811 - Generate the Accrual Reversal lines
50920 -------------------------------------------------------------------------------------------
50921 BEGIN
50922 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50923 (g_array_event(p_event_id).array_value_num('header_index'));
50924 IF l_acc_rev_flag IS NULL THEN
50925 l_acc_rev_flag := 'N';
50926 END IF;
50927 EXCEPTION
50928 WHEN OTHERS THEN
50929 l_acc_rev_flag := 'N';
50930 END;
50931 --
50932 IF (l_acc_rev_flag = 'Y') THEN
50933
50934 -- 4645092 ------------------------------------------------------------------------------
50935 -- To allow MPA report to determine if it should generate report process
50936 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50937 ------------------------------------------------------------------------------------------
50938
50939 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50940 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50941 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
50942 -- call ADRs
50943 -- Bug 4922099
50944 --
50945 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50946 (NVL(l_actual_upg_option, 'N') = 'O') OR
50947 (NVL(l_enc_upg_option, 'N') = 'O')
50948 )
50949 THEN
50950 NULL;
50951 --
50952 --
50953
50954 l_ccid := AcctDerRule_15(
50955 p_application_id => p_application_id
50956 , p_ae_header_id => l_ae_header_id
50957 , p_source_1 => p_source_1
50958 , p_source_2 => p_source_2
50959 , x_transaction_coa_id => l_adr_transaction_coa_id
50960 , x_accounting_coa_id => l_adr_accounting_coa_id
50961 , x_value_type_code => l_adr_value_type_code
50962 , p_side => 'NA'
50963 );
50964
50965 xla_ae_lines_pkg.set_ccid(
50966 p_code_combination_id => l_ccid
50967 , p_value_type_code => l_adr_value_type_code
50968 , p_transaction_coa_id => l_adr_transaction_coa_id
50969 , p_accounting_coa_id => l_adr_accounting_coa_id
50970 , p_adr_code => 'ICCOGS'
50971 , p_adr_type_code => 'S'
50972 , p_component_type => l_component_type
50973 , p_component_code => l_component_code
50974 , p_component_type_code => l_component_type_code
50975 , p_component_appl_id => l_component_appl_id
50976 , p_amb_context_code => l_amb_context_code
50977 , p_side => 'NA'
50978 );
50979
50980
50981 --
50982 --
50983 END IF;
50984
50985 --
50986 -- Update the line information that should be overwritten
50987 --
50988 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50989 p_header_num => 1);
50993
50990 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
50991
50992 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50994 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
50995 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50996 END IF;
50997
50998 --
50999 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51000 --
51001 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51002 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
51003 ELSE
51004 ---------------------------------------------------------------------------------------------------
51005 -- 4262811a Switch Sign
51006 ---------------------------------------------------------------------------------------------------
51007 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
51008 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51009 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51010 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51011 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51012 -- 5132302
51013 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51014 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51015
51016 END IF;
51017
51018 -- 4955764
51019 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51020 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51021
51022
51023 XLA_AE_LINES_PKG.ValidateCurrentLine;
51024 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51025
51026 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51027 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51028 ,p_balance_type_code => l_balance_type_code);
51029
51030 END IF;
51031
51032 -----------------------------------------------------------------------------------------
51033 -- 4262811 Multiperiod Accounting
51034 -----------------------------------------------------------------------------------------
51035 -- No MPA option is assigned.
51036
51037
51038 END IF;
51039 END IF;
51040 --
51041
51042 --
51043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51044 trace
51045 (p_msg => 'END of AcctLineType_124'
51046 ,p_level => C_LEVEL_PROCEDURE
51047 ,p_module => l_log_module);
51048 END IF;
51049 --
51050 EXCEPTION
51051 WHEN xla_exceptions_pkg.application_exception THEN
51052 RAISE;
51053 WHEN OTHERS THEN
51054 xla_exceptions_pkg.raise_message
51055 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_124');
51056 END AcctLineType_124;
51057 --
51058
51059 ---------------------------------------
51060 --
51061 -- PRIVATE FUNCTION
51062 -- AcctLineType_125
51063 --
51064 ---------------------------------------
51065 PROCEDURE AcctLineType_125 (
51066 p_application_id IN NUMBER
51067 ,p_event_id IN NUMBER
51068 ,p_calculate_acctd_flag IN VARCHAR2
51069 ,p_calculate_g_l_flag IN VARCHAR2
51070 ,p_actual_flag IN OUT VARCHAR2
51071 ,p_balance_type_code OUT VARCHAR2
51072 ,p_gain_or_loss_ref OUT VARCHAR2
51073
51074 --Transaction Account
51075 , p_source_1 IN NUMBER
51076 --Journal Line Type
51077 , p_source_2 IN VARCHAR2
51078 --Entered Amount
51079 , p_source_3 IN NUMBER
51080 --First Distribution Identifier
51081 , p_source_5 IN NUMBER
51082 --Distribution Type
51083 , p_source_6 IN VARCHAR2
51084 --Currency Code
51085 , p_source_7 IN VARCHAR2
51086 --Currency Conversion Date
51087 , p_source_8 IN DATE
51088 --Currency Conversion Rate
51089 , p_source_9 IN NUMBER
51090 --Currency Conversion Type
51091 , p_source_10 IN VARCHAR2
51092 --Accounted Amount
51093 , p_source_11 IN NUMBER
51094 )
51095 IS
51096
51097 l_component_type VARCHAR2(80);
51098 l_component_code VARCHAR2(30);
51099 l_component_type_code VARCHAR2(1);
51100 l_component_appl_id INTEGER;
51101 l_amb_context_code VARCHAR2(30);
51102 l_entity_code VARCHAR2(30);
51103 l_event_class_code VARCHAR2(30);
51104 l_ae_header_id NUMBER;
51105 l_event_type_code VARCHAR2(30);
51106 l_line_definition_code VARCHAR2(30);
51107 l_line_definition_owner_code VARCHAR2(1);
51108 --
51109 -- adr variables
51110 l_segment VARCHAR2(30);
51111 l_ccid NUMBER;
51112 l_adr_transaction_coa_id NUMBER;
51113 l_adr_accounting_coa_id NUMBER;
51114 l_adr_flexfield_segment_code VARCHAR2(30);
51118 l_adr_value_segment_code VARCHAR2(30);
51115 l_adr_flex_value_set_id NUMBER;
51116 l_adr_value_type_code VARCHAR2(30);
51117 l_adr_value_combination_id NUMBER;
51119
51120 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
51121 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
51122 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
51123 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
51124
51125 -- 4262811 Variables ------------------------------------------------------------------------------------------
51126 l_entered_amt_idx NUMBER;
51127 l_accted_amt_idx NUMBER;
51128 l_acc_rev_flag VARCHAR2(1);
51129 l_accrual_line_num NUMBER;
51130 l_tmp_amt NUMBER;
51131 l_acc_rev_natural_side_code VARCHAR2(1);
51132
51133 l_num_entries NUMBER;
51134 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
51135 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
51136 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
51137 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
51138 l_recog_line_1 NUMBER;
51139 l_recog_line_2 NUMBER;
51140
51141 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
51142 l_bflow_applied_to_amt NUMBER; -- 5132302
51143 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
51144
51145 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51146
51147 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
51148 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
51149
51150 ---------------------------------------------------------------------------------------------------------------
51151
51152
51153 --
51154 -- bulk performance
51155 --
51156 l_balance_type_code VARCHAR2(1);
51157 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
51158 l_log_module VARCHAR2(240);
51159
51160 --
51161 -- Upgrade strategy
51162 --
51163 l_actual_upg_option VARCHAR2(1);
51164 l_enc_upg_option VARCHAR2(1);
51165
51166 --
51167 BEGIN
51168 --
51169 IF g_log_enabled THEN
51170 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
51171 END IF;
51172 --
51173 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51174
51175 trace
51176 (p_msg => 'BEGIN of AcctLineType_125'
51177 ,p_level => C_LEVEL_PROCEDURE
51178 ,p_module => l_log_module);
51179
51180 END IF;
51181 --
51182 l_component_type := 'AMB_JLT';
51183 l_component_code := 'ICCOGS';
51184 l_component_type_code := 'S';
51185 l_component_appl_id := 555;
51186 l_amb_context_code := 'DEFAULT';
51187 l_entity_code := 'INVENTORY';
51188 l_event_class_code := 'LOG_INTERCOMPANY';
51189 l_event_type_code := 'LOG_IC_SALES_RETURN';
51190 l_line_definition_owner_code := 'S';
51191 l_line_definition_code := 'LOG_IC_SALES_RETURN';
51192 --
51193 l_balance_type_code := 'A';
51194 l_segment := NULL;
51195 l_ccid := NULL;
51196 l_adr_transaction_coa_id := NULL;
51197 l_adr_accounting_coa_id := NULL;
51198 l_adr_flexfield_segment_code := NULL;
51199 l_adr_flex_value_set_id := NULL;
51200 l_adr_value_type_code := NULL;
51201 l_adr_value_combination_id := NULL;
51202 l_adr_value_segment_code := NULL;
51203
51204 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
51205 l_bflow_class_code := ''; -- 4219869 Business Flow
51206 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
51207 l_budgetary_control_flag := 'N';
51208
51209 l_bflow_applied_to_amt_idx := NULL; -- 5132302
51210 l_bflow_applied_to_amt := NULL; -- 5132302
51211 l_entered_amt_idx := NULL; -- 4262811
51212 l_accted_amt_idx := NULL; -- 4262811
51213 l_acc_rev_flag := NULL; -- 4262811
51214 l_accrual_line_num := NULL; -- 4262811
51215 l_tmp_amt := NULL; -- 4262811
51216 --
51217
51218 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51219 l_balance_type_code <> 'B' THEN
51220 IF NVL(p_source_2,'
51221 ') = 'ICCOGS'
51222 THEN
51223
51224 --
51225 XLA_AE_LINES_PKG.SetNewLine;
51226
51227 p_balance_type_code := l_balance_type_code;
51228 -- set the flag so later we will know whether the gain loss line needs to be created
51229
51230 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51231 p_actual_flag :='A';
51232 END IF;
51233
51234 --
51235 -- bulk performance
51236 --
51237 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51238 p_header_num => 0); -- 4262811
51239 --
51240 -- set accounting line options
51241 --
51242 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51243 p_natural_side_code => 'D'
51247 , p_switch_side_flag => 'Y'
51244 , p_gain_or_loss_flag => 'N'
51245 , p_gl_transfer_mode_code => 'D'
51246 , p_acct_entry_type_code => 'A'
51248 , p_merge_duplicate_code => 'W'
51249 );
51250 --
51251 l_acc_rev_natural_side_code := 'C'; -- 4262811
51252 --
51253 --
51254 -- set accounting line type info
51255 --
51256 xla_ae_lines_pkg.SetAcctLineType
51257 (p_component_type => l_component_type
51258 ,p_event_type_code => l_event_type_code
51259 ,p_line_definition_owner_code => l_line_definition_owner_code
51260 ,p_line_definition_code => l_line_definition_code
51261 ,p_accounting_line_code => l_component_code
51262 ,p_accounting_line_type_code => l_component_type_code
51263 ,p_accounting_line_appl_id => l_component_appl_id
51264 ,p_amb_context_code => l_amb_context_code
51265 ,p_entity_code => l_entity_code
51266 ,p_event_class_code => l_event_class_code);
51267 --
51268 -- set accounting class
51269 --
51270 xla_ae_lines_pkg.SetAcctClass(
51271 p_accounting_class_code => 'INTERCOMPANY_COGS'
51272 , p_ae_header_id => l_ae_header_id
51273 );
51274
51275 --
51276 -- set rounding class
51277 --
51278 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51279 'INTERCOMPANY_COGS';
51280
51281 --
51282 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51283 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51284 --
51285 -- bulk performance
51286 --
51287 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51288
51289 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51290 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51291
51292 -- 4955764
51293 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51294 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51295
51296 -- 4458381 Public Sector Enh
51297
51298 --
51299 -- set accounting attributes for the line type
51300 --
51301 l_entered_amt_idx := 3;
51302 l_accted_amt_idx := 8;
51303 l_bflow_applied_to_amt_idx := NULL; -- 5132302
51304 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51305 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
51306 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51307 l_rec_acct_attrs.array_char_value(2) := p_source_6;
51308 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51309 l_rec_acct_attrs.array_num_value(3) := p_source_3;
51310 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51311 l_rec_acct_attrs.array_char_value(4) := p_source_7;
51312 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51313 l_rec_acct_attrs.array_date_value(5) := p_source_8;
51314 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51315 l_rec_acct_attrs.array_num_value(6) := p_source_9;
51316 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51317 l_rec_acct_attrs.array_char_value(7) := p_source_10;
51318 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51319 l_rec_acct_attrs.array_num_value(8) := p_source_11;
51320
51321 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51322 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51323
51324 ---------------------------------------------------------------------------------------------------------------
51325 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51326 ---------------------------------------------------------------------------------------------------------------
51327 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51328
51329 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51330 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51331
51332 IF xla_accounting_cache_pkg.GetValueChar
51333 (p_source_code => 'LEDGER_CATEGORY_CODE'
51334 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51335 AND l_bflow_method_code = 'PRIOR_ENTRY'
51336 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51337 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51338 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51339 )
51340 THEN
51341 xla_ae_lines_pkg.BflowUpgEntry
51342 (p_business_method_code => l_bflow_method_code
51343 ,p_business_class_code => l_bflow_class_code
51344 ,p_balance_type => l_balance_type_code);
51345 ELSE
51346 NULL;
51347 -- No business flow processing for business flow method of NONE.
51348 END IF;
51349
51350 --
51351 -- call analytical criteria
51352 --
51353
51354 --
51358 --
51355 -- call description
51356 --
51357 -- No description or it is inherited.
51359 -- call ADRs
51360 -- Bug 4922099
51361 --
51362 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51363 (NVL(l_actual_upg_option, 'N') = 'O') OR
51364 (NVL(l_enc_upg_option, 'N') = 'O')
51365 )
51366 THEN
51367 NULL;
51368 --
51369 --
51370
51371 l_ccid := AcctDerRule_15(
51372 p_application_id => p_application_id
51373 , p_ae_header_id => l_ae_header_id
51374 , p_source_1 => p_source_1
51375 , p_source_2 => p_source_2
51376 , x_transaction_coa_id => l_adr_transaction_coa_id
51377 , x_accounting_coa_id => l_adr_accounting_coa_id
51378 , x_value_type_code => l_adr_value_type_code
51379 , p_side => 'NA'
51380 );
51381
51382 xla_ae_lines_pkg.set_ccid(
51383 p_code_combination_id => l_ccid
51384 , p_value_type_code => l_adr_value_type_code
51385 , p_transaction_coa_id => l_adr_transaction_coa_id
51386 , p_accounting_coa_id => l_adr_accounting_coa_id
51387 , p_adr_code => 'ICCOGS'
51388 , p_adr_type_code => 'S'
51389 , p_component_type => l_component_type
51390 , p_component_code => l_component_code
51391 , p_component_type_code => l_component_type_code
51392 , p_component_appl_id => l_component_appl_id
51393 , p_amb_context_code => l_amb_context_code
51394 , p_side => 'NA'
51395 );
51396
51397
51398 --
51399 --
51400 END IF;
51401 --
51402 -- Bug 4922099
51403 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51404 (NVL(l_enc_upg_option, 'N') = 'O')
51405 ) AND
51406 (l_bflow_method_code = 'PRIOR_ENTRY')
51407 )
51408 THEN
51409 IF
51410 --
51411 1 = 2
51412 --
51413 THEN
51414 xla_accounting_err_pkg.build_message
51415 (p_appli_s_name => 'XLA'
51416 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51417 ,p_token_1 => 'LINE_NUMBER'
51418 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
51419 ,p_token_2 => 'LINE_TYPE_NAME'
51420 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
51421 l_component_type
51422 ,l_component_code
51423 ,l_component_type_code
51424 ,l_component_appl_id
51425 ,l_amb_context_code
51426 ,l_entity_code
51427 ,l_event_class_code
51428 )
51429 ,p_token_3 => 'OWNER'
51430 ,p_value_3 => xla_lookups_pkg.get_meaning(
51431 p_lookup_type => 'XLA_OWNER_TYPE'
51432 ,p_lookup_code => l_component_type_code
51433 )
51434 ,p_token_4 => 'PRODUCT_NAME'
51435 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51436 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51437 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51438 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51439 ,p_ae_header_id => NULL
51440 );
51441
51442 IF (C_LEVEL_ERROR>= g_log_level) THEN
51443 trace
51444 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51445 ,p_level => C_LEVEL_ERROR
51446 ,p_module => l_log_module);
51447 END IF;
51448 END IF;
51449 END IF;
51450 --
51451 --
51452 ------------------------------------------------------------------------------------------------
51453 -- 4219869 Business Flow
51454 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51455 -- Prior Entry. Currently, the following code is always generated.
51456 ------------------------------------------------------------------------------------------------
51457 XLA_AE_LINES_PKG.ValidateCurrentLine;
51458
51462 ------------------------------------------------------------------------------------
51459 ------------------------------------------------------------------------------------
51460 -- 4219869 Business Flow
51461 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51463 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51464
51465 ----------------------------------------------------------------------------------
51466 -- 4219869 Business Flow
51467 -- Update journal entry status -- Need to generate this within IF <condition>
51468 ----------------------------------------------------------------------------------
51469 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51470 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51471 ,p_balance_type_code => l_balance_type_code
51472 );
51473
51474 -------------------------------------------------------------------------------------------
51475 -- 4262811 - Generate the Accrual Reversal lines
51476 -------------------------------------------------------------------------------------------
51477 BEGIN
51478 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51479 (g_array_event(p_event_id).array_value_num('header_index'));
51480 IF l_acc_rev_flag IS NULL THEN
51481 l_acc_rev_flag := 'N';
51482 END IF;
51483 EXCEPTION
51484 WHEN OTHERS THEN
51485 l_acc_rev_flag := 'N';
51486 END;
51487 --
51488 IF (l_acc_rev_flag = 'Y') THEN
51489
51490 -- 4645092 ------------------------------------------------------------------------------
51491 -- To allow MPA report to determine if it should generate report process
51492 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51493 ------------------------------------------------------------------------------------------
51494
51495 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51496 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51497 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
51498 -- call ADRs
51499 -- Bug 4922099
51500 --
51501 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51502 (NVL(l_actual_upg_option, 'N') = 'O') OR
51503 (NVL(l_enc_upg_option, 'N') = 'O')
51504 )
51505 THEN
51506 NULL;
51507 --
51508 --
51509
51510 l_ccid := AcctDerRule_15(
51511 p_application_id => p_application_id
51512 , p_ae_header_id => l_ae_header_id
51513 , p_source_1 => p_source_1
51514 , p_source_2 => p_source_2
51515 , x_transaction_coa_id => l_adr_transaction_coa_id
51516 , x_accounting_coa_id => l_adr_accounting_coa_id
51517 , x_value_type_code => l_adr_value_type_code
51518 , p_side => 'NA'
51519 );
51520
51521 xla_ae_lines_pkg.set_ccid(
51522 p_code_combination_id => l_ccid
51523 , p_value_type_code => l_adr_value_type_code
51524 , p_transaction_coa_id => l_adr_transaction_coa_id
51525 , p_accounting_coa_id => l_adr_accounting_coa_id
51526 , p_adr_code => 'ICCOGS'
51527 , p_adr_type_code => 'S'
51528 , p_component_type => l_component_type
51529 , p_component_code => l_component_code
51530 , p_component_type_code => l_component_type_code
51531 , p_component_appl_id => l_component_appl_id
51532 , p_amb_context_code => l_amb_context_code
51533 , p_side => 'NA'
51534 );
51535
51536
51537 --
51538 --
51539 END IF;
51540
51541 --
51542 -- Update the line information that should be overwritten
51543 --
51544 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51545 p_header_num => 1);
51546 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
51547
51548 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51549
51550 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
51551 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51552 END IF;
51553
51554 --
51555 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51556 --
51557 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51558 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
51559 ELSE
51560 ---------------------------------------------------------------------------------------------------
51561 -- 4262811a Switch Sign
51562 ---------------------------------------------------------------------------------------------------
51563 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
51564 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51565 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51566 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51570 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51567 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51568 -- 5132302
51569 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51571
51572 END IF;
51573
51574 -- 4955764
51575 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51576 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51577
51578
51579 XLA_AE_LINES_PKG.ValidateCurrentLine;
51580 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51581
51582 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51583 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51584 ,p_balance_type_code => l_balance_type_code);
51585
51586 END IF;
51587
51588 -----------------------------------------------------------------------------------------
51589 -- 4262811 Multiperiod Accounting
51590 -----------------------------------------------------------------------------------------
51591 -- No MPA option is assigned.
51592
51593
51594 END IF;
51595 END IF;
51596 --
51597
51598 --
51599 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51600 trace
51601 (p_msg => 'END of AcctLineType_125'
51602 ,p_level => C_LEVEL_PROCEDURE
51603 ,p_module => l_log_module);
51604 END IF;
51605 --
51606 EXCEPTION
51607 WHEN xla_exceptions_pkg.application_exception THEN
51608 RAISE;
51609 WHEN OTHERS THEN
51610 xla_exceptions_pkg.raise_message
51611 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_125');
51612 END AcctLineType_125;
51613 --
51614
51615 ---------------------------------------
51616 --
51617 -- PRIVATE FUNCTION
51618 -- AcctLineType_126
51619 --
51620 ---------------------------------------
51621 PROCEDURE AcctLineType_126 (
51622 p_application_id IN NUMBER
51623 ,p_event_id IN NUMBER
51624 ,p_calculate_acctd_flag IN VARCHAR2
51625 ,p_calculate_g_l_flag IN VARCHAR2
51626 ,p_actual_flag IN OUT VARCHAR2
51627 ,p_balance_type_code OUT VARCHAR2
51628 ,p_gain_or_loss_ref OUT VARCHAR2
51629
51630 --Transaction Account
51631 , p_source_1 IN NUMBER
51632 --Journal Line Type
51633 , p_source_2 IN VARCHAR2
51634 --Entered Amount
51635 , p_source_3 IN NUMBER
51636 --First Distribution Identifier
51637 , p_source_5 IN NUMBER
51638 --Distribution Type
51639 , p_source_6 IN VARCHAR2
51640 --Currency Code
51641 , p_source_7 IN VARCHAR2
51642 --Currency Conversion Date
51643 , p_source_8 IN DATE
51644 --Currency Conversion Rate
51645 , p_source_9 IN NUMBER
51646 --Currency Conversion Type
51647 , p_source_10 IN VARCHAR2
51648 --Accounted Amount
51649 , p_source_11 IN NUMBER
51650 )
51651 IS
51652
51653 l_component_type VARCHAR2(80);
51654 l_component_code VARCHAR2(30);
51655 l_component_type_code VARCHAR2(1);
51656 l_component_appl_id INTEGER;
51657 l_amb_context_code VARCHAR2(30);
51658 l_entity_code VARCHAR2(30);
51659 l_event_class_code VARCHAR2(30);
51660 l_ae_header_id NUMBER;
51661 l_event_type_code VARCHAR2(30);
51662 l_line_definition_code VARCHAR2(30);
51663 l_line_definition_owner_code VARCHAR2(1);
51664 --
51665 -- adr variables
51666 l_segment VARCHAR2(30);
51667 l_ccid NUMBER;
51668 l_adr_transaction_coa_id NUMBER;
51669 l_adr_accounting_coa_id NUMBER;
51670 l_adr_flexfield_segment_code VARCHAR2(30);
51671 l_adr_flex_value_set_id NUMBER;
51672 l_adr_value_type_code VARCHAR2(30);
51673 l_adr_value_combination_id NUMBER;
51674 l_adr_value_segment_code VARCHAR2(30);
51675
51676 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
51677 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
51678 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
51679 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
51680
51681 -- 4262811 Variables ------------------------------------------------------------------------------------------
51682 l_entered_amt_idx NUMBER;
51683 l_accted_amt_idx NUMBER;
51684 l_acc_rev_flag VARCHAR2(1);
51685 l_accrual_line_num NUMBER;
51686 l_tmp_amt NUMBER;
51687 l_acc_rev_natural_side_code VARCHAR2(1);
51688
51689 l_num_entries NUMBER;
51690 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
51691 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
51692 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
51693 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
51694 l_recog_line_1 NUMBER;
51695 l_recog_line_2 NUMBER;
51696
51697 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
51701 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51698 l_bflow_applied_to_amt NUMBER; -- 5132302
51699 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
51700
51702
51703 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
51704 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
51705
51706 ---------------------------------------------------------------------------------------------------------------
51707
51708
51709 --
51710 -- bulk performance
51711 --
51712 l_balance_type_code VARCHAR2(1);
51713 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
51714 l_log_module VARCHAR2(240);
51715
51716 --
51717 -- Upgrade strategy
51718 --
51719 l_actual_upg_option VARCHAR2(1);
51720 l_enc_upg_option VARCHAR2(1);
51721
51722 --
51723 BEGIN
51724 --
51725 IF g_log_enabled THEN
51726 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
51727 END IF;
51728 --
51729 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51730
51731 trace
51732 (p_msg => 'BEGIN of AcctLineType_126'
51733 ,p_level => C_LEVEL_PROCEDURE
51734 ,p_module => l_log_module);
51735
51736 END IF;
51737 --
51738 l_component_type := 'AMB_JLT';
51739 l_component_code := 'ICEXP';
51740 l_component_type_code := 'S';
51741 l_component_appl_id := 555;
51742 l_amb_context_code := 'DEFAULT';
51743 l_entity_code := 'PURCHASING';
51744 l_event_class_code := 'DELIVER';
51745 l_event_type_code := 'XFER_TO_CONSIGNED';
51746 l_line_definition_owner_code := 'S';
51747 l_line_definition_code := 'XFER_TO_CONSIGN';
51748 --
51749 l_balance_type_code := 'A';
51750 l_segment := NULL;
51751 l_ccid := NULL;
51752 l_adr_transaction_coa_id := NULL;
51753 l_adr_accounting_coa_id := NULL;
51754 l_adr_flexfield_segment_code := NULL;
51755 l_adr_flex_value_set_id := NULL;
51756 l_adr_value_type_code := NULL;
51757 l_adr_value_combination_id := NULL;
51758 l_adr_value_segment_code := NULL;
51759
51760 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
51761 l_bflow_class_code := ''; -- 4219869 Business Flow
51762 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
51763 l_budgetary_control_flag := 'N';
51764
51765 l_bflow_applied_to_amt_idx := NULL; -- 5132302
51766 l_bflow_applied_to_amt := NULL; -- 5132302
51767 l_entered_amt_idx := NULL; -- 4262811
51768 l_accted_amt_idx := NULL; -- 4262811
51769 l_acc_rev_flag := NULL; -- 4262811
51770 l_accrual_line_num := NULL; -- 4262811
51771 l_tmp_amt := NULL; -- 4262811
51772 --
51773
51774 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51775 l_balance_type_code <> 'B' THEN
51776 IF NVL(p_source_2,'
51777 ') = 'ICEXP'
51778 THEN
51779
51780 --
51781 XLA_AE_LINES_PKG.SetNewLine;
51782
51783 p_balance_type_code := l_balance_type_code;
51784 -- set the flag so later we will know whether the gain loss line needs to be created
51785
51786 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51787 p_actual_flag :='A';
51788 END IF;
51789
51790 --
51791 -- bulk performance
51792 --
51793 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51794 p_header_num => 0); -- 4262811
51795 --
51796 -- set accounting line options
51797 --
51798 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51799 p_natural_side_code => 'D'
51800 , p_gain_or_loss_flag => 'N'
51801 , p_gl_transfer_mode_code => 'D'
51802 , p_acct_entry_type_code => 'A'
51803 , p_switch_side_flag => 'Y'
51804 , p_merge_duplicate_code => 'W'
51805 );
51806 --
51807 l_acc_rev_natural_side_code := 'C'; -- 4262811
51808 --
51809 --
51810 -- set accounting line type info
51811 --
51812 xla_ae_lines_pkg.SetAcctLineType
51813 (p_component_type => l_component_type
51814 ,p_event_type_code => l_event_type_code
51815 ,p_line_definition_owner_code => l_line_definition_owner_code
51816 ,p_line_definition_code => l_line_definition_code
51817 ,p_accounting_line_code => l_component_code
51818 ,p_accounting_line_type_code => l_component_type_code
51819 ,p_accounting_line_appl_id => l_component_appl_id
51820 ,p_amb_context_code => l_amb_context_code
51821 ,p_entity_code => l_entity_code
51822 ,p_event_class_code => l_event_class_code);
51823 --
51824 -- set accounting class
51825 --
51826 xla_ae_lines_pkg.SetAcctClass(
51827 p_accounting_class_code => 'INTERCOMPANY_EXPENSE'
51828 , p_ae_header_id => l_ae_header_id
51829 );
51830
51831 --
51835 'INTERCOMPANY_EXPENSE';
51832 -- set rounding class
51833 --
51834 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51836
51837 --
51838 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51839 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51840 --
51841 -- bulk performance
51842 --
51843 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51844
51845 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51846 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51847
51848 -- 4955764
51849 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51850 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51851
51852 -- 4458381 Public Sector Enh
51853
51854 --
51855 -- set accounting attributes for the line type
51856 --
51857 l_entered_amt_idx := 3;
51858 l_accted_amt_idx := 8;
51859 l_bflow_applied_to_amt_idx := NULL; -- 5132302
51860 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
51861 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
51862 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
51863 l_rec_acct_attrs.array_char_value(2) := p_source_6;
51864 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
51865 l_rec_acct_attrs.array_num_value(3) := p_source_3;
51866 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
51867 l_rec_acct_attrs.array_char_value(4) := p_source_7;
51868 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
51869 l_rec_acct_attrs.array_date_value(5) := p_source_8;
51870 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
51871 l_rec_acct_attrs.array_num_value(6) := p_source_9;
51872 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
51873 l_rec_acct_attrs.array_char_value(7) := p_source_10;
51874 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
51875 l_rec_acct_attrs.array_num_value(8) := p_source_11;
51876
51877 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51878 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51879
51880 ---------------------------------------------------------------------------------------------------------------
51881 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51882 ---------------------------------------------------------------------------------------------------------------
51883 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51884
51885 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51886 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51887
51888 IF xla_accounting_cache_pkg.GetValueChar
51889 (p_source_code => 'LEDGER_CATEGORY_CODE'
51890 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51891 AND l_bflow_method_code = 'PRIOR_ENTRY'
51892 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51893 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51894 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51895 )
51896 THEN
51897 xla_ae_lines_pkg.BflowUpgEntry
51898 (p_business_method_code => l_bflow_method_code
51899 ,p_business_class_code => l_bflow_class_code
51900 ,p_balance_type => l_balance_type_code);
51901 ELSE
51902 NULL;
51903 -- No business flow processing for business flow method of NONE.
51904 END IF;
51905
51906 --
51907 -- call analytical criteria
51908 --
51909
51910 --
51911 -- call description
51912 --
51913 -- No description or it is inherited.
51914 --
51915 -- call ADRs
51916 -- Bug 4922099
51917 --
51918 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51919 (NVL(l_actual_upg_option, 'N') = 'O') OR
51920 (NVL(l_enc_upg_option, 'N') = 'O')
51921 )
51922 THEN
51923 NULL;
51924 --
51925 --
51926
51927 l_ccid := AcctDerRule_16(
51928 p_application_id => p_application_id
51929 , p_ae_header_id => l_ae_header_id
51930 , p_source_1 => p_source_1
51931 , p_source_2 => p_source_2
51932 , x_transaction_coa_id => l_adr_transaction_coa_id
51933 , x_accounting_coa_id => l_adr_accounting_coa_id
51934 , x_value_type_code => l_adr_value_type_code
51935 , p_side => 'NA'
51936 );
51937
51938 xla_ae_lines_pkg.set_ccid(
51939 p_code_combination_id => l_ccid
51940 , p_value_type_code => l_adr_value_type_code
51941 , p_transaction_coa_id => l_adr_transaction_coa_id
51942 , p_accounting_coa_id => l_adr_accounting_coa_id
51943 , p_adr_code => 'ICEXP'
51947 , p_component_type_code => l_component_type_code
51944 , p_adr_type_code => 'S'
51945 , p_component_type => l_component_type
51946 , p_component_code => l_component_code
51948 , p_component_appl_id => l_component_appl_id
51949 , p_amb_context_code => l_amb_context_code
51950 , p_side => 'NA'
51951 );
51952
51953
51954 --
51955 --
51956 END IF;
51957 --
51958 -- Bug 4922099
51959 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51960 (NVL(l_enc_upg_option, 'N') = 'O')
51961 ) AND
51962 (l_bflow_method_code = 'PRIOR_ENTRY')
51963 )
51964 THEN
51965 IF
51966 --
51967 1 = 2
51968 --
51969 THEN
51970 xla_accounting_err_pkg.build_message
51971 (p_appli_s_name => 'XLA'
51972 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51973 ,p_token_1 => 'LINE_NUMBER'
51974 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
51975 ,p_token_2 => 'LINE_TYPE_NAME'
51976 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
51977 l_component_type
51978 ,l_component_code
51979 ,l_component_type_code
51980 ,l_component_appl_id
51981 ,l_amb_context_code
51982 ,l_entity_code
51983 ,l_event_class_code
51984 )
51985 ,p_token_3 => 'OWNER'
51986 ,p_value_3 => xla_lookups_pkg.get_meaning(
51987 p_lookup_type => 'XLA_OWNER_TYPE'
51988 ,p_lookup_code => l_component_type_code
51989 )
51990 ,p_token_4 => 'PRODUCT_NAME'
51991 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51992 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51993 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51994 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51995 ,p_ae_header_id => NULL
51996 );
51997
51998 IF (C_LEVEL_ERROR>= g_log_level) THEN
51999 trace
52000 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52001 ,p_level => C_LEVEL_ERROR
52002 ,p_module => l_log_module);
52003 END IF;
52004 END IF;
52005 END IF;
52006 --
52007 --
52008 ------------------------------------------------------------------------------------------------
52009 -- 4219869 Business Flow
52010 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52011 -- Prior Entry. Currently, the following code is always generated.
52012 ------------------------------------------------------------------------------------------------
52013 XLA_AE_LINES_PKG.ValidateCurrentLine;
52014
52015 ------------------------------------------------------------------------------------
52016 -- 4219869 Business Flow
52017 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52018 ------------------------------------------------------------------------------------
52019 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52020
52021 ----------------------------------------------------------------------------------
52022 -- 4219869 Business Flow
52023 -- Update journal entry status -- Need to generate this within IF <condition>
52024 ----------------------------------------------------------------------------------
52025 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52026 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52027 ,p_balance_type_code => l_balance_type_code
52028 );
52029
52030 -------------------------------------------------------------------------------------------
52031 -- 4262811 - Generate the Accrual Reversal lines
52032 -------------------------------------------------------------------------------------------
52033 BEGIN
52034 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52035 (g_array_event(p_event_id).array_value_num('header_index'));
52036 IF l_acc_rev_flag IS NULL THEN
52037 l_acc_rev_flag := 'N';
52038 END IF;
52039 EXCEPTION
52043 --
52040 WHEN OTHERS THEN
52041 l_acc_rev_flag := 'N';
52042 END;
52044 IF (l_acc_rev_flag = 'Y') THEN
52045
52046 -- 4645092 ------------------------------------------------------------------------------
52047 -- To allow MPA report to determine if it should generate report process
52048 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52049 ------------------------------------------------------------------------------------------
52050
52051 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52052 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52053 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
52054 -- call ADRs
52055 -- Bug 4922099
52056 --
52057 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52058 (NVL(l_actual_upg_option, 'N') = 'O') OR
52059 (NVL(l_enc_upg_option, 'N') = 'O')
52060 )
52061 THEN
52062 NULL;
52063 --
52064 --
52065
52066 l_ccid := AcctDerRule_16(
52067 p_application_id => p_application_id
52068 , p_ae_header_id => l_ae_header_id
52069 , p_source_1 => p_source_1
52070 , p_source_2 => p_source_2
52071 , x_transaction_coa_id => l_adr_transaction_coa_id
52072 , x_accounting_coa_id => l_adr_accounting_coa_id
52073 , x_value_type_code => l_adr_value_type_code
52074 , p_side => 'NA'
52075 );
52076
52077 xla_ae_lines_pkg.set_ccid(
52078 p_code_combination_id => l_ccid
52079 , p_value_type_code => l_adr_value_type_code
52080 , p_transaction_coa_id => l_adr_transaction_coa_id
52081 , p_accounting_coa_id => l_adr_accounting_coa_id
52082 , p_adr_code => 'ICEXP'
52083 , p_adr_type_code => 'S'
52084 , p_component_type => l_component_type
52085 , p_component_code => l_component_code
52086 , p_component_type_code => l_component_type_code
52087 , p_component_appl_id => l_component_appl_id
52088 , p_amb_context_code => l_amb_context_code
52089 , p_side => 'NA'
52090 );
52091
52092
52093 --
52094 --
52095 END IF;
52096
52097 --
52098 -- Update the line information that should be overwritten
52099 --
52100 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52101 p_header_num => 1);
52102 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
52103
52104 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52105
52106 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
52107 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52108 END IF;
52109
52110 --
52111 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52112 --
52113 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52114 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
52115 ELSE
52116 ---------------------------------------------------------------------------------------------------
52117 -- 4262811a Switch Sign
52118 ---------------------------------------------------------------------------------------------------
52119 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
52120 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52121 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52122 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52123 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52124 -- 5132302
52125 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52126 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52127
52128 END IF;
52129
52130 -- 4955764
52131 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52132 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52133
52134
52135 XLA_AE_LINES_PKG.ValidateCurrentLine;
52136 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52137
52138 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52139 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52140 ,p_balance_type_code => l_balance_type_code);
52141
52142 END IF;
52143
52144 -----------------------------------------------------------------------------------------
52145 -- 4262811 Multiperiod Accounting
52146 -----------------------------------------------------------------------------------------
52147 -- No MPA option is assigned.
52148
52149
52150 END IF;
52151 END IF;
52152 --
52153
52157 (p_msg => 'END of AcctLineType_126'
52154 --
52155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52156 trace
52158 ,p_level => C_LEVEL_PROCEDURE
52159 ,p_module => l_log_module);
52160 END IF;
52161 --
52162 EXCEPTION
52163 WHEN xla_exceptions_pkg.application_exception THEN
52164 RAISE;
52165 WHEN OTHERS THEN
52166 xla_exceptions_pkg.raise_message
52167 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_126');
52168 END AcctLineType_126;
52169 --
52170
52171 ---------------------------------------
52172 --
52173 -- PRIVATE FUNCTION
52174 -- AcctLineType_127
52175 --
52176 ---------------------------------------
52177 PROCEDURE AcctLineType_127 (
52178 p_application_id IN NUMBER
52179 ,p_event_id IN NUMBER
52180 ,p_calculate_acctd_flag IN VARCHAR2
52181 ,p_calculate_g_l_flag IN VARCHAR2
52182 ,p_actual_flag IN OUT VARCHAR2
52183 ,p_balance_type_code OUT VARCHAR2
52184 ,p_gain_or_loss_ref OUT VARCHAR2
52185
52186 --Transaction Account
52187 , p_source_1 IN NUMBER
52188 --Journal Line Type
52189 , p_source_2 IN VARCHAR2
52190 --Entered Amount
52191 , p_source_3 IN NUMBER
52192 --First Distribution Identifier
52193 , p_source_5 IN NUMBER
52194 --Distribution Type
52195 , p_source_6 IN VARCHAR2
52196 --Currency Code
52197 , p_source_7 IN VARCHAR2
52198 --Currency Conversion Date
52199 , p_source_8 IN DATE
52200 --Currency Conversion Rate
52201 , p_source_9 IN NUMBER
52202 --Currency Conversion Type
52203 , p_source_10 IN VARCHAR2
52204 --Accounted Amount
52205 , p_source_11 IN NUMBER
52206 )
52207 IS
52208
52209 l_component_type VARCHAR2(80);
52210 l_component_code VARCHAR2(30);
52211 l_component_type_code VARCHAR2(1);
52212 l_component_appl_id INTEGER;
52213 l_amb_context_code VARCHAR2(30);
52214 l_entity_code VARCHAR2(30);
52215 l_event_class_code VARCHAR2(30);
52216 l_ae_header_id NUMBER;
52217 l_event_type_code VARCHAR2(30);
52218 l_line_definition_code VARCHAR2(30);
52219 l_line_definition_owner_code VARCHAR2(1);
52220 --
52221 -- adr variables
52222 l_segment VARCHAR2(30);
52223 l_ccid NUMBER;
52224 l_adr_transaction_coa_id NUMBER;
52225 l_adr_accounting_coa_id NUMBER;
52226 l_adr_flexfield_segment_code VARCHAR2(30);
52227 l_adr_flex_value_set_id NUMBER;
52228 l_adr_value_type_code VARCHAR2(30);
52229 l_adr_value_combination_id NUMBER;
52230 l_adr_value_segment_code VARCHAR2(30);
52231
52232 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
52233 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
52234 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
52235 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
52236
52237 -- 4262811 Variables ------------------------------------------------------------------------------------------
52238 l_entered_amt_idx NUMBER;
52239 l_accted_amt_idx NUMBER;
52240 l_acc_rev_flag VARCHAR2(1);
52241 l_accrual_line_num NUMBER;
52242 l_tmp_amt NUMBER;
52243 l_acc_rev_natural_side_code VARCHAR2(1);
52244
52245 l_num_entries NUMBER;
52246 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
52247 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
52248 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
52249 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
52250 l_recog_line_1 NUMBER;
52251 l_recog_line_2 NUMBER;
52252
52253 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
52254 l_bflow_applied_to_amt NUMBER; -- 5132302
52255 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
52256
52257 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52258
52259 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
52260 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
52261
52262 ---------------------------------------------------------------------------------------------------------------
52263
52264
52265 --
52266 -- bulk performance
52267 --
52268 l_balance_type_code VARCHAR2(1);
52269 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
52270 l_log_module VARCHAR2(240);
52271
52272 --
52273 -- Upgrade strategy
52274 --
52275 l_actual_upg_option VARCHAR2(1);
52276 l_enc_upg_option VARCHAR2(1);
52277
52278 --
52279 BEGIN
52280 --
52281 IF g_log_enabled THEN
52282 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
52283 END IF;
52284 --
52285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52286
52287 trace
52288 (p_msg => 'BEGIN of AcctLineType_127'
52289 ,p_level => C_LEVEL_PROCEDURE
52290 ,p_module => l_log_module);
52291
52292 END IF;
52293 --
52297 l_component_appl_id := 555;
52294 l_component_type := 'AMB_JLT';
52295 l_component_code := 'ICEXP';
52296 l_component_type_code := 'S';
52298 l_amb_context_code := 'DEFAULT';
52299 l_entity_code := 'INVENTORY';
52300 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
52301 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
52302 l_line_definition_owner_code := 'S';
52303 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
52304 --
52305 l_balance_type_code := 'A';
52306 l_segment := NULL;
52307 l_ccid := NULL;
52308 l_adr_transaction_coa_id := NULL;
52309 l_adr_accounting_coa_id := NULL;
52310 l_adr_flexfield_segment_code := NULL;
52311 l_adr_flex_value_set_id := NULL;
52312 l_adr_value_type_code := NULL;
52313 l_adr_value_combination_id := NULL;
52314 l_adr_value_segment_code := NULL;
52315
52316 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
52317 l_bflow_class_code := ''; -- 4219869 Business Flow
52318 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
52319 l_budgetary_control_flag := 'N';
52320
52321 l_bflow_applied_to_amt_idx := NULL; -- 5132302
52322 l_bflow_applied_to_amt := NULL; -- 5132302
52323 l_entered_amt_idx := NULL; -- 4262811
52324 l_accted_amt_idx := NULL; -- 4262811
52325 l_acc_rev_flag := NULL; -- 4262811
52326 l_accrual_line_num := NULL; -- 4262811
52327 l_tmp_amt := NULL; -- 4262811
52328 --
52329
52330 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52331 l_balance_type_code <> 'B' THEN
52332 IF NVL(p_source_2,'
52333 ') = 'ICEXP'
52334 THEN
52335
52336 --
52337 XLA_AE_LINES_PKG.SetNewLine;
52338
52339 p_balance_type_code := l_balance_type_code;
52340 -- set the flag so later we will know whether the gain loss line needs to be created
52341
52342 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52343 p_actual_flag :='A';
52344 END IF;
52345
52346 --
52347 -- bulk performance
52348 --
52349 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52350 p_header_num => 0); -- 4262811
52351 --
52352 -- set accounting line options
52353 --
52354 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52355 p_natural_side_code => 'D'
52356 , p_gain_or_loss_flag => 'N'
52357 , p_gl_transfer_mode_code => 'D'
52358 , p_acct_entry_type_code => 'A'
52359 , p_switch_side_flag => 'Y'
52360 , p_merge_duplicate_code => 'W'
52361 );
52362 --
52363 l_acc_rev_natural_side_code := 'C'; -- 4262811
52364 --
52365 --
52366 -- set accounting line type info
52367 --
52368 xla_ae_lines_pkg.SetAcctLineType
52369 (p_component_type => l_component_type
52370 ,p_event_type_code => l_event_type_code
52371 ,p_line_definition_owner_code => l_line_definition_owner_code
52372 ,p_line_definition_code => l_line_definition_code
52373 ,p_accounting_line_code => l_component_code
52374 ,p_accounting_line_type_code => l_component_type_code
52375 ,p_accounting_line_appl_id => l_component_appl_id
52376 ,p_amb_context_code => l_amb_context_code
52377 ,p_entity_code => l_entity_code
52378 ,p_event_class_code => l_event_class_code);
52379 --
52380 -- set accounting class
52381 --
52382 xla_ae_lines_pkg.SetAcctClass(
52383 p_accounting_class_code => 'INTERCOMPANY_EXPENSE'
52384 , p_ae_header_id => l_ae_header_id
52385 );
52386
52387 --
52388 -- set rounding class
52389 --
52390 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52391 'INTERCOMPANY_EXPENSE';
52392
52393 --
52394 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52395 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52396 --
52397 -- bulk performance
52398 --
52399 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52400
52401 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52402 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52403
52404 -- 4955764
52405 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52406 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52407
52408 -- 4458381 Public Sector Enh
52409
52410 --
52411 -- set accounting attributes for the line type
52412 --
52413 l_entered_amt_idx := 3;
52414 l_accted_amt_idx := 8;
52415 l_bflow_applied_to_amt_idx := NULL; -- 5132302
52416 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
52417 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
52421 l_rec_acct_attrs.array_num_value(3) := p_source_3;
52418 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
52419 l_rec_acct_attrs.array_char_value(2) := p_source_6;
52420 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
52422 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
52423 l_rec_acct_attrs.array_char_value(4) := p_source_7;
52424 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
52425 l_rec_acct_attrs.array_date_value(5) := p_source_8;
52426 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
52427 l_rec_acct_attrs.array_num_value(6) := p_source_9;
52428 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
52429 l_rec_acct_attrs.array_char_value(7) := p_source_10;
52430 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
52431 l_rec_acct_attrs.array_num_value(8) := p_source_11;
52432
52433 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52434 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52435
52436 ---------------------------------------------------------------------------------------------------------------
52437 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52438 ---------------------------------------------------------------------------------------------------------------
52439 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52440
52441 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52442 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52443
52444 IF xla_accounting_cache_pkg.GetValueChar
52445 (p_source_code => 'LEDGER_CATEGORY_CODE'
52446 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52447 AND l_bflow_method_code = 'PRIOR_ENTRY'
52448 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52449 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52450 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52451 )
52452 THEN
52453 xla_ae_lines_pkg.BflowUpgEntry
52454 (p_business_method_code => l_bflow_method_code
52455 ,p_business_class_code => l_bflow_class_code
52456 ,p_balance_type => l_balance_type_code);
52457 ELSE
52458 NULL;
52459 -- No business flow processing for business flow method of NONE.
52460 END IF;
52461
52462 --
52463 -- call analytical criteria
52464 --
52465
52466 --
52467 -- call description
52468 --
52469 -- No description or it is inherited.
52470 --
52471 -- call ADRs
52472 -- Bug 4922099
52473 --
52474 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52475 (NVL(l_actual_upg_option, 'N') = 'O') OR
52476 (NVL(l_enc_upg_option, 'N') = 'O')
52477 )
52478 THEN
52479 NULL;
52480 --
52481 --
52482
52483 l_ccid := AcctDerRule_16(
52484 p_application_id => p_application_id
52485 , p_ae_header_id => l_ae_header_id
52486 , p_source_1 => p_source_1
52487 , p_source_2 => p_source_2
52488 , x_transaction_coa_id => l_adr_transaction_coa_id
52489 , x_accounting_coa_id => l_adr_accounting_coa_id
52490 , x_value_type_code => l_adr_value_type_code
52491 , p_side => 'NA'
52492 );
52493
52494 xla_ae_lines_pkg.set_ccid(
52495 p_code_combination_id => l_ccid
52496 , p_value_type_code => l_adr_value_type_code
52497 , p_transaction_coa_id => l_adr_transaction_coa_id
52498 , p_accounting_coa_id => l_adr_accounting_coa_id
52499 , p_adr_code => 'ICEXP'
52500 , p_adr_type_code => 'S'
52501 , p_component_type => l_component_type
52502 , p_component_code => l_component_code
52503 , p_component_type_code => l_component_type_code
52504 , p_component_appl_id => l_component_appl_id
52505 , p_amb_context_code => l_amb_context_code
52506 , p_side => 'NA'
52507 );
52508
52509
52510 --
52511 --
52512 END IF;
52513 --
52514 -- Bug 4922099
52515 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52516 (NVL(l_enc_upg_option, 'N') = 'O')
52517 ) AND
52518 (l_bflow_method_code = 'PRIOR_ENTRY')
52519 )
52520 THEN
52521 IF
52522 --
52523 1 = 2
52524 --
52525 THEN
52526 xla_accounting_err_pkg.build_message
52527 (p_appli_s_name => 'XLA'
52528 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52529 ,p_token_1 => 'LINE_NUMBER'
52530 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
52531 ,p_token_2 => 'LINE_TYPE_NAME'
52532 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
52536 ,l_component_appl_id
52533 l_component_type
52534 ,l_component_code
52535 ,l_component_type_code
52537 ,l_amb_context_code
52538 ,l_entity_code
52539 ,l_event_class_code
52540 )
52541 ,p_token_3 => 'OWNER'
52542 ,p_value_3 => xla_lookups_pkg.get_meaning(
52543 p_lookup_type => 'XLA_OWNER_TYPE'
52544 ,p_lookup_code => l_component_type_code
52545 )
52546 ,p_token_4 => 'PRODUCT_NAME'
52547 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52548 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52549 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52550 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52551 ,p_ae_header_id => NULL
52552 );
52553
52554 IF (C_LEVEL_ERROR>= g_log_level) THEN
52555 trace
52556 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52557 ,p_level => C_LEVEL_ERROR
52558 ,p_module => l_log_module);
52559 END IF;
52560 END IF;
52561 END IF;
52562 --
52563 --
52564 ------------------------------------------------------------------------------------------------
52565 -- 4219869 Business Flow
52566 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52567 -- Prior Entry. Currently, the following code is always generated.
52568 ------------------------------------------------------------------------------------------------
52569 XLA_AE_LINES_PKG.ValidateCurrentLine;
52570
52571 ------------------------------------------------------------------------------------
52572 -- 4219869 Business Flow
52573 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52574 ------------------------------------------------------------------------------------
52575 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52576
52577 ----------------------------------------------------------------------------------
52578 -- 4219869 Business Flow
52579 -- Update journal entry status -- Need to generate this within IF <condition>
52580 ----------------------------------------------------------------------------------
52581 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52582 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52583 ,p_balance_type_code => l_balance_type_code
52584 );
52585
52586 -------------------------------------------------------------------------------------------
52587 -- 4262811 - Generate the Accrual Reversal lines
52588 -------------------------------------------------------------------------------------------
52589 BEGIN
52590 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52591 (g_array_event(p_event_id).array_value_num('header_index'));
52592 IF l_acc_rev_flag IS NULL THEN
52593 l_acc_rev_flag := 'N';
52594 END IF;
52595 EXCEPTION
52596 WHEN OTHERS THEN
52597 l_acc_rev_flag := 'N';
52598 END;
52599 --
52600 IF (l_acc_rev_flag = 'Y') THEN
52601
52602 -- 4645092 ------------------------------------------------------------------------------
52603 -- To allow MPA report to determine if it should generate report process
52604 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52605 ------------------------------------------------------------------------------------------
52606
52607 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52608 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52609 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
52610 -- call ADRs
52611 -- Bug 4922099
52612 --
52613 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52614 (NVL(l_actual_upg_option, 'N') = 'O') OR
52615 (NVL(l_enc_upg_option, 'N') = 'O')
52616 )
52617 THEN
52618 NULL;
52619 --
52620 --
52621
52622 l_ccid := AcctDerRule_16(
52623 p_application_id => p_application_id
52624 , p_ae_header_id => l_ae_header_id
52625 , p_source_1 => p_source_1
52626 , p_source_2 => p_source_2
52627 , x_transaction_coa_id => l_adr_transaction_coa_id
52628 , x_accounting_coa_id => l_adr_accounting_coa_id
52632
52629 , x_value_type_code => l_adr_value_type_code
52630 , p_side => 'NA'
52631 );
52633 xla_ae_lines_pkg.set_ccid(
52634 p_code_combination_id => l_ccid
52635 , p_value_type_code => l_adr_value_type_code
52636 , p_transaction_coa_id => l_adr_transaction_coa_id
52637 , p_accounting_coa_id => l_adr_accounting_coa_id
52638 , p_adr_code => 'ICEXP'
52639 , p_adr_type_code => 'S'
52640 , p_component_type => l_component_type
52641 , p_component_code => l_component_code
52642 , p_component_type_code => l_component_type_code
52643 , p_component_appl_id => l_component_appl_id
52644 , p_amb_context_code => l_amb_context_code
52645 , p_side => 'NA'
52646 );
52647
52648
52649 --
52650 --
52651 END IF;
52652
52653 --
52654 -- Update the line information that should be overwritten
52655 --
52656 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52657 p_header_num => 1);
52658 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
52659
52660 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52661
52662 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
52663 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52664 END IF;
52665
52666 --
52667 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52668 --
52669 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52670 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
52671 ELSE
52672 ---------------------------------------------------------------------------------------------------
52673 -- 4262811a Switch Sign
52674 ---------------------------------------------------------------------------------------------------
52675 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
52676 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52677 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52678 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52679 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52680 -- 5132302
52681 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52682 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52683
52684 END IF;
52685
52686 -- 4955764
52687 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52688 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52689
52690
52691 XLA_AE_LINES_PKG.ValidateCurrentLine;
52692 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52693
52694 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52695 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52696 ,p_balance_type_code => l_balance_type_code);
52697
52698 END IF;
52699
52700 -----------------------------------------------------------------------------------------
52701 -- 4262811 Multiperiod Accounting
52702 -----------------------------------------------------------------------------------------
52703 -- No MPA option is assigned.
52704
52705
52706 END IF;
52707 END IF;
52708 --
52709
52710 --
52711 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52712 trace
52713 (p_msg => 'END of AcctLineType_127'
52714 ,p_level => C_LEVEL_PROCEDURE
52715 ,p_module => l_log_module);
52716 END IF;
52717 --
52718 EXCEPTION
52719 WHEN xla_exceptions_pkg.application_exception THEN
52720 RAISE;
52721 WHEN OTHERS THEN
52722 xla_exceptions_pkg.raise_message
52723 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_127');
52724 END AcctLineType_127;
52725 --
52726
52727 ---------------------------------------
52728 --
52729 -- PRIVATE FUNCTION
52730 -- AcctLineType_128
52731 --
52732 ---------------------------------------
52733 PROCEDURE AcctLineType_128 (
52734 p_application_id IN NUMBER
52735 ,p_event_id IN NUMBER
52736 ,p_calculate_acctd_flag IN VARCHAR2
52737 ,p_calculate_g_l_flag IN VARCHAR2
52738 ,p_actual_flag IN OUT VARCHAR2
52739 ,p_balance_type_code OUT VARCHAR2
52740 ,p_gain_or_loss_ref OUT VARCHAR2
52741
52742 --Transaction Account
52743 , p_source_1 IN NUMBER
52744 --Journal Line Type
52745 , p_source_2 IN VARCHAR2
52746 --Entered Amount
52747 , p_source_3 IN NUMBER
52748 --First Distribution Identifier
52749 , p_source_5 IN NUMBER
52750 --Distribution Type
52754 --Currency Conversion Date
52751 , p_source_6 IN VARCHAR2
52752 --Currency Code
52753 , p_source_7 IN VARCHAR2
52755 , p_source_8 IN DATE
52756 --Currency Conversion Rate
52757 , p_source_9 IN NUMBER
52758 --Currency Conversion Type
52759 , p_source_10 IN VARCHAR2
52760 --Accounted Amount
52761 , p_source_11 IN NUMBER
52762 )
52763 IS
52764
52765 l_component_type VARCHAR2(80);
52766 l_component_code VARCHAR2(30);
52767 l_component_type_code VARCHAR2(1);
52768 l_component_appl_id INTEGER;
52769 l_amb_context_code VARCHAR2(30);
52770 l_entity_code VARCHAR2(30);
52771 l_event_class_code VARCHAR2(30);
52772 l_ae_header_id NUMBER;
52773 l_event_type_code VARCHAR2(30);
52774 l_line_definition_code VARCHAR2(30);
52775 l_line_definition_owner_code VARCHAR2(1);
52776 --
52777 -- adr variables
52778 l_segment VARCHAR2(30);
52779 l_ccid NUMBER;
52780 l_adr_transaction_coa_id NUMBER;
52781 l_adr_accounting_coa_id NUMBER;
52782 l_adr_flexfield_segment_code VARCHAR2(30);
52783 l_adr_flex_value_set_id NUMBER;
52784 l_adr_value_type_code VARCHAR2(30);
52785 l_adr_value_combination_id NUMBER;
52786 l_adr_value_segment_code VARCHAR2(30);
52787
52788 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
52789 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
52790 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
52791 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
52792
52793 -- 4262811 Variables ------------------------------------------------------------------------------------------
52794 l_entered_amt_idx NUMBER;
52795 l_accted_amt_idx NUMBER;
52796 l_acc_rev_flag VARCHAR2(1);
52797 l_accrual_line_num NUMBER;
52798 l_tmp_amt NUMBER;
52799 l_acc_rev_natural_side_code VARCHAR2(1);
52800
52801 l_num_entries NUMBER;
52802 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
52803 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
52804 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
52805 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
52806 l_recog_line_1 NUMBER;
52807 l_recog_line_2 NUMBER;
52808
52809 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
52810 l_bflow_applied_to_amt NUMBER; -- 5132302
52811 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
52812
52813 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52814
52815 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
52816 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
52817
52818 ---------------------------------------------------------------------------------------------------------------
52819
52820
52821 --
52822 -- bulk performance
52823 --
52824 l_balance_type_code VARCHAR2(1);
52825 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
52826 l_log_module VARCHAR2(240);
52827
52828 --
52829 -- Upgrade strategy
52830 --
52831 l_actual_upg_option VARCHAR2(1);
52832 l_enc_upg_option VARCHAR2(1);
52833
52834 --
52835 BEGIN
52836 --
52837 IF g_log_enabled THEN
52838 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
52839 END IF;
52840 --
52841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52842
52843 trace
52844 (p_msg => 'BEGIN of AcctLineType_128'
52845 ,p_level => C_LEVEL_PROCEDURE
52846 ,p_module => l_log_module);
52847
52848 END IF;
52849 --
52850 l_component_type := 'AMB_JLT';
52851 l_component_code := 'ICEXP';
52852 l_component_type_code := 'S';
52853 l_component_appl_id := 555;
52854 l_amb_context_code := 'DEFAULT';
52855 l_entity_code := 'INVENTORY';
52856 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
52857 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
52858 l_line_definition_owner_code := 'S';
52859 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
52860 --
52861 l_balance_type_code := 'A';
52862 l_segment := NULL;
52863 l_ccid := NULL;
52864 l_adr_transaction_coa_id := NULL;
52865 l_adr_accounting_coa_id := NULL;
52866 l_adr_flexfield_segment_code := NULL;
52867 l_adr_flex_value_set_id := NULL;
52868 l_adr_value_type_code := NULL;
52869 l_adr_value_combination_id := NULL;
52870 l_adr_value_segment_code := NULL;
52871
52872 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
52873 l_bflow_class_code := ''; -- 4219869 Business Flow
52874 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
52875 l_budgetary_control_flag := 'N';
52876
52877 l_bflow_applied_to_amt_idx := NULL; -- 5132302
52878 l_bflow_applied_to_amt := NULL; -- 5132302
52882 l_accrual_line_num := NULL; -- 4262811
52879 l_entered_amt_idx := NULL; -- 4262811
52880 l_accted_amt_idx := NULL; -- 4262811
52881 l_acc_rev_flag := NULL; -- 4262811
52883 l_tmp_amt := NULL; -- 4262811
52884 --
52885
52886 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52887 l_balance_type_code <> 'B' THEN
52888 IF NVL(p_source_2,'
52889 ') = 'ICEXP'
52890 THEN
52891
52892 --
52893 XLA_AE_LINES_PKG.SetNewLine;
52894
52895 p_balance_type_code := l_balance_type_code;
52896 -- set the flag so later we will know whether the gain loss line needs to be created
52897
52898 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52899 p_actual_flag :='A';
52900 END IF;
52901
52902 --
52903 -- bulk performance
52904 --
52905 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52906 p_header_num => 0); -- 4262811
52907 --
52908 -- set accounting line options
52909 --
52910 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52911 p_natural_side_code => 'D'
52912 , p_gain_or_loss_flag => 'N'
52913 , p_gl_transfer_mode_code => 'D'
52914 , p_acct_entry_type_code => 'A'
52915 , p_switch_side_flag => 'Y'
52916 , p_merge_duplicate_code => 'W'
52917 );
52918 --
52919 l_acc_rev_natural_side_code := 'C'; -- 4262811
52920 --
52921 --
52922 -- set accounting line type info
52923 --
52924 xla_ae_lines_pkg.SetAcctLineType
52925 (p_component_type => l_component_type
52926 ,p_event_type_code => l_event_type_code
52927 ,p_line_definition_owner_code => l_line_definition_owner_code
52928 ,p_line_definition_code => l_line_definition_code
52929 ,p_accounting_line_code => l_component_code
52930 ,p_accounting_line_type_code => l_component_type_code
52931 ,p_accounting_line_appl_id => l_component_appl_id
52932 ,p_amb_context_code => l_amb_context_code
52933 ,p_entity_code => l_entity_code
52934 ,p_event_class_code => l_event_class_code);
52935 --
52936 -- set accounting class
52937 --
52938 xla_ae_lines_pkg.SetAcctClass(
52939 p_accounting_class_code => 'INTERCOMPANY_EXPENSE'
52940 , p_ae_header_id => l_ae_header_id
52941 );
52942
52943 --
52944 -- set rounding class
52945 --
52946 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52947 'INTERCOMPANY_EXPENSE';
52948
52949 --
52950 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52951 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52952 --
52953 -- bulk performance
52954 --
52955 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52956
52957 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52958 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52959
52960 -- 4955764
52961 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52962 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52963
52964 -- 4458381 Public Sector Enh
52965
52966 --
52967 -- set accounting attributes for the line type
52968 --
52969 l_entered_amt_idx := 3;
52970 l_accted_amt_idx := 8;
52971 l_bflow_applied_to_amt_idx := NULL; -- 5132302
52972 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
52973 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
52974 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
52975 l_rec_acct_attrs.array_char_value(2) := p_source_6;
52976 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
52977 l_rec_acct_attrs.array_num_value(3) := p_source_3;
52978 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
52979 l_rec_acct_attrs.array_char_value(4) := p_source_7;
52980 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
52981 l_rec_acct_attrs.array_date_value(5) := p_source_8;
52982 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
52983 l_rec_acct_attrs.array_num_value(6) := p_source_9;
52984 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
52985 l_rec_acct_attrs.array_char_value(7) := p_source_10;
52986 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
52987 l_rec_acct_attrs.array_num_value(8) := p_source_11;
52988
52989 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52990 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52991
52992 ---------------------------------------------------------------------------------------------------------------
52993 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52997 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52994 ---------------------------------------------------------------------------------------------------------------
52995 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52996
52998 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52999
53000 IF xla_accounting_cache_pkg.GetValueChar
53001 (p_source_code => 'LEDGER_CATEGORY_CODE'
53002 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53003 AND l_bflow_method_code = 'PRIOR_ENTRY'
53004 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53005 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53006 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53007 )
53008 THEN
53009 xla_ae_lines_pkg.BflowUpgEntry
53010 (p_business_method_code => l_bflow_method_code
53011 ,p_business_class_code => l_bflow_class_code
53012 ,p_balance_type => l_balance_type_code);
53013 ELSE
53014 NULL;
53015 -- No business flow processing for business flow method of NONE.
53016 END IF;
53017
53018 --
53019 -- call analytical criteria
53020 --
53021
53022 --
53023 -- call description
53024 --
53025 -- No description or it is inherited.
53026 --
53027 -- call ADRs
53028 -- Bug 4922099
53029 --
53030 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53031 (NVL(l_actual_upg_option, 'N') = 'O') OR
53032 (NVL(l_enc_upg_option, 'N') = 'O')
53033 )
53034 THEN
53035 NULL;
53036 --
53037 --
53038
53039 l_ccid := AcctDerRule_16(
53040 p_application_id => p_application_id
53041 , p_ae_header_id => l_ae_header_id
53042 , p_source_1 => p_source_1
53043 , p_source_2 => p_source_2
53044 , x_transaction_coa_id => l_adr_transaction_coa_id
53045 , x_accounting_coa_id => l_adr_accounting_coa_id
53046 , x_value_type_code => l_adr_value_type_code
53047 , p_side => 'NA'
53048 );
53049
53050 xla_ae_lines_pkg.set_ccid(
53051 p_code_combination_id => l_ccid
53052 , p_value_type_code => l_adr_value_type_code
53053 , p_transaction_coa_id => l_adr_transaction_coa_id
53054 , p_accounting_coa_id => l_adr_accounting_coa_id
53055 , p_adr_code => 'ICEXP'
53056 , p_adr_type_code => 'S'
53057 , p_component_type => l_component_type
53058 , p_component_code => l_component_code
53059 , p_component_type_code => l_component_type_code
53060 , p_component_appl_id => l_component_appl_id
53061 , p_amb_context_code => l_amb_context_code
53062 , p_side => 'NA'
53063 );
53064
53065
53066 --
53067 --
53068 END IF;
53069 --
53070 -- Bug 4922099
53071 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53072 (NVL(l_enc_upg_option, 'N') = 'O')
53073 ) AND
53074 (l_bflow_method_code = 'PRIOR_ENTRY')
53075 )
53076 THEN
53077 IF
53078 --
53079 1 = 2
53080 --
53081 THEN
53082 xla_accounting_err_pkg.build_message
53083 (p_appli_s_name => 'XLA'
53084 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53085 ,p_token_1 => 'LINE_NUMBER'
53086 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
53087 ,p_token_2 => 'LINE_TYPE_NAME'
53088 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
53089 l_component_type
53090 ,l_component_code
53091 ,l_component_type_code
53092 ,l_component_appl_id
53093 ,l_amb_context_code
53094 ,l_entity_code
53095 ,l_event_class_code
53096 )
53097 ,p_token_3 => 'OWNER'
53098 ,p_value_3 => xla_lookups_pkg.get_meaning(
53099 p_lookup_type => 'XLA_OWNER_TYPE'
53100 ,p_lookup_code => l_component_type_code
53101 )
53102 ,p_token_4 => 'PRODUCT_NAME'
53103 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53107 ,p_ae_header_id => NULL
53104 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53105 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53106 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53108 );
53109
53110 IF (C_LEVEL_ERROR>= g_log_level) THEN
53111 trace
53112 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53113 ,p_level => C_LEVEL_ERROR
53114 ,p_module => l_log_module);
53115 END IF;
53116 END IF;
53117 END IF;
53118 --
53119 --
53120 ------------------------------------------------------------------------------------------------
53121 -- 4219869 Business Flow
53122 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53123 -- Prior Entry. Currently, the following code is always generated.
53124 ------------------------------------------------------------------------------------------------
53125 XLA_AE_LINES_PKG.ValidateCurrentLine;
53126
53127 ------------------------------------------------------------------------------------
53128 -- 4219869 Business Flow
53129 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53130 ------------------------------------------------------------------------------------
53131 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53132
53133 ----------------------------------------------------------------------------------
53134 -- 4219869 Business Flow
53135 -- Update journal entry status -- Need to generate this within IF <condition>
53136 ----------------------------------------------------------------------------------
53137 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53138 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53139 ,p_balance_type_code => l_balance_type_code
53140 );
53141
53142 -------------------------------------------------------------------------------------------
53143 -- 4262811 - Generate the Accrual Reversal lines
53144 -------------------------------------------------------------------------------------------
53145 BEGIN
53146 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53147 (g_array_event(p_event_id).array_value_num('header_index'));
53148 IF l_acc_rev_flag IS NULL THEN
53149 l_acc_rev_flag := 'N';
53150 END IF;
53151 EXCEPTION
53152 WHEN OTHERS THEN
53153 l_acc_rev_flag := 'N';
53154 END;
53155 --
53156 IF (l_acc_rev_flag = 'Y') THEN
53157
53158 -- 4645092 ------------------------------------------------------------------------------
53159 -- To allow MPA report to determine if it should generate report process
53160 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53161 ------------------------------------------------------------------------------------------
53162
53163 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53164 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53165 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
53166 -- call ADRs
53167 -- Bug 4922099
53168 --
53169 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53170 (NVL(l_actual_upg_option, 'N') = 'O') OR
53171 (NVL(l_enc_upg_option, 'N') = 'O')
53172 )
53173 THEN
53174 NULL;
53175 --
53176 --
53177
53178 l_ccid := AcctDerRule_16(
53179 p_application_id => p_application_id
53180 , p_ae_header_id => l_ae_header_id
53181 , p_source_1 => p_source_1
53182 , p_source_2 => p_source_2
53183 , x_transaction_coa_id => l_adr_transaction_coa_id
53184 , x_accounting_coa_id => l_adr_accounting_coa_id
53185 , x_value_type_code => l_adr_value_type_code
53186 , p_side => 'NA'
53187 );
53188
53189 xla_ae_lines_pkg.set_ccid(
53190 p_code_combination_id => l_ccid
53191 , p_value_type_code => l_adr_value_type_code
53192 , p_transaction_coa_id => l_adr_transaction_coa_id
53193 , p_accounting_coa_id => l_adr_accounting_coa_id
53194 , p_adr_code => 'ICEXP'
53195 , p_adr_type_code => 'S'
53196 , p_component_type => l_component_type
53197 , p_component_code => l_component_code
53198 , p_component_type_code => l_component_type_code
53199 , p_component_appl_id => l_component_appl_id
53200 , p_amb_context_code => l_amb_context_code
53201 , p_side => 'NA'
53202 );
53203
53204
53205 --
53206 --
53207 END IF;
53208
53209 --
53210 -- Update the line information that should be overwritten
53211 --
53212 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53213 p_header_num => 1);
53214 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
53218 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
53215
53216 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53217
53219 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53220 END IF;
53221
53222 --
53223 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53224 --
53225 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53226 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
53227 ELSE
53228 ---------------------------------------------------------------------------------------------------
53229 -- 4262811a Switch Sign
53230 ---------------------------------------------------------------------------------------------------
53231 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
53232 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53233 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53234 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53235 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53236 -- 5132302
53237 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53238 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53239
53240 END IF;
53241
53242 -- 4955764
53243 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53244 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53245
53246
53247 XLA_AE_LINES_PKG.ValidateCurrentLine;
53248 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53249
53250 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53251 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53252 ,p_balance_type_code => l_balance_type_code);
53253
53254 END IF;
53255
53256 -----------------------------------------------------------------------------------------
53257 -- 4262811 Multiperiod Accounting
53258 -----------------------------------------------------------------------------------------
53259 -- No MPA option is assigned.
53260
53261
53262 END IF;
53263 END IF;
53264 --
53265
53266 --
53267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53268 trace
53269 (p_msg => 'END of AcctLineType_128'
53270 ,p_level => C_LEVEL_PROCEDURE
53271 ,p_module => l_log_module);
53272 END IF;
53273 --
53274 EXCEPTION
53275 WHEN xla_exceptions_pkg.application_exception THEN
53276 RAISE;
53277 WHEN OTHERS THEN
53278 xla_exceptions_pkg.raise_message
53279 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_128');
53280 END AcctLineType_128;
53281 --
53282
53283 ---------------------------------------
53284 --
53285 -- PRIVATE FUNCTION
53286 -- AcctLineType_129
53287 --
53288 ---------------------------------------
53289 PROCEDURE AcctLineType_129 (
53290 p_application_id IN NUMBER
53291 ,p_event_id IN NUMBER
53292 ,p_calculate_acctd_flag IN VARCHAR2
53293 ,p_calculate_g_l_flag IN VARCHAR2
53294 ,p_actual_flag IN OUT VARCHAR2
53295 ,p_balance_type_code OUT VARCHAR2
53296 ,p_gain_or_loss_ref OUT VARCHAR2
53297
53298 --Transaction Account
53299 , p_source_1 IN NUMBER
53300 --Journal Line Type
53301 , p_source_2 IN VARCHAR2
53302 --Entered Amount
53303 , p_source_3 IN NUMBER
53304 --First Distribution Identifier
53305 , p_source_5 IN NUMBER
53306 --Distribution Type
53307 , p_source_6 IN VARCHAR2
53308 --Currency Code
53309 , p_source_7 IN VARCHAR2
53310 --Currency Conversion Date
53311 , p_source_8 IN DATE
53312 --Currency Conversion Rate
53313 , p_source_9 IN NUMBER
53314 --Currency Conversion Type
53315 , p_source_10 IN VARCHAR2
53316 --Accounted Amount
53317 , p_source_11 IN NUMBER
53318 )
53319 IS
53320
53321 l_component_type VARCHAR2(80);
53322 l_component_code VARCHAR2(30);
53323 l_component_type_code VARCHAR2(1);
53324 l_component_appl_id INTEGER;
53325 l_amb_context_code VARCHAR2(30);
53326 l_entity_code VARCHAR2(30);
53327 l_event_class_code VARCHAR2(30);
53328 l_ae_header_id NUMBER;
53329 l_event_type_code VARCHAR2(30);
53330 l_line_definition_code VARCHAR2(30);
53331 l_line_definition_owner_code VARCHAR2(1);
53332 --
53333 -- adr variables
53334 l_segment VARCHAR2(30);
53335 l_ccid NUMBER;
53336 l_adr_transaction_coa_id NUMBER;
53337 l_adr_accounting_coa_id NUMBER;
53338 l_adr_flexfield_segment_code VARCHAR2(30);
53339 l_adr_flex_value_set_id NUMBER;
53340 l_adr_value_type_code VARCHAR2(30);
53341 l_adr_value_combination_id NUMBER;
53345 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
53342 l_adr_value_segment_code VARCHAR2(30);
53343
53344 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
53346 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
53347 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
53348
53349 -- 4262811 Variables ------------------------------------------------------------------------------------------
53350 l_entered_amt_idx NUMBER;
53351 l_accted_amt_idx NUMBER;
53352 l_acc_rev_flag VARCHAR2(1);
53353 l_accrual_line_num NUMBER;
53354 l_tmp_amt NUMBER;
53355 l_acc_rev_natural_side_code VARCHAR2(1);
53356
53357 l_num_entries NUMBER;
53358 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
53359 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
53360 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
53361 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
53362 l_recog_line_1 NUMBER;
53363 l_recog_line_2 NUMBER;
53364
53365 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
53366 l_bflow_applied_to_amt NUMBER; -- 5132302
53367 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
53368
53369 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53370
53371 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
53372 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
53373
53374 ---------------------------------------------------------------------------------------------------------------
53375
53376
53377 --
53378 -- bulk performance
53379 --
53380 l_balance_type_code VARCHAR2(1);
53381 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
53382 l_log_module VARCHAR2(240);
53383
53384 --
53385 -- Upgrade strategy
53386 --
53387 l_actual_upg_option VARCHAR2(1);
53388 l_enc_upg_option VARCHAR2(1);
53389
53390 --
53391 BEGIN
53392 --
53393 IF g_log_enabled THEN
53394 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
53395 END IF;
53396 --
53397 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53398
53399 trace
53400 (p_msg => 'BEGIN of AcctLineType_129'
53401 ,p_level => C_LEVEL_PROCEDURE
53402 ,p_module => l_log_module);
53403
53404 END IF;
53405 --
53406 l_component_type := 'AMB_JLT';
53407 l_component_code := 'ICEXP';
53408 l_component_type_code := 'S';
53409 l_component_appl_id := 555;
53410 l_amb_context_code := 'DEFAULT';
53411 l_entity_code := 'INVENTORY';
53412 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
53413 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
53414 l_line_definition_owner_code := 'S';
53415 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
53416 --
53417 l_balance_type_code := 'A';
53418 l_segment := NULL;
53419 l_ccid := NULL;
53420 l_adr_transaction_coa_id := NULL;
53421 l_adr_accounting_coa_id := NULL;
53422 l_adr_flexfield_segment_code := NULL;
53423 l_adr_flex_value_set_id := NULL;
53424 l_adr_value_type_code := NULL;
53425 l_adr_value_combination_id := NULL;
53426 l_adr_value_segment_code := NULL;
53427
53428 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
53429 l_bflow_class_code := ''; -- 4219869 Business Flow
53430 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
53431 l_budgetary_control_flag := 'N';
53432
53433 l_bflow_applied_to_amt_idx := NULL; -- 5132302
53434 l_bflow_applied_to_amt := NULL; -- 5132302
53435 l_entered_amt_idx := NULL; -- 4262811
53436 l_accted_amt_idx := NULL; -- 4262811
53437 l_acc_rev_flag := NULL; -- 4262811
53438 l_accrual_line_num := NULL; -- 4262811
53439 l_tmp_amt := NULL; -- 4262811
53440 --
53441
53442 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53443 l_balance_type_code <> 'B' THEN
53444 IF NVL(p_source_2,'
53445 ') = 'ICEXP'
53446 THEN
53447
53448 --
53449 XLA_AE_LINES_PKG.SetNewLine;
53450
53451 p_balance_type_code := l_balance_type_code;
53452 -- set the flag so later we will know whether the gain loss line needs to be created
53453
53454 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53455 p_actual_flag :='A';
53456 END IF;
53457
53458 --
53459 -- bulk performance
53460 --
53461 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53462 p_header_num => 0); -- 4262811
53463 --
53464 -- set accounting line options
53465 --
53466 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53467 p_natural_side_code => 'D'
53468 , p_gain_or_loss_flag => 'N'
53472 , p_merge_duplicate_code => 'W'
53469 , p_gl_transfer_mode_code => 'D'
53470 , p_acct_entry_type_code => 'A'
53471 , p_switch_side_flag => 'Y'
53473 );
53474 --
53475 l_acc_rev_natural_side_code := 'C'; -- 4262811
53476 --
53477 --
53478 -- set accounting line type info
53479 --
53480 xla_ae_lines_pkg.SetAcctLineType
53481 (p_component_type => l_component_type
53482 ,p_event_type_code => l_event_type_code
53483 ,p_line_definition_owner_code => l_line_definition_owner_code
53484 ,p_line_definition_code => l_line_definition_code
53485 ,p_accounting_line_code => l_component_code
53486 ,p_accounting_line_type_code => l_component_type_code
53487 ,p_accounting_line_appl_id => l_component_appl_id
53488 ,p_amb_context_code => l_amb_context_code
53489 ,p_entity_code => l_entity_code
53490 ,p_event_class_code => l_event_class_code);
53491 --
53492 -- set accounting class
53493 --
53494 xla_ae_lines_pkg.SetAcctClass(
53495 p_accounting_class_code => 'INTERCOMPANY_EXPENSE'
53496 , p_ae_header_id => l_ae_header_id
53497 );
53498
53499 --
53500 -- set rounding class
53501 --
53502 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53503 'INTERCOMPANY_EXPENSE';
53504
53505 --
53506 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53507 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53508 --
53509 -- bulk performance
53510 --
53511 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53512
53513 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53514 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53515
53516 -- 4955764
53517 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53518 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53519
53520 -- 4458381 Public Sector Enh
53521
53522 --
53523 -- set accounting attributes for the line type
53524 --
53525 l_entered_amt_idx := 3;
53526 l_accted_amt_idx := 8;
53527 l_bflow_applied_to_amt_idx := NULL; -- 5132302
53528 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
53529 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
53530 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
53531 l_rec_acct_attrs.array_char_value(2) := p_source_6;
53532 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
53533 l_rec_acct_attrs.array_num_value(3) := p_source_3;
53534 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
53535 l_rec_acct_attrs.array_char_value(4) := p_source_7;
53536 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
53537 l_rec_acct_attrs.array_date_value(5) := p_source_8;
53538 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
53539 l_rec_acct_attrs.array_num_value(6) := p_source_9;
53540 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
53541 l_rec_acct_attrs.array_char_value(7) := p_source_10;
53542 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
53543 l_rec_acct_attrs.array_num_value(8) := p_source_11;
53544
53545 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53546 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53547
53548 ---------------------------------------------------------------------------------------------------------------
53549 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53550 ---------------------------------------------------------------------------------------------------------------
53551 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53552
53553 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53554 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53555
53556 IF xla_accounting_cache_pkg.GetValueChar
53557 (p_source_code => 'LEDGER_CATEGORY_CODE'
53558 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53559 AND l_bflow_method_code = 'PRIOR_ENTRY'
53560 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53561 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53562 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53563 )
53564 THEN
53565 xla_ae_lines_pkg.BflowUpgEntry
53566 (p_business_method_code => l_bflow_method_code
53567 ,p_business_class_code => l_bflow_class_code
53568 ,p_balance_type => l_balance_type_code);
53569 ELSE
53570 NULL;
53571 -- No business flow processing for business flow method of NONE.
53572 END IF;
53573
53574 --
53575 -- call analytical criteria
53576 --
53577
53578 --
53579 -- call description
53580 --
53584 -- Bug 4922099
53581 -- No description or it is inherited.
53582 --
53583 -- call ADRs
53585 --
53586 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53587 (NVL(l_actual_upg_option, 'N') = 'O') OR
53588 (NVL(l_enc_upg_option, 'N') = 'O')
53589 )
53590 THEN
53591 NULL;
53592 --
53593 --
53594
53595 l_ccid := AcctDerRule_16(
53596 p_application_id => p_application_id
53597 , p_ae_header_id => l_ae_header_id
53598 , p_source_1 => p_source_1
53599 , p_source_2 => p_source_2
53600 , x_transaction_coa_id => l_adr_transaction_coa_id
53601 , x_accounting_coa_id => l_adr_accounting_coa_id
53602 , x_value_type_code => l_adr_value_type_code
53603 , p_side => 'NA'
53604 );
53605
53606 xla_ae_lines_pkg.set_ccid(
53607 p_code_combination_id => l_ccid
53608 , p_value_type_code => l_adr_value_type_code
53609 , p_transaction_coa_id => l_adr_transaction_coa_id
53610 , p_accounting_coa_id => l_adr_accounting_coa_id
53611 , p_adr_code => 'ICEXP'
53612 , p_adr_type_code => 'S'
53613 , p_component_type => l_component_type
53614 , p_component_code => l_component_code
53615 , p_component_type_code => l_component_type_code
53616 , p_component_appl_id => l_component_appl_id
53617 , p_amb_context_code => l_amb_context_code
53618 , p_side => 'NA'
53619 );
53620
53621
53622 --
53623 --
53624 END IF;
53625 --
53626 -- Bug 4922099
53627 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53628 (NVL(l_enc_upg_option, 'N') = 'O')
53629 ) AND
53630 (l_bflow_method_code = 'PRIOR_ENTRY')
53631 )
53632 THEN
53633 IF
53634 --
53635 1 = 2
53636 --
53637 THEN
53638 xla_accounting_err_pkg.build_message
53639 (p_appli_s_name => 'XLA'
53640 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53641 ,p_token_1 => 'LINE_NUMBER'
53642 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
53643 ,p_token_2 => 'LINE_TYPE_NAME'
53644 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
53645 l_component_type
53646 ,l_component_code
53647 ,l_component_type_code
53648 ,l_component_appl_id
53649 ,l_amb_context_code
53650 ,l_entity_code
53651 ,l_event_class_code
53652 )
53653 ,p_token_3 => 'OWNER'
53654 ,p_value_3 => xla_lookups_pkg.get_meaning(
53655 p_lookup_type => 'XLA_OWNER_TYPE'
53656 ,p_lookup_code => l_component_type_code
53657 )
53658 ,p_token_4 => 'PRODUCT_NAME'
53659 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53660 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53661 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53662 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53663 ,p_ae_header_id => NULL
53664 );
53665
53666 IF (C_LEVEL_ERROR>= g_log_level) THEN
53667 trace
53668 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53669 ,p_level => C_LEVEL_ERROR
53670 ,p_module => l_log_module);
53671 END IF;
53672 END IF;
53673 END IF;
53674 --
53675 --
53676 ------------------------------------------------------------------------------------------------
53677 -- 4219869 Business Flow
53678 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53679 -- Prior Entry. Currently, the following code is always generated.
53680 ------------------------------------------------------------------------------------------------
53681 XLA_AE_LINES_PKG.ValidateCurrentLine;
53682
53683 ------------------------------------------------------------------------------------
53684 -- 4219869 Business Flow
53685 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53689 ----------------------------------------------------------------------------------
53686 ------------------------------------------------------------------------------------
53687 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53688
53690 -- 4219869 Business Flow
53691 -- Update journal entry status -- Need to generate this within IF <condition>
53692 ----------------------------------------------------------------------------------
53693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53694 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53695 ,p_balance_type_code => l_balance_type_code
53696 );
53697
53698 -------------------------------------------------------------------------------------------
53699 -- 4262811 - Generate the Accrual Reversal lines
53700 -------------------------------------------------------------------------------------------
53701 BEGIN
53702 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53703 (g_array_event(p_event_id).array_value_num('header_index'));
53704 IF l_acc_rev_flag IS NULL THEN
53705 l_acc_rev_flag := 'N';
53706 END IF;
53707 EXCEPTION
53708 WHEN OTHERS THEN
53709 l_acc_rev_flag := 'N';
53710 END;
53711 --
53712 IF (l_acc_rev_flag = 'Y') THEN
53713
53714 -- 4645092 ------------------------------------------------------------------------------
53715 -- To allow MPA report to determine if it should generate report process
53716 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53717 ------------------------------------------------------------------------------------------
53718
53719 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53720 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53721 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
53722 -- call ADRs
53723 -- Bug 4922099
53724 --
53725 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53726 (NVL(l_actual_upg_option, 'N') = 'O') OR
53727 (NVL(l_enc_upg_option, 'N') = 'O')
53728 )
53729 THEN
53730 NULL;
53731 --
53732 --
53733
53734 l_ccid := AcctDerRule_16(
53735 p_application_id => p_application_id
53736 , p_ae_header_id => l_ae_header_id
53737 , p_source_1 => p_source_1
53738 , p_source_2 => p_source_2
53739 , x_transaction_coa_id => l_adr_transaction_coa_id
53740 , x_accounting_coa_id => l_adr_accounting_coa_id
53741 , x_value_type_code => l_adr_value_type_code
53742 , p_side => 'NA'
53743 );
53744
53745 xla_ae_lines_pkg.set_ccid(
53746 p_code_combination_id => l_ccid
53747 , p_value_type_code => l_adr_value_type_code
53748 , p_transaction_coa_id => l_adr_transaction_coa_id
53749 , p_accounting_coa_id => l_adr_accounting_coa_id
53750 , p_adr_code => 'ICEXP'
53751 , p_adr_type_code => 'S'
53752 , p_component_type => l_component_type
53753 , p_component_code => l_component_code
53754 , p_component_type_code => l_component_type_code
53755 , p_component_appl_id => l_component_appl_id
53756 , p_amb_context_code => l_amb_context_code
53757 , p_side => 'NA'
53758 );
53759
53760
53761 --
53762 --
53763 END IF;
53764
53765 --
53766 -- Update the line information that should be overwritten
53767 --
53768 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53769 p_header_num => 1);
53770 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
53771
53772 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53773
53774 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
53775 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53776 END IF;
53777
53778 --
53779 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53780 --
53781 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53782 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
53783 ELSE
53784 ---------------------------------------------------------------------------------------------------
53785 -- 4262811a Switch Sign
53786 ---------------------------------------------------------------------------------------------------
53787 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
53788 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53789 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53790 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53791 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53792 -- 5132302
53796 END IF;
53793 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53794 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53795
53797
53798 -- 4955764
53799 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53800 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53801
53802
53803 XLA_AE_LINES_PKG.ValidateCurrentLine;
53804 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53805
53806 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53807 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53808 ,p_balance_type_code => l_balance_type_code);
53809
53810 END IF;
53811
53812 -----------------------------------------------------------------------------------------
53813 -- 4262811 Multiperiod Accounting
53814 -----------------------------------------------------------------------------------------
53815 -- No MPA option is assigned.
53816
53817
53818 END IF;
53819 END IF;
53820 --
53821
53822 --
53823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53824 trace
53825 (p_msg => 'END of AcctLineType_129'
53826 ,p_level => C_LEVEL_PROCEDURE
53827 ,p_module => l_log_module);
53828 END IF;
53829 --
53830 EXCEPTION
53831 WHEN xla_exceptions_pkg.application_exception THEN
53832 RAISE;
53833 WHEN OTHERS THEN
53834 xla_exceptions_pkg.raise_message
53835 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_129');
53836 END AcctLineType_129;
53837 --
53838
53839 ---------------------------------------
53840 --
53841 -- PRIVATE FUNCTION
53842 -- AcctLineType_130
53843 --
53844 ---------------------------------------
53845 PROCEDURE AcctLineType_130 (
53846 p_application_id IN NUMBER
53847 ,p_event_id IN NUMBER
53848 ,p_calculate_acctd_flag IN VARCHAR2
53849 ,p_calculate_g_l_flag IN VARCHAR2
53850 ,p_actual_flag IN OUT VARCHAR2
53851 ,p_balance_type_code OUT VARCHAR2
53852 ,p_gain_or_loss_ref OUT VARCHAR2
53853
53854 --Transaction Account
53855 , p_source_1 IN NUMBER
53856 --Journal Line Type
53857 , p_source_2 IN VARCHAR2
53858 --Entered Amount
53859 , p_source_3 IN NUMBER
53860 --First Distribution Identifier
53861 , p_source_5 IN NUMBER
53862 --Distribution Type
53863 , p_source_6 IN VARCHAR2
53864 --Currency Code
53865 , p_source_7 IN VARCHAR2
53866 --Currency Conversion Date
53867 , p_source_8 IN DATE
53868 --Currency Conversion Rate
53869 , p_source_9 IN NUMBER
53870 --Currency Conversion Type
53871 , p_source_10 IN VARCHAR2
53872 --Accounted Amount
53873 , p_source_11 IN NUMBER
53874 )
53875 IS
53876
53877 l_component_type VARCHAR2(80);
53878 l_component_code VARCHAR2(30);
53879 l_component_type_code VARCHAR2(1);
53880 l_component_appl_id INTEGER;
53881 l_amb_context_code VARCHAR2(30);
53882 l_entity_code VARCHAR2(30);
53883 l_event_class_code VARCHAR2(30);
53884 l_ae_header_id NUMBER;
53885 l_event_type_code VARCHAR2(30);
53886 l_line_definition_code VARCHAR2(30);
53887 l_line_definition_owner_code VARCHAR2(1);
53888 --
53889 -- adr variables
53890 l_segment VARCHAR2(30);
53891 l_ccid NUMBER;
53892 l_adr_transaction_coa_id NUMBER;
53893 l_adr_accounting_coa_id NUMBER;
53894 l_adr_flexfield_segment_code VARCHAR2(30);
53895 l_adr_flex_value_set_id NUMBER;
53896 l_adr_value_type_code VARCHAR2(30);
53897 l_adr_value_combination_id NUMBER;
53898 l_adr_value_segment_code VARCHAR2(30);
53899
53900 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
53901 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
53902 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
53903 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
53904
53905 -- 4262811 Variables ------------------------------------------------------------------------------------------
53906 l_entered_amt_idx NUMBER;
53907 l_accted_amt_idx NUMBER;
53908 l_acc_rev_flag VARCHAR2(1);
53909 l_accrual_line_num NUMBER;
53910 l_tmp_amt NUMBER;
53911 l_acc_rev_natural_side_code VARCHAR2(1);
53912
53913 l_num_entries NUMBER;
53914 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
53915 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
53916 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
53917 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
53918 l_recog_line_1 NUMBER;
53919 l_recog_line_2 NUMBER;
53920
53921 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
53922 l_bflow_applied_to_amt NUMBER; -- 5132302
53926
53923 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
53924
53925 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53927 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
53928 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
53929
53930 ---------------------------------------------------------------------------------------------------------------
53931
53932
53933 --
53934 -- bulk performance
53935 --
53936 l_balance_type_code VARCHAR2(1);
53937 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
53938 l_log_module VARCHAR2(240);
53939
53940 --
53941 -- Upgrade strategy
53942 --
53943 l_actual_upg_option VARCHAR2(1);
53944 l_enc_upg_option VARCHAR2(1);
53945
53946 --
53947 BEGIN
53948 --
53949 IF g_log_enabled THEN
53950 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_130';
53951 END IF;
53952 --
53953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53954
53955 trace
53956 (p_msg => 'BEGIN of AcctLineType_130'
53957 ,p_level => C_LEVEL_PROCEDURE
53958 ,p_module => l_log_module);
53959
53960 END IF;
53961 --
53962 l_component_type := 'AMB_JLT';
53963 l_component_code := 'ICEXP';
53964 l_component_type_code := 'S';
53965 l_component_appl_id := 555;
53966 l_amb_context_code := 'DEFAULT';
53967 l_entity_code := 'INVENTORY';
53968 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
53969 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
53970 l_line_definition_owner_code := 'S';
53971 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
53972 --
53973 l_balance_type_code := 'A';
53974 l_segment := NULL;
53975 l_ccid := NULL;
53976 l_adr_transaction_coa_id := NULL;
53977 l_adr_accounting_coa_id := NULL;
53978 l_adr_flexfield_segment_code := NULL;
53979 l_adr_flex_value_set_id := NULL;
53980 l_adr_value_type_code := NULL;
53981 l_adr_value_combination_id := NULL;
53982 l_adr_value_segment_code := NULL;
53983
53984 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
53985 l_bflow_class_code := ''; -- 4219869 Business Flow
53986 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
53987 l_budgetary_control_flag := 'N';
53988
53989 l_bflow_applied_to_amt_idx := NULL; -- 5132302
53990 l_bflow_applied_to_amt := NULL; -- 5132302
53991 l_entered_amt_idx := NULL; -- 4262811
53992 l_accted_amt_idx := NULL; -- 4262811
53993 l_acc_rev_flag := NULL; -- 4262811
53994 l_accrual_line_num := NULL; -- 4262811
53995 l_tmp_amt := NULL; -- 4262811
53996 --
53997
53998 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53999 l_balance_type_code <> 'B' THEN
54000 IF NVL(p_source_2,'
54001 ') = 'ICEXP'
54002 THEN
54003
54004 --
54005 XLA_AE_LINES_PKG.SetNewLine;
54006
54007 p_balance_type_code := l_balance_type_code;
54008 -- set the flag so later we will know whether the gain loss line needs to be created
54009
54010 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54011 p_actual_flag :='A';
54012 END IF;
54013
54014 --
54015 -- bulk performance
54016 --
54017 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54018 p_header_num => 0); -- 4262811
54019 --
54020 -- set accounting line options
54021 --
54022 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54023 p_natural_side_code => 'D'
54024 , p_gain_or_loss_flag => 'N'
54025 , p_gl_transfer_mode_code => 'D'
54026 , p_acct_entry_type_code => 'A'
54027 , p_switch_side_flag => 'Y'
54028 , p_merge_duplicate_code => 'W'
54029 );
54030 --
54031 l_acc_rev_natural_side_code := 'C'; -- 4262811
54032 --
54033 --
54034 -- set accounting line type info
54035 --
54036 xla_ae_lines_pkg.SetAcctLineType
54037 (p_component_type => l_component_type
54038 ,p_event_type_code => l_event_type_code
54039 ,p_line_definition_owner_code => l_line_definition_owner_code
54040 ,p_line_definition_code => l_line_definition_code
54041 ,p_accounting_line_code => l_component_code
54042 ,p_accounting_line_type_code => l_component_type_code
54043 ,p_accounting_line_appl_id => l_component_appl_id
54044 ,p_amb_context_code => l_amb_context_code
54045 ,p_entity_code => l_entity_code
54046 ,p_event_class_code => l_event_class_code);
54047 --
54048 -- set accounting class
54049 --
54050 xla_ae_lines_pkg.SetAcctClass(
54051 p_accounting_class_code => 'INTERCOMPANY_EXPENSE'
54052 , p_ae_header_id => l_ae_header_id
54053 );
54054
54055 --
54056 -- set rounding class
54057 --
54061 --
54058 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54059 'INTERCOMPANY_EXPENSE';
54060
54062 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54063 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54064 --
54065 -- bulk performance
54066 --
54067 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54068
54069 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54070 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54071
54072 -- 4955764
54073 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54074 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54075
54076 -- 4458381 Public Sector Enh
54077
54078 --
54079 -- set accounting attributes for the line type
54080 --
54081 l_entered_amt_idx := 3;
54082 l_accted_amt_idx := 8;
54083 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54084 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54085 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
54086 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54087 l_rec_acct_attrs.array_char_value(2) := p_source_6;
54088 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54089 l_rec_acct_attrs.array_num_value(3) := p_source_3;
54090 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54091 l_rec_acct_attrs.array_char_value(4) := p_source_7;
54092 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54093 l_rec_acct_attrs.array_date_value(5) := p_source_8;
54094 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54095 l_rec_acct_attrs.array_num_value(6) := p_source_9;
54096 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54097 l_rec_acct_attrs.array_char_value(7) := p_source_10;
54098 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54099 l_rec_acct_attrs.array_num_value(8) := p_source_11;
54100
54101 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54102 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54103
54104 ---------------------------------------------------------------------------------------------------------------
54105 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54106 ---------------------------------------------------------------------------------------------------------------
54107 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54108
54109 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54110 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54111
54112 IF xla_accounting_cache_pkg.GetValueChar
54113 (p_source_code => 'LEDGER_CATEGORY_CODE'
54114 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54115 AND l_bflow_method_code = 'PRIOR_ENTRY'
54116 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54117 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54118 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54119 )
54120 THEN
54121 xla_ae_lines_pkg.BflowUpgEntry
54122 (p_business_method_code => l_bflow_method_code
54123 ,p_business_class_code => l_bflow_class_code
54124 ,p_balance_type => l_balance_type_code);
54125 ELSE
54126 NULL;
54127 -- No business flow processing for business flow method of NONE.
54128 END IF;
54129
54130 --
54131 -- call analytical criteria
54132 --
54133
54134 --
54135 -- call description
54136 --
54137 -- No description or it is inherited.
54138 --
54139 -- call ADRs
54140 -- Bug 4922099
54141 --
54142 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54143 (NVL(l_actual_upg_option, 'N') = 'O') OR
54144 (NVL(l_enc_upg_option, 'N') = 'O')
54145 )
54146 THEN
54147 NULL;
54148 --
54149 --
54150
54151 l_ccid := AcctDerRule_16(
54152 p_application_id => p_application_id
54153 , p_ae_header_id => l_ae_header_id
54154 , p_source_1 => p_source_1
54155 , p_source_2 => p_source_2
54156 , x_transaction_coa_id => l_adr_transaction_coa_id
54157 , x_accounting_coa_id => l_adr_accounting_coa_id
54158 , x_value_type_code => l_adr_value_type_code
54159 , p_side => 'NA'
54160 );
54161
54162 xla_ae_lines_pkg.set_ccid(
54163 p_code_combination_id => l_ccid
54164 , p_value_type_code => l_adr_value_type_code
54165 , p_transaction_coa_id => l_adr_transaction_coa_id
54166 , p_accounting_coa_id => l_adr_accounting_coa_id
54167 , p_adr_code => 'ICEXP'
54168 , p_adr_type_code => 'S'
54169 , p_component_type => l_component_type
54170 , p_component_code => l_component_code
54174 , p_side => 'NA'
54171 , p_component_type_code => l_component_type_code
54172 , p_component_appl_id => l_component_appl_id
54173 , p_amb_context_code => l_amb_context_code
54175 );
54176
54177
54178 --
54179 --
54180 END IF;
54181 --
54182 -- Bug 4922099
54183 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54184 (NVL(l_enc_upg_option, 'N') = 'O')
54185 ) AND
54186 (l_bflow_method_code = 'PRIOR_ENTRY')
54187 )
54188 THEN
54189 IF
54190 --
54191 1 = 2
54192 --
54193 THEN
54194 xla_accounting_err_pkg.build_message
54195 (p_appli_s_name => 'XLA'
54196 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54197 ,p_token_1 => 'LINE_NUMBER'
54198 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
54199 ,p_token_2 => 'LINE_TYPE_NAME'
54200 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
54201 l_component_type
54202 ,l_component_code
54203 ,l_component_type_code
54204 ,l_component_appl_id
54205 ,l_amb_context_code
54206 ,l_entity_code
54207 ,l_event_class_code
54208 )
54209 ,p_token_3 => 'OWNER'
54210 ,p_value_3 => xla_lookups_pkg.get_meaning(
54211 p_lookup_type => 'XLA_OWNER_TYPE'
54212 ,p_lookup_code => l_component_type_code
54213 )
54214 ,p_token_4 => 'PRODUCT_NAME'
54215 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54216 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54217 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54218 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54219 ,p_ae_header_id => NULL
54220 );
54221
54222 IF (C_LEVEL_ERROR>= g_log_level) THEN
54223 trace
54224 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54225 ,p_level => C_LEVEL_ERROR
54226 ,p_module => l_log_module);
54227 END IF;
54228 END IF;
54229 END IF;
54230 --
54231 --
54232 ------------------------------------------------------------------------------------------------
54233 -- 4219869 Business Flow
54234 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54235 -- Prior Entry. Currently, the following code is always generated.
54236 ------------------------------------------------------------------------------------------------
54237 XLA_AE_LINES_PKG.ValidateCurrentLine;
54238
54239 ------------------------------------------------------------------------------------
54240 -- 4219869 Business Flow
54241 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54242 ------------------------------------------------------------------------------------
54243 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54244
54245 ----------------------------------------------------------------------------------
54246 -- 4219869 Business Flow
54247 -- Update journal entry status -- Need to generate this within IF <condition>
54248 ----------------------------------------------------------------------------------
54249 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54250 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54251 ,p_balance_type_code => l_balance_type_code
54252 );
54253
54254 -------------------------------------------------------------------------------------------
54255 -- 4262811 - Generate the Accrual Reversal lines
54256 -------------------------------------------------------------------------------------------
54257 BEGIN
54258 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54259 (g_array_event(p_event_id).array_value_num('header_index'));
54260 IF l_acc_rev_flag IS NULL THEN
54261 l_acc_rev_flag := 'N';
54262 END IF;
54263 EXCEPTION
54264 WHEN OTHERS THEN
54265 l_acc_rev_flag := 'N';
54266 END;
54267 --
54268 IF (l_acc_rev_flag = 'Y') THEN
54272 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54269
54270 -- 4645092 ------------------------------------------------------------------------------
54271 -- To allow MPA report to determine if it should generate report process
54273 ------------------------------------------------------------------------------------------
54274
54275 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54276 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54277 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
54278 -- call ADRs
54279 -- Bug 4922099
54280 --
54281 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54282 (NVL(l_actual_upg_option, 'N') = 'O') OR
54283 (NVL(l_enc_upg_option, 'N') = 'O')
54284 )
54285 THEN
54286 NULL;
54287 --
54288 --
54289
54290 l_ccid := AcctDerRule_16(
54291 p_application_id => p_application_id
54292 , p_ae_header_id => l_ae_header_id
54293 , p_source_1 => p_source_1
54294 , p_source_2 => p_source_2
54295 , x_transaction_coa_id => l_adr_transaction_coa_id
54296 , x_accounting_coa_id => l_adr_accounting_coa_id
54297 , x_value_type_code => l_adr_value_type_code
54298 , p_side => 'NA'
54299 );
54300
54301 xla_ae_lines_pkg.set_ccid(
54302 p_code_combination_id => l_ccid
54303 , p_value_type_code => l_adr_value_type_code
54304 , p_transaction_coa_id => l_adr_transaction_coa_id
54305 , p_accounting_coa_id => l_adr_accounting_coa_id
54306 , p_adr_code => 'ICEXP'
54307 , p_adr_type_code => 'S'
54308 , p_component_type => l_component_type
54309 , p_component_code => l_component_code
54310 , p_component_type_code => l_component_type_code
54311 , p_component_appl_id => l_component_appl_id
54312 , p_amb_context_code => l_amb_context_code
54313 , p_side => 'NA'
54314 );
54315
54316
54317 --
54318 --
54319 END IF;
54320
54321 --
54322 -- Update the line information that should be overwritten
54323 --
54324 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54325 p_header_num => 1);
54326 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
54327
54328 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54329
54330 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
54331 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54332 END IF;
54333
54334 --
54335 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54336 --
54337 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54338 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
54339 ELSE
54340 ---------------------------------------------------------------------------------------------------
54341 -- 4262811a Switch Sign
54342 ---------------------------------------------------------------------------------------------------
54343 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
54344 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54345 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54346 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54347 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54348 -- 5132302
54349 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54350 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54351
54352 END IF;
54353
54354 -- 4955764
54355 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54356 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54357
54358
54359 XLA_AE_LINES_PKG.ValidateCurrentLine;
54360 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54361
54362 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54363 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54364 ,p_balance_type_code => l_balance_type_code);
54365
54366 END IF;
54367
54368 -----------------------------------------------------------------------------------------
54369 -- 4262811 Multiperiod Accounting
54370 -----------------------------------------------------------------------------------------
54371 -- No MPA option is assigned.
54372
54373
54374 END IF;
54375 END IF;
54376 --
54377
54378 --
54379 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54380 trace
54381 (p_msg => 'END of AcctLineType_130'
54382 ,p_level => C_LEVEL_PROCEDURE
54386 EXCEPTION
54383 ,p_module => l_log_module);
54384 END IF;
54385 --
54387 WHEN xla_exceptions_pkg.application_exception THEN
54388 RAISE;
54389 WHEN OTHERS THEN
54390 xla_exceptions_pkg.raise_message
54391 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_130');
54392 END AcctLineType_130;
54393 --
54394
54395 ---------------------------------------
54396 --
54397 -- PRIVATE FUNCTION
54398 -- AcctLineType_131
54399 --
54400 ---------------------------------------
54401 PROCEDURE AcctLineType_131 (
54402 p_application_id IN NUMBER
54403 ,p_event_id IN NUMBER
54404 ,p_calculate_acctd_flag IN VARCHAR2
54405 ,p_calculate_g_l_flag IN VARCHAR2
54406 ,p_actual_flag IN OUT VARCHAR2
54407 ,p_balance_type_code OUT VARCHAR2
54408 ,p_gain_or_loss_ref OUT VARCHAR2
54409
54410 --Transaction Account
54411 , p_source_1 IN NUMBER
54412 --Journal Line Type
54413 , p_source_2 IN VARCHAR2
54414 --Entered Amount
54415 , p_source_3 IN NUMBER
54416 --First Distribution Identifier
54417 , p_source_5 IN NUMBER
54418 --Distribution Type
54419 , p_source_6 IN VARCHAR2
54420 --Currency Code
54421 , p_source_7 IN VARCHAR2
54422 --Currency Conversion Date
54423 , p_source_8 IN DATE
54424 --Currency Conversion Rate
54425 , p_source_9 IN NUMBER
54426 --Currency Conversion Type
54427 , p_source_10 IN VARCHAR2
54428 --Accounted Amount
54429 , p_source_11 IN NUMBER
54430 )
54431 IS
54432
54433 l_component_type VARCHAR2(80);
54434 l_component_code VARCHAR2(30);
54435 l_component_type_code VARCHAR2(1);
54436 l_component_appl_id INTEGER;
54437 l_amb_context_code VARCHAR2(30);
54438 l_entity_code VARCHAR2(30);
54439 l_event_class_code VARCHAR2(30);
54440 l_ae_header_id NUMBER;
54441 l_event_type_code VARCHAR2(30);
54442 l_line_definition_code VARCHAR2(30);
54443 l_line_definition_owner_code VARCHAR2(1);
54444 --
54445 -- adr variables
54446 l_segment VARCHAR2(30);
54447 l_ccid NUMBER;
54448 l_adr_transaction_coa_id NUMBER;
54449 l_adr_accounting_coa_id NUMBER;
54450 l_adr_flexfield_segment_code VARCHAR2(30);
54451 l_adr_flex_value_set_id NUMBER;
54452 l_adr_value_type_code VARCHAR2(30);
54453 l_adr_value_combination_id NUMBER;
54454 l_adr_value_segment_code VARCHAR2(30);
54455
54456 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
54457 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
54458 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
54459 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
54460
54461 -- 4262811 Variables ------------------------------------------------------------------------------------------
54462 l_entered_amt_idx NUMBER;
54463 l_accted_amt_idx NUMBER;
54464 l_acc_rev_flag VARCHAR2(1);
54465 l_accrual_line_num NUMBER;
54466 l_tmp_amt NUMBER;
54467 l_acc_rev_natural_side_code VARCHAR2(1);
54468
54469 l_num_entries NUMBER;
54470 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
54471 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
54472 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
54473 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
54474 l_recog_line_1 NUMBER;
54475 l_recog_line_2 NUMBER;
54476
54477 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
54478 l_bflow_applied_to_amt NUMBER; -- 5132302
54479 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
54480
54481 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54482
54483 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
54484 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
54485
54486 ---------------------------------------------------------------------------------------------------------------
54487
54488
54489 --
54490 -- bulk performance
54491 --
54492 l_balance_type_code VARCHAR2(1);
54493 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
54494 l_log_module VARCHAR2(240);
54495
54496 --
54497 -- Upgrade strategy
54498 --
54499 l_actual_upg_option VARCHAR2(1);
54500 l_enc_upg_option VARCHAR2(1);
54501
54502 --
54503 BEGIN
54504 --
54505 IF g_log_enabled THEN
54506 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_131';
54507 END IF;
54508 --
54509 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54510
54511 trace
54512 (p_msg => 'BEGIN of AcctLineType_131'
54513 ,p_level => C_LEVEL_PROCEDURE
54514 ,p_module => l_log_module);
54515
54516 END IF;
54517 --
54518 l_component_type := 'AMB_JLT';
54522 l_amb_context_code := 'DEFAULT';
54519 l_component_code := 'INV';
54520 l_component_type_code := 'S';
54521 l_component_appl_id := 555;
54523 l_entity_code := 'INVENTORY';
54524 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
54525 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_TP';
54526 l_line_definition_owner_code := 'S';
54527 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_TP';
54528 --
54529 l_balance_type_code := 'A';
54530 l_segment := NULL;
54531 l_ccid := NULL;
54532 l_adr_transaction_coa_id := NULL;
54533 l_adr_accounting_coa_id := NULL;
54534 l_adr_flexfield_segment_code := NULL;
54535 l_adr_flex_value_set_id := NULL;
54536 l_adr_value_type_code := NULL;
54537 l_adr_value_combination_id := NULL;
54538 l_adr_value_segment_code := NULL;
54539
54540 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
54541 l_bflow_class_code := ''; -- 4219869 Business Flow
54542 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
54543 l_budgetary_control_flag := 'N';
54544
54545 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54546 l_bflow_applied_to_amt := NULL; -- 5132302
54547 l_entered_amt_idx := NULL; -- 4262811
54548 l_accted_amt_idx := NULL; -- 4262811
54549 l_acc_rev_flag := NULL; -- 4262811
54550 l_accrual_line_num := NULL; -- 4262811
54551 l_tmp_amt := NULL; -- 4262811
54552 --
54553
54554 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54555 l_balance_type_code <> 'B' THEN
54556 IF NVL(p_source_2,'
54557 ') = 'INV'
54558 THEN
54559
54560 --
54561 XLA_AE_LINES_PKG.SetNewLine;
54562
54563 p_balance_type_code := l_balance_type_code;
54564 -- set the flag so later we will know whether the gain loss line needs to be created
54565
54566 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54567 p_actual_flag :='A';
54568 END IF;
54569
54570 --
54571 -- bulk performance
54572 --
54573 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54574 p_header_num => 0); -- 4262811
54575 --
54576 -- set accounting line options
54577 --
54578 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54579 p_natural_side_code => 'D'
54580 , p_gain_or_loss_flag => 'N'
54581 , p_gl_transfer_mode_code => 'D'
54582 , p_acct_entry_type_code => 'A'
54583 , p_switch_side_flag => 'Y'
54584 , p_merge_duplicate_code => 'W'
54585 );
54586 --
54587 l_acc_rev_natural_side_code := 'C'; -- 4262811
54588 --
54589 --
54590 -- set accounting line type info
54591 --
54592 xla_ae_lines_pkg.SetAcctLineType
54593 (p_component_type => l_component_type
54594 ,p_event_type_code => l_event_type_code
54595 ,p_line_definition_owner_code => l_line_definition_owner_code
54596 ,p_line_definition_code => l_line_definition_code
54597 ,p_accounting_line_code => l_component_code
54598 ,p_accounting_line_type_code => l_component_type_code
54599 ,p_accounting_line_appl_id => l_component_appl_id
54600 ,p_amb_context_code => l_amb_context_code
54601 ,p_entity_code => l_entity_code
54602 ,p_event_class_code => l_event_class_code);
54603 --
54604 -- set accounting class
54605 --
54606 xla_ae_lines_pkg.SetAcctClass(
54607 p_accounting_class_code => 'INVENTORY_VALUATION'
54608 , p_ae_header_id => l_ae_header_id
54609 );
54610
54611 --
54612 -- set rounding class
54613 --
54614 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54615 'INVENTORY_VALUATION';
54616
54617 --
54618 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54619 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54620 --
54621 -- bulk performance
54622 --
54623 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54624
54625 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54626 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54627
54628 -- 4955764
54629 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54630 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54631
54632 -- 4458381 Public Sector Enh
54633
54634 --
54635 -- set accounting attributes for the line type
54636 --
54637 l_entered_amt_idx := 3;
54638 l_accted_amt_idx := 8;
54639 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54640 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54641 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
54642 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54643 l_rec_acct_attrs.array_char_value(2) := p_source_6;
54644 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54648 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54645 l_rec_acct_attrs.array_num_value(3) := p_source_3;
54646 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54647 l_rec_acct_attrs.array_char_value(4) := p_source_7;
54649 l_rec_acct_attrs.array_date_value(5) := p_source_8;
54650 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54651 l_rec_acct_attrs.array_num_value(6) := p_source_9;
54652 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54653 l_rec_acct_attrs.array_char_value(7) := p_source_10;
54654 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54655 l_rec_acct_attrs.array_num_value(8) := p_source_11;
54656
54657 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54658 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54659
54660 ---------------------------------------------------------------------------------------------------------------
54661 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54662 ---------------------------------------------------------------------------------------------------------------
54663 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54664
54665 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54666 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54667
54668 IF xla_accounting_cache_pkg.GetValueChar
54669 (p_source_code => 'LEDGER_CATEGORY_CODE'
54670 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54671 AND l_bflow_method_code = 'PRIOR_ENTRY'
54672 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54673 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54674 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54675 )
54676 THEN
54677 xla_ae_lines_pkg.BflowUpgEntry
54678 (p_business_method_code => l_bflow_method_code
54679 ,p_business_class_code => l_bflow_class_code
54680 ,p_balance_type => l_balance_type_code);
54681 ELSE
54682 NULL;
54683 -- No business flow processing for business flow method of NONE.
54684 END IF;
54685
54686 --
54687 -- call analytical criteria
54688 --
54689
54690 --
54691 -- call description
54692 --
54693 -- No description or it is inherited.
54694 --
54695 -- call ADRs
54696 -- Bug 4922099
54697 --
54698 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54699 (NVL(l_actual_upg_option, 'N') = 'O') OR
54700 (NVL(l_enc_upg_option, 'N') = 'O')
54701 )
54702 THEN
54703 NULL;
54704 --
54705 --
54706
54707 l_ccid := AcctDerRule_17(
54708 p_application_id => p_application_id
54709 , p_ae_header_id => l_ae_header_id
54710 , p_source_1 => p_source_1
54711 , p_source_2 => p_source_2
54712 , x_transaction_coa_id => l_adr_transaction_coa_id
54713 , x_accounting_coa_id => l_adr_accounting_coa_id
54714 , x_value_type_code => l_adr_value_type_code
54715 , p_side => 'NA'
54716 );
54717
54718 xla_ae_lines_pkg.set_ccid(
54719 p_code_combination_id => l_ccid
54720 , p_value_type_code => l_adr_value_type_code
54721 , p_transaction_coa_id => l_adr_transaction_coa_id
54722 , p_accounting_coa_id => l_adr_accounting_coa_id
54723 , p_adr_code => 'INV'
54724 , p_adr_type_code => 'S'
54725 , p_component_type => l_component_type
54726 , p_component_code => l_component_code
54727 , p_component_type_code => l_component_type_code
54728 , p_component_appl_id => l_component_appl_id
54729 , p_amb_context_code => l_amb_context_code
54730 , p_side => 'NA'
54731 );
54732
54733
54734 --
54735 --
54736 END IF;
54737 --
54738 -- Bug 4922099
54739 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54740 (NVL(l_enc_upg_option, 'N') = 'O')
54741 ) AND
54742 (l_bflow_method_code = 'PRIOR_ENTRY')
54743 )
54744 THEN
54745 IF
54746 --
54747 1 = 2
54748 --
54749 THEN
54750 xla_accounting_err_pkg.build_message
54751 (p_appli_s_name => 'XLA'
54752 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54753 ,p_token_1 => 'LINE_NUMBER'
54754 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
54755 ,p_token_2 => 'LINE_TYPE_NAME'
54756 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
54757 l_component_type
54758 ,l_component_code
54759 ,l_component_type_code
54763 ,l_event_class_code
54760 ,l_component_appl_id
54761 ,l_amb_context_code
54762 ,l_entity_code
54764 )
54765 ,p_token_3 => 'OWNER'
54766 ,p_value_3 => xla_lookups_pkg.get_meaning(
54767 p_lookup_type => 'XLA_OWNER_TYPE'
54768 ,p_lookup_code => l_component_type_code
54769 )
54770 ,p_token_4 => 'PRODUCT_NAME'
54771 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54772 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54773 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54774 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54775 ,p_ae_header_id => NULL
54776 );
54777
54778 IF (C_LEVEL_ERROR>= g_log_level) THEN
54779 trace
54780 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54781 ,p_level => C_LEVEL_ERROR
54782 ,p_module => l_log_module);
54783 END IF;
54784 END IF;
54785 END IF;
54786 --
54787 --
54788 ------------------------------------------------------------------------------------------------
54789 -- 4219869 Business Flow
54790 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54791 -- Prior Entry. Currently, the following code is always generated.
54792 ------------------------------------------------------------------------------------------------
54793 XLA_AE_LINES_PKG.ValidateCurrentLine;
54794
54795 ------------------------------------------------------------------------------------
54796 -- 4219869 Business Flow
54797 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54798 ------------------------------------------------------------------------------------
54799 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54800
54801 ----------------------------------------------------------------------------------
54802 -- 4219869 Business Flow
54803 -- Update journal entry status -- Need to generate this within IF <condition>
54804 ----------------------------------------------------------------------------------
54805 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54806 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54807 ,p_balance_type_code => l_balance_type_code
54808 );
54809
54810 -------------------------------------------------------------------------------------------
54811 -- 4262811 - Generate the Accrual Reversal lines
54812 -------------------------------------------------------------------------------------------
54813 BEGIN
54814 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54815 (g_array_event(p_event_id).array_value_num('header_index'));
54816 IF l_acc_rev_flag IS NULL THEN
54817 l_acc_rev_flag := 'N';
54818 END IF;
54819 EXCEPTION
54820 WHEN OTHERS THEN
54821 l_acc_rev_flag := 'N';
54822 END;
54823 --
54824 IF (l_acc_rev_flag = 'Y') THEN
54825
54826 -- 4645092 ------------------------------------------------------------------------------
54827 -- To allow MPA report to determine if it should generate report process
54828 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54829 ------------------------------------------------------------------------------------------
54830
54831 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54832 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54833 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
54834 -- call ADRs
54835 -- Bug 4922099
54836 --
54837 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54838 (NVL(l_actual_upg_option, 'N') = 'O') OR
54839 (NVL(l_enc_upg_option, 'N') = 'O')
54840 )
54841 THEN
54842 NULL;
54843 --
54844 --
54845
54846 l_ccid := AcctDerRule_17(
54847 p_application_id => p_application_id
54848 , p_ae_header_id => l_ae_header_id
54849 , p_source_1 => p_source_1
54850 , p_source_2 => p_source_2
54851 , x_transaction_coa_id => l_adr_transaction_coa_id
54852 , x_accounting_coa_id => l_adr_accounting_coa_id
54853 , x_value_type_code => l_adr_value_type_code
54854 , p_side => 'NA'
54855 );
54856
54857 xla_ae_lines_pkg.set_ccid(
54861 , p_accounting_coa_id => l_adr_accounting_coa_id
54858 p_code_combination_id => l_ccid
54859 , p_value_type_code => l_adr_value_type_code
54860 , p_transaction_coa_id => l_adr_transaction_coa_id
54862 , p_adr_code => 'INV'
54863 , p_adr_type_code => 'S'
54864 , p_component_type => l_component_type
54865 , p_component_code => l_component_code
54866 , p_component_type_code => l_component_type_code
54867 , p_component_appl_id => l_component_appl_id
54868 , p_amb_context_code => l_amb_context_code
54869 , p_side => 'NA'
54870 );
54871
54872
54873 --
54874 --
54875 END IF;
54876
54877 --
54878 -- Update the line information that should be overwritten
54879 --
54880 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54881 p_header_num => 1);
54882 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
54883
54884 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54885
54886 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
54887 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54888 END IF;
54889
54890 --
54891 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54892 --
54893 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54894 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
54895 ELSE
54896 ---------------------------------------------------------------------------------------------------
54897 -- 4262811a Switch Sign
54898 ---------------------------------------------------------------------------------------------------
54899 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
54900 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54901 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54902 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54903 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54904 -- 5132302
54905 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54906 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54907
54908 END IF;
54909
54910 -- 4955764
54911 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54912 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54913
54914
54915 XLA_AE_LINES_PKG.ValidateCurrentLine;
54916 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54917
54918 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54919 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54920 ,p_balance_type_code => l_balance_type_code);
54921
54922 END IF;
54923
54924 -----------------------------------------------------------------------------------------
54925 -- 4262811 Multiperiod Accounting
54926 -----------------------------------------------------------------------------------------
54927 -- No MPA option is assigned.
54928
54929
54930 END IF;
54931 END IF;
54932 --
54933
54934 --
54935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54936 trace
54937 (p_msg => 'END of AcctLineType_131'
54938 ,p_level => C_LEVEL_PROCEDURE
54939 ,p_module => l_log_module);
54940 END IF;
54941 --
54942 EXCEPTION
54943 WHEN xla_exceptions_pkg.application_exception THEN
54944 RAISE;
54945 WHEN OTHERS THEN
54946 xla_exceptions_pkg.raise_message
54947 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_131');
54948 END AcctLineType_131;
54949 --
54950
54951 ---------------------------------------
54952 --
54953 -- PRIVATE FUNCTION
54954 -- AcctLineType_132
54955 --
54956 ---------------------------------------
54957 PROCEDURE AcctLineType_132 (
54958 p_application_id IN NUMBER
54959 ,p_event_id IN NUMBER
54960 ,p_calculate_acctd_flag IN VARCHAR2
54961 ,p_calculate_g_l_flag IN VARCHAR2
54962 ,p_actual_flag IN OUT VARCHAR2
54963 ,p_balance_type_code OUT VARCHAR2
54964 ,p_gain_or_loss_ref OUT VARCHAR2
54965
54966 --Transaction Account
54967 , p_source_1 IN NUMBER
54968 --Journal Line Type
54969 , p_source_2 IN VARCHAR2
54970 --Entered Amount
54971 , p_source_3 IN NUMBER
54972 --First Distribution Identifier
54973 , p_source_5 IN NUMBER
54974 --Distribution Type
54975 , p_source_6 IN VARCHAR2
54976 --Currency Code
54980 --Currency Conversion Rate
54977 , p_source_7 IN VARCHAR2
54978 --Currency Conversion Date
54979 , p_source_8 IN DATE
54981 , p_source_9 IN NUMBER
54982 --Currency Conversion Type
54983 , p_source_10 IN VARCHAR2
54984 --Accounted Amount
54985 , p_source_11 IN NUMBER
54986 )
54987 IS
54988
54989 l_component_type VARCHAR2(80);
54990 l_component_code VARCHAR2(30);
54991 l_component_type_code VARCHAR2(1);
54992 l_component_appl_id INTEGER;
54993 l_amb_context_code VARCHAR2(30);
54994 l_entity_code VARCHAR2(30);
54995 l_event_class_code VARCHAR2(30);
54996 l_ae_header_id NUMBER;
54997 l_event_type_code VARCHAR2(30);
54998 l_line_definition_code VARCHAR2(30);
54999 l_line_definition_owner_code VARCHAR2(1);
55000 --
55001 -- adr variables
55002 l_segment VARCHAR2(30);
55003 l_ccid NUMBER;
55004 l_adr_transaction_coa_id NUMBER;
55005 l_adr_accounting_coa_id NUMBER;
55006 l_adr_flexfield_segment_code VARCHAR2(30);
55007 l_adr_flex_value_set_id NUMBER;
55008 l_adr_value_type_code VARCHAR2(30);
55009 l_adr_value_combination_id NUMBER;
55010 l_adr_value_segment_code VARCHAR2(30);
55011
55012 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
55013 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
55014 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
55015 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
55016
55017 -- 4262811 Variables ------------------------------------------------------------------------------------------
55018 l_entered_amt_idx NUMBER;
55019 l_accted_amt_idx NUMBER;
55020 l_acc_rev_flag VARCHAR2(1);
55021 l_accrual_line_num NUMBER;
55022 l_tmp_amt NUMBER;
55023 l_acc_rev_natural_side_code VARCHAR2(1);
55024
55025 l_num_entries NUMBER;
55026 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
55027 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
55028 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
55029 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
55030 l_recog_line_1 NUMBER;
55031 l_recog_line_2 NUMBER;
55032
55033 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
55034 l_bflow_applied_to_amt NUMBER; -- 5132302
55035 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
55036
55037 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55038
55039 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
55040 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
55041
55042 ---------------------------------------------------------------------------------------------------------------
55043
55044
55045 --
55046 -- bulk performance
55047 --
55048 l_balance_type_code VARCHAR2(1);
55049 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
55050 l_log_module VARCHAR2(240);
55051
55052 --
55053 -- Upgrade strategy
55054 --
55055 l_actual_upg_option VARCHAR2(1);
55056 l_enc_upg_option VARCHAR2(1);
55057
55058 --
55059 BEGIN
55060 --
55061 IF g_log_enabled THEN
55062 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_132';
55063 END IF;
55064 --
55065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55066
55067 trace
55068 (p_msg => 'BEGIN of AcctLineType_132'
55069 ,p_level => C_LEVEL_PROCEDURE
55070 ,p_module => l_log_module);
55071
55072 END IF;
55073 --
55074 l_component_type := 'AMB_JLT';
55075 l_component_code := 'INV';
55076 l_component_type_code := 'S';
55077 l_component_appl_id := 555;
55078 l_amb_context_code := 'DEFAULT';
55079 l_entity_code := 'ORDERMANAGEMENT';
55080 l_event_class_code := 'SHIPPING';
55081 l_event_type_code := 'COGS_RECOGNITION_ADJ';
55082 l_line_definition_owner_code := 'S';
55083 l_line_definition_code := 'COGS_RECOGNITION_ADJ';
55084 --
55085 l_balance_type_code := 'A';
55086 l_segment := NULL;
55087 l_ccid := NULL;
55088 l_adr_transaction_coa_id := NULL;
55089 l_adr_accounting_coa_id := NULL;
55090 l_adr_flexfield_segment_code := NULL;
55091 l_adr_flex_value_set_id := NULL;
55092 l_adr_value_type_code := NULL;
55093 l_adr_value_combination_id := NULL;
55094 l_adr_value_segment_code := NULL;
55095
55096 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
55097 l_bflow_class_code := ''; -- 4219869 Business Flow
55098 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
55099 l_budgetary_control_flag := 'N';
55100
55101 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55102 l_bflow_applied_to_amt := NULL; -- 5132302
55103 l_entered_amt_idx := NULL; -- 4262811
55104 l_accted_amt_idx := NULL; -- 4262811
55108 --
55105 l_acc_rev_flag := NULL; -- 4262811
55106 l_accrual_line_num := NULL; -- 4262811
55107 l_tmp_amt := NULL; -- 4262811
55109
55110 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55111 l_balance_type_code <> 'B' THEN
55112 IF NVL(p_source_2,'
55113 ') = 'INV'
55114 THEN
55115
55116 --
55117 XLA_AE_LINES_PKG.SetNewLine;
55118
55119 p_balance_type_code := l_balance_type_code;
55120 -- set the flag so later we will know whether the gain loss line needs to be created
55121
55122 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55123 p_actual_flag :='A';
55124 END IF;
55125
55126 --
55127 -- bulk performance
55128 --
55129 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55130 p_header_num => 0); -- 4262811
55131 --
55132 -- set accounting line options
55133 --
55134 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55135 p_natural_side_code => 'D'
55136 , p_gain_or_loss_flag => 'N'
55137 , p_gl_transfer_mode_code => 'D'
55138 , p_acct_entry_type_code => 'A'
55139 , p_switch_side_flag => 'Y'
55140 , p_merge_duplicate_code => 'W'
55141 );
55142 --
55143 l_acc_rev_natural_side_code := 'C'; -- 4262811
55144 --
55145 --
55146 -- set accounting line type info
55147 --
55148 xla_ae_lines_pkg.SetAcctLineType
55149 (p_component_type => l_component_type
55150 ,p_event_type_code => l_event_type_code
55151 ,p_line_definition_owner_code => l_line_definition_owner_code
55152 ,p_line_definition_code => l_line_definition_code
55153 ,p_accounting_line_code => l_component_code
55154 ,p_accounting_line_type_code => l_component_type_code
55155 ,p_accounting_line_appl_id => l_component_appl_id
55156 ,p_amb_context_code => l_amb_context_code
55157 ,p_entity_code => l_entity_code
55158 ,p_event_class_code => l_event_class_code);
55159 --
55160 -- set accounting class
55161 --
55162 xla_ae_lines_pkg.SetAcctClass(
55163 p_accounting_class_code => 'INVENTORY_VALUATION'
55164 , p_ae_header_id => l_ae_header_id
55165 );
55166
55167 --
55168 -- set rounding class
55169 --
55170 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55171 'INVENTORY_VALUATION';
55172
55173 --
55174 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55175 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55176 --
55177 -- bulk performance
55178 --
55179 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55180
55181 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55182 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55183
55184 -- 4955764
55185 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55186 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55187
55188 -- 4458381 Public Sector Enh
55189
55190 --
55191 -- set accounting attributes for the line type
55192 --
55193 l_entered_amt_idx := 3;
55194 l_accted_amt_idx := 8;
55195 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55196 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55197 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
55198 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55199 l_rec_acct_attrs.array_char_value(2) := p_source_6;
55200 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55201 l_rec_acct_attrs.array_num_value(3) := p_source_3;
55202 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55203 l_rec_acct_attrs.array_char_value(4) := p_source_7;
55204 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55205 l_rec_acct_attrs.array_date_value(5) := p_source_8;
55206 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55207 l_rec_acct_attrs.array_num_value(6) := p_source_9;
55208 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55209 l_rec_acct_attrs.array_char_value(7) := p_source_10;
55210 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55211 l_rec_acct_attrs.array_num_value(8) := p_source_11;
55212
55213 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55214 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55215
55216 ---------------------------------------------------------------------------------------------------------------
55217 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55218 ---------------------------------------------------------------------------------------------------------------
55219 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55223
55220
55221 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55222 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55224 IF xla_accounting_cache_pkg.GetValueChar
55225 (p_source_code => 'LEDGER_CATEGORY_CODE'
55226 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55227 AND l_bflow_method_code = 'PRIOR_ENTRY'
55228 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55229 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55230 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55231 )
55232 THEN
55233 xla_ae_lines_pkg.BflowUpgEntry
55234 (p_business_method_code => l_bflow_method_code
55235 ,p_business_class_code => l_bflow_class_code
55236 ,p_balance_type => l_balance_type_code);
55237 ELSE
55238 NULL;
55239 -- No business flow processing for business flow method of NONE.
55240 END IF;
55241
55242 --
55243 -- call analytical criteria
55244 --
55245
55246 --
55247 -- call description
55248 --
55249 -- No description or it is inherited.
55250 --
55251 -- call ADRs
55252 -- Bug 4922099
55253 --
55254 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55255 (NVL(l_actual_upg_option, 'N') = 'O') OR
55256 (NVL(l_enc_upg_option, 'N') = 'O')
55257 )
55258 THEN
55259 NULL;
55260 --
55261 --
55262
55263 l_ccid := AcctDerRule_17(
55264 p_application_id => p_application_id
55265 , p_ae_header_id => l_ae_header_id
55266 , p_source_1 => p_source_1
55267 , p_source_2 => p_source_2
55268 , x_transaction_coa_id => l_adr_transaction_coa_id
55269 , x_accounting_coa_id => l_adr_accounting_coa_id
55270 , x_value_type_code => l_adr_value_type_code
55271 , p_side => 'NA'
55272 );
55273
55274 xla_ae_lines_pkg.set_ccid(
55275 p_code_combination_id => l_ccid
55276 , p_value_type_code => l_adr_value_type_code
55277 , p_transaction_coa_id => l_adr_transaction_coa_id
55278 , p_accounting_coa_id => l_adr_accounting_coa_id
55279 , p_adr_code => 'INV'
55280 , p_adr_type_code => 'S'
55281 , p_component_type => l_component_type
55282 , p_component_code => l_component_code
55283 , p_component_type_code => l_component_type_code
55284 , p_component_appl_id => l_component_appl_id
55285 , p_amb_context_code => l_amb_context_code
55286 , p_side => 'NA'
55287 );
55288
55289
55290 --
55291 --
55292 END IF;
55293 --
55294 -- Bug 4922099
55295 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55296 (NVL(l_enc_upg_option, 'N') = 'O')
55297 ) AND
55298 (l_bflow_method_code = 'PRIOR_ENTRY')
55299 )
55300 THEN
55301 IF
55302 --
55303 1 = 2
55304 --
55305 THEN
55306 xla_accounting_err_pkg.build_message
55307 (p_appli_s_name => 'XLA'
55308 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55309 ,p_token_1 => 'LINE_NUMBER'
55310 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
55311 ,p_token_2 => 'LINE_TYPE_NAME'
55312 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
55313 l_component_type
55314 ,l_component_code
55315 ,l_component_type_code
55316 ,l_component_appl_id
55317 ,l_amb_context_code
55318 ,l_entity_code
55319 ,l_event_class_code
55320 )
55321 ,p_token_3 => 'OWNER'
55322 ,p_value_3 => xla_lookups_pkg.get_meaning(
55323 p_lookup_type => 'XLA_OWNER_TYPE'
55324 ,p_lookup_code => l_component_type_code
55325 )
55326 ,p_token_4 => 'PRODUCT_NAME'
55327 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55328 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55329 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55333
55330 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55331 ,p_ae_header_id => NULL
55332 );
55334 IF (C_LEVEL_ERROR>= g_log_level) THEN
55335 trace
55336 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55337 ,p_level => C_LEVEL_ERROR
55338 ,p_module => l_log_module);
55339 END IF;
55340 END IF;
55341 END IF;
55342 --
55343 --
55344 ------------------------------------------------------------------------------------------------
55345 -- 4219869 Business Flow
55346 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55347 -- Prior Entry. Currently, the following code is always generated.
55348 ------------------------------------------------------------------------------------------------
55349 XLA_AE_LINES_PKG.ValidateCurrentLine;
55350
55351 ------------------------------------------------------------------------------------
55352 -- 4219869 Business Flow
55353 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55354 ------------------------------------------------------------------------------------
55355 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55356
55357 ----------------------------------------------------------------------------------
55358 -- 4219869 Business Flow
55359 -- Update journal entry status -- Need to generate this within IF <condition>
55360 ----------------------------------------------------------------------------------
55361 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55362 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55363 ,p_balance_type_code => l_balance_type_code
55364 );
55365
55366 -------------------------------------------------------------------------------------------
55367 -- 4262811 - Generate the Accrual Reversal lines
55368 -------------------------------------------------------------------------------------------
55369 BEGIN
55370 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55371 (g_array_event(p_event_id).array_value_num('header_index'));
55372 IF l_acc_rev_flag IS NULL THEN
55373 l_acc_rev_flag := 'N';
55374 END IF;
55375 EXCEPTION
55376 WHEN OTHERS THEN
55377 l_acc_rev_flag := 'N';
55378 END;
55379 --
55380 IF (l_acc_rev_flag = 'Y') THEN
55381
55382 -- 4645092 ------------------------------------------------------------------------------
55383 -- To allow MPA report to determine if it should generate report process
55384 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55385 ------------------------------------------------------------------------------------------
55386
55387 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55388 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55389 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
55390 -- call ADRs
55391 -- Bug 4922099
55392 --
55393 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55394 (NVL(l_actual_upg_option, 'N') = 'O') OR
55395 (NVL(l_enc_upg_option, 'N') = 'O')
55396 )
55397 THEN
55398 NULL;
55399 --
55400 --
55401
55402 l_ccid := AcctDerRule_17(
55403 p_application_id => p_application_id
55404 , p_ae_header_id => l_ae_header_id
55405 , p_source_1 => p_source_1
55406 , p_source_2 => p_source_2
55407 , x_transaction_coa_id => l_adr_transaction_coa_id
55408 , x_accounting_coa_id => l_adr_accounting_coa_id
55409 , x_value_type_code => l_adr_value_type_code
55410 , p_side => 'NA'
55411 );
55412
55413 xla_ae_lines_pkg.set_ccid(
55414 p_code_combination_id => l_ccid
55415 , p_value_type_code => l_adr_value_type_code
55416 , p_transaction_coa_id => l_adr_transaction_coa_id
55417 , p_accounting_coa_id => l_adr_accounting_coa_id
55418 , p_adr_code => 'INV'
55419 , p_adr_type_code => 'S'
55420 , p_component_type => l_component_type
55421 , p_component_code => l_component_code
55422 , p_component_type_code => l_component_type_code
55423 , p_component_appl_id => l_component_appl_id
55424 , p_amb_context_code => l_amb_context_code
55425 , p_side => 'NA'
55426 );
55427
55428
55429 --
55430 --
55431 END IF;
55432
55433 --
55434 -- Update the line information that should be overwritten
55435 --
55436 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55437 p_header_num => 1);
55438 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
55439
55440 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55441
55445
55442 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
55443 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55444 END IF;
55446 --
55447 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55448 --
55449 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55450 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
55451 ELSE
55452 ---------------------------------------------------------------------------------------------------
55453 -- 4262811a Switch Sign
55454 ---------------------------------------------------------------------------------------------------
55455 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
55456 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55457 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55458 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55459 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55460 -- 5132302
55461 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55462 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55463
55464 END IF;
55465
55466 -- 4955764
55467 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55468 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55469
55470
55471 XLA_AE_LINES_PKG.ValidateCurrentLine;
55472 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55473
55474 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55475 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55476 ,p_balance_type_code => l_balance_type_code);
55477
55478 END IF;
55479
55480 -----------------------------------------------------------------------------------------
55481 -- 4262811 Multiperiod Accounting
55482 -----------------------------------------------------------------------------------------
55483 -- No MPA option is assigned.
55484
55485
55486 END IF;
55487 END IF;
55488 --
55489
55490 --
55491 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55492 trace
55493 (p_msg => 'END of AcctLineType_132'
55494 ,p_level => C_LEVEL_PROCEDURE
55495 ,p_module => l_log_module);
55496 END IF;
55497 --
55498 EXCEPTION
55499 WHEN xla_exceptions_pkg.application_exception THEN
55500 RAISE;
55501 WHEN OTHERS THEN
55502 xla_exceptions_pkg.raise_message
55503 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_132');
55504 END AcctLineType_132;
55505 --
55506
55507 ---------------------------------------
55508 --
55509 -- PRIVATE FUNCTION
55510 -- AcctLineType_133
55511 --
55512 ---------------------------------------
55513 PROCEDURE AcctLineType_133 (
55514 p_application_id IN NUMBER
55515 ,p_event_id IN NUMBER
55516 ,p_calculate_acctd_flag IN VARCHAR2
55517 ,p_calculate_g_l_flag IN VARCHAR2
55518 ,p_actual_flag IN OUT VARCHAR2
55519 ,p_balance_type_code OUT VARCHAR2
55520 ,p_gain_or_loss_ref OUT VARCHAR2
55521
55522 --Transaction Account
55523 , p_source_1 IN NUMBER
55524 --Journal Line Type
55525 , p_source_2 IN VARCHAR2
55526 --Entered Amount
55527 , p_source_3 IN NUMBER
55528 --First Distribution Identifier
55529 , p_source_5 IN NUMBER
55530 --Distribution Type
55531 , p_source_6 IN VARCHAR2
55532 --Currency Code
55533 , p_source_7 IN VARCHAR2
55534 --Currency Conversion Date
55535 , p_source_8 IN DATE
55536 --Currency Conversion Rate
55537 , p_source_9 IN NUMBER
55538 --Currency Conversion Type
55539 , p_source_10 IN VARCHAR2
55540 --Accounted Amount
55541 , p_source_11 IN NUMBER
55542 )
55543 IS
55544
55545 l_component_type VARCHAR2(80);
55546 l_component_code VARCHAR2(30);
55547 l_component_type_code VARCHAR2(1);
55548 l_component_appl_id INTEGER;
55549 l_amb_context_code VARCHAR2(30);
55550 l_entity_code VARCHAR2(30);
55551 l_event_class_code VARCHAR2(30);
55552 l_ae_header_id NUMBER;
55553 l_event_type_code VARCHAR2(30);
55554 l_line_definition_code VARCHAR2(30);
55555 l_line_definition_owner_code VARCHAR2(1);
55556 --
55557 -- adr variables
55558 l_segment VARCHAR2(30);
55559 l_ccid NUMBER;
55560 l_adr_transaction_coa_id NUMBER;
55561 l_adr_accounting_coa_id NUMBER;
55562 l_adr_flexfield_segment_code VARCHAR2(30);
55563 l_adr_flex_value_set_id NUMBER;
55564 l_adr_value_type_code VARCHAR2(30);
55565 l_adr_value_combination_id NUMBER;
55566 l_adr_value_segment_code VARCHAR2(30);
55567
55568 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
55572
55569 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
55570 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
55571 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
55573 -- 4262811 Variables ------------------------------------------------------------------------------------------
55574 l_entered_amt_idx NUMBER;
55575 l_accted_amt_idx NUMBER;
55576 l_acc_rev_flag VARCHAR2(1);
55577 l_accrual_line_num NUMBER;
55578 l_tmp_amt NUMBER;
55579 l_acc_rev_natural_side_code VARCHAR2(1);
55580
55581 l_num_entries NUMBER;
55582 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
55583 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
55584 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
55585 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
55586 l_recog_line_1 NUMBER;
55587 l_recog_line_2 NUMBER;
55588
55589 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
55590 l_bflow_applied_to_amt NUMBER; -- 5132302
55591 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
55592
55593 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55594
55595 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
55596 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
55597
55598 ---------------------------------------------------------------------------------------------------------------
55599
55600
55601 --
55602 -- bulk performance
55603 --
55604 l_balance_type_code VARCHAR2(1);
55605 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
55606 l_log_module VARCHAR2(240);
55607
55608 --
55609 -- Upgrade strategy
55610 --
55611 l_actual_upg_option VARCHAR2(1);
55612 l_enc_upg_option VARCHAR2(1);
55613
55614 --
55615 BEGIN
55616 --
55617 IF g_log_enabled THEN
55618 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_133';
55619 END IF;
55620 --
55621 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55622
55623 trace
55624 (p_msg => 'BEGIN of AcctLineType_133'
55625 ,p_level => C_LEVEL_PROCEDURE
55626 ,p_module => l_log_module);
55627
55628 END IF;
55629 --
55630 l_component_type := 'AMB_JLT';
55631 l_component_code := 'INV';
55632 l_component_type_code := 'S';
55633 l_component_appl_id := 555;
55634 l_amb_context_code := 'DEFAULT';
55635 l_entity_code := 'ORDERMANAGEMENT';
55636 l_event_class_code := 'SHIPPING';
55637 l_event_type_code := 'LOG_SO_ISSUE';
55638 l_line_definition_owner_code := 'S';
55639 l_line_definition_code := 'LOGICAL_SO_ISSUE';
55640 --
55641 l_balance_type_code := 'A';
55642 l_segment := NULL;
55643 l_ccid := NULL;
55644 l_adr_transaction_coa_id := NULL;
55645 l_adr_accounting_coa_id := NULL;
55646 l_adr_flexfield_segment_code := NULL;
55647 l_adr_flex_value_set_id := NULL;
55648 l_adr_value_type_code := NULL;
55649 l_adr_value_combination_id := NULL;
55650 l_adr_value_segment_code := NULL;
55651
55652 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
55653 l_bflow_class_code := ''; -- 4219869 Business Flow
55654 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
55655 l_budgetary_control_flag := 'N';
55656
55657 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55658 l_bflow_applied_to_amt := NULL; -- 5132302
55659 l_entered_amt_idx := NULL; -- 4262811
55660 l_accted_amt_idx := NULL; -- 4262811
55661 l_acc_rev_flag := NULL; -- 4262811
55662 l_accrual_line_num := NULL; -- 4262811
55663 l_tmp_amt := NULL; -- 4262811
55664 --
55665
55666 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55667 l_balance_type_code <> 'B' THEN
55668 IF NVL(p_source_2,'
55669 ') = 'INV'
55670 THEN
55671
55672 --
55673 XLA_AE_LINES_PKG.SetNewLine;
55674
55675 p_balance_type_code := l_balance_type_code;
55676 -- set the flag so later we will know whether the gain loss line needs to be created
55677
55678 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55679 p_actual_flag :='A';
55680 END IF;
55681
55682 --
55683 -- bulk performance
55684 --
55685 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55686 p_header_num => 0); -- 4262811
55687 --
55688 -- set accounting line options
55689 --
55690 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55691 p_natural_side_code => 'D'
55692 , p_gain_or_loss_flag => 'N'
55693 , p_gl_transfer_mode_code => 'D'
55694 , p_acct_entry_type_code => 'A'
55695 , p_switch_side_flag => 'Y'
55699 l_acc_rev_natural_side_code := 'C'; -- 4262811
55696 , p_merge_duplicate_code => 'W'
55697 );
55698 --
55700 --
55701 --
55702 -- set accounting line type info
55703 --
55704 xla_ae_lines_pkg.SetAcctLineType
55705 (p_component_type => l_component_type
55706 ,p_event_type_code => l_event_type_code
55707 ,p_line_definition_owner_code => l_line_definition_owner_code
55708 ,p_line_definition_code => l_line_definition_code
55709 ,p_accounting_line_code => l_component_code
55710 ,p_accounting_line_type_code => l_component_type_code
55711 ,p_accounting_line_appl_id => l_component_appl_id
55712 ,p_amb_context_code => l_amb_context_code
55713 ,p_entity_code => l_entity_code
55714 ,p_event_class_code => l_event_class_code);
55715 --
55716 -- set accounting class
55717 --
55718 xla_ae_lines_pkg.SetAcctClass(
55719 p_accounting_class_code => 'INVENTORY_VALUATION'
55720 , p_ae_header_id => l_ae_header_id
55721 );
55722
55723 --
55724 -- set rounding class
55725 --
55726 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55727 'INVENTORY_VALUATION';
55728
55729 --
55730 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55731 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55732 --
55733 -- bulk performance
55734 --
55735 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55736
55737 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55738 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55739
55740 -- 4955764
55741 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55742 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55743
55744 -- 4458381 Public Sector Enh
55745
55746 --
55747 -- set accounting attributes for the line type
55748 --
55749 l_entered_amt_idx := 3;
55750 l_accted_amt_idx := 8;
55751 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55752 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55753 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
55754 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55755 l_rec_acct_attrs.array_char_value(2) := p_source_6;
55756 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55757 l_rec_acct_attrs.array_num_value(3) := p_source_3;
55758 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55759 l_rec_acct_attrs.array_char_value(4) := p_source_7;
55760 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55761 l_rec_acct_attrs.array_date_value(5) := p_source_8;
55762 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55763 l_rec_acct_attrs.array_num_value(6) := p_source_9;
55764 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55765 l_rec_acct_attrs.array_char_value(7) := p_source_10;
55766 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55767 l_rec_acct_attrs.array_num_value(8) := p_source_11;
55768
55769 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55770 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55771
55772 ---------------------------------------------------------------------------------------------------------------
55773 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55774 ---------------------------------------------------------------------------------------------------------------
55775 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55776
55777 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55778 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55779
55780 IF xla_accounting_cache_pkg.GetValueChar
55781 (p_source_code => 'LEDGER_CATEGORY_CODE'
55782 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55783 AND l_bflow_method_code = 'PRIOR_ENTRY'
55784 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55785 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55786 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55787 )
55788 THEN
55789 xla_ae_lines_pkg.BflowUpgEntry
55790 (p_business_method_code => l_bflow_method_code
55791 ,p_business_class_code => l_bflow_class_code
55792 ,p_balance_type => l_balance_type_code);
55793 ELSE
55794 NULL;
55795 -- No business flow processing for business flow method of NONE.
55796 END IF;
55797
55798 --
55799 -- call analytical criteria
55800 --
55801
55802 --
55803 -- call description
55804 --
55805 -- No description or it is inherited.
55806 --
55807 -- call ADRs
55808 -- Bug 4922099
55809 --
55813 )
55810 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55811 (NVL(l_actual_upg_option, 'N') = 'O') OR
55812 (NVL(l_enc_upg_option, 'N') = 'O')
55814 THEN
55815 NULL;
55816 --
55817 --
55818
55819 l_ccid := AcctDerRule_17(
55820 p_application_id => p_application_id
55821 , p_ae_header_id => l_ae_header_id
55822 , p_source_1 => p_source_1
55823 , p_source_2 => p_source_2
55824 , x_transaction_coa_id => l_adr_transaction_coa_id
55825 , x_accounting_coa_id => l_adr_accounting_coa_id
55826 , x_value_type_code => l_adr_value_type_code
55827 , p_side => 'NA'
55828 );
55829
55830 xla_ae_lines_pkg.set_ccid(
55831 p_code_combination_id => l_ccid
55832 , p_value_type_code => l_adr_value_type_code
55833 , p_transaction_coa_id => l_adr_transaction_coa_id
55834 , p_accounting_coa_id => l_adr_accounting_coa_id
55835 , p_adr_code => 'INV'
55836 , p_adr_type_code => 'S'
55837 , p_component_type => l_component_type
55838 , p_component_code => l_component_code
55839 , p_component_type_code => l_component_type_code
55840 , p_component_appl_id => l_component_appl_id
55841 , p_amb_context_code => l_amb_context_code
55842 , p_side => 'NA'
55843 );
55844
55845
55846 --
55847 --
55848 END IF;
55849 --
55850 -- Bug 4922099
55851 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55852 (NVL(l_enc_upg_option, 'N') = 'O')
55853 ) AND
55854 (l_bflow_method_code = 'PRIOR_ENTRY')
55855 )
55856 THEN
55857 IF
55858 --
55859 1 = 2
55860 --
55861 THEN
55862 xla_accounting_err_pkg.build_message
55863 (p_appli_s_name => 'XLA'
55864 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55865 ,p_token_1 => 'LINE_NUMBER'
55866 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
55867 ,p_token_2 => 'LINE_TYPE_NAME'
55868 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
55869 l_component_type
55870 ,l_component_code
55871 ,l_component_type_code
55872 ,l_component_appl_id
55873 ,l_amb_context_code
55874 ,l_entity_code
55875 ,l_event_class_code
55876 )
55877 ,p_token_3 => 'OWNER'
55878 ,p_value_3 => xla_lookups_pkg.get_meaning(
55879 p_lookup_type => 'XLA_OWNER_TYPE'
55880 ,p_lookup_code => l_component_type_code
55881 )
55882 ,p_token_4 => 'PRODUCT_NAME'
55883 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55884 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55885 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55886 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55887 ,p_ae_header_id => NULL
55888 );
55889
55890 IF (C_LEVEL_ERROR>= g_log_level) THEN
55891 trace
55892 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55893 ,p_level => C_LEVEL_ERROR
55894 ,p_module => l_log_module);
55895 END IF;
55896 END IF;
55897 END IF;
55898 --
55899 --
55900 ------------------------------------------------------------------------------------------------
55901 -- 4219869 Business Flow
55902 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55903 -- Prior Entry. Currently, the following code is always generated.
55904 ------------------------------------------------------------------------------------------------
55905 XLA_AE_LINES_PKG.ValidateCurrentLine;
55906
55907 ------------------------------------------------------------------------------------
55908 -- 4219869 Business Flow
55909 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55910 ------------------------------------------------------------------------------------
55911 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55915 -- Update journal entry status -- Need to generate this within IF <condition>
55912
55913 ----------------------------------------------------------------------------------
55914 -- 4219869 Business Flow
55916 ----------------------------------------------------------------------------------
55917 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55918 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55919 ,p_balance_type_code => l_balance_type_code
55920 );
55921
55922 -------------------------------------------------------------------------------------------
55923 -- 4262811 - Generate the Accrual Reversal lines
55924 -------------------------------------------------------------------------------------------
55925 BEGIN
55926 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55927 (g_array_event(p_event_id).array_value_num('header_index'));
55928 IF l_acc_rev_flag IS NULL THEN
55929 l_acc_rev_flag := 'N';
55930 END IF;
55931 EXCEPTION
55932 WHEN OTHERS THEN
55933 l_acc_rev_flag := 'N';
55934 END;
55935 --
55936 IF (l_acc_rev_flag = 'Y') THEN
55937
55938 -- 4645092 ------------------------------------------------------------------------------
55939 -- To allow MPA report to determine if it should generate report process
55940 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55941 ------------------------------------------------------------------------------------------
55942
55943 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55944 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55945 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
55946 -- call ADRs
55947 -- Bug 4922099
55948 --
55949 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55950 (NVL(l_actual_upg_option, 'N') = 'O') OR
55951 (NVL(l_enc_upg_option, 'N') = 'O')
55952 )
55953 THEN
55954 NULL;
55955 --
55956 --
55957
55958 l_ccid := AcctDerRule_17(
55959 p_application_id => p_application_id
55960 , p_ae_header_id => l_ae_header_id
55961 , p_source_1 => p_source_1
55962 , p_source_2 => p_source_2
55963 , x_transaction_coa_id => l_adr_transaction_coa_id
55964 , x_accounting_coa_id => l_adr_accounting_coa_id
55965 , x_value_type_code => l_adr_value_type_code
55966 , p_side => 'NA'
55967 );
55968
55969 xla_ae_lines_pkg.set_ccid(
55970 p_code_combination_id => l_ccid
55971 , p_value_type_code => l_adr_value_type_code
55972 , p_transaction_coa_id => l_adr_transaction_coa_id
55973 , p_accounting_coa_id => l_adr_accounting_coa_id
55974 , p_adr_code => 'INV'
55975 , p_adr_type_code => 'S'
55976 , p_component_type => l_component_type
55977 , p_component_code => l_component_code
55978 , p_component_type_code => l_component_type_code
55979 , p_component_appl_id => l_component_appl_id
55980 , p_amb_context_code => l_amb_context_code
55981 , p_side => 'NA'
55982 );
55983
55984
55985 --
55986 --
55987 END IF;
55988
55989 --
55990 -- Update the line information that should be overwritten
55991 --
55992 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55993 p_header_num => 1);
55994 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
55995
55996 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55997
55998 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
55999 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56000 END IF;
56001
56002 --
56003 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56004 --
56005 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56006 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
56007 ELSE
56008 ---------------------------------------------------------------------------------------------------
56009 -- 4262811a Switch Sign
56010 ---------------------------------------------------------------------------------------------------
56011 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
56012 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56013 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56014 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56015 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56016 -- 5132302
56017 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56021
56018 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56019
56020 END IF;
56022 -- 4955764
56023 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56024 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56025
56026
56027 XLA_AE_LINES_PKG.ValidateCurrentLine;
56028 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56029
56030 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56031 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56032 ,p_balance_type_code => l_balance_type_code);
56033
56034 END IF;
56035
56036 -----------------------------------------------------------------------------------------
56037 -- 4262811 Multiperiod Accounting
56038 -----------------------------------------------------------------------------------------
56039 -- No MPA option is assigned.
56040
56041
56042 END IF;
56043 END IF;
56044 --
56045
56046 --
56047 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56048 trace
56049 (p_msg => 'END of AcctLineType_133'
56050 ,p_level => C_LEVEL_PROCEDURE
56051 ,p_module => l_log_module);
56052 END IF;
56053 --
56054 EXCEPTION
56055 WHEN xla_exceptions_pkg.application_exception THEN
56056 RAISE;
56057 WHEN OTHERS THEN
56058 xla_exceptions_pkg.raise_message
56059 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_133');
56060 END AcctLineType_133;
56061 --
56062
56063 ---------------------------------------
56064 --
56065 -- PRIVATE FUNCTION
56066 -- AcctLineType_134
56067 --
56068 ---------------------------------------
56069 PROCEDURE AcctLineType_134 (
56070 p_application_id IN NUMBER
56071 ,p_event_id IN NUMBER
56072 ,p_calculate_acctd_flag IN VARCHAR2
56073 ,p_calculate_g_l_flag IN VARCHAR2
56074 ,p_actual_flag IN OUT VARCHAR2
56075 ,p_balance_type_code OUT VARCHAR2
56076 ,p_gain_or_loss_ref OUT VARCHAR2
56077
56078 --Transaction Account
56079 , p_source_1 IN NUMBER
56080 --Journal Line Type
56081 , p_source_2 IN VARCHAR2
56082 --Entered Amount
56083 , p_source_3 IN NUMBER
56084 --First Distribution Identifier
56085 , p_source_5 IN NUMBER
56086 --Distribution Type
56087 , p_source_6 IN VARCHAR2
56088 --Currency Code
56089 , p_source_7 IN VARCHAR2
56090 --Currency Conversion Date
56091 , p_source_8 IN DATE
56092 --Currency Conversion Rate
56093 , p_source_9 IN NUMBER
56094 --Currency Conversion Type
56095 , p_source_10 IN VARCHAR2
56096 --Accounted Amount
56097 , p_source_11 IN NUMBER
56098 )
56099 IS
56100
56101 l_component_type VARCHAR2(80);
56102 l_component_code VARCHAR2(30);
56103 l_component_type_code VARCHAR2(1);
56104 l_component_appl_id INTEGER;
56105 l_amb_context_code VARCHAR2(30);
56106 l_entity_code VARCHAR2(30);
56107 l_event_class_code VARCHAR2(30);
56108 l_ae_header_id NUMBER;
56109 l_event_type_code VARCHAR2(30);
56110 l_line_definition_code VARCHAR2(30);
56111 l_line_definition_owner_code VARCHAR2(1);
56112 --
56113 -- adr variables
56114 l_segment VARCHAR2(30);
56115 l_ccid NUMBER;
56116 l_adr_transaction_coa_id NUMBER;
56117 l_adr_accounting_coa_id NUMBER;
56118 l_adr_flexfield_segment_code VARCHAR2(30);
56119 l_adr_flex_value_set_id NUMBER;
56120 l_adr_value_type_code VARCHAR2(30);
56121 l_adr_value_combination_id NUMBER;
56122 l_adr_value_segment_code VARCHAR2(30);
56123
56124 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
56125 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
56126 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
56127 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
56128
56129 -- 4262811 Variables ------------------------------------------------------------------------------------------
56130 l_entered_amt_idx NUMBER;
56131 l_accted_amt_idx NUMBER;
56132 l_acc_rev_flag VARCHAR2(1);
56133 l_accrual_line_num NUMBER;
56134 l_tmp_amt NUMBER;
56135 l_acc_rev_natural_side_code VARCHAR2(1);
56136
56137 l_num_entries NUMBER;
56138 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
56139 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
56140 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
56141 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
56142 l_recog_line_1 NUMBER;
56143 l_recog_line_2 NUMBER;
56144
56145 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
56146 l_bflow_applied_to_amt NUMBER; -- 5132302
56147 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
56148
56152 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
56149 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56150
56151 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
56153
56154 ---------------------------------------------------------------------------------------------------------------
56155
56156
56157 --
56158 -- bulk performance
56159 --
56160 l_balance_type_code VARCHAR2(1);
56161 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
56162 l_log_module VARCHAR2(240);
56163
56164 --
56165 -- Upgrade strategy
56166 --
56167 l_actual_upg_option VARCHAR2(1);
56168 l_enc_upg_option VARCHAR2(1);
56169
56170 --
56171 BEGIN
56172 --
56173 IF g_log_enabled THEN
56174 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_134';
56175 END IF;
56176 --
56177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56178
56179 trace
56180 (p_msg => 'BEGIN of AcctLineType_134'
56181 ,p_level => C_LEVEL_PROCEDURE
56182 ,p_module => l_log_module);
56183
56184 END IF;
56185 --
56186 l_component_type := 'AMB_JLT';
56187 l_component_code := 'INV';
56188 l_component_type_code := 'S';
56189 l_component_appl_id := 555;
56190 l_amb_context_code := 'DEFAULT';
56191 l_entity_code := 'PRODUCTION';
56192 l_event_class_code := 'BATCH_MATERIAL';
56193 l_event_type_code := 'RELE';
56194 l_line_definition_owner_code := 'S';
56195 l_line_definition_code := 'BATCH_RELEASE';
56196 --
56197 l_balance_type_code := 'A';
56198 l_segment := NULL;
56199 l_ccid := NULL;
56200 l_adr_transaction_coa_id := NULL;
56201 l_adr_accounting_coa_id := NULL;
56202 l_adr_flexfield_segment_code := NULL;
56203 l_adr_flex_value_set_id := NULL;
56204 l_adr_value_type_code := NULL;
56205 l_adr_value_combination_id := NULL;
56206 l_adr_value_segment_code := NULL;
56207
56208 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
56209 l_bflow_class_code := ''; -- 4219869 Business Flow
56210 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
56211 l_budgetary_control_flag := 'N';
56212
56213 l_bflow_applied_to_amt_idx := NULL; -- 5132302
56214 l_bflow_applied_to_amt := NULL; -- 5132302
56215 l_entered_amt_idx := NULL; -- 4262811
56216 l_accted_amt_idx := NULL; -- 4262811
56217 l_acc_rev_flag := NULL; -- 4262811
56218 l_accrual_line_num := NULL; -- 4262811
56219 l_tmp_amt := NULL; -- 4262811
56220 --
56221
56222 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56223 l_balance_type_code <> 'B' THEN
56224 IF NVL(p_source_2,'
56225 ') = 'INV'
56226 THEN
56227
56228 --
56229 XLA_AE_LINES_PKG.SetNewLine;
56230
56231 p_balance_type_code := l_balance_type_code;
56232 -- set the flag so later we will know whether the gain loss line needs to be created
56233
56234 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56235 p_actual_flag :='A';
56236 END IF;
56237
56238 --
56239 -- bulk performance
56240 --
56241 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56242 p_header_num => 0); -- 4262811
56243 --
56244 -- set accounting line options
56245 --
56246 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56247 p_natural_side_code => 'D'
56248 , p_gain_or_loss_flag => 'N'
56249 , p_gl_transfer_mode_code => 'D'
56250 , p_acct_entry_type_code => 'A'
56251 , p_switch_side_flag => 'Y'
56252 , p_merge_duplicate_code => 'W'
56253 );
56254 --
56255 l_acc_rev_natural_side_code := 'C'; -- 4262811
56256 --
56257 --
56258 -- set accounting line type info
56259 --
56260 xla_ae_lines_pkg.SetAcctLineType
56261 (p_component_type => l_component_type
56262 ,p_event_type_code => l_event_type_code
56263 ,p_line_definition_owner_code => l_line_definition_owner_code
56264 ,p_line_definition_code => l_line_definition_code
56265 ,p_accounting_line_code => l_component_code
56266 ,p_accounting_line_type_code => l_component_type_code
56267 ,p_accounting_line_appl_id => l_component_appl_id
56268 ,p_amb_context_code => l_amb_context_code
56269 ,p_entity_code => l_entity_code
56270 ,p_event_class_code => l_event_class_code);
56271 --
56272 -- set accounting class
56273 --
56274 xla_ae_lines_pkg.SetAcctClass(
56275 p_accounting_class_code => 'INVENTORY_VALUATION'
56276 , p_ae_header_id => l_ae_header_id
56277 );
56278
56279 --
56280 -- set rounding class
56281 --
56282 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56286 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56283 'INVENTORY_VALUATION';
56284
56285 --
56287 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56288 --
56289 -- bulk performance
56290 --
56291 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56292
56293 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56294 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56295
56296 -- 4955764
56297 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56298 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56299
56300 -- 4458381 Public Sector Enh
56301
56302 --
56303 -- set accounting attributes for the line type
56304 --
56305 l_entered_amt_idx := 3;
56306 l_accted_amt_idx := 8;
56307 l_bflow_applied_to_amt_idx := NULL; -- 5132302
56308 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56309 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
56310 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56311 l_rec_acct_attrs.array_char_value(2) := p_source_6;
56312 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56313 l_rec_acct_attrs.array_num_value(3) := p_source_3;
56314 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56315 l_rec_acct_attrs.array_char_value(4) := p_source_7;
56316 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56317 l_rec_acct_attrs.array_date_value(5) := p_source_8;
56318 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56319 l_rec_acct_attrs.array_num_value(6) := p_source_9;
56320 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56321 l_rec_acct_attrs.array_char_value(7) := p_source_10;
56322 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56323 l_rec_acct_attrs.array_num_value(8) := p_source_11;
56324
56325 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56326 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56327
56328 ---------------------------------------------------------------------------------------------------------------
56329 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56330 ---------------------------------------------------------------------------------------------------------------
56331 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56332
56333 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56334 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56335
56336 IF xla_accounting_cache_pkg.GetValueChar
56337 (p_source_code => 'LEDGER_CATEGORY_CODE'
56338 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56339 AND l_bflow_method_code = 'PRIOR_ENTRY'
56340 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56341 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56342 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56343 )
56344 THEN
56345 xla_ae_lines_pkg.BflowUpgEntry
56346 (p_business_method_code => l_bflow_method_code
56347 ,p_business_class_code => l_bflow_class_code
56348 ,p_balance_type => l_balance_type_code);
56349 ELSE
56350 NULL;
56351 -- No business flow processing for business flow method of NONE.
56352 END IF;
56353
56354 --
56355 -- call analytical criteria
56356 --
56357
56358 --
56359 -- call description
56360 --
56361 -- No description or it is inherited.
56362 --
56363 -- call ADRs
56364 -- Bug 4922099
56365 --
56366 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56367 (NVL(l_actual_upg_option, 'N') = 'O') OR
56368 (NVL(l_enc_upg_option, 'N') = 'O')
56369 )
56370 THEN
56371 NULL;
56372 --
56373 --
56374
56375 l_ccid := AcctDerRule_17(
56376 p_application_id => p_application_id
56377 , p_ae_header_id => l_ae_header_id
56378 , p_source_1 => p_source_1
56379 , p_source_2 => p_source_2
56380 , x_transaction_coa_id => l_adr_transaction_coa_id
56381 , x_accounting_coa_id => l_adr_accounting_coa_id
56382 , x_value_type_code => l_adr_value_type_code
56383 , p_side => 'NA'
56384 );
56385
56386 xla_ae_lines_pkg.set_ccid(
56387 p_code_combination_id => l_ccid
56388 , p_value_type_code => l_adr_value_type_code
56389 , p_transaction_coa_id => l_adr_transaction_coa_id
56390 , p_accounting_coa_id => l_adr_accounting_coa_id
56391 , p_adr_code => 'INV'
56392 , p_adr_type_code => 'S'
56393 , p_component_type => l_component_type
56394 , p_component_code => l_component_code
56395 , p_component_type_code => l_component_type_code
56399 );
56396 , p_component_appl_id => l_component_appl_id
56397 , p_amb_context_code => l_amb_context_code
56398 , p_side => 'NA'
56400
56401
56402 --
56403 --
56404 END IF;
56405 --
56406 -- Bug 4922099
56407 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56408 (NVL(l_enc_upg_option, 'N') = 'O')
56409 ) AND
56410 (l_bflow_method_code = 'PRIOR_ENTRY')
56411 )
56412 THEN
56413 IF
56414 --
56415 1 = 2
56416 --
56417 THEN
56418 xla_accounting_err_pkg.build_message
56419 (p_appli_s_name => 'XLA'
56420 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56421 ,p_token_1 => 'LINE_NUMBER'
56422 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
56423 ,p_token_2 => 'LINE_TYPE_NAME'
56424 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
56425 l_component_type
56426 ,l_component_code
56427 ,l_component_type_code
56428 ,l_component_appl_id
56429 ,l_amb_context_code
56430 ,l_entity_code
56431 ,l_event_class_code
56432 )
56433 ,p_token_3 => 'OWNER'
56434 ,p_value_3 => xla_lookups_pkg.get_meaning(
56435 p_lookup_type => 'XLA_OWNER_TYPE'
56436 ,p_lookup_code => l_component_type_code
56437 )
56438 ,p_token_4 => 'PRODUCT_NAME'
56439 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56440 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56441 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56442 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56443 ,p_ae_header_id => NULL
56444 );
56445
56446 IF (C_LEVEL_ERROR>= g_log_level) THEN
56447 trace
56448 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56449 ,p_level => C_LEVEL_ERROR
56450 ,p_module => l_log_module);
56451 END IF;
56452 END IF;
56453 END IF;
56454 --
56455 --
56456 ------------------------------------------------------------------------------------------------
56457 -- 4219869 Business Flow
56458 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56459 -- Prior Entry. Currently, the following code is always generated.
56460 ------------------------------------------------------------------------------------------------
56461 XLA_AE_LINES_PKG.ValidateCurrentLine;
56462
56463 ------------------------------------------------------------------------------------
56464 -- 4219869 Business Flow
56465 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56466 ------------------------------------------------------------------------------------
56467 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56468
56469 ----------------------------------------------------------------------------------
56470 -- 4219869 Business Flow
56471 -- Update journal entry status -- Need to generate this within IF <condition>
56472 ----------------------------------------------------------------------------------
56473 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56474 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56475 ,p_balance_type_code => l_balance_type_code
56476 );
56477
56478 -------------------------------------------------------------------------------------------
56479 -- 4262811 - Generate the Accrual Reversal lines
56480 -------------------------------------------------------------------------------------------
56481 BEGIN
56482 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56483 (g_array_event(p_event_id).array_value_num('header_index'));
56484 IF l_acc_rev_flag IS NULL THEN
56485 l_acc_rev_flag := 'N';
56486 END IF;
56487 EXCEPTION
56488 WHEN OTHERS THEN
56489 l_acc_rev_flag := 'N';
56490 END;
56491 --
56492 IF (l_acc_rev_flag = 'Y') THEN
56493
56497 ------------------------------------------------------------------------------------------
56494 -- 4645092 ------------------------------------------------------------------------------
56495 -- To allow MPA report to determine if it should generate report process
56496 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56498
56499 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56500 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56501 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
56502 -- call ADRs
56503 -- Bug 4922099
56504 --
56505 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56506 (NVL(l_actual_upg_option, 'N') = 'O') OR
56507 (NVL(l_enc_upg_option, 'N') = 'O')
56508 )
56509 THEN
56510 NULL;
56511 --
56512 --
56513
56514 l_ccid := AcctDerRule_17(
56515 p_application_id => p_application_id
56516 , p_ae_header_id => l_ae_header_id
56517 , p_source_1 => p_source_1
56518 , p_source_2 => p_source_2
56519 , x_transaction_coa_id => l_adr_transaction_coa_id
56520 , x_accounting_coa_id => l_adr_accounting_coa_id
56521 , x_value_type_code => l_adr_value_type_code
56522 , p_side => 'NA'
56523 );
56524
56525 xla_ae_lines_pkg.set_ccid(
56526 p_code_combination_id => l_ccid
56527 , p_value_type_code => l_adr_value_type_code
56528 , p_transaction_coa_id => l_adr_transaction_coa_id
56529 , p_accounting_coa_id => l_adr_accounting_coa_id
56530 , p_adr_code => 'INV'
56531 , p_adr_type_code => 'S'
56532 , p_component_type => l_component_type
56533 , p_component_code => l_component_code
56534 , p_component_type_code => l_component_type_code
56535 , p_component_appl_id => l_component_appl_id
56536 , p_amb_context_code => l_amb_context_code
56537 , p_side => 'NA'
56538 );
56539
56540
56541 --
56542 --
56543 END IF;
56544
56545 --
56546 -- Update the line information that should be overwritten
56547 --
56548 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56549 p_header_num => 1);
56550 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
56551
56552 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56553
56554 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
56555 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56556 END IF;
56557
56558 --
56559 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56560 --
56561 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56562 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
56563 ELSE
56564 ---------------------------------------------------------------------------------------------------
56565 -- 4262811a Switch Sign
56566 ---------------------------------------------------------------------------------------------------
56567 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
56568 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56569 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56570 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56571 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56572 -- 5132302
56573 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56574 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56575
56576 END IF;
56577
56578 -- 4955764
56579 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56580 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56581
56582
56583 XLA_AE_LINES_PKG.ValidateCurrentLine;
56584 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56585
56586 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56587 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56588 ,p_balance_type_code => l_balance_type_code);
56589
56590 END IF;
56591
56592 -----------------------------------------------------------------------------------------
56593 -- 4262811 Multiperiod Accounting
56594 -----------------------------------------------------------------------------------------
56595 -- No MPA option is assigned.
56596
56597
56598 END IF;
56599 END IF;
56600 --
56601
56602 --
56603 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56604 trace
56605 (p_msg => 'END of AcctLineType_134'
56606 ,p_level => C_LEVEL_PROCEDURE
56607 ,p_module => l_log_module);
56608 END IF;
56612 RAISE;
56609 --
56610 EXCEPTION
56611 WHEN xla_exceptions_pkg.application_exception THEN
56613 WHEN OTHERS THEN
56614 xla_exceptions_pkg.raise_message
56615 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_134');
56616 END AcctLineType_134;
56617 --
56618
56619 ---------------------------------------
56620 --
56621 -- PRIVATE FUNCTION
56622 -- AcctLineType_135
56623 --
56624 ---------------------------------------
56625 PROCEDURE AcctLineType_135 (
56626 p_application_id IN NUMBER
56627 ,p_event_id IN NUMBER
56628 ,p_calculate_acctd_flag IN VARCHAR2
56629 ,p_calculate_g_l_flag IN VARCHAR2
56630 ,p_actual_flag IN OUT VARCHAR2
56631 ,p_balance_type_code OUT VARCHAR2
56632 ,p_gain_or_loss_ref OUT VARCHAR2
56633
56634 --Transaction Account
56635 , p_source_1 IN NUMBER
56636 --Journal Line Type
56637 , p_source_2 IN VARCHAR2
56638 --Entered Amount
56639 , p_source_3 IN NUMBER
56640 --First Distribution Identifier
56641 , p_source_5 IN NUMBER
56642 --Distribution Type
56643 , p_source_6 IN VARCHAR2
56644 --Currency Code
56645 , p_source_7 IN VARCHAR2
56646 --Currency Conversion Date
56647 , p_source_8 IN DATE
56648 --Currency Conversion Rate
56649 , p_source_9 IN NUMBER
56650 --Currency Conversion Type
56651 , p_source_10 IN VARCHAR2
56652 --Accounted Amount
56653 , p_source_11 IN NUMBER
56654 )
56655 IS
56656
56657 l_component_type VARCHAR2(80);
56658 l_component_code VARCHAR2(30);
56659 l_component_type_code VARCHAR2(1);
56660 l_component_appl_id INTEGER;
56661 l_amb_context_code VARCHAR2(30);
56662 l_entity_code VARCHAR2(30);
56663 l_event_class_code VARCHAR2(30);
56664 l_ae_header_id NUMBER;
56665 l_event_type_code VARCHAR2(30);
56666 l_line_definition_code VARCHAR2(30);
56667 l_line_definition_owner_code VARCHAR2(1);
56668 --
56669 -- adr variables
56670 l_segment VARCHAR2(30);
56671 l_ccid NUMBER;
56672 l_adr_transaction_coa_id NUMBER;
56673 l_adr_accounting_coa_id NUMBER;
56674 l_adr_flexfield_segment_code VARCHAR2(30);
56675 l_adr_flex_value_set_id NUMBER;
56676 l_adr_value_type_code VARCHAR2(30);
56677 l_adr_value_combination_id NUMBER;
56678 l_adr_value_segment_code VARCHAR2(30);
56679
56680 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
56681 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
56682 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
56683 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
56684
56685 -- 4262811 Variables ------------------------------------------------------------------------------------------
56686 l_entered_amt_idx NUMBER;
56687 l_accted_amt_idx NUMBER;
56688 l_acc_rev_flag VARCHAR2(1);
56689 l_accrual_line_num NUMBER;
56690 l_tmp_amt NUMBER;
56691 l_acc_rev_natural_side_code VARCHAR2(1);
56692
56693 l_num_entries NUMBER;
56694 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
56695 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
56696 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
56697 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
56698 l_recog_line_1 NUMBER;
56699 l_recog_line_2 NUMBER;
56700
56701 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
56702 l_bflow_applied_to_amt NUMBER; -- 5132302
56703 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
56704
56705 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56706
56707 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
56708 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
56709
56710 ---------------------------------------------------------------------------------------------------------------
56711
56712
56713 --
56714 -- bulk performance
56715 --
56716 l_balance_type_code VARCHAR2(1);
56717 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
56718 l_log_module VARCHAR2(240);
56719
56720 --
56721 -- Upgrade strategy
56722 --
56723 l_actual_upg_option VARCHAR2(1);
56724 l_enc_upg_option VARCHAR2(1);
56725
56726 --
56727 BEGIN
56728 --
56729 IF g_log_enabled THEN
56730 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_135';
56731 END IF;
56732 --
56733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56734
56735 trace
56736 (p_msg => 'BEGIN of AcctLineType_135'
56737 ,p_level => C_LEVEL_PROCEDURE
56738 ,p_module => l_log_module);
56739
56740 END IF;
56741 --
56742 l_component_type := 'AMB_JLT';
56743 l_component_code := 'INV';
56744 l_component_type_code := 'S';
56745 l_component_appl_id := 555;
56749 l_event_type_code := 'LOG_RET_TO_RECEIVING';
56746 l_amb_context_code := 'DEFAULT';
56747 l_entity_code := 'PURCHASING';
56748 l_event_class_code := 'DELIVER';
56750 l_line_definition_owner_code := 'S';
56751 l_line_definition_code := 'LOG_RET_TO_RECEIVING';
56752 --
56753 l_balance_type_code := 'A';
56754 l_segment := NULL;
56755 l_ccid := NULL;
56756 l_adr_transaction_coa_id := NULL;
56757 l_adr_accounting_coa_id := NULL;
56758 l_adr_flexfield_segment_code := NULL;
56759 l_adr_flex_value_set_id := NULL;
56760 l_adr_value_type_code := NULL;
56761 l_adr_value_combination_id := NULL;
56762 l_adr_value_segment_code := NULL;
56763
56764 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
56765 l_bflow_class_code := ''; -- 4219869 Business Flow
56766 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
56767 l_budgetary_control_flag := 'N';
56768
56769 l_bflow_applied_to_amt_idx := NULL; -- 5132302
56770 l_bflow_applied_to_amt := NULL; -- 5132302
56771 l_entered_amt_idx := NULL; -- 4262811
56772 l_accted_amt_idx := NULL; -- 4262811
56773 l_acc_rev_flag := NULL; -- 4262811
56774 l_accrual_line_num := NULL; -- 4262811
56775 l_tmp_amt := NULL; -- 4262811
56776 --
56777
56778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56779 l_balance_type_code <> 'B' THEN
56780 IF NVL(p_source_2,'
56781 ') = 'INV'
56782 THEN
56783
56784 --
56785 XLA_AE_LINES_PKG.SetNewLine;
56786
56787 p_balance_type_code := l_balance_type_code;
56788 -- set the flag so later we will know whether the gain loss line needs to be created
56789
56790 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56791 p_actual_flag :='A';
56792 END IF;
56793
56794 --
56795 -- bulk performance
56796 --
56797 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56798 p_header_num => 0); -- 4262811
56799 --
56800 -- set accounting line options
56801 --
56802 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56803 p_natural_side_code => 'D'
56804 , p_gain_or_loss_flag => 'N'
56805 , p_gl_transfer_mode_code => 'D'
56806 , p_acct_entry_type_code => 'A'
56807 , p_switch_side_flag => 'Y'
56808 , p_merge_duplicate_code => 'W'
56809 );
56810 --
56811 l_acc_rev_natural_side_code := 'C'; -- 4262811
56812 --
56813 --
56814 -- set accounting line type info
56815 --
56816 xla_ae_lines_pkg.SetAcctLineType
56817 (p_component_type => l_component_type
56818 ,p_event_type_code => l_event_type_code
56819 ,p_line_definition_owner_code => l_line_definition_owner_code
56820 ,p_line_definition_code => l_line_definition_code
56821 ,p_accounting_line_code => l_component_code
56822 ,p_accounting_line_type_code => l_component_type_code
56823 ,p_accounting_line_appl_id => l_component_appl_id
56824 ,p_amb_context_code => l_amb_context_code
56825 ,p_entity_code => l_entity_code
56826 ,p_event_class_code => l_event_class_code);
56827 --
56828 -- set accounting class
56829 --
56830 xla_ae_lines_pkg.SetAcctClass(
56831 p_accounting_class_code => 'INVENTORY_VALUATION'
56832 , p_ae_header_id => l_ae_header_id
56833 );
56834
56835 --
56836 -- set rounding class
56837 --
56838 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56839 'INVENTORY_VALUATION';
56840
56841 --
56842 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56843 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56844 --
56845 -- bulk performance
56846 --
56847 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56848
56849 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56850 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56851
56852 -- 4955764
56853 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56854 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56855
56856 -- 4458381 Public Sector Enh
56857
56858 --
56859 -- set accounting attributes for the line type
56860 --
56861 l_entered_amt_idx := 3;
56862 l_accted_amt_idx := 8;
56863 l_bflow_applied_to_amt_idx := NULL; -- 5132302
56864 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56865 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
56866 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56867 l_rec_acct_attrs.array_char_value(2) := p_source_6;
56868 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
56872 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
56869 l_rec_acct_attrs.array_num_value(3) := p_source_3;
56870 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
56871 l_rec_acct_attrs.array_char_value(4) := p_source_7;
56873 l_rec_acct_attrs.array_date_value(5) := p_source_8;
56874 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
56875 l_rec_acct_attrs.array_num_value(6) := p_source_9;
56876 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
56877 l_rec_acct_attrs.array_char_value(7) := p_source_10;
56878 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
56879 l_rec_acct_attrs.array_num_value(8) := p_source_11;
56880
56881 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56882 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56883
56884 ---------------------------------------------------------------------------------------------------------------
56885 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56886 ---------------------------------------------------------------------------------------------------------------
56887 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56888
56889 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56890 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56891
56892 IF xla_accounting_cache_pkg.GetValueChar
56893 (p_source_code => 'LEDGER_CATEGORY_CODE'
56894 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56895 AND l_bflow_method_code = 'PRIOR_ENTRY'
56896 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56897 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56898 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56899 )
56900 THEN
56901 xla_ae_lines_pkg.BflowUpgEntry
56902 (p_business_method_code => l_bflow_method_code
56903 ,p_business_class_code => l_bflow_class_code
56904 ,p_balance_type => l_balance_type_code);
56905 ELSE
56906 NULL;
56907 -- No business flow processing for business flow method of NONE.
56908 END IF;
56909
56910 --
56911 -- call analytical criteria
56912 --
56913
56914 --
56915 -- call description
56916 --
56917 -- No description or it is inherited.
56918 --
56919 -- call ADRs
56920 -- Bug 4922099
56921 --
56922 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56923 (NVL(l_actual_upg_option, 'N') = 'O') OR
56924 (NVL(l_enc_upg_option, 'N') = 'O')
56925 )
56926 THEN
56927 NULL;
56928 --
56929 --
56930
56931 l_ccid := AcctDerRule_17(
56932 p_application_id => p_application_id
56933 , p_ae_header_id => l_ae_header_id
56934 , p_source_1 => p_source_1
56935 , p_source_2 => p_source_2
56936 , x_transaction_coa_id => l_adr_transaction_coa_id
56937 , x_accounting_coa_id => l_adr_accounting_coa_id
56938 , x_value_type_code => l_adr_value_type_code
56939 , p_side => 'NA'
56940 );
56941
56942 xla_ae_lines_pkg.set_ccid(
56943 p_code_combination_id => l_ccid
56944 , p_value_type_code => l_adr_value_type_code
56945 , p_transaction_coa_id => l_adr_transaction_coa_id
56946 , p_accounting_coa_id => l_adr_accounting_coa_id
56947 , p_adr_code => 'INV'
56948 , p_adr_type_code => 'S'
56949 , p_component_type => l_component_type
56950 , p_component_code => l_component_code
56951 , p_component_type_code => l_component_type_code
56952 , p_component_appl_id => l_component_appl_id
56953 , p_amb_context_code => l_amb_context_code
56954 , p_side => 'NA'
56955 );
56956
56957
56958 --
56959 --
56960 END IF;
56961 --
56962 -- Bug 4922099
56963 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56964 (NVL(l_enc_upg_option, 'N') = 'O')
56965 ) AND
56966 (l_bflow_method_code = 'PRIOR_ENTRY')
56967 )
56968 THEN
56969 IF
56970 --
56971 1 = 2
56972 --
56973 THEN
56974 xla_accounting_err_pkg.build_message
56975 (p_appli_s_name => 'XLA'
56976 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56977 ,p_token_1 => 'LINE_NUMBER'
56978 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
56979 ,p_token_2 => 'LINE_TYPE_NAME'
56980 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
56981 l_component_type
56982 ,l_component_code
56983 ,l_component_type_code
56987 ,l_event_class_code
56984 ,l_component_appl_id
56985 ,l_amb_context_code
56986 ,l_entity_code
56988 )
56989 ,p_token_3 => 'OWNER'
56990 ,p_value_3 => xla_lookups_pkg.get_meaning(
56991 p_lookup_type => 'XLA_OWNER_TYPE'
56992 ,p_lookup_code => l_component_type_code
56993 )
56994 ,p_token_4 => 'PRODUCT_NAME'
56995 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56996 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56997 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56998 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56999 ,p_ae_header_id => NULL
57000 );
57001
57002 IF (C_LEVEL_ERROR>= g_log_level) THEN
57003 trace
57004 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57005 ,p_level => C_LEVEL_ERROR
57006 ,p_module => l_log_module);
57007 END IF;
57008 END IF;
57009 END IF;
57010 --
57011 --
57012 ------------------------------------------------------------------------------------------------
57013 -- 4219869 Business Flow
57014 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57015 -- Prior Entry. Currently, the following code is always generated.
57016 ------------------------------------------------------------------------------------------------
57017 XLA_AE_LINES_PKG.ValidateCurrentLine;
57018
57019 ------------------------------------------------------------------------------------
57020 -- 4219869 Business Flow
57021 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57022 ------------------------------------------------------------------------------------
57023 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57024
57025 ----------------------------------------------------------------------------------
57026 -- 4219869 Business Flow
57027 -- Update journal entry status -- Need to generate this within IF <condition>
57028 ----------------------------------------------------------------------------------
57029 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57030 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57031 ,p_balance_type_code => l_balance_type_code
57032 );
57033
57034 -------------------------------------------------------------------------------------------
57035 -- 4262811 - Generate the Accrual Reversal lines
57036 -------------------------------------------------------------------------------------------
57037 BEGIN
57038 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57039 (g_array_event(p_event_id).array_value_num('header_index'));
57040 IF l_acc_rev_flag IS NULL THEN
57041 l_acc_rev_flag := 'N';
57042 END IF;
57043 EXCEPTION
57044 WHEN OTHERS THEN
57045 l_acc_rev_flag := 'N';
57046 END;
57047 --
57048 IF (l_acc_rev_flag = 'Y') THEN
57049
57050 -- 4645092 ------------------------------------------------------------------------------
57051 -- To allow MPA report to determine if it should generate report process
57052 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57053 ------------------------------------------------------------------------------------------
57054
57055 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57056 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57057 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
57058 -- call ADRs
57059 -- Bug 4922099
57060 --
57061 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57062 (NVL(l_actual_upg_option, 'N') = 'O') OR
57063 (NVL(l_enc_upg_option, 'N') = 'O')
57064 )
57065 THEN
57066 NULL;
57067 --
57068 --
57069
57070 l_ccid := AcctDerRule_17(
57071 p_application_id => p_application_id
57072 , p_ae_header_id => l_ae_header_id
57073 , p_source_1 => p_source_1
57074 , p_source_2 => p_source_2
57075 , x_transaction_coa_id => l_adr_transaction_coa_id
57076 , x_accounting_coa_id => l_adr_accounting_coa_id
57077 , x_value_type_code => l_adr_value_type_code
57078 , p_side => 'NA'
57079 );
57080
57081 xla_ae_lines_pkg.set_ccid(
57082 p_code_combination_id => l_ccid
57086 , p_adr_code => 'INV'
57083 , p_value_type_code => l_adr_value_type_code
57084 , p_transaction_coa_id => l_adr_transaction_coa_id
57085 , p_accounting_coa_id => l_adr_accounting_coa_id
57087 , p_adr_type_code => 'S'
57088 , p_component_type => l_component_type
57089 , p_component_code => l_component_code
57090 , p_component_type_code => l_component_type_code
57091 , p_component_appl_id => l_component_appl_id
57092 , p_amb_context_code => l_amb_context_code
57093 , p_side => 'NA'
57094 );
57095
57096
57097 --
57098 --
57099 END IF;
57100
57101 --
57102 -- Update the line information that should be overwritten
57103 --
57104 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57105 p_header_num => 1);
57106 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
57107
57108 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57109
57110 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
57111 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57112 END IF;
57113
57114 --
57115 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57116 --
57117 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57118 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
57119 ELSE
57120 ---------------------------------------------------------------------------------------------------
57121 -- 4262811a Switch Sign
57122 ---------------------------------------------------------------------------------------------------
57123 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
57124 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57125 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57126 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57127 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57128 -- 5132302
57129 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57130 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57131
57132 END IF;
57133
57134 -- 4955764
57135 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57136 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57137
57138
57139 XLA_AE_LINES_PKG.ValidateCurrentLine;
57140 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57141
57142 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57143 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57144 ,p_balance_type_code => l_balance_type_code);
57145
57146 END IF;
57147
57148 -----------------------------------------------------------------------------------------
57149 -- 4262811 Multiperiod Accounting
57150 -----------------------------------------------------------------------------------------
57151 -- No MPA option is assigned.
57152
57153
57154 END IF;
57155 END IF;
57156 --
57157
57158 --
57159 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57160 trace
57161 (p_msg => 'END of AcctLineType_135'
57162 ,p_level => C_LEVEL_PROCEDURE
57163 ,p_module => l_log_module);
57164 END IF;
57165 --
57166 EXCEPTION
57167 WHEN xla_exceptions_pkg.application_exception THEN
57168 RAISE;
57169 WHEN OTHERS THEN
57170 xla_exceptions_pkg.raise_message
57171 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_135');
57172 END AcctLineType_135;
57173 --
57174
57175 ---------------------------------------
57176 --
57177 -- PRIVATE FUNCTION
57178 -- AcctLineType_136
57179 --
57180 ---------------------------------------
57181 PROCEDURE AcctLineType_136 (
57182 p_application_id IN NUMBER
57183 ,p_event_id IN NUMBER
57184 ,p_calculate_acctd_flag IN VARCHAR2
57185 ,p_calculate_g_l_flag IN VARCHAR2
57186 ,p_actual_flag IN OUT VARCHAR2
57187 ,p_balance_type_code OUT VARCHAR2
57188 ,p_gain_or_loss_ref OUT VARCHAR2
57189
57190 --Transaction Account
57191 , p_source_1 IN NUMBER
57192 --Journal Line Type
57193 , p_source_2 IN VARCHAR2
57194 --Entered Amount
57195 , p_source_3 IN NUMBER
57196 --First Distribution Identifier
57197 , p_source_5 IN NUMBER
57198 --Distribution Type
57199 , p_source_6 IN VARCHAR2
57200 --Currency Code
57201 , p_source_7 IN VARCHAR2
57202 --Currency Conversion Date
57203 , p_source_8 IN DATE
57204 --Currency Conversion Rate
57208 --Accounted Amount
57205 , p_source_9 IN NUMBER
57206 --Currency Conversion Type
57207 , p_source_10 IN VARCHAR2
57209 , p_source_11 IN NUMBER
57210 )
57211 IS
57212
57213 l_component_type VARCHAR2(80);
57214 l_component_code VARCHAR2(30);
57215 l_component_type_code VARCHAR2(1);
57216 l_component_appl_id INTEGER;
57217 l_amb_context_code VARCHAR2(30);
57218 l_entity_code VARCHAR2(30);
57219 l_event_class_code VARCHAR2(30);
57220 l_ae_header_id NUMBER;
57221 l_event_type_code VARCHAR2(30);
57222 l_line_definition_code VARCHAR2(30);
57223 l_line_definition_owner_code VARCHAR2(1);
57224 --
57225 -- adr variables
57226 l_segment VARCHAR2(30);
57227 l_ccid NUMBER;
57228 l_adr_transaction_coa_id NUMBER;
57229 l_adr_accounting_coa_id NUMBER;
57230 l_adr_flexfield_segment_code VARCHAR2(30);
57231 l_adr_flex_value_set_id NUMBER;
57232 l_adr_value_type_code VARCHAR2(30);
57233 l_adr_value_combination_id NUMBER;
57234 l_adr_value_segment_code VARCHAR2(30);
57235
57236 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
57237 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
57238 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
57239 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
57240
57241 -- 4262811 Variables ------------------------------------------------------------------------------------------
57242 l_entered_amt_idx NUMBER;
57243 l_accted_amt_idx NUMBER;
57244 l_acc_rev_flag VARCHAR2(1);
57245 l_accrual_line_num NUMBER;
57246 l_tmp_amt NUMBER;
57247 l_acc_rev_natural_side_code VARCHAR2(1);
57248
57249 l_num_entries NUMBER;
57250 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
57251 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
57252 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
57253 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
57254 l_recog_line_1 NUMBER;
57255 l_recog_line_2 NUMBER;
57256
57257 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
57258 l_bflow_applied_to_amt NUMBER; -- 5132302
57259 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
57260
57261 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57262
57263 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
57264 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
57265
57266 ---------------------------------------------------------------------------------------------------------------
57267
57268
57269 --
57270 -- bulk performance
57271 --
57272 l_balance_type_code VARCHAR2(1);
57273 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
57274 l_log_module VARCHAR2(240);
57275
57276 --
57277 -- Upgrade strategy
57278 --
57279 l_actual_upg_option VARCHAR2(1);
57280 l_enc_upg_option VARCHAR2(1);
57281
57282 --
57283 BEGIN
57284 --
57285 IF g_log_enabled THEN
57286 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
57287 END IF;
57288 --
57289 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57290
57291 trace
57292 (p_msg => 'BEGIN of AcctLineType_136'
57293 ,p_level => C_LEVEL_PROCEDURE
57294 ,p_module => l_log_module);
57295
57296 END IF;
57297 --
57298 l_component_type := 'AMB_JLT';
57299 l_component_code := 'INV';
57300 l_component_type_code := 'S';
57301 l_component_appl_id := 555;
57302 l_amb_context_code := 'DEFAULT';
57303 l_entity_code := 'INVENTORY';
57304 l_event_class_code := 'LOG_INTERCOMPANY';
57305 l_event_type_code := 'LOG_IC_SALES_ISSUE';
57306 l_line_definition_owner_code := 'S';
57307 l_line_definition_code := 'LOG_IC_SALES_ISSUE';
57308 --
57309 l_balance_type_code := 'A';
57310 l_segment := NULL;
57311 l_ccid := NULL;
57312 l_adr_transaction_coa_id := NULL;
57313 l_adr_accounting_coa_id := NULL;
57314 l_adr_flexfield_segment_code := NULL;
57315 l_adr_flex_value_set_id := NULL;
57316 l_adr_value_type_code := NULL;
57317 l_adr_value_combination_id := NULL;
57318 l_adr_value_segment_code := NULL;
57319
57320 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
57321 l_bflow_class_code := ''; -- 4219869 Business Flow
57322 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
57323 l_budgetary_control_flag := 'N';
57324
57325 l_bflow_applied_to_amt_idx := NULL; -- 5132302
57326 l_bflow_applied_to_amt := NULL; -- 5132302
57327 l_entered_amt_idx := NULL; -- 4262811
57328 l_accted_amt_idx := NULL; -- 4262811
57329 l_acc_rev_flag := NULL; -- 4262811
57330 l_accrual_line_num := NULL; -- 4262811
57334 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57331 l_tmp_amt := NULL; -- 4262811
57332 --
57333
57335 l_balance_type_code <> 'B' THEN
57336 IF NVL(p_source_2,'
57337 ') = 'INV'
57338 THEN
57339
57340 --
57341 XLA_AE_LINES_PKG.SetNewLine;
57342
57343 p_balance_type_code := l_balance_type_code;
57344 -- set the flag so later we will know whether the gain loss line needs to be created
57345
57346 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57347 p_actual_flag :='A';
57348 END IF;
57349
57350 --
57351 -- bulk performance
57352 --
57353 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57354 p_header_num => 0); -- 4262811
57355 --
57356 -- set accounting line options
57357 --
57358 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57359 p_natural_side_code => 'D'
57360 , p_gain_or_loss_flag => 'N'
57361 , p_gl_transfer_mode_code => 'D'
57362 , p_acct_entry_type_code => 'A'
57363 , p_switch_side_flag => 'Y'
57364 , p_merge_duplicate_code => 'W'
57365 );
57366 --
57367 l_acc_rev_natural_side_code := 'C'; -- 4262811
57368 --
57369 --
57370 -- set accounting line type info
57371 --
57372 xla_ae_lines_pkg.SetAcctLineType
57373 (p_component_type => l_component_type
57374 ,p_event_type_code => l_event_type_code
57375 ,p_line_definition_owner_code => l_line_definition_owner_code
57376 ,p_line_definition_code => l_line_definition_code
57377 ,p_accounting_line_code => l_component_code
57378 ,p_accounting_line_type_code => l_component_type_code
57379 ,p_accounting_line_appl_id => l_component_appl_id
57380 ,p_amb_context_code => l_amb_context_code
57381 ,p_entity_code => l_entity_code
57382 ,p_event_class_code => l_event_class_code);
57383 --
57384 -- set accounting class
57385 --
57386 xla_ae_lines_pkg.SetAcctClass(
57387 p_accounting_class_code => 'INVENTORY_VALUATION'
57388 , p_ae_header_id => l_ae_header_id
57389 );
57390
57391 --
57392 -- set rounding class
57393 --
57394 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57395 'INVENTORY_VALUATION';
57396
57397 --
57398 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57399 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57400 --
57401 -- bulk performance
57402 --
57403 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57404
57405 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57406 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57407
57408 -- 4955764
57409 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57410 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57411
57412 -- 4458381 Public Sector Enh
57413
57414 --
57415 -- set accounting attributes for the line type
57416 --
57417 l_entered_amt_idx := 3;
57418 l_accted_amt_idx := 8;
57419 l_bflow_applied_to_amt_idx := NULL; -- 5132302
57420 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
57421 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
57422 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
57423 l_rec_acct_attrs.array_char_value(2) := p_source_6;
57424 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
57425 l_rec_acct_attrs.array_num_value(3) := p_source_3;
57426 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
57427 l_rec_acct_attrs.array_char_value(4) := p_source_7;
57428 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
57429 l_rec_acct_attrs.array_date_value(5) := p_source_8;
57430 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
57431 l_rec_acct_attrs.array_num_value(6) := p_source_9;
57432 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
57433 l_rec_acct_attrs.array_char_value(7) := p_source_10;
57434 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
57435 l_rec_acct_attrs.array_num_value(8) := p_source_11;
57436
57437 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57438 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57439
57440 ---------------------------------------------------------------------------------------------------------------
57441 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57442 ---------------------------------------------------------------------------------------------------------------
57443 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57444
57445 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57449 (p_source_code => 'LEDGER_CATEGORY_CODE'
57446 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57447
57448 IF xla_accounting_cache_pkg.GetValueChar
57450 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57451 AND l_bflow_method_code = 'PRIOR_ENTRY'
57452 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57453 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57454 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57455 )
57456 THEN
57457 xla_ae_lines_pkg.BflowUpgEntry
57458 (p_business_method_code => l_bflow_method_code
57459 ,p_business_class_code => l_bflow_class_code
57460 ,p_balance_type => l_balance_type_code);
57461 ELSE
57462 NULL;
57463 -- No business flow processing for business flow method of NONE.
57464 END IF;
57465
57466 --
57467 -- call analytical criteria
57468 --
57469
57470 --
57471 -- call description
57472 --
57473 -- No description or it is inherited.
57474 --
57475 -- call ADRs
57476 -- Bug 4922099
57477 --
57478 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57479 (NVL(l_actual_upg_option, 'N') = 'O') OR
57480 (NVL(l_enc_upg_option, 'N') = 'O')
57481 )
57482 THEN
57483 NULL;
57484 --
57485 --
57486
57487 l_ccid := AcctDerRule_17(
57488 p_application_id => p_application_id
57489 , p_ae_header_id => l_ae_header_id
57490 , p_source_1 => p_source_1
57491 , p_source_2 => p_source_2
57492 , x_transaction_coa_id => l_adr_transaction_coa_id
57493 , x_accounting_coa_id => l_adr_accounting_coa_id
57494 , x_value_type_code => l_adr_value_type_code
57495 , p_side => 'NA'
57496 );
57497
57498 xla_ae_lines_pkg.set_ccid(
57499 p_code_combination_id => l_ccid
57500 , p_value_type_code => l_adr_value_type_code
57501 , p_transaction_coa_id => l_adr_transaction_coa_id
57502 , p_accounting_coa_id => l_adr_accounting_coa_id
57503 , p_adr_code => 'INV'
57504 , p_adr_type_code => 'S'
57505 , p_component_type => l_component_type
57506 , p_component_code => l_component_code
57507 , p_component_type_code => l_component_type_code
57508 , p_component_appl_id => l_component_appl_id
57509 , p_amb_context_code => l_amb_context_code
57510 , p_side => 'NA'
57511 );
57512
57513
57514 --
57515 --
57516 END IF;
57517 --
57518 -- Bug 4922099
57519 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57520 (NVL(l_enc_upg_option, 'N') = 'O')
57521 ) AND
57522 (l_bflow_method_code = 'PRIOR_ENTRY')
57523 )
57524 THEN
57525 IF
57526 --
57527 1 = 2
57528 --
57529 THEN
57530 xla_accounting_err_pkg.build_message
57531 (p_appli_s_name => 'XLA'
57532 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57533 ,p_token_1 => 'LINE_NUMBER'
57534 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
57535 ,p_token_2 => 'LINE_TYPE_NAME'
57536 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
57537 l_component_type
57538 ,l_component_code
57539 ,l_component_type_code
57540 ,l_component_appl_id
57541 ,l_amb_context_code
57542 ,l_entity_code
57543 ,l_event_class_code
57544 )
57545 ,p_token_3 => 'OWNER'
57546 ,p_value_3 => xla_lookups_pkg.get_meaning(
57547 p_lookup_type => 'XLA_OWNER_TYPE'
57548 ,p_lookup_code => l_component_type_code
57549 )
57550 ,p_token_4 => 'PRODUCT_NAME'
57551 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57552 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57553 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57557
57554 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57555 ,p_ae_header_id => NULL
57556 );
57558 IF (C_LEVEL_ERROR>= g_log_level) THEN
57559 trace
57560 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57561 ,p_level => C_LEVEL_ERROR
57562 ,p_module => l_log_module);
57563 END IF;
57564 END IF;
57565 END IF;
57566 --
57567 --
57568 ------------------------------------------------------------------------------------------------
57569 -- 4219869 Business Flow
57570 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57571 -- Prior Entry. Currently, the following code is always generated.
57572 ------------------------------------------------------------------------------------------------
57573 XLA_AE_LINES_PKG.ValidateCurrentLine;
57574
57575 ------------------------------------------------------------------------------------
57576 -- 4219869 Business Flow
57577 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57578 ------------------------------------------------------------------------------------
57579 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57580
57581 ----------------------------------------------------------------------------------
57582 -- 4219869 Business Flow
57583 -- Update journal entry status -- Need to generate this within IF <condition>
57584 ----------------------------------------------------------------------------------
57585 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57586 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57587 ,p_balance_type_code => l_balance_type_code
57588 );
57589
57590 -------------------------------------------------------------------------------------------
57591 -- 4262811 - Generate the Accrual Reversal lines
57592 -------------------------------------------------------------------------------------------
57593 BEGIN
57594 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57595 (g_array_event(p_event_id).array_value_num('header_index'));
57596 IF l_acc_rev_flag IS NULL THEN
57597 l_acc_rev_flag := 'N';
57598 END IF;
57599 EXCEPTION
57600 WHEN OTHERS THEN
57601 l_acc_rev_flag := 'N';
57602 END;
57603 --
57604 IF (l_acc_rev_flag = 'Y') THEN
57605
57606 -- 4645092 ------------------------------------------------------------------------------
57607 -- To allow MPA report to determine if it should generate report process
57608 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57609 ------------------------------------------------------------------------------------------
57610
57611 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57612 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57613 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
57614 -- call ADRs
57615 -- Bug 4922099
57616 --
57617 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57618 (NVL(l_actual_upg_option, 'N') = 'O') OR
57619 (NVL(l_enc_upg_option, 'N') = 'O')
57620 )
57621 THEN
57622 NULL;
57623 --
57624 --
57625
57626 l_ccid := AcctDerRule_17(
57627 p_application_id => p_application_id
57628 , p_ae_header_id => l_ae_header_id
57629 , p_source_1 => p_source_1
57630 , p_source_2 => p_source_2
57631 , x_transaction_coa_id => l_adr_transaction_coa_id
57632 , x_accounting_coa_id => l_adr_accounting_coa_id
57633 , x_value_type_code => l_adr_value_type_code
57634 , p_side => 'NA'
57635 );
57636
57637 xla_ae_lines_pkg.set_ccid(
57638 p_code_combination_id => l_ccid
57639 , p_value_type_code => l_adr_value_type_code
57640 , p_transaction_coa_id => l_adr_transaction_coa_id
57641 , p_accounting_coa_id => l_adr_accounting_coa_id
57642 , p_adr_code => 'INV'
57643 , p_adr_type_code => 'S'
57644 , p_component_type => l_component_type
57645 , p_component_code => l_component_code
57646 , p_component_type_code => l_component_type_code
57647 , p_component_appl_id => l_component_appl_id
57648 , p_amb_context_code => l_amb_context_code
57649 , p_side => 'NA'
57650 );
57651
57652
57653 --
57654 --
57655 END IF;
57656
57657 --
57658 -- Update the line information that should be overwritten
57659 --
57660 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57661 p_header_num => 1);
57662 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
57663
57664 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57665
57666 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
57670 --
57667 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57668 END IF;
57669
57671 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57672 --
57673 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57674 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
57675 ELSE
57676 ---------------------------------------------------------------------------------------------------
57677 -- 4262811a Switch Sign
57678 ---------------------------------------------------------------------------------------------------
57679 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
57680 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57681 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57682 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57683 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57684 -- 5132302
57685 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57686 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57687
57688 END IF;
57689
57690 -- 4955764
57691 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57692 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57693
57694
57695 XLA_AE_LINES_PKG.ValidateCurrentLine;
57696 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57697
57698 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57699 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57700 ,p_balance_type_code => l_balance_type_code);
57701
57702 END IF;
57703
57704 -----------------------------------------------------------------------------------------
57705 -- 4262811 Multiperiod Accounting
57706 -----------------------------------------------------------------------------------------
57707 -- No MPA option is assigned.
57708
57709
57710 END IF;
57711 END IF;
57712 --
57713
57714 --
57715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57716 trace
57717 (p_msg => 'END of AcctLineType_136'
57718 ,p_level => C_LEVEL_PROCEDURE
57719 ,p_module => l_log_module);
57720 END IF;
57721 --
57722 EXCEPTION
57723 WHEN xla_exceptions_pkg.application_exception THEN
57724 RAISE;
57725 WHEN OTHERS THEN
57726 xla_exceptions_pkg.raise_message
57727 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_136');
57728 END AcctLineType_136;
57729 --
57730
57731 ---------------------------------------
57732 --
57733 -- PRIVATE FUNCTION
57734 -- AcctLineType_137
57735 --
57736 ---------------------------------------
57737 PROCEDURE AcctLineType_137 (
57738 p_application_id IN NUMBER
57739 ,p_event_id IN NUMBER
57740 ,p_calculate_acctd_flag IN VARCHAR2
57741 ,p_calculate_g_l_flag IN VARCHAR2
57742 ,p_actual_flag IN OUT VARCHAR2
57743 ,p_balance_type_code OUT VARCHAR2
57744 ,p_gain_or_loss_ref OUT VARCHAR2
57745
57746 --Transaction Account
57747 , p_source_1 IN NUMBER
57748 --Journal Line Type
57749 , p_source_2 IN VARCHAR2
57750 --Entered Amount
57751 , p_source_3 IN NUMBER
57752 --First Distribution Identifier
57753 , p_source_5 IN NUMBER
57754 --Distribution Type
57755 , p_source_6 IN VARCHAR2
57756 --Currency Code
57757 , p_source_7 IN VARCHAR2
57758 --Currency Conversion Date
57759 , p_source_8 IN DATE
57760 --Currency Conversion Rate
57761 , p_source_9 IN NUMBER
57762 --Currency Conversion Type
57763 , p_source_10 IN VARCHAR2
57764 --Accounted Amount
57765 , p_source_11 IN NUMBER
57766 )
57767 IS
57768
57769 l_component_type VARCHAR2(80);
57770 l_component_code VARCHAR2(30);
57771 l_component_type_code VARCHAR2(1);
57772 l_component_appl_id INTEGER;
57773 l_amb_context_code VARCHAR2(30);
57774 l_entity_code VARCHAR2(30);
57775 l_event_class_code VARCHAR2(30);
57776 l_ae_header_id NUMBER;
57777 l_event_type_code VARCHAR2(30);
57778 l_line_definition_code VARCHAR2(30);
57779 l_line_definition_owner_code VARCHAR2(1);
57780 --
57781 -- adr variables
57782 l_segment VARCHAR2(30);
57783 l_ccid NUMBER;
57784 l_adr_transaction_coa_id NUMBER;
57785 l_adr_accounting_coa_id NUMBER;
57786 l_adr_flexfield_segment_code VARCHAR2(30);
57787 l_adr_flex_value_set_id NUMBER;
57788 l_adr_value_type_code VARCHAR2(30);
57789 l_adr_value_combination_id NUMBER;
57790 l_adr_value_segment_code VARCHAR2(30);
57791
57795 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
57792 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
57793 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
57794 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
57796
57797 -- 4262811 Variables ------------------------------------------------------------------------------------------
57798 l_entered_amt_idx NUMBER;
57799 l_accted_amt_idx NUMBER;
57800 l_acc_rev_flag VARCHAR2(1);
57801 l_accrual_line_num NUMBER;
57802 l_tmp_amt NUMBER;
57803 l_acc_rev_natural_side_code VARCHAR2(1);
57804
57805 l_num_entries NUMBER;
57806 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
57807 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
57808 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
57809 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
57810 l_recog_line_1 NUMBER;
57811 l_recog_line_2 NUMBER;
57812
57813 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
57814 l_bflow_applied_to_amt NUMBER; -- 5132302
57815 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
57816
57817 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57818
57819 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
57820 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
57821
57822 ---------------------------------------------------------------------------------------------------------------
57823
57824
57825 --
57826 -- bulk performance
57827 --
57828 l_balance_type_code VARCHAR2(1);
57829 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
57830 l_log_module VARCHAR2(240);
57831
57832 --
57833 -- Upgrade strategy
57834 --
57835 l_actual_upg_option VARCHAR2(1);
57836 l_enc_upg_option VARCHAR2(1);
57837
57838 --
57839 BEGIN
57840 --
57841 IF g_log_enabled THEN
57842 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
57843 END IF;
57844 --
57845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57846
57847 trace
57848 (p_msg => 'BEGIN of AcctLineType_137'
57849 ,p_level => C_LEVEL_PROCEDURE
57850 ,p_module => l_log_module);
57851
57852 END IF;
57853 --
57854 l_component_type := 'AMB_JLT';
57855 l_component_code := 'INV';
57856 l_component_type_code := 'S';
57857 l_component_appl_id := 555;
57858 l_amb_context_code := 'DEFAULT';
57859 l_entity_code := 'PURCHASING';
57860 l_event_class_code := 'DELIVER';
57861 l_event_type_code := 'LOG_PO_RECEIPT';
57862 l_line_definition_owner_code := 'S';
57863 l_line_definition_code := 'LOGICAL_PO_RECEIPT';
57864 --
57865 l_balance_type_code := 'A';
57866 l_segment := NULL;
57867 l_ccid := NULL;
57868 l_adr_transaction_coa_id := NULL;
57869 l_adr_accounting_coa_id := NULL;
57870 l_adr_flexfield_segment_code := NULL;
57871 l_adr_flex_value_set_id := NULL;
57872 l_adr_value_type_code := NULL;
57873 l_adr_value_combination_id := NULL;
57874 l_adr_value_segment_code := NULL;
57875
57876 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
57877 l_bflow_class_code := ''; -- 4219869 Business Flow
57878 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
57879 l_budgetary_control_flag := 'N';
57880
57881 l_bflow_applied_to_amt_idx := NULL; -- 5132302
57882 l_bflow_applied_to_amt := NULL; -- 5132302
57883 l_entered_amt_idx := NULL; -- 4262811
57884 l_accted_amt_idx := NULL; -- 4262811
57885 l_acc_rev_flag := NULL; -- 4262811
57886 l_accrual_line_num := NULL; -- 4262811
57887 l_tmp_amt := NULL; -- 4262811
57888 --
57889
57890 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57891 l_balance_type_code <> 'B' THEN
57892 IF NVL(p_source_2,'
57893 ') = 'INV'
57894 THEN
57895
57896 --
57897 XLA_AE_LINES_PKG.SetNewLine;
57898
57899 p_balance_type_code := l_balance_type_code;
57900 -- set the flag so later we will know whether the gain loss line needs to be created
57901
57902 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57903 p_actual_flag :='A';
57904 END IF;
57905
57906 --
57907 -- bulk performance
57908 --
57909 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57910 p_header_num => 0); -- 4262811
57911 --
57912 -- set accounting line options
57913 --
57914 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57915 p_natural_side_code => 'D'
57916 , p_gain_or_loss_flag => 'N'
57917 , p_gl_transfer_mode_code => 'D'
57918 , p_acct_entry_type_code => 'A'
57919 , p_switch_side_flag => 'Y'
57923 l_acc_rev_natural_side_code := 'C'; -- 4262811
57920 , p_merge_duplicate_code => 'W'
57921 );
57922 --
57924 --
57925 --
57926 -- set accounting line type info
57927 --
57928 xla_ae_lines_pkg.SetAcctLineType
57929 (p_component_type => l_component_type
57930 ,p_event_type_code => l_event_type_code
57931 ,p_line_definition_owner_code => l_line_definition_owner_code
57932 ,p_line_definition_code => l_line_definition_code
57933 ,p_accounting_line_code => l_component_code
57934 ,p_accounting_line_type_code => l_component_type_code
57935 ,p_accounting_line_appl_id => l_component_appl_id
57936 ,p_amb_context_code => l_amb_context_code
57937 ,p_entity_code => l_entity_code
57938 ,p_event_class_code => l_event_class_code);
57939 --
57940 -- set accounting class
57941 --
57942 xla_ae_lines_pkg.SetAcctClass(
57943 p_accounting_class_code => 'INVENTORY_VALUATION'
57944 , p_ae_header_id => l_ae_header_id
57945 );
57946
57947 --
57948 -- set rounding class
57949 --
57950 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57951 'INVENTORY_VALUATION';
57952
57953 --
57954 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57955 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57956 --
57957 -- bulk performance
57958 --
57959 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57960
57961 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57962 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57963
57964 -- 4955764
57965 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57966 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57967
57968 -- 4458381 Public Sector Enh
57969
57970 --
57971 -- set accounting attributes for the line type
57972 --
57973 l_entered_amt_idx := 3;
57974 l_accted_amt_idx := 8;
57975 l_bflow_applied_to_amt_idx := NULL; -- 5132302
57976 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
57977 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
57978 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
57979 l_rec_acct_attrs.array_char_value(2) := p_source_6;
57980 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
57981 l_rec_acct_attrs.array_num_value(3) := p_source_3;
57982 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
57983 l_rec_acct_attrs.array_char_value(4) := p_source_7;
57984 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
57985 l_rec_acct_attrs.array_date_value(5) := p_source_8;
57986 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
57987 l_rec_acct_attrs.array_num_value(6) := p_source_9;
57988 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
57989 l_rec_acct_attrs.array_char_value(7) := p_source_10;
57990 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
57991 l_rec_acct_attrs.array_num_value(8) := p_source_11;
57992
57993 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57994 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57995
57996 ---------------------------------------------------------------------------------------------------------------
57997 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57998 ---------------------------------------------------------------------------------------------------------------
57999 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58000
58001 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58002 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58003
58004 IF xla_accounting_cache_pkg.GetValueChar
58005 (p_source_code => 'LEDGER_CATEGORY_CODE'
58006 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58007 AND l_bflow_method_code = 'PRIOR_ENTRY'
58008 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58009 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58010 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58011 )
58012 THEN
58013 xla_ae_lines_pkg.BflowUpgEntry
58014 (p_business_method_code => l_bflow_method_code
58015 ,p_business_class_code => l_bflow_class_code
58016 ,p_balance_type => l_balance_type_code);
58017 ELSE
58018 NULL;
58019 -- No business flow processing for business flow method of NONE.
58020 END IF;
58021
58022 --
58023 -- call analytical criteria
58024 --
58025
58026 --
58027 -- call description
58028 --
58029 -- No description or it is inherited.
58030 --
58031 -- call ADRs
58032 -- Bug 4922099
58033 --
58034 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58038 THEN
58035 (NVL(l_actual_upg_option, 'N') = 'O') OR
58036 (NVL(l_enc_upg_option, 'N') = 'O')
58037 )
58039 NULL;
58040 --
58041 --
58042
58043 l_ccid := AcctDerRule_17(
58044 p_application_id => p_application_id
58045 , p_ae_header_id => l_ae_header_id
58046 , p_source_1 => p_source_1
58047 , p_source_2 => p_source_2
58048 , x_transaction_coa_id => l_adr_transaction_coa_id
58049 , x_accounting_coa_id => l_adr_accounting_coa_id
58050 , x_value_type_code => l_adr_value_type_code
58051 , p_side => 'NA'
58052 );
58053
58054 xla_ae_lines_pkg.set_ccid(
58055 p_code_combination_id => l_ccid
58056 , p_value_type_code => l_adr_value_type_code
58057 , p_transaction_coa_id => l_adr_transaction_coa_id
58058 , p_accounting_coa_id => l_adr_accounting_coa_id
58059 , p_adr_code => 'INV'
58060 , p_adr_type_code => 'S'
58061 , p_component_type => l_component_type
58062 , p_component_code => l_component_code
58063 , p_component_type_code => l_component_type_code
58064 , p_component_appl_id => l_component_appl_id
58065 , p_amb_context_code => l_amb_context_code
58066 , p_side => 'NA'
58067 );
58068
58069
58070 --
58071 --
58072 END IF;
58073 --
58074 -- Bug 4922099
58075 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58076 (NVL(l_enc_upg_option, 'N') = 'O')
58077 ) AND
58078 (l_bflow_method_code = 'PRIOR_ENTRY')
58079 )
58080 THEN
58081 IF
58082 --
58083 1 = 2
58084 --
58085 THEN
58086 xla_accounting_err_pkg.build_message
58087 (p_appli_s_name => 'XLA'
58088 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58089 ,p_token_1 => 'LINE_NUMBER'
58090 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
58091 ,p_token_2 => 'LINE_TYPE_NAME'
58092 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
58093 l_component_type
58094 ,l_component_code
58095 ,l_component_type_code
58096 ,l_component_appl_id
58097 ,l_amb_context_code
58098 ,l_entity_code
58099 ,l_event_class_code
58100 )
58101 ,p_token_3 => 'OWNER'
58102 ,p_value_3 => xla_lookups_pkg.get_meaning(
58103 p_lookup_type => 'XLA_OWNER_TYPE'
58104 ,p_lookup_code => l_component_type_code
58105 )
58106 ,p_token_4 => 'PRODUCT_NAME'
58107 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58108 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58109 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58110 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58111 ,p_ae_header_id => NULL
58112 );
58113
58114 IF (C_LEVEL_ERROR>= g_log_level) THEN
58115 trace
58116 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58117 ,p_level => C_LEVEL_ERROR
58118 ,p_module => l_log_module);
58119 END IF;
58120 END IF;
58121 END IF;
58122 --
58123 --
58124 ------------------------------------------------------------------------------------------------
58125 -- 4219869 Business Flow
58126 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58127 -- Prior Entry. Currently, the following code is always generated.
58128 ------------------------------------------------------------------------------------------------
58129 XLA_AE_LINES_PKG.ValidateCurrentLine;
58130
58131 ------------------------------------------------------------------------------------
58132 -- 4219869 Business Flow
58133 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58134 ------------------------------------------------------------------------------------
58135 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58139 -- Update journal entry status -- Need to generate this within IF <condition>
58136
58137 ----------------------------------------------------------------------------------
58138 -- 4219869 Business Flow
58140 ----------------------------------------------------------------------------------
58141 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58142 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58143 ,p_balance_type_code => l_balance_type_code
58144 );
58145
58146 -------------------------------------------------------------------------------------------
58147 -- 4262811 - Generate the Accrual Reversal lines
58148 -------------------------------------------------------------------------------------------
58149 BEGIN
58150 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58151 (g_array_event(p_event_id).array_value_num('header_index'));
58152 IF l_acc_rev_flag IS NULL THEN
58153 l_acc_rev_flag := 'N';
58154 END IF;
58155 EXCEPTION
58156 WHEN OTHERS THEN
58157 l_acc_rev_flag := 'N';
58158 END;
58159 --
58160 IF (l_acc_rev_flag = 'Y') THEN
58161
58162 -- 4645092 ------------------------------------------------------------------------------
58163 -- To allow MPA report to determine if it should generate report process
58164 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58165 ------------------------------------------------------------------------------------------
58166
58167 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58168 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58169 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
58170 -- call ADRs
58171 -- Bug 4922099
58172 --
58173 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58174 (NVL(l_actual_upg_option, 'N') = 'O') OR
58175 (NVL(l_enc_upg_option, 'N') = 'O')
58176 )
58177 THEN
58178 NULL;
58179 --
58180 --
58181
58182 l_ccid := AcctDerRule_17(
58183 p_application_id => p_application_id
58184 , p_ae_header_id => l_ae_header_id
58185 , p_source_1 => p_source_1
58186 , p_source_2 => p_source_2
58187 , x_transaction_coa_id => l_adr_transaction_coa_id
58188 , x_accounting_coa_id => l_adr_accounting_coa_id
58189 , x_value_type_code => l_adr_value_type_code
58190 , p_side => 'NA'
58191 );
58192
58193 xla_ae_lines_pkg.set_ccid(
58194 p_code_combination_id => l_ccid
58195 , p_value_type_code => l_adr_value_type_code
58196 , p_transaction_coa_id => l_adr_transaction_coa_id
58197 , p_accounting_coa_id => l_adr_accounting_coa_id
58198 , p_adr_code => 'INV'
58199 , p_adr_type_code => 'S'
58200 , p_component_type => l_component_type
58201 , p_component_code => l_component_code
58202 , p_component_type_code => l_component_type_code
58203 , p_component_appl_id => l_component_appl_id
58204 , p_amb_context_code => l_amb_context_code
58205 , p_side => 'NA'
58206 );
58207
58208
58209 --
58210 --
58211 END IF;
58212
58213 --
58214 -- Update the line information that should be overwritten
58215 --
58216 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58217 p_header_num => 1);
58218 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
58219
58220 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58221
58222 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
58223 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58224 END IF;
58225
58226 --
58227 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58228 --
58229 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58230 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
58231 ELSE
58232 ---------------------------------------------------------------------------------------------------
58233 -- 4262811a Switch Sign
58234 ---------------------------------------------------------------------------------------------------
58235 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
58236 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58237 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58238 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58239 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58240 -- 5132302
58241 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58245
58242 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58243
58244 END IF;
58246 -- 4955764
58247 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58248 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58249
58250
58251 XLA_AE_LINES_PKG.ValidateCurrentLine;
58252 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58253
58254 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58255 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58256 ,p_balance_type_code => l_balance_type_code);
58257
58258 END IF;
58259
58260 -----------------------------------------------------------------------------------------
58261 -- 4262811 Multiperiod Accounting
58262 -----------------------------------------------------------------------------------------
58263 -- No MPA option is assigned.
58264
58265
58266 END IF;
58267 END IF;
58268 --
58269
58270 --
58271 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58272 trace
58273 (p_msg => 'END of AcctLineType_137'
58274 ,p_level => C_LEVEL_PROCEDURE
58275 ,p_module => l_log_module);
58276 END IF;
58277 --
58278 EXCEPTION
58279 WHEN xla_exceptions_pkg.application_exception THEN
58280 RAISE;
58281 WHEN OTHERS THEN
58282 xla_exceptions_pkg.raise_message
58283 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_137');
58284 END AcctLineType_137;
58285 --
58286
58287 ---------------------------------------
58288 --
58289 -- PRIVATE FUNCTION
58290 -- AcctLineType_138
58291 --
58292 ---------------------------------------
58293 PROCEDURE AcctLineType_138 (
58294 p_application_id IN NUMBER
58295 ,p_event_id IN NUMBER
58296 ,p_calculate_acctd_flag IN VARCHAR2
58297 ,p_calculate_g_l_flag IN VARCHAR2
58298 ,p_actual_flag IN OUT VARCHAR2
58299 ,p_balance_type_code OUT VARCHAR2
58300 ,p_gain_or_loss_ref OUT VARCHAR2
58301
58302 --Transaction Account
58303 , p_source_1 IN NUMBER
58304 --Journal Line Type
58305 , p_source_2 IN VARCHAR2
58306 --Entered Amount
58307 , p_source_3 IN NUMBER
58308 --First Distribution Identifier
58309 , p_source_5 IN NUMBER
58310 --Distribution Type
58311 , p_source_6 IN VARCHAR2
58312 --Currency Code
58313 , p_source_7 IN VARCHAR2
58314 --Currency Conversion Date
58315 , p_source_8 IN DATE
58316 --Currency Conversion Rate
58317 , p_source_9 IN NUMBER
58318 --Currency Conversion Type
58319 , p_source_10 IN VARCHAR2
58320 --Accounted Amount
58321 , p_source_11 IN NUMBER
58322 )
58323 IS
58324
58325 l_component_type VARCHAR2(80);
58326 l_component_code VARCHAR2(30);
58327 l_component_type_code VARCHAR2(1);
58328 l_component_appl_id INTEGER;
58329 l_amb_context_code VARCHAR2(30);
58330 l_entity_code VARCHAR2(30);
58331 l_event_class_code VARCHAR2(30);
58332 l_ae_header_id NUMBER;
58333 l_event_type_code VARCHAR2(30);
58334 l_line_definition_code VARCHAR2(30);
58335 l_line_definition_owner_code VARCHAR2(1);
58336 --
58337 -- adr variables
58338 l_segment VARCHAR2(30);
58339 l_ccid NUMBER;
58340 l_adr_transaction_coa_id NUMBER;
58341 l_adr_accounting_coa_id NUMBER;
58342 l_adr_flexfield_segment_code VARCHAR2(30);
58343 l_adr_flex_value_set_id NUMBER;
58344 l_adr_value_type_code VARCHAR2(30);
58345 l_adr_value_combination_id NUMBER;
58346 l_adr_value_segment_code VARCHAR2(30);
58347
58348 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
58349 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
58350 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
58351 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
58352
58353 -- 4262811 Variables ------------------------------------------------------------------------------------------
58354 l_entered_amt_idx NUMBER;
58355 l_accted_amt_idx NUMBER;
58356 l_acc_rev_flag VARCHAR2(1);
58357 l_accrual_line_num NUMBER;
58358 l_tmp_amt NUMBER;
58359 l_acc_rev_natural_side_code VARCHAR2(1);
58360
58361 l_num_entries NUMBER;
58362 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
58363 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
58364 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
58365 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
58366 l_recog_line_1 NUMBER;
58367 l_recog_line_2 NUMBER;
58368
58369 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
58370 l_bflow_applied_to_amt NUMBER; -- 5132302
58371 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
58372
58376 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
58373 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58374
58375 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
58377
58378 ---------------------------------------------------------------------------------------------------------------
58379
58380
58381 --
58382 -- bulk performance
58383 --
58384 l_balance_type_code VARCHAR2(1);
58385 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
58386 l_log_module VARCHAR2(240);
58387
58388 --
58389 -- Upgrade strategy
58390 --
58391 l_actual_upg_option VARCHAR2(1);
58392 l_enc_upg_option VARCHAR2(1);
58393
58394 --
58395 BEGIN
58396 --
58397 IF g_log_enabled THEN
58398 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
58399 END IF;
58400 --
58401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58402
58403 trace
58404 (p_msg => 'BEGIN of AcctLineType_138'
58405 ,p_level => C_LEVEL_PROCEDURE
58406 ,p_module => l_log_module);
58407
58408 END IF;
58409 --
58410 l_component_type := 'AMB_JLT';
58411 l_component_code := 'INV';
58412 l_component_type_code := 'S';
58413 l_component_appl_id := 555;
58414 l_amb_context_code := 'DEFAULT';
58415 l_entity_code := 'PURCHASING';
58416 l_event_class_code := 'DELIVER';
58417 l_event_type_code := 'PO_RECEIPT';
58418 l_line_definition_owner_code := 'S';
58419 l_line_definition_code := 'DELIVER';
58420 --
58421 l_balance_type_code := 'A';
58422 l_segment := NULL;
58423 l_ccid := NULL;
58424 l_adr_transaction_coa_id := NULL;
58425 l_adr_accounting_coa_id := NULL;
58426 l_adr_flexfield_segment_code := NULL;
58427 l_adr_flex_value_set_id := NULL;
58428 l_adr_value_type_code := NULL;
58429 l_adr_value_combination_id := NULL;
58430 l_adr_value_segment_code := NULL;
58431
58432 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
58433 l_bflow_class_code := ''; -- 4219869 Business Flow
58434 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
58435 l_budgetary_control_flag := 'N';
58436
58437 l_bflow_applied_to_amt_idx := NULL; -- 5132302
58438 l_bflow_applied_to_amt := NULL; -- 5132302
58439 l_entered_amt_idx := NULL; -- 4262811
58440 l_accted_amt_idx := NULL; -- 4262811
58441 l_acc_rev_flag := NULL; -- 4262811
58442 l_accrual_line_num := NULL; -- 4262811
58443 l_tmp_amt := NULL; -- 4262811
58444 --
58445
58446 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58447 l_balance_type_code <> 'B' THEN
58448 IF NVL(p_source_2,'
58449 ') = 'INV'
58450 THEN
58451
58452 --
58453 XLA_AE_LINES_PKG.SetNewLine;
58454
58455 p_balance_type_code := l_balance_type_code;
58456 -- set the flag so later we will know whether the gain loss line needs to be created
58457
58458 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58459 p_actual_flag :='A';
58460 END IF;
58461
58462 --
58463 -- bulk performance
58464 --
58465 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58466 p_header_num => 0); -- 4262811
58467 --
58468 -- set accounting line options
58469 --
58470 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58471 p_natural_side_code => 'D'
58472 , p_gain_or_loss_flag => 'N'
58473 , p_gl_transfer_mode_code => 'D'
58474 , p_acct_entry_type_code => 'A'
58475 , p_switch_side_flag => 'Y'
58476 , p_merge_duplicate_code => 'W'
58477 );
58478 --
58479 l_acc_rev_natural_side_code := 'C'; -- 4262811
58480 --
58481 --
58482 -- set accounting line type info
58483 --
58484 xla_ae_lines_pkg.SetAcctLineType
58485 (p_component_type => l_component_type
58486 ,p_event_type_code => l_event_type_code
58487 ,p_line_definition_owner_code => l_line_definition_owner_code
58488 ,p_line_definition_code => l_line_definition_code
58489 ,p_accounting_line_code => l_component_code
58490 ,p_accounting_line_type_code => l_component_type_code
58491 ,p_accounting_line_appl_id => l_component_appl_id
58492 ,p_amb_context_code => l_amb_context_code
58493 ,p_entity_code => l_entity_code
58494 ,p_event_class_code => l_event_class_code);
58495 --
58496 -- set accounting class
58497 --
58498 xla_ae_lines_pkg.SetAcctClass(
58499 p_accounting_class_code => 'INVENTORY_VALUATION'
58500 , p_ae_header_id => l_ae_header_id
58501 );
58502
58503 --
58504 -- set rounding class
58505 --
58506 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58507 'INVENTORY_VALUATION';
58508
58509 --
58513 -- bulk performance
58510 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58511 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58512 --
58514 --
58515 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58516
58517 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58518 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58519
58520 -- 4955764
58521 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58522 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58523
58524 -- 4458381 Public Sector Enh
58525
58526 --
58527 -- set accounting attributes for the line type
58528 --
58529 l_entered_amt_idx := 3;
58530 l_accted_amt_idx := 8;
58531 l_bflow_applied_to_amt_idx := NULL; -- 5132302
58532 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
58533 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
58534 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
58535 l_rec_acct_attrs.array_char_value(2) := p_source_6;
58536 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
58537 l_rec_acct_attrs.array_num_value(3) := p_source_3;
58538 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
58539 l_rec_acct_attrs.array_char_value(4) := p_source_7;
58540 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
58541 l_rec_acct_attrs.array_date_value(5) := p_source_8;
58542 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
58543 l_rec_acct_attrs.array_num_value(6) := p_source_9;
58544 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
58545 l_rec_acct_attrs.array_char_value(7) := p_source_10;
58546 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
58547 l_rec_acct_attrs.array_num_value(8) := p_source_11;
58548
58549 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58550 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58551
58552 ---------------------------------------------------------------------------------------------------------------
58553 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58554 ---------------------------------------------------------------------------------------------------------------
58555 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58556
58557 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58558 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58559
58560 IF xla_accounting_cache_pkg.GetValueChar
58561 (p_source_code => 'LEDGER_CATEGORY_CODE'
58562 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58563 AND l_bflow_method_code = 'PRIOR_ENTRY'
58564 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58565 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58566 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58567 )
58568 THEN
58569 xla_ae_lines_pkg.BflowUpgEntry
58570 (p_business_method_code => l_bflow_method_code
58571 ,p_business_class_code => l_bflow_class_code
58572 ,p_balance_type => l_balance_type_code);
58573 ELSE
58574 NULL;
58575 -- No business flow processing for business flow method of NONE.
58576 END IF;
58577
58578 --
58579 -- call analytical criteria
58580 --
58581
58582 --
58583 -- call description
58584 --
58585 -- No description or it is inherited.
58586 --
58587 -- call ADRs
58588 -- Bug 4922099
58589 --
58590 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58591 (NVL(l_actual_upg_option, 'N') = 'O') OR
58592 (NVL(l_enc_upg_option, 'N') = 'O')
58593 )
58594 THEN
58595 NULL;
58596 --
58597 --
58598
58599 l_ccid := AcctDerRule_17(
58600 p_application_id => p_application_id
58601 , p_ae_header_id => l_ae_header_id
58602 , p_source_1 => p_source_1
58603 , p_source_2 => p_source_2
58604 , x_transaction_coa_id => l_adr_transaction_coa_id
58605 , x_accounting_coa_id => l_adr_accounting_coa_id
58606 , x_value_type_code => l_adr_value_type_code
58607 , p_side => 'NA'
58608 );
58609
58610 xla_ae_lines_pkg.set_ccid(
58611 p_code_combination_id => l_ccid
58612 , p_value_type_code => l_adr_value_type_code
58613 , p_transaction_coa_id => l_adr_transaction_coa_id
58614 , p_accounting_coa_id => l_adr_accounting_coa_id
58615 , p_adr_code => 'INV'
58616 , p_adr_type_code => 'S'
58617 , p_component_type => l_component_type
58618 , p_component_code => l_component_code
58619 , p_component_type_code => l_component_type_code
58623 );
58620 , p_component_appl_id => l_component_appl_id
58621 , p_amb_context_code => l_amb_context_code
58622 , p_side => 'NA'
58624
58625
58626 --
58627 --
58628 END IF;
58629 --
58630 -- Bug 4922099
58631 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58632 (NVL(l_enc_upg_option, 'N') = 'O')
58633 ) AND
58634 (l_bflow_method_code = 'PRIOR_ENTRY')
58635 )
58636 THEN
58637 IF
58638 --
58639 1 = 2
58640 --
58641 THEN
58642 xla_accounting_err_pkg.build_message
58643 (p_appli_s_name => 'XLA'
58644 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58645 ,p_token_1 => 'LINE_NUMBER'
58646 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
58647 ,p_token_2 => 'LINE_TYPE_NAME'
58648 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
58649 l_component_type
58650 ,l_component_code
58651 ,l_component_type_code
58652 ,l_component_appl_id
58653 ,l_amb_context_code
58654 ,l_entity_code
58655 ,l_event_class_code
58656 )
58657 ,p_token_3 => 'OWNER'
58658 ,p_value_3 => xla_lookups_pkg.get_meaning(
58659 p_lookup_type => 'XLA_OWNER_TYPE'
58660 ,p_lookup_code => l_component_type_code
58661 )
58662 ,p_token_4 => 'PRODUCT_NAME'
58663 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58664 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58665 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58666 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58667 ,p_ae_header_id => NULL
58668 );
58669
58670 IF (C_LEVEL_ERROR>= g_log_level) THEN
58671 trace
58672 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58673 ,p_level => C_LEVEL_ERROR
58674 ,p_module => l_log_module);
58675 END IF;
58676 END IF;
58677 END IF;
58678 --
58679 --
58680 ------------------------------------------------------------------------------------------------
58681 -- 4219869 Business Flow
58682 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58683 -- Prior Entry. Currently, the following code is always generated.
58684 ------------------------------------------------------------------------------------------------
58685 XLA_AE_LINES_PKG.ValidateCurrentLine;
58686
58687 ------------------------------------------------------------------------------------
58688 -- 4219869 Business Flow
58689 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58690 ------------------------------------------------------------------------------------
58691 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58692
58693 ----------------------------------------------------------------------------------
58694 -- 4219869 Business Flow
58695 -- Update journal entry status -- Need to generate this within IF <condition>
58696 ----------------------------------------------------------------------------------
58697 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58698 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58699 ,p_balance_type_code => l_balance_type_code
58700 );
58701
58702 -------------------------------------------------------------------------------------------
58703 -- 4262811 - Generate the Accrual Reversal lines
58704 -------------------------------------------------------------------------------------------
58705 BEGIN
58706 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58707 (g_array_event(p_event_id).array_value_num('header_index'));
58708 IF l_acc_rev_flag IS NULL THEN
58709 l_acc_rev_flag := 'N';
58710 END IF;
58711 EXCEPTION
58712 WHEN OTHERS THEN
58713 l_acc_rev_flag := 'N';
58714 END;
58715 --
58716 IF (l_acc_rev_flag = 'Y') THEN
58717
58718 -- 4645092 ------------------------------------------------------------------------------
58722
58719 -- To allow MPA report to determine if it should generate report process
58720 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58721 ------------------------------------------------------------------------------------------
58723 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58724 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58725 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
58726 -- call ADRs
58727 -- Bug 4922099
58728 --
58729 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58730 (NVL(l_actual_upg_option, 'N') = 'O') OR
58731 (NVL(l_enc_upg_option, 'N') = 'O')
58732 )
58733 THEN
58734 NULL;
58735 --
58736 --
58737
58738 l_ccid := AcctDerRule_17(
58739 p_application_id => p_application_id
58740 , p_ae_header_id => l_ae_header_id
58741 , p_source_1 => p_source_1
58742 , p_source_2 => p_source_2
58743 , x_transaction_coa_id => l_adr_transaction_coa_id
58744 , x_accounting_coa_id => l_adr_accounting_coa_id
58745 , x_value_type_code => l_adr_value_type_code
58746 , p_side => 'NA'
58747 );
58748
58749 xla_ae_lines_pkg.set_ccid(
58750 p_code_combination_id => l_ccid
58751 , p_value_type_code => l_adr_value_type_code
58752 , p_transaction_coa_id => l_adr_transaction_coa_id
58753 , p_accounting_coa_id => l_adr_accounting_coa_id
58754 , p_adr_code => 'INV'
58755 , p_adr_type_code => 'S'
58756 , p_component_type => l_component_type
58757 , p_component_code => l_component_code
58758 , p_component_type_code => l_component_type_code
58759 , p_component_appl_id => l_component_appl_id
58760 , p_amb_context_code => l_amb_context_code
58761 , p_side => 'NA'
58762 );
58763
58764
58765 --
58766 --
58767 END IF;
58768
58769 --
58770 -- Update the line information that should be overwritten
58771 --
58772 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58773 p_header_num => 1);
58774 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
58775
58776 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58777
58778 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
58779 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58780 END IF;
58781
58782 --
58783 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58784 --
58785 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58786 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
58787 ELSE
58788 ---------------------------------------------------------------------------------------------------
58789 -- 4262811a Switch Sign
58790 ---------------------------------------------------------------------------------------------------
58791 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
58792 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58793 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58794 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58795 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58796 -- 5132302
58797 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58798 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58799
58800 END IF;
58801
58802 -- 4955764
58803 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58804 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58805
58806
58807 XLA_AE_LINES_PKG.ValidateCurrentLine;
58808 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58809
58810 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58811 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58812 ,p_balance_type_code => l_balance_type_code);
58813
58814 END IF;
58815
58816 -----------------------------------------------------------------------------------------
58817 -- 4262811 Multiperiod Accounting
58818 -----------------------------------------------------------------------------------------
58819 -- No MPA option is assigned.
58820
58821
58822 END IF;
58823 END IF;
58824 --
58825
58826 --
58827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58828 trace
58829 (p_msg => 'END of AcctLineType_138'
58830 ,p_level => C_LEVEL_PROCEDURE
58831 ,p_module => l_log_module);
58835 WHEN xla_exceptions_pkg.application_exception THEN
58832 END IF;
58833 --
58834 EXCEPTION
58836 RAISE;
58837 WHEN OTHERS THEN
58838 xla_exceptions_pkg.raise_message
58839 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_138');
58840 END AcctLineType_138;
58841 --
58842
58843 ---------------------------------------
58844 --
58845 -- PRIVATE FUNCTION
58846 -- AcctLineType_139
58847 --
58848 ---------------------------------------
58849 PROCEDURE AcctLineType_139 (
58850 p_application_id IN NUMBER
58851 ,p_event_id IN NUMBER
58852 ,p_calculate_acctd_flag IN VARCHAR2
58853 ,p_calculate_g_l_flag IN VARCHAR2
58854 ,p_actual_flag IN OUT VARCHAR2
58855 ,p_balance_type_code OUT VARCHAR2
58856 ,p_gain_or_loss_ref OUT VARCHAR2
58857
58858 --Transaction Account
58859 , p_source_1 IN NUMBER
58860 --Journal Line Type
58861 , p_source_2 IN VARCHAR2
58862 --Entered Amount
58863 , p_source_3 IN NUMBER
58864 --First Distribution Identifier
58865 , p_source_5 IN NUMBER
58866 --Distribution Type
58867 , p_source_6 IN VARCHAR2
58868 --Currency Code
58869 , p_source_7 IN VARCHAR2
58870 --Currency Conversion Date
58871 , p_source_8 IN DATE
58872 --Currency Conversion Rate
58873 , p_source_9 IN NUMBER
58874 --Currency Conversion Type
58875 , p_source_10 IN VARCHAR2
58876 --Accounted Amount
58877 , p_source_11 IN NUMBER
58878 )
58879 IS
58880
58881 l_component_type VARCHAR2(80);
58882 l_component_code VARCHAR2(30);
58883 l_component_type_code VARCHAR2(1);
58884 l_component_appl_id INTEGER;
58885 l_amb_context_code VARCHAR2(30);
58886 l_entity_code VARCHAR2(30);
58887 l_event_class_code VARCHAR2(30);
58888 l_ae_header_id NUMBER;
58889 l_event_type_code VARCHAR2(30);
58890 l_line_definition_code VARCHAR2(30);
58891 l_line_definition_owner_code VARCHAR2(1);
58892 --
58893 -- adr variables
58894 l_segment VARCHAR2(30);
58895 l_ccid NUMBER;
58896 l_adr_transaction_coa_id NUMBER;
58897 l_adr_accounting_coa_id NUMBER;
58898 l_adr_flexfield_segment_code VARCHAR2(30);
58899 l_adr_flex_value_set_id NUMBER;
58900 l_adr_value_type_code VARCHAR2(30);
58901 l_adr_value_combination_id NUMBER;
58902 l_adr_value_segment_code VARCHAR2(30);
58903
58904 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
58905 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
58906 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
58907 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
58908
58909 -- 4262811 Variables ------------------------------------------------------------------------------------------
58910 l_entered_amt_idx NUMBER;
58911 l_accted_amt_idx NUMBER;
58912 l_acc_rev_flag VARCHAR2(1);
58913 l_accrual_line_num NUMBER;
58914 l_tmp_amt NUMBER;
58915 l_acc_rev_natural_side_code VARCHAR2(1);
58916
58917 l_num_entries NUMBER;
58918 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
58919 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
58920 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
58921 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
58922 l_recog_line_1 NUMBER;
58923 l_recog_line_2 NUMBER;
58924
58925 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
58926 l_bflow_applied_to_amt NUMBER; -- 5132302
58927 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
58928
58929 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58930
58931 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
58932 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
58933
58934 ---------------------------------------------------------------------------------------------------------------
58935
58936
58937 --
58938 -- bulk performance
58939 --
58940 l_balance_type_code VARCHAR2(1);
58941 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
58942 l_log_module VARCHAR2(240);
58943
58944 --
58945 -- Upgrade strategy
58946 --
58947 l_actual_upg_option VARCHAR2(1);
58948 l_enc_upg_option VARCHAR2(1);
58949
58950 --
58951 BEGIN
58952 --
58953 IF g_log_enabled THEN
58954 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
58955 END IF;
58956 --
58957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58958
58959 trace
58960 (p_msg => 'BEGIN of AcctLineType_139'
58961 ,p_level => C_LEVEL_PROCEDURE
58962 ,p_module => l_log_module);
58963
58964 END IF;
58965 --
58966 l_component_type := 'AMB_JLT';
58967 l_component_code := 'INV';
58968 l_component_type_code := 'S';
58969 l_component_appl_id := 555;
58970 l_amb_context_code := 'DEFAULT';
58974 l_line_definition_owner_code := 'S';
58971 l_entity_code := 'PURCHASING';
58972 l_event_class_code := 'DELIVER';
58973 l_event_type_code := 'RET_TO_RECEIVING';
58975 l_line_definition_code := 'PO_RETURN';
58976 --
58977 l_balance_type_code := 'A';
58978 l_segment := NULL;
58979 l_ccid := NULL;
58980 l_adr_transaction_coa_id := NULL;
58981 l_adr_accounting_coa_id := NULL;
58982 l_adr_flexfield_segment_code := NULL;
58983 l_adr_flex_value_set_id := NULL;
58984 l_adr_value_type_code := NULL;
58985 l_adr_value_combination_id := NULL;
58986 l_adr_value_segment_code := NULL;
58987
58988 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
58989 l_bflow_class_code := ''; -- 4219869 Business Flow
58990 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
58991 l_budgetary_control_flag := 'N';
58992
58993 l_bflow_applied_to_amt_idx := NULL; -- 5132302
58994 l_bflow_applied_to_amt := NULL; -- 5132302
58995 l_entered_amt_idx := NULL; -- 4262811
58996 l_accted_amt_idx := NULL; -- 4262811
58997 l_acc_rev_flag := NULL; -- 4262811
58998 l_accrual_line_num := NULL; -- 4262811
58999 l_tmp_amt := NULL; -- 4262811
59000 --
59001
59002 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59003 l_balance_type_code <> 'B' THEN
59004 IF NVL(p_source_2,'
59005 ') = 'INV'
59006 THEN
59007
59008 --
59009 XLA_AE_LINES_PKG.SetNewLine;
59010
59011 p_balance_type_code := l_balance_type_code;
59012 -- set the flag so later we will know whether the gain loss line needs to be created
59013
59014 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59015 p_actual_flag :='A';
59016 END IF;
59017
59018 --
59019 -- bulk performance
59020 --
59021 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59022 p_header_num => 0); -- 4262811
59023 --
59024 -- set accounting line options
59025 --
59026 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59027 p_natural_side_code => 'D'
59028 , p_gain_or_loss_flag => 'N'
59029 , p_gl_transfer_mode_code => 'D'
59030 , p_acct_entry_type_code => 'A'
59031 , p_switch_side_flag => 'Y'
59032 , p_merge_duplicate_code => 'W'
59033 );
59034 --
59035 l_acc_rev_natural_side_code := 'C'; -- 4262811
59036 --
59037 --
59038 -- set accounting line type info
59039 --
59040 xla_ae_lines_pkg.SetAcctLineType
59041 (p_component_type => l_component_type
59042 ,p_event_type_code => l_event_type_code
59043 ,p_line_definition_owner_code => l_line_definition_owner_code
59044 ,p_line_definition_code => l_line_definition_code
59045 ,p_accounting_line_code => l_component_code
59046 ,p_accounting_line_type_code => l_component_type_code
59047 ,p_accounting_line_appl_id => l_component_appl_id
59048 ,p_amb_context_code => l_amb_context_code
59049 ,p_entity_code => l_entity_code
59050 ,p_event_class_code => l_event_class_code);
59051 --
59052 -- set accounting class
59053 --
59054 xla_ae_lines_pkg.SetAcctClass(
59055 p_accounting_class_code => 'INVENTORY_VALUATION'
59056 , p_ae_header_id => l_ae_header_id
59057 );
59058
59059 --
59060 -- set rounding class
59061 --
59062 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59063 'INVENTORY_VALUATION';
59064
59065 --
59066 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59067 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59068 --
59069 -- bulk performance
59070 --
59071 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59072
59073 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59074 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59075
59076 -- 4955764
59077 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59078 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59079
59080 -- 4458381 Public Sector Enh
59081
59082 --
59083 -- set accounting attributes for the line type
59084 --
59085 l_entered_amt_idx := 3;
59086 l_accted_amt_idx := 8;
59087 l_bflow_applied_to_amt_idx := NULL; -- 5132302
59088 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59089 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
59090 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59091 l_rec_acct_attrs.array_char_value(2) := p_source_6;
59092 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59093 l_rec_acct_attrs.array_num_value(3) := p_source_3;
59094 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59098 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59095 l_rec_acct_attrs.array_char_value(4) := p_source_7;
59096 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59097 l_rec_acct_attrs.array_date_value(5) := p_source_8;
59099 l_rec_acct_attrs.array_num_value(6) := p_source_9;
59100 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59101 l_rec_acct_attrs.array_char_value(7) := p_source_10;
59102 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59103 l_rec_acct_attrs.array_num_value(8) := p_source_11;
59104
59105 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59106 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59107
59108 ---------------------------------------------------------------------------------------------------------------
59109 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59110 ---------------------------------------------------------------------------------------------------------------
59111 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59112
59113 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59114 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59115
59116 IF xla_accounting_cache_pkg.GetValueChar
59117 (p_source_code => 'LEDGER_CATEGORY_CODE'
59118 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59119 AND l_bflow_method_code = 'PRIOR_ENTRY'
59120 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59121 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59122 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59123 )
59124 THEN
59125 xla_ae_lines_pkg.BflowUpgEntry
59126 (p_business_method_code => l_bflow_method_code
59127 ,p_business_class_code => l_bflow_class_code
59128 ,p_balance_type => l_balance_type_code);
59129 ELSE
59130 NULL;
59131 -- No business flow processing for business flow method of NONE.
59132 END IF;
59133
59134 --
59135 -- call analytical criteria
59136 --
59137
59138 --
59139 -- call description
59140 --
59141 -- No description or it is inherited.
59142 --
59143 -- call ADRs
59144 -- Bug 4922099
59145 --
59146 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59147 (NVL(l_actual_upg_option, 'N') = 'O') OR
59148 (NVL(l_enc_upg_option, 'N') = 'O')
59149 )
59150 THEN
59151 NULL;
59152 --
59153 --
59154
59155 l_ccid := AcctDerRule_17(
59156 p_application_id => p_application_id
59157 , p_ae_header_id => l_ae_header_id
59158 , p_source_1 => p_source_1
59159 , p_source_2 => p_source_2
59160 , x_transaction_coa_id => l_adr_transaction_coa_id
59161 , x_accounting_coa_id => l_adr_accounting_coa_id
59162 , x_value_type_code => l_adr_value_type_code
59163 , p_side => 'NA'
59164 );
59165
59166 xla_ae_lines_pkg.set_ccid(
59167 p_code_combination_id => l_ccid
59168 , p_value_type_code => l_adr_value_type_code
59169 , p_transaction_coa_id => l_adr_transaction_coa_id
59170 , p_accounting_coa_id => l_adr_accounting_coa_id
59171 , p_adr_code => 'INV'
59172 , p_adr_type_code => 'S'
59173 , p_component_type => l_component_type
59174 , p_component_code => l_component_code
59175 , p_component_type_code => l_component_type_code
59176 , p_component_appl_id => l_component_appl_id
59177 , p_amb_context_code => l_amb_context_code
59178 , p_side => 'NA'
59179 );
59180
59181
59182 --
59183 --
59184 END IF;
59185 --
59186 -- Bug 4922099
59187 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59188 (NVL(l_enc_upg_option, 'N') = 'O')
59189 ) AND
59190 (l_bflow_method_code = 'PRIOR_ENTRY')
59191 )
59192 THEN
59193 IF
59194 --
59195 1 = 2
59196 --
59197 THEN
59198 xla_accounting_err_pkg.build_message
59199 (p_appli_s_name => 'XLA'
59200 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59201 ,p_token_1 => 'LINE_NUMBER'
59202 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
59203 ,p_token_2 => 'LINE_TYPE_NAME'
59204 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
59205 l_component_type
59206 ,l_component_code
59207 ,l_component_type_code
59208 ,l_component_appl_id
59212 )
59209 ,l_amb_context_code
59210 ,l_entity_code
59211 ,l_event_class_code
59213 ,p_token_3 => 'OWNER'
59214 ,p_value_3 => xla_lookups_pkg.get_meaning(
59215 p_lookup_type => 'XLA_OWNER_TYPE'
59216 ,p_lookup_code => l_component_type_code
59217 )
59218 ,p_token_4 => 'PRODUCT_NAME'
59219 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59220 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59221 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59222 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59223 ,p_ae_header_id => NULL
59224 );
59225
59226 IF (C_LEVEL_ERROR>= g_log_level) THEN
59227 trace
59228 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59229 ,p_level => C_LEVEL_ERROR
59230 ,p_module => l_log_module);
59231 END IF;
59232 END IF;
59233 END IF;
59234 --
59235 --
59236 ------------------------------------------------------------------------------------------------
59237 -- 4219869 Business Flow
59238 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59239 -- Prior Entry. Currently, the following code is always generated.
59240 ------------------------------------------------------------------------------------------------
59241 XLA_AE_LINES_PKG.ValidateCurrentLine;
59242
59243 ------------------------------------------------------------------------------------
59244 -- 4219869 Business Flow
59245 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59246 ------------------------------------------------------------------------------------
59247 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59248
59249 ----------------------------------------------------------------------------------
59250 -- 4219869 Business Flow
59251 -- Update journal entry status -- Need to generate this within IF <condition>
59252 ----------------------------------------------------------------------------------
59253 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59254 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59255 ,p_balance_type_code => l_balance_type_code
59256 );
59257
59258 -------------------------------------------------------------------------------------------
59259 -- 4262811 - Generate the Accrual Reversal lines
59260 -------------------------------------------------------------------------------------------
59261 BEGIN
59262 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59263 (g_array_event(p_event_id).array_value_num('header_index'));
59264 IF l_acc_rev_flag IS NULL THEN
59265 l_acc_rev_flag := 'N';
59266 END IF;
59267 EXCEPTION
59268 WHEN OTHERS THEN
59269 l_acc_rev_flag := 'N';
59270 END;
59271 --
59272 IF (l_acc_rev_flag = 'Y') THEN
59273
59274 -- 4645092 ------------------------------------------------------------------------------
59275 -- To allow MPA report to determine if it should generate report process
59276 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59277 ------------------------------------------------------------------------------------------
59278
59279 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59280 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59281 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
59282 -- call ADRs
59283 -- Bug 4922099
59284 --
59285 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59286 (NVL(l_actual_upg_option, 'N') = 'O') OR
59287 (NVL(l_enc_upg_option, 'N') = 'O')
59288 )
59289 THEN
59290 NULL;
59291 --
59292 --
59293
59294 l_ccid := AcctDerRule_17(
59295 p_application_id => p_application_id
59296 , p_ae_header_id => l_ae_header_id
59297 , p_source_1 => p_source_1
59298 , p_source_2 => p_source_2
59299 , x_transaction_coa_id => l_adr_transaction_coa_id
59300 , x_accounting_coa_id => l_adr_accounting_coa_id
59301 , x_value_type_code => l_adr_value_type_code
59302 , p_side => 'NA'
59303 );
59304
59305 xla_ae_lines_pkg.set_ccid(
59306 p_code_combination_id => l_ccid
59307 , p_value_type_code => l_adr_value_type_code
59311 , p_adr_type_code => 'S'
59308 , p_transaction_coa_id => l_adr_transaction_coa_id
59309 , p_accounting_coa_id => l_adr_accounting_coa_id
59310 , p_adr_code => 'INV'
59312 , p_component_type => l_component_type
59313 , p_component_code => l_component_code
59314 , p_component_type_code => l_component_type_code
59315 , p_component_appl_id => l_component_appl_id
59316 , p_amb_context_code => l_amb_context_code
59317 , p_side => 'NA'
59318 );
59319
59320
59321 --
59322 --
59323 END IF;
59324
59325 --
59326 -- Update the line information that should be overwritten
59327 --
59328 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59329 p_header_num => 1);
59330 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
59331
59332 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59333
59334 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
59335 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59336 END IF;
59337
59338 --
59339 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59340 --
59341 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59342 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
59343 ELSE
59344 ---------------------------------------------------------------------------------------------------
59345 -- 4262811a Switch Sign
59346 ---------------------------------------------------------------------------------------------------
59347 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
59348 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59349 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59350 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59351 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59352 -- 5132302
59353 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59354 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59355
59356 END IF;
59357
59358 -- 4955764
59359 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59360 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59361
59362
59363 XLA_AE_LINES_PKG.ValidateCurrentLine;
59364 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59365
59366 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59367 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59368 ,p_balance_type_code => l_balance_type_code);
59369
59370 END IF;
59371
59372 -----------------------------------------------------------------------------------------
59373 -- 4262811 Multiperiod Accounting
59374 -----------------------------------------------------------------------------------------
59375 -- No MPA option is assigned.
59376
59377
59378 END IF;
59379 END IF;
59380 --
59381
59382 --
59383 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59384 trace
59385 (p_msg => 'END of AcctLineType_139'
59386 ,p_level => C_LEVEL_PROCEDURE
59387 ,p_module => l_log_module);
59388 END IF;
59389 --
59390 EXCEPTION
59391 WHEN xla_exceptions_pkg.application_exception THEN
59392 RAISE;
59393 WHEN OTHERS THEN
59394 xla_exceptions_pkg.raise_message
59395 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_139');
59396 END AcctLineType_139;
59397 --
59398
59399 ---------------------------------------
59400 --
59401 -- PRIVATE FUNCTION
59402 -- AcctLineType_140
59403 --
59404 ---------------------------------------
59405 PROCEDURE AcctLineType_140 (
59406 p_application_id IN NUMBER
59407 ,p_event_id IN NUMBER
59408 ,p_calculate_acctd_flag IN VARCHAR2
59409 ,p_calculate_g_l_flag IN VARCHAR2
59410 ,p_actual_flag IN OUT VARCHAR2
59411 ,p_balance_type_code OUT VARCHAR2
59412 ,p_gain_or_loss_ref OUT VARCHAR2
59413
59414 --Transaction Account
59415 , p_source_1 IN NUMBER
59416 --Journal Line Type
59417 , p_source_2 IN VARCHAR2
59418 --Entered Amount
59419 , p_source_3 IN NUMBER
59420 --First Distribution Identifier
59421 , p_source_5 IN NUMBER
59422 --Distribution Type
59423 , p_source_6 IN VARCHAR2
59424 --Currency Code
59425 , p_source_7 IN VARCHAR2
59426 --Currency Conversion Date
59427 , p_source_8 IN DATE
59428 --Currency Conversion Rate
59429 , p_source_9 IN NUMBER
59430 --Currency Conversion Type
59434 )
59431 , p_source_10 IN VARCHAR2
59432 --Accounted Amount
59433 , p_source_11 IN NUMBER
59435 IS
59436
59437 l_component_type VARCHAR2(80);
59438 l_component_code VARCHAR2(30);
59439 l_component_type_code VARCHAR2(1);
59440 l_component_appl_id INTEGER;
59441 l_amb_context_code VARCHAR2(30);
59442 l_entity_code VARCHAR2(30);
59443 l_event_class_code VARCHAR2(30);
59444 l_ae_header_id NUMBER;
59445 l_event_type_code VARCHAR2(30);
59446 l_line_definition_code VARCHAR2(30);
59447 l_line_definition_owner_code VARCHAR2(1);
59448 --
59449 -- adr variables
59450 l_segment VARCHAR2(30);
59451 l_ccid NUMBER;
59452 l_adr_transaction_coa_id NUMBER;
59453 l_adr_accounting_coa_id NUMBER;
59454 l_adr_flexfield_segment_code VARCHAR2(30);
59455 l_adr_flex_value_set_id NUMBER;
59456 l_adr_value_type_code VARCHAR2(30);
59457 l_adr_value_combination_id NUMBER;
59458 l_adr_value_segment_code VARCHAR2(30);
59459
59460 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
59461 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
59462 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
59463 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
59464
59465 -- 4262811 Variables ------------------------------------------------------------------------------------------
59466 l_entered_amt_idx NUMBER;
59467 l_accted_amt_idx NUMBER;
59468 l_acc_rev_flag VARCHAR2(1);
59469 l_accrual_line_num NUMBER;
59470 l_tmp_amt NUMBER;
59471 l_acc_rev_natural_side_code VARCHAR2(1);
59472
59473 l_num_entries NUMBER;
59474 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
59475 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
59476 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
59477 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
59478 l_recog_line_1 NUMBER;
59479 l_recog_line_2 NUMBER;
59480
59481 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
59482 l_bflow_applied_to_amt NUMBER; -- 5132302
59483 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
59484
59485 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59486
59487 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
59488 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
59489
59490 ---------------------------------------------------------------------------------------------------------------
59491
59492
59493 --
59494 -- bulk performance
59495 --
59496 l_balance_type_code VARCHAR2(1);
59497 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
59498 l_log_module VARCHAR2(240);
59499
59500 --
59501 -- Upgrade strategy
59502 --
59503 l_actual_upg_option VARCHAR2(1);
59504 l_enc_upg_option VARCHAR2(1);
59505
59506 --
59507 BEGIN
59508 --
59509 IF g_log_enabled THEN
59510 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
59511 END IF;
59512 --
59513 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59514
59515 trace
59516 (p_msg => 'BEGIN of AcctLineType_140'
59517 ,p_level => C_LEVEL_PROCEDURE
59518 ,p_module => l_log_module);
59519
59520 END IF;
59521 --
59522 l_component_type := 'AMB_JLT';
59523 l_component_code := 'INV';
59524 l_component_type_code := 'S';
59525 l_component_appl_id := 555;
59526 l_amb_context_code := 'DEFAULT';
59527 l_entity_code := 'PURCHASING';
59528 l_event_class_code := 'DELIVER';
59529 l_event_type_code := 'XFER_TO_REGULAR';
59530 l_line_definition_owner_code := 'S';
59531 l_line_definition_code := 'XFER_TO_REG';
59532 --
59533 l_balance_type_code := 'A';
59534 l_segment := NULL;
59535 l_ccid := NULL;
59536 l_adr_transaction_coa_id := NULL;
59537 l_adr_accounting_coa_id := NULL;
59538 l_adr_flexfield_segment_code := NULL;
59539 l_adr_flex_value_set_id := NULL;
59540 l_adr_value_type_code := NULL;
59541 l_adr_value_combination_id := NULL;
59542 l_adr_value_segment_code := NULL;
59543
59544 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
59545 l_bflow_class_code := ''; -- 4219869 Business Flow
59546 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
59547 l_budgetary_control_flag := 'N';
59548
59549 l_bflow_applied_to_amt_idx := NULL; -- 5132302
59550 l_bflow_applied_to_amt := NULL; -- 5132302
59551 l_entered_amt_idx := NULL; -- 4262811
59552 l_accted_amt_idx := NULL; -- 4262811
59553 l_acc_rev_flag := NULL; -- 4262811
59554 l_accrual_line_num := NULL; -- 4262811
59555 l_tmp_amt := NULL; -- 4262811
59556 --
59557
59561 ') = 'INV'
59558 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59559 l_balance_type_code <> 'B' THEN
59560 IF NVL(p_source_2,'
59562 THEN
59563
59564 --
59565 XLA_AE_LINES_PKG.SetNewLine;
59566
59567 p_balance_type_code := l_balance_type_code;
59568 -- set the flag so later we will know whether the gain loss line needs to be created
59569
59570 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59571 p_actual_flag :='A';
59572 END IF;
59573
59574 --
59575 -- bulk performance
59576 --
59577 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59578 p_header_num => 0); -- 4262811
59579 --
59580 -- set accounting line options
59581 --
59582 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59583 p_natural_side_code => 'D'
59584 , p_gain_or_loss_flag => 'N'
59585 , p_gl_transfer_mode_code => 'D'
59586 , p_acct_entry_type_code => 'A'
59587 , p_switch_side_flag => 'Y'
59588 , p_merge_duplicate_code => 'W'
59589 );
59590 --
59591 l_acc_rev_natural_side_code := 'C'; -- 4262811
59592 --
59593 --
59594 -- set accounting line type info
59595 --
59596 xla_ae_lines_pkg.SetAcctLineType
59597 (p_component_type => l_component_type
59598 ,p_event_type_code => l_event_type_code
59599 ,p_line_definition_owner_code => l_line_definition_owner_code
59600 ,p_line_definition_code => l_line_definition_code
59601 ,p_accounting_line_code => l_component_code
59602 ,p_accounting_line_type_code => l_component_type_code
59603 ,p_accounting_line_appl_id => l_component_appl_id
59604 ,p_amb_context_code => l_amb_context_code
59605 ,p_entity_code => l_entity_code
59606 ,p_event_class_code => l_event_class_code);
59607 --
59608 -- set accounting class
59609 --
59610 xla_ae_lines_pkg.SetAcctClass(
59611 p_accounting_class_code => 'INVENTORY_VALUATION'
59612 , p_ae_header_id => l_ae_header_id
59613 );
59614
59615 --
59616 -- set rounding class
59617 --
59618 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59619 'INVENTORY_VALUATION';
59620
59621 --
59622 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59623 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59624 --
59625 -- bulk performance
59626 --
59627 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59628
59629 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59630 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59631
59632 -- 4955764
59633 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59634 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59635
59636 -- 4458381 Public Sector Enh
59637
59638 --
59639 -- set accounting attributes for the line type
59640 --
59641 l_entered_amt_idx := 3;
59642 l_accted_amt_idx := 8;
59643 l_bflow_applied_to_amt_idx := NULL; -- 5132302
59644 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
59645 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
59646 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
59647 l_rec_acct_attrs.array_char_value(2) := p_source_6;
59648 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
59649 l_rec_acct_attrs.array_num_value(3) := p_source_3;
59650 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
59651 l_rec_acct_attrs.array_char_value(4) := p_source_7;
59652 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
59653 l_rec_acct_attrs.array_date_value(5) := p_source_8;
59654 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
59655 l_rec_acct_attrs.array_num_value(6) := p_source_9;
59656 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
59657 l_rec_acct_attrs.array_char_value(7) := p_source_10;
59658 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
59659 l_rec_acct_attrs.array_num_value(8) := p_source_11;
59660
59661 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59662 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59663
59664 ---------------------------------------------------------------------------------------------------------------
59665 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59666 ---------------------------------------------------------------------------------------------------------------
59667 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59668
59669 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59673 (p_source_code => 'LEDGER_CATEGORY_CODE'
59670 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59671
59672 IF xla_accounting_cache_pkg.GetValueChar
59674 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59675 AND l_bflow_method_code = 'PRIOR_ENTRY'
59676 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59677 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59678 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59679 )
59680 THEN
59681 xla_ae_lines_pkg.BflowUpgEntry
59682 (p_business_method_code => l_bflow_method_code
59683 ,p_business_class_code => l_bflow_class_code
59684 ,p_balance_type => l_balance_type_code);
59685 ELSE
59686 NULL;
59687 -- No business flow processing for business flow method of NONE.
59688 END IF;
59689
59690 --
59691 -- call analytical criteria
59692 --
59693
59694 --
59695 -- call description
59696 --
59697 -- No description or it is inherited.
59698 --
59699 -- call ADRs
59700 -- Bug 4922099
59701 --
59702 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59703 (NVL(l_actual_upg_option, 'N') = 'O') OR
59704 (NVL(l_enc_upg_option, 'N') = 'O')
59705 )
59706 THEN
59707 NULL;
59708 --
59709 --
59710
59711 l_ccid := AcctDerRule_17(
59712 p_application_id => p_application_id
59713 , p_ae_header_id => l_ae_header_id
59714 , p_source_1 => p_source_1
59715 , p_source_2 => p_source_2
59716 , x_transaction_coa_id => l_adr_transaction_coa_id
59717 , x_accounting_coa_id => l_adr_accounting_coa_id
59718 , x_value_type_code => l_adr_value_type_code
59719 , p_side => 'NA'
59720 );
59721
59722 xla_ae_lines_pkg.set_ccid(
59723 p_code_combination_id => l_ccid
59724 , p_value_type_code => l_adr_value_type_code
59725 , p_transaction_coa_id => l_adr_transaction_coa_id
59726 , p_accounting_coa_id => l_adr_accounting_coa_id
59727 , p_adr_code => 'INV'
59728 , p_adr_type_code => 'S'
59729 , p_component_type => l_component_type
59730 , p_component_code => l_component_code
59731 , p_component_type_code => l_component_type_code
59732 , p_component_appl_id => l_component_appl_id
59733 , p_amb_context_code => l_amb_context_code
59734 , p_side => 'NA'
59735 );
59736
59737
59738 --
59739 --
59740 END IF;
59741 --
59742 -- Bug 4922099
59743 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59744 (NVL(l_enc_upg_option, 'N') = 'O')
59745 ) AND
59746 (l_bflow_method_code = 'PRIOR_ENTRY')
59747 )
59748 THEN
59749 IF
59750 --
59751 1 = 2
59752 --
59753 THEN
59754 xla_accounting_err_pkg.build_message
59755 (p_appli_s_name => 'XLA'
59756 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59757 ,p_token_1 => 'LINE_NUMBER'
59758 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
59759 ,p_token_2 => 'LINE_TYPE_NAME'
59760 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
59761 l_component_type
59762 ,l_component_code
59763 ,l_component_type_code
59764 ,l_component_appl_id
59765 ,l_amb_context_code
59766 ,l_entity_code
59767 ,l_event_class_code
59768 )
59769 ,p_token_3 => 'OWNER'
59770 ,p_value_3 => xla_lookups_pkg.get_meaning(
59771 p_lookup_type => 'XLA_OWNER_TYPE'
59772 ,p_lookup_code => l_component_type_code
59773 )
59774 ,p_token_4 => 'PRODUCT_NAME'
59775 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59776 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59777 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59778 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59782 IF (C_LEVEL_ERROR>= g_log_level) THEN
59779 ,p_ae_header_id => NULL
59780 );
59781
59783 trace
59784 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59785 ,p_level => C_LEVEL_ERROR
59786 ,p_module => l_log_module);
59787 END IF;
59788 END IF;
59789 END IF;
59790 --
59791 --
59792 ------------------------------------------------------------------------------------------------
59793 -- 4219869 Business Flow
59794 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59795 -- Prior Entry. Currently, the following code is always generated.
59796 ------------------------------------------------------------------------------------------------
59797 XLA_AE_LINES_PKG.ValidateCurrentLine;
59798
59799 ------------------------------------------------------------------------------------
59800 -- 4219869 Business Flow
59801 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59802 ------------------------------------------------------------------------------------
59803 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59804
59805 ----------------------------------------------------------------------------------
59806 -- 4219869 Business Flow
59807 -- Update journal entry status -- Need to generate this within IF <condition>
59808 ----------------------------------------------------------------------------------
59809 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59810 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59811 ,p_balance_type_code => l_balance_type_code
59812 );
59813
59814 -------------------------------------------------------------------------------------------
59815 -- 4262811 - Generate the Accrual Reversal lines
59816 -------------------------------------------------------------------------------------------
59817 BEGIN
59818 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59819 (g_array_event(p_event_id).array_value_num('header_index'));
59820 IF l_acc_rev_flag IS NULL THEN
59821 l_acc_rev_flag := 'N';
59822 END IF;
59823 EXCEPTION
59824 WHEN OTHERS THEN
59825 l_acc_rev_flag := 'N';
59826 END;
59827 --
59828 IF (l_acc_rev_flag = 'Y') THEN
59829
59830 -- 4645092 ------------------------------------------------------------------------------
59831 -- To allow MPA report to determine if it should generate report process
59832 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59833 ------------------------------------------------------------------------------------------
59834
59835 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59836 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59837 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
59838 -- call ADRs
59839 -- Bug 4922099
59840 --
59841 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59842 (NVL(l_actual_upg_option, 'N') = 'O') OR
59843 (NVL(l_enc_upg_option, 'N') = 'O')
59844 )
59845 THEN
59846 NULL;
59847 --
59848 --
59849
59850 l_ccid := AcctDerRule_17(
59851 p_application_id => p_application_id
59852 , p_ae_header_id => l_ae_header_id
59853 , p_source_1 => p_source_1
59854 , p_source_2 => p_source_2
59855 , x_transaction_coa_id => l_adr_transaction_coa_id
59856 , x_accounting_coa_id => l_adr_accounting_coa_id
59857 , x_value_type_code => l_adr_value_type_code
59858 , p_side => 'NA'
59859 );
59860
59861 xla_ae_lines_pkg.set_ccid(
59862 p_code_combination_id => l_ccid
59863 , p_value_type_code => l_adr_value_type_code
59864 , p_transaction_coa_id => l_adr_transaction_coa_id
59865 , p_accounting_coa_id => l_adr_accounting_coa_id
59866 , p_adr_code => 'INV'
59867 , p_adr_type_code => 'S'
59868 , p_component_type => l_component_type
59869 , p_component_code => l_component_code
59870 , p_component_type_code => l_component_type_code
59871 , p_component_appl_id => l_component_appl_id
59872 , p_amb_context_code => l_amb_context_code
59873 , p_side => 'NA'
59874 );
59875
59876
59877 --
59878 --
59879 END IF;
59880
59881 --
59882 -- Update the line information that should be overwritten
59883 --
59884 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59885 p_header_num => 1);
59886 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
59887
59888 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59889
59890 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
59891 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59895 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59892 END IF;
59893
59894 --
59896 --
59897 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59898 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
59899 ELSE
59900 ---------------------------------------------------------------------------------------------------
59901 -- 4262811a Switch Sign
59902 ---------------------------------------------------------------------------------------------------
59903 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
59904 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59905 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59906 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59907 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59908 -- 5132302
59909 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59910 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59911
59912 END IF;
59913
59914 -- 4955764
59915 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59916 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59917
59918
59919 XLA_AE_LINES_PKG.ValidateCurrentLine;
59920 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59921
59922 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59923 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59924 ,p_balance_type_code => l_balance_type_code);
59925
59926 END IF;
59927
59928 -----------------------------------------------------------------------------------------
59929 -- 4262811 Multiperiod Accounting
59930 -----------------------------------------------------------------------------------------
59931 -- No MPA option is assigned.
59932
59933
59934 END IF;
59935 END IF;
59936 --
59937
59938 --
59939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59940 trace
59941 (p_msg => 'END of AcctLineType_140'
59942 ,p_level => C_LEVEL_PROCEDURE
59943 ,p_module => l_log_module);
59944 END IF;
59945 --
59946 EXCEPTION
59947 WHEN xla_exceptions_pkg.application_exception THEN
59948 RAISE;
59949 WHEN OTHERS THEN
59950 xla_exceptions_pkg.raise_message
59951 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_140');
59952 END AcctLineType_140;
59953 --
59954
59955 ---------------------------------------
59956 --
59957 -- PRIVATE FUNCTION
59958 -- AcctLineType_141
59959 --
59960 ---------------------------------------
59961 PROCEDURE AcctLineType_141 (
59962 p_application_id IN NUMBER
59963 ,p_event_id IN NUMBER
59964 ,p_calculate_acctd_flag IN VARCHAR2
59965 ,p_calculate_g_l_flag IN VARCHAR2
59966 ,p_actual_flag IN OUT VARCHAR2
59967 ,p_balance_type_code OUT VARCHAR2
59968 ,p_gain_or_loss_ref OUT VARCHAR2
59969
59970 --Transaction Account
59971 , p_source_1 IN NUMBER
59972 --Journal Line Type
59973 , p_source_2 IN VARCHAR2
59974 --Entered Amount
59975 , p_source_3 IN NUMBER
59976 --First Distribution Identifier
59977 , p_source_5 IN NUMBER
59978 --Distribution Type
59979 , p_source_6 IN VARCHAR2
59980 --Currency Code
59981 , p_source_7 IN VARCHAR2
59982 --Currency Conversion Date
59983 , p_source_8 IN DATE
59984 --Currency Conversion Rate
59985 , p_source_9 IN NUMBER
59986 --Currency Conversion Type
59987 , p_source_10 IN VARCHAR2
59988 --Accounted Amount
59989 , p_source_11 IN NUMBER
59990 )
59991 IS
59992
59993 l_component_type VARCHAR2(80);
59994 l_component_code VARCHAR2(30);
59995 l_component_type_code VARCHAR2(1);
59996 l_component_appl_id INTEGER;
59997 l_amb_context_code VARCHAR2(30);
59998 l_entity_code VARCHAR2(30);
59999 l_event_class_code VARCHAR2(30);
60000 l_ae_header_id NUMBER;
60001 l_event_type_code VARCHAR2(30);
60002 l_line_definition_code VARCHAR2(30);
60003 l_line_definition_owner_code VARCHAR2(1);
60004 --
60005 -- adr variables
60006 l_segment VARCHAR2(30);
60007 l_ccid NUMBER;
60008 l_adr_transaction_coa_id NUMBER;
60009 l_adr_accounting_coa_id NUMBER;
60010 l_adr_flexfield_segment_code VARCHAR2(30);
60011 l_adr_flex_value_set_id NUMBER;
60012 l_adr_value_type_code VARCHAR2(30);
60013 l_adr_value_combination_id NUMBER;
60014 l_adr_value_segment_code VARCHAR2(30);
60015
60016 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
60017 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
60018 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
60019 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
60020
60024 l_acc_rev_flag VARCHAR2(1);
60021 -- 4262811 Variables ------------------------------------------------------------------------------------------
60022 l_entered_amt_idx NUMBER;
60023 l_accted_amt_idx NUMBER;
60025 l_accrual_line_num NUMBER;
60026 l_tmp_amt NUMBER;
60027 l_acc_rev_natural_side_code VARCHAR2(1);
60028
60029 l_num_entries NUMBER;
60030 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
60031 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
60032 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
60033 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
60034 l_recog_line_1 NUMBER;
60035 l_recog_line_2 NUMBER;
60036
60037 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
60038 l_bflow_applied_to_amt NUMBER; -- 5132302
60039 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
60040
60041 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60042
60043 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
60044 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
60045
60046 ---------------------------------------------------------------------------------------------------------------
60047
60048
60049 --
60050 -- bulk performance
60051 --
60052 l_balance_type_code VARCHAR2(1);
60053 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
60054 l_log_module VARCHAR2(240);
60055
60056 --
60057 -- Upgrade strategy
60058 --
60059 l_actual_upg_option VARCHAR2(1);
60060 l_enc_upg_option VARCHAR2(1);
60061
60062 --
60063 BEGIN
60064 --
60065 IF g_log_enabled THEN
60066 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
60067 END IF;
60068 --
60069 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60070
60071 trace
60072 (p_msg => 'BEGIN of AcctLineType_141'
60073 ,p_level => C_LEVEL_PROCEDURE
60074 ,p_module => l_log_module);
60075
60076 END IF;
60077 --
60078 l_component_type := 'AMB_JLT';
60079 l_component_code := 'INV';
60080 l_component_type_code := 'S';
60081 l_component_appl_id := 555;
60082 l_amb_context_code := 'DEFAULT';
60083 l_entity_code := 'REVALUATION';
60084 l_event_class_code := 'GLCOSTALOC';
60085 l_event_type_code := 'GLCOSTALOC';
60086 l_line_definition_owner_code := 'S';
60087 l_line_definition_code := 'GLCOSTALOC';
60088 --
60089 l_balance_type_code := 'A';
60090 l_segment := NULL;
60091 l_ccid := NULL;
60092 l_adr_transaction_coa_id := NULL;
60093 l_adr_accounting_coa_id := NULL;
60094 l_adr_flexfield_segment_code := NULL;
60095 l_adr_flex_value_set_id := NULL;
60096 l_adr_value_type_code := NULL;
60097 l_adr_value_combination_id := NULL;
60098 l_adr_value_segment_code := NULL;
60099
60100 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
60101 l_bflow_class_code := ''; -- 4219869 Business Flow
60102 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
60103 l_budgetary_control_flag := 'N';
60104
60105 l_bflow_applied_to_amt_idx := NULL; -- 5132302
60106 l_bflow_applied_to_amt := NULL; -- 5132302
60107 l_entered_amt_idx := NULL; -- 4262811
60108 l_accted_amt_idx := NULL; -- 4262811
60109 l_acc_rev_flag := NULL; -- 4262811
60110 l_accrual_line_num := NULL; -- 4262811
60111 l_tmp_amt := NULL; -- 4262811
60112 --
60113
60114 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60115 l_balance_type_code <> 'B' THEN
60116 IF NVL(p_source_2,'
60117 ') = 'INV'
60118 THEN
60119
60120 --
60121 XLA_AE_LINES_PKG.SetNewLine;
60122
60123 p_balance_type_code := l_balance_type_code;
60124 -- set the flag so later we will know whether the gain loss line needs to be created
60125
60126 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60127 p_actual_flag :='A';
60128 END IF;
60129
60130 --
60131 -- bulk performance
60132 --
60133 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60134 p_header_num => 0); -- 4262811
60135 --
60136 -- set accounting line options
60137 --
60138 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60139 p_natural_side_code => 'D'
60140 , p_gain_or_loss_flag => 'N'
60141 , p_gl_transfer_mode_code => 'D'
60142 , p_acct_entry_type_code => 'A'
60143 , p_switch_side_flag => 'Y'
60144 , p_merge_duplicate_code => 'W'
60145 );
60146 --
60147 l_acc_rev_natural_side_code := 'C'; -- 4262811
60148 --
60149 --
60150 -- set accounting line type info
60151 --
60152 xla_ae_lines_pkg.SetAcctLineType
60156 ,p_line_definition_code => l_line_definition_code
60153 (p_component_type => l_component_type
60154 ,p_event_type_code => l_event_type_code
60155 ,p_line_definition_owner_code => l_line_definition_owner_code
60157 ,p_accounting_line_code => l_component_code
60158 ,p_accounting_line_type_code => l_component_type_code
60159 ,p_accounting_line_appl_id => l_component_appl_id
60160 ,p_amb_context_code => l_amb_context_code
60161 ,p_entity_code => l_entity_code
60162 ,p_event_class_code => l_event_class_code);
60163 --
60164 -- set accounting class
60165 --
60166 xla_ae_lines_pkg.SetAcctClass(
60167 p_accounting_class_code => 'INVENTORY_VALUATION'
60168 , p_ae_header_id => l_ae_header_id
60169 );
60170
60171 --
60172 -- set rounding class
60173 --
60174 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60175 'INVENTORY_VALUATION';
60176
60177 --
60178 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60179 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60180 --
60181 -- bulk performance
60182 --
60183 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60184
60185 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60186 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60187
60188 -- 4955764
60189 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60190 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60191
60192 -- 4458381 Public Sector Enh
60193
60194 --
60195 -- set accounting attributes for the line type
60196 --
60197 l_entered_amt_idx := 3;
60198 l_accted_amt_idx := 8;
60199 l_bflow_applied_to_amt_idx := NULL; -- 5132302
60200 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60201 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
60202 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60203 l_rec_acct_attrs.array_char_value(2) := p_source_6;
60204 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60205 l_rec_acct_attrs.array_num_value(3) := p_source_3;
60206 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60207 l_rec_acct_attrs.array_char_value(4) := p_source_7;
60208 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60209 l_rec_acct_attrs.array_date_value(5) := p_source_8;
60210 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60211 l_rec_acct_attrs.array_num_value(6) := p_source_9;
60212 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60213 l_rec_acct_attrs.array_char_value(7) := p_source_10;
60214 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60215 l_rec_acct_attrs.array_num_value(8) := p_source_11;
60216
60217 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60218 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60219
60220 ---------------------------------------------------------------------------------------------------------------
60221 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60222 ---------------------------------------------------------------------------------------------------------------
60223 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60224
60225 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60226 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60227
60228 IF xla_accounting_cache_pkg.GetValueChar
60229 (p_source_code => 'LEDGER_CATEGORY_CODE'
60230 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60231 AND l_bflow_method_code = 'PRIOR_ENTRY'
60232 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60233 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60234 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60235 )
60236 THEN
60237 xla_ae_lines_pkg.BflowUpgEntry
60238 (p_business_method_code => l_bflow_method_code
60239 ,p_business_class_code => l_bflow_class_code
60240 ,p_balance_type => l_balance_type_code);
60241 ELSE
60242 NULL;
60243 -- No business flow processing for business flow method of NONE.
60244 END IF;
60245
60246 --
60247 -- call analytical criteria
60248 --
60249
60250 --
60251 -- call description
60252 --
60253 -- No description or it is inherited.
60254 --
60255 -- call ADRs
60256 -- Bug 4922099
60257 --
60258 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60259 (NVL(l_actual_upg_option, 'N') = 'O') OR
60260 (NVL(l_enc_upg_option, 'N') = 'O')
60261 )
60262 THEN
60263 NULL;
60264 --
60265 --
60266
60270 , p_source_1 => p_source_1
60267 l_ccid := AcctDerRule_17(
60268 p_application_id => p_application_id
60269 , p_ae_header_id => l_ae_header_id
60271 , p_source_2 => p_source_2
60272 , x_transaction_coa_id => l_adr_transaction_coa_id
60273 , x_accounting_coa_id => l_adr_accounting_coa_id
60274 , x_value_type_code => l_adr_value_type_code
60275 , p_side => 'NA'
60276 );
60277
60278 xla_ae_lines_pkg.set_ccid(
60279 p_code_combination_id => l_ccid
60280 , p_value_type_code => l_adr_value_type_code
60281 , p_transaction_coa_id => l_adr_transaction_coa_id
60282 , p_accounting_coa_id => l_adr_accounting_coa_id
60283 , p_adr_code => 'INV'
60284 , p_adr_type_code => 'S'
60285 , p_component_type => l_component_type
60286 , p_component_code => l_component_code
60287 , p_component_type_code => l_component_type_code
60288 , p_component_appl_id => l_component_appl_id
60289 , p_amb_context_code => l_amb_context_code
60290 , p_side => 'NA'
60291 );
60292
60293
60294 --
60295 --
60296 END IF;
60297 --
60298 -- Bug 4922099
60299 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60300 (NVL(l_enc_upg_option, 'N') = 'O')
60301 ) AND
60302 (l_bflow_method_code = 'PRIOR_ENTRY')
60303 )
60304 THEN
60305 IF
60306 --
60307 1 = 2
60308 --
60309 THEN
60310 xla_accounting_err_pkg.build_message
60311 (p_appli_s_name => 'XLA'
60312 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60313 ,p_token_1 => 'LINE_NUMBER'
60314 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
60315 ,p_token_2 => 'LINE_TYPE_NAME'
60316 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
60317 l_component_type
60318 ,l_component_code
60319 ,l_component_type_code
60320 ,l_component_appl_id
60321 ,l_amb_context_code
60322 ,l_entity_code
60323 ,l_event_class_code
60324 )
60325 ,p_token_3 => 'OWNER'
60326 ,p_value_3 => xla_lookups_pkg.get_meaning(
60327 p_lookup_type => 'XLA_OWNER_TYPE'
60328 ,p_lookup_code => l_component_type_code
60329 )
60330 ,p_token_4 => 'PRODUCT_NAME'
60331 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60332 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60333 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60334 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60335 ,p_ae_header_id => NULL
60336 );
60337
60338 IF (C_LEVEL_ERROR>= g_log_level) THEN
60339 trace
60340 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60341 ,p_level => C_LEVEL_ERROR
60342 ,p_module => l_log_module);
60343 END IF;
60344 END IF;
60345 END IF;
60346 --
60347 --
60348 ------------------------------------------------------------------------------------------------
60349 -- 4219869 Business Flow
60350 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60351 -- Prior Entry. Currently, the following code is always generated.
60352 ------------------------------------------------------------------------------------------------
60353 XLA_AE_LINES_PKG.ValidateCurrentLine;
60354
60355 ------------------------------------------------------------------------------------
60356 -- 4219869 Business Flow
60357 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60358 ------------------------------------------------------------------------------------
60359 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60360
60361 ----------------------------------------------------------------------------------
60362 -- 4219869 Business Flow
60363 -- Update journal entry status -- Need to generate this within IF <condition>
60367 ,p_balance_type_code => l_balance_type_code
60364 ----------------------------------------------------------------------------------
60365 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60366 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60368 );
60369
60370 -------------------------------------------------------------------------------------------
60371 -- 4262811 - Generate the Accrual Reversal lines
60372 -------------------------------------------------------------------------------------------
60373 BEGIN
60374 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60375 (g_array_event(p_event_id).array_value_num('header_index'));
60376 IF l_acc_rev_flag IS NULL THEN
60377 l_acc_rev_flag := 'N';
60378 END IF;
60379 EXCEPTION
60380 WHEN OTHERS THEN
60381 l_acc_rev_flag := 'N';
60382 END;
60383 --
60384 IF (l_acc_rev_flag = 'Y') THEN
60385
60386 -- 4645092 ------------------------------------------------------------------------------
60387 -- To allow MPA report to determine if it should generate report process
60388 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60389 ------------------------------------------------------------------------------------------
60390
60391 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60392 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60393 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
60394 -- call ADRs
60395 -- Bug 4922099
60396 --
60397 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60398 (NVL(l_actual_upg_option, 'N') = 'O') OR
60399 (NVL(l_enc_upg_option, 'N') = 'O')
60400 )
60401 THEN
60402 NULL;
60403 --
60404 --
60405
60406 l_ccid := AcctDerRule_17(
60407 p_application_id => p_application_id
60408 , p_ae_header_id => l_ae_header_id
60409 , p_source_1 => p_source_1
60410 , p_source_2 => p_source_2
60411 , x_transaction_coa_id => l_adr_transaction_coa_id
60412 , x_accounting_coa_id => l_adr_accounting_coa_id
60413 , x_value_type_code => l_adr_value_type_code
60414 , p_side => 'NA'
60415 );
60416
60417 xla_ae_lines_pkg.set_ccid(
60418 p_code_combination_id => l_ccid
60419 , p_value_type_code => l_adr_value_type_code
60420 , p_transaction_coa_id => l_adr_transaction_coa_id
60421 , p_accounting_coa_id => l_adr_accounting_coa_id
60422 , p_adr_code => 'INV'
60423 , p_adr_type_code => 'S'
60424 , p_component_type => l_component_type
60425 , p_component_code => l_component_code
60426 , p_component_type_code => l_component_type_code
60427 , p_component_appl_id => l_component_appl_id
60428 , p_amb_context_code => l_amb_context_code
60429 , p_side => 'NA'
60430 );
60431
60432
60433 --
60434 --
60435 END IF;
60436
60437 --
60438 -- Update the line information that should be overwritten
60439 --
60440 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60441 p_header_num => 1);
60442 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
60443
60444 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60445
60446 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
60447 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60448 END IF;
60449
60450 --
60451 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60452 --
60453 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60454 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
60455 ELSE
60456 ---------------------------------------------------------------------------------------------------
60457 -- 4262811a Switch Sign
60458 ---------------------------------------------------------------------------------------------------
60459 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
60460 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60461 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60462 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60463 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60464 -- 5132302
60465 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60466 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60467
60468 END IF;
60469
60470 -- 4955764
60471 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60472 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60473
60474
60475 XLA_AE_LINES_PKG.ValidateCurrentLine;
60479 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60476 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60477
60478 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60480 ,p_balance_type_code => l_balance_type_code);
60481
60482 END IF;
60483
60484 -----------------------------------------------------------------------------------------
60485 -- 4262811 Multiperiod Accounting
60486 -----------------------------------------------------------------------------------------
60487 -- No MPA option is assigned.
60488
60489
60490 END IF;
60491 END IF;
60492 --
60493
60494 --
60495 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60496 trace
60497 (p_msg => 'END of AcctLineType_141'
60498 ,p_level => C_LEVEL_PROCEDURE
60499 ,p_module => l_log_module);
60500 END IF;
60501 --
60502 EXCEPTION
60503 WHEN xla_exceptions_pkg.application_exception THEN
60504 RAISE;
60505 WHEN OTHERS THEN
60506 xla_exceptions_pkg.raise_message
60507 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_141');
60508 END AcctLineType_141;
60509 --
60510
60511 ---------------------------------------
60512 --
60513 -- PRIVATE FUNCTION
60514 -- AcctLineType_142
60515 --
60516 ---------------------------------------
60517 PROCEDURE AcctLineType_142 (
60518 p_application_id IN NUMBER
60519 ,p_event_id IN NUMBER
60520 ,p_calculate_acctd_flag IN VARCHAR2
60521 ,p_calculate_g_l_flag IN VARCHAR2
60522 ,p_actual_flag IN OUT VARCHAR2
60523 ,p_balance_type_code OUT VARCHAR2
60524 ,p_gain_or_loss_ref OUT VARCHAR2
60525
60526 --Transaction Account
60527 , p_source_1 IN NUMBER
60528 --Journal Line Type
60529 , p_source_2 IN VARCHAR2
60530 --Entered Amount
60531 , p_source_3 IN NUMBER
60532 --First Distribution Identifier
60533 , p_source_5 IN NUMBER
60534 --Distribution Type
60535 , p_source_6 IN VARCHAR2
60536 --Currency Code
60537 , p_source_7 IN VARCHAR2
60538 --Currency Conversion Date
60539 , p_source_8 IN DATE
60540 --Currency Conversion Rate
60541 , p_source_9 IN NUMBER
60542 --Currency Conversion Type
60543 , p_source_10 IN VARCHAR2
60544 --Accounted Amount
60545 , p_source_11 IN NUMBER
60546 )
60547 IS
60548
60549 l_component_type VARCHAR2(80);
60550 l_component_code VARCHAR2(30);
60551 l_component_type_code VARCHAR2(1);
60552 l_component_appl_id INTEGER;
60553 l_amb_context_code VARCHAR2(30);
60554 l_entity_code VARCHAR2(30);
60555 l_event_class_code VARCHAR2(30);
60556 l_ae_header_id NUMBER;
60557 l_event_type_code VARCHAR2(30);
60558 l_line_definition_code VARCHAR2(30);
60559 l_line_definition_owner_code VARCHAR2(1);
60560 --
60561 -- adr variables
60562 l_segment VARCHAR2(30);
60563 l_ccid NUMBER;
60564 l_adr_transaction_coa_id NUMBER;
60565 l_adr_accounting_coa_id NUMBER;
60566 l_adr_flexfield_segment_code VARCHAR2(30);
60567 l_adr_flex_value_set_id NUMBER;
60568 l_adr_value_type_code VARCHAR2(30);
60569 l_adr_value_combination_id NUMBER;
60570 l_adr_value_segment_code VARCHAR2(30);
60571
60572 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
60573 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
60574 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
60575 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
60576
60577 -- 4262811 Variables ------------------------------------------------------------------------------------------
60578 l_entered_amt_idx NUMBER;
60579 l_accted_amt_idx NUMBER;
60580 l_acc_rev_flag VARCHAR2(1);
60581 l_accrual_line_num NUMBER;
60582 l_tmp_amt NUMBER;
60583 l_acc_rev_natural_side_code VARCHAR2(1);
60584
60585 l_num_entries NUMBER;
60586 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
60587 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
60588 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
60589 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
60590 l_recog_line_1 NUMBER;
60591 l_recog_line_2 NUMBER;
60592
60593 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
60594 l_bflow_applied_to_amt NUMBER; -- 5132302
60595 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
60596
60597 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60598
60599 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
60600 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
60601
60602 ---------------------------------------------------------------------------------------------------------------
60603
60604
60605 --
60606 -- bulk performance
60607 --
60608 l_balance_type_code VARCHAR2(1);
60612 --
60609 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
60610 l_log_module VARCHAR2(240);
60611
60613 -- Upgrade strategy
60614 --
60615 l_actual_upg_option VARCHAR2(1);
60616 l_enc_upg_option VARCHAR2(1);
60617
60618 --
60619 BEGIN
60620 --
60621 IF g_log_enabled THEN
60622 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
60623 END IF;
60624 --
60625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60626
60627 trace
60628 (p_msg => 'BEGIN of AcctLineType_142'
60629 ,p_level => C_LEVEL_PROCEDURE
60630 ,p_module => l_log_module);
60631
60632 END IF;
60633 --
60634 l_component_type := 'AMB_JLT';
60635 l_component_code := 'INV';
60636 l_component_type_code := 'S';
60637 l_component_appl_id := 555;
60638 l_amb_context_code := 'DEFAULT';
60639 l_entity_code := 'INVENTORY';
60640 l_event_class_code := 'DIR_INTERORG_SHIP';
60641 l_event_type_code := 'DIR_INTERORG_SHIP_TP';
60642 l_line_definition_owner_code := 'S';
60643 l_line_definition_code := 'DIRECT_XFER_SHIP_TP';
60644 --
60645 l_balance_type_code := 'A';
60646 l_segment := NULL;
60647 l_ccid := NULL;
60648 l_adr_transaction_coa_id := NULL;
60649 l_adr_accounting_coa_id := NULL;
60650 l_adr_flexfield_segment_code := NULL;
60651 l_adr_flex_value_set_id := NULL;
60652 l_adr_value_type_code := NULL;
60653 l_adr_value_combination_id := NULL;
60654 l_adr_value_segment_code := NULL;
60655
60656 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
60657 l_bflow_class_code := ''; -- 4219869 Business Flow
60658 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
60659 l_budgetary_control_flag := 'N';
60660
60661 l_bflow_applied_to_amt_idx := NULL; -- 5132302
60662 l_bflow_applied_to_amt := NULL; -- 5132302
60663 l_entered_amt_idx := NULL; -- 4262811
60664 l_accted_amt_idx := NULL; -- 4262811
60665 l_acc_rev_flag := NULL; -- 4262811
60666 l_accrual_line_num := NULL; -- 4262811
60667 l_tmp_amt := NULL; -- 4262811
60668 --
60669
60670 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60671 l_balance_type_code <> 'B' THEN
60672 IF NVL(p_source_2,'
60673 ') = 'INV'
60674 THEN
60675
60676 --
60677 XLA_AE_LINES_PKG.SetNewLine;
60678
60679 p_balance_type_code := l_balance_type_code;
60680 -- set the flag so later we will know whether the gain loss line needs to be created
60681
60682 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60683 p_actual_flag :='A';
60684 END IF;
60685
60686 --
60687 -- bulk performance
60688 --
60689 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60690 p_header_num => 0); -- 4262811
60691 --
60692 -- set accounting line options
60693 --
60694 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60695 p_natural_side_code => 'D'
60696 , p_gain_or_loss_flag => 'N'
60697 , p_gl_transfer_mode_code => 'D'
60698 , p_acct_entry_type_code => 'A'
60699 , p_switch_side_flag => 'Y'
60700 , p_merge_duplicate_code => 'W'
60701 );
60702 --
60703 l_acc_rev_natural_side_code := 'C'; -- 4262811
60704 --
60705 --
60706 -- set accounting line type info
60707 --
60708 xla_ae_lines_pkg.SetAcctLineType
60709 (p_component_type => l_component_type
60710 ,p_event_type_code => l_event_type_code
60711 ,p_line_definition_owner_code => l_line_definition_owner_code
60712 ,p_line_definition_code => l_line_definition_code
60713 ,p_accounting_line_code => l_component_code
60714 ,p_accounting_line_type_code => l_component_type_code
60715 ,p_accounting_line_appl_id => l_component_appl_id
60716 ,p_amb_context_code => l_amb_context_code
60717 ,p_entity_code => l_entity_code
60718 ,p_event_class_code => l_event_class_code);
60719 --
60720 -- set accounting class
60721 --
60722 xla_ae_lines_pkg.SetAcctClass(
60723 p_accounting_class_code => 'INVENTORY_VALUATION'
60724 , p_ae_header_id => l_ae_header_id
60725 );
60726
60727 --
60728 -- set rounding class
60729 --
60730 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60731 'INVENTORY_VALUATION';
60732
60733 --
60734 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60735 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60736 --
60737 -- bulk performance
60738 --
60739 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60740
60741 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60745 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60742 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60743
60744 -- 4955764
60746 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60747
60748 -- 4458381 Public Sector Enh
60749
60750 --
60751 -- set accounting attributes for the line type
60752 --
60753 l_entered_amt_idx := 3;
60754 l_accted_amt_idx := 8;
60755 l_bflow_applied_to_amt_idx := NULL; -- 5132302
60756 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
60757 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
60758 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
60759 l_rec_acct_attrs.array_char_value(2) := p_source_6;
60760 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
60761 l_rec_acct_attrs.array_num_value(3) := p_source_3;
60762 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
60763 l_rec_acct_attrs.array_char_value(4) := p_source_7;
60764 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
60765 l_rec_acct_attrs.array_date_value(5) := p_source_8;
60766 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
60767 l_rec_acct_attrs.array_num_value(6) := p_source_9;
60768 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
60769 l_rec_acct_attrs.array_char_value(7) := p_source_10;
60770 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
60771 l_rec_acct_attrs.array_num_value(8) := p_source_11;
60772
60773 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60774 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60775
60776 ---------------------------------------------------------------------------------------------------------------
60777 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60778 ---------------------------------------------------------------------------------------------------------------
60779 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60780
60781 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60782 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60783
60784 IF xla_accounting_cache_pkg.GetValueChar
60785 (p_source_code => 'LEDGER_CATEGORY_CODE'
60786 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60787 AND l_bflow_method_code = 'PRIOR_ENTRY'
60788 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60789 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60790 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60791 )
60792 THEN
60793 xla_ae_lines_pkg.BflowUpgEntry
60794 (p_business_method_code => l_bflow_method_code
60795 ,p_business_class_code => l_bflow_class_code
60796 ,p_balance_type => l_balance_type_code);
60797 ELSE
60798 NULL;
60799 -- No business flow processing for business flow method of NONE.
60800 END IF;
60801
60802 --
60803 -- call analytical criteria
60804 --
60805
60806 --
60807 -- call description
60808 --
60809 -- No description or it is inherited.
60810 --
60811 -- call ADRs
60812 -- Bug 4922099
60813 --
60814 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60815 (NVL(l_actual_upg_option, 'N') = 'O') OR
60816 (NVL(l_enc_upg_option, 'N') = 'O')
60817 )
60818 THEN
60819 NULL;
60820 --
60821 --
60822
60823 l_ccid := AcctDerRule_17(
60824 p_application_id => p_application_id
60825 , p_ae_header_id => l_ae_header_id
60826 , p_source_1 => p_source_1
60827 , p_source_2 => p_source_2
60828 , x_transaction_coa_id => l_adr_transaction_coa_id
60829 , x_accounting_coa_id => l_adr_accounting_coa_id
60830 , x_value_type_code => l_adr_value_type_code
60831 , p_side => 'NA'
60832 );
60833
60834 xla_ae_lines_pkg.set_ccid(
60835 p_code_combination_id => l_ccid
60836 , p_value_type_code => l_adr_value_type_code
60837 , p_transaction_coa_id => l_adr_transaction_coa_id
60838 , p_accounting_coa_id => l_adr_accounting_coa_id
60839 , p_adr_code => 'INV'
60840 , p_adr_type_code => 'S'
60841 , p_component_type => l_component_type
60842 , p_component_code => l_component_code
60843 , p_component_type_code => l_component_type_code
60844 , p_component_appl_id => l_component_appl_id
60845 , p_amb_context_code => l_amb_context_code
60846 , p_side => 'NA'
60847 );
60848
60849
60850 --
60851 --
60852 END IF;
60853 --
60854 -- Bug 4922099
60855 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60856 (NVL(l_enc_upg_option, 'N') = 'O')
60857 ) AND
60858 (l_bflow_method_code = 'PRIOR_ENTRY')
60859 )
60860 THEN
60861 IF
60862 --
60866 xla_accounting_err_pkg.build_message
60863 1 = 2
60864 --
60865 THEN
60867 (p_appli_s_name => 'XLA'
60868 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60869 ,p_token_1 => 'LINE_NUMBER'
60870 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
60871 ,p_token_2 => 'LINE_TYPE_NAME'
60872 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
60873 l_component_type
60874 ,l_component_code
60875 ,l_component_type_code
60876 ,l_component_appl_id
60877 ,l_amb_context_code
60878 ,l_entity_code
60879 ,l_event_class_code
60880 )
60881 ,p_token_3 => 'OWNER'
60882 ,p_value_3 => xla_lookups_pkg.get_meaning(
60883 p_lookup_type => 'XLA_OWNER_TYPE'
60884 ,p_lookup_code => l_component_type_code
60885 )
60886 ,p_token_4 => 'PRODUCT_NAME'
60887 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60888 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60889 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60890 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60891 ,p_ae_header_id => NULL
60892 );
60893
60894 IF (C_LEVEL_ERROR>= g_log_level) THEN
60895 trace
60896 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60897 ,p_level => C_LEVEL_ERROR
60898 ,p_module => l_log_module);
60899 END IF;
60900 END IF;
60901 END IF;
60902 --
60903 --
60904 ------------------------------------------------------------------------------------------------
60905 -- 4219869 Business Flow
60906 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60907 -- Prior Entry. Currently, the following code is always generated.
60908 ------------------------------------------------------------------------------------------------
60909 XLA_AE_LINES_PKG.ValidateCurrentLine;
60910
60911 ------------------------------------------------------------------------------------
60912 -- 4219869 Business Flow
60913 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60914 ------------------------------------------------------------------------------------
60915 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60916
60917 ----------------------------------------------------------------------------------
60918 -- 4219869 Business Flow
60919 -- Update journal entry status -- Need to generate this within IF <condition>
60920 ----------------------------------------------------------------------------------
60921 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60922 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60923 ,p_balance_type_code => l_balance_type_code
60924 );
60925
60926 -------------------------------------------------------------------------------------------
60927 -- 4262811 - Generate the Accrual Reversal lines
60928 -------------------------------------------------------------------------------------------
60929 BEGIN
60930 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60931 (g_array_event(p_event_id).array_value_num('header_index'));
60932 IF l_acc_rev_flag IS NULL THEN
60933 l_acc_rev_flag := 'N';
60934 END IF;
60935 EXCEPTION
60936 WHEN OTHERS THEN
60937 l_acc_rev_flag := 'N';
60938 END;
60939 --
60940 IF (l_acc_rev_flag = 'Y') THEN
60941
60942 -- 4645092 ------------------------------------------------------------------------------
60943 -- To allow MPA report to determine if it should generate report process
60944 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60945 ------------------------------------------------------------------------------------------
60946
60947 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60948 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60949 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
60950 -- call ADRs
60951 -- Bug 4922099
60952 --
60953 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60954 (NVL(l_actual_upg_option, 'N') = 'O') OR
60958 NULL;
60955 (NVL(l_enc_upg_option, 'N') = 'O')
60956 )
60957 THEN
60959 --
60960 --
60961
60962 l_ccid := AcctDerRule_17(
60963 p_application_id => p_application_id
60964 , p_ae_header_id => l_ae_header_id
60965 , p_source_1 => p_source_1
60966 , p_source_2 => p_source_2
60967 , x_transaction_coa_id => l_adr_transaction_coa_id
60968 , x_accounting_coa_id => l_adr_accounting_coa_id
60969 , x_value_type_code => l_adr_value_type_code
60970 , p_side => 'NA'
60971 );
60972
60973 xla_ae_lines_pkg.set_ccid(
60974 p_code_combination_id => l_ccid
60975 , p_value_type_code => l_adr_value_type_code
60976 , p_transaction_coa_id => l_adr_transaction_coa_id
60977 , p_accounting_coa_id => l_adr_accounting_coa_id
60978 , p_adr_code => 'INV'
60979 , p_adr_type_code => 'S'
60980 , p_component_type => l_component_type
60981 , p_component_code => l_component_code
60982 , p_component_type_code => l_component_type_code
60983 , p_component_appl_id => l_component_appl_id
60984 , p_amb_context_code => l_amb_context_code
60985 , p_side => 'NA'
60986 );
60987
60988
60989 --
60990 --
60991 END IF;
60992
60993 --
60994 -- Update the line information that should be overwritten
60995 --
60996 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60997 p_header_num => 1);
60998 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
60999
61000 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61001
61002 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
61003 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61004 END IF;
61005
61006 --
61007 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61008 --
61009 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61010 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
61011 ELSE
61012 ---------------------------------------------------------------------------------------------------
61013 -- 4262811a Switch Sign
61014 ---------------------------------------------------------------------------------------------------
61015 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
61016 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61017 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61018 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61019 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61020 -- 5132302
61021 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61022 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61023
61024 END IF;
61025
61026 -- 4955764
61027 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61028 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61029
61030
61031 XLA_AE_LINES_PKG.ValidateCurrentLine;
61032 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61033
61034 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61035 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61036 ,p_balance_type_code => l_balance_type_code);
61037
61038 END IF;
61039
61040 -----------------------------------------------------------------------------------------
61041 -- 4262811 Multiperiod Accounting
61042 -----------------------------------------------------------------------------------------
61043 -- No MPA option is assigned.
61044
61045
61046 END IF;
61047 END IF;
61048 --
61049
61050 --
61051 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61052 trace
61053 (p_msg => 'END of AcctLineType_142'
61054 ,p_level => C_LEVEL_PROCEDURE
61055 ,p_module => l_log_module);
61056 END IF;
61057 --
61058 EXCEPTION
61059 WHEN xla_exceptions_pkg.application_exception THEN
61060 RAISE;
61061 WHEN OTHERS THEN
61062 xla_exceptions_pkg.raise_message
61063 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_142');
61064 END AcctLineType_142;
61065 --
61066
61067 ---------------------------------------
61068 --
61069 -- PRIVATE FUNCTION
61070 -- AcctLineType_143
61071 --
61072 ---------------------------------------
61073 PROCEDURE AcctLineType_143 (
61074 p_application_id IN NUMBER
61075 ,p_event_id IN NUMBER
61076 ,p_calculate_acctd_flag IN VARCHAR2
61077 ,p_calculate_g_l_flag IN VARCHAR2
61081
61078 ,p_actual_flag IN OUT VARCHAR2
61079 ,p_balance_type_code OUT VARCHAR2
61080 ,p_gain_or_loss_ref OUT VARCHAR2
61082 --Transaction Account
61083 , p_source_1 IN NUMBER
61084 --Journal Line Type
61085 , p_source_2 IN VARCHAR2
61086 --Entered Amount
61087 , p_source_3 IN NUMBER
61088 --First Distribution Identifier
61089 , p_source_5 IN NUMBER
61090 --Distribution Type
61091 , p_source_6 IN VARCHAR2
61092 --Currency Code
61093 , p_source_7 IN VARCHAR2
61094 --Currency Conversion Date
61095 , p_source_8 IN DATE
61096 --Currency Conversion Rate
61097 , p_source_9 IN NUMBER
61098 --Currency Conversion Type
61099 , p_source_10 IN VARCHAR2
61100 --Accounted Amount
61101 , p_source_11 IN NUMBER
61102 )
61103 IS
61104
61105 l_component_type VARCHAR2(80);
61106 l_component_code VARCHAR2(30);
61107 l_component_type_code VARCHAR2(1);
61108 l_component_appl_id INTEGER;
61109 l_amb_context_code VARCHAR2(30);
61110 l_entity_code VARCHAR2(30);
61111 l_event_class_code VARCHAR2(30);
61112 l_ae_header_id NUMBER;
61113 l_event_type_code VARCHAR2(30);
61114 l_line_definition_code VARCHAR2(30);
61115 l_line_definition_owner_code VARCHAR2(1);
61116 --
61117 -- adr variables
61118 l_segment VARCHAR2(30);
61119 l_ccid NUMBER;
61120 l_adr_transaction_coa_id NUMBER;
61121 l_adr_accounting_coa_id NUMBER;
61122 l_adr_flexfield_segment_code VARCHAR2(30);
61123 l_adr_flex_value_set_id NUMBER;
61124 l_adr_value_type_code VARCHAR2(30);
61125 l_adr_value_combination_id NUMBER;
61126 l_adr_value_segment_code VARCHAR2(30);
61127
61128 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
61129 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
61130 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
61131 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
61132
61133 -- 4262811 Variables ------------------------------------------------------------------------------------------
61134 l_entered_amt_idx NUMBER;
61135 l_accted_amt_idx NUMBER;
61136 l_acc_rev_flag VARCHAR2(1);
61137 l_accrual_line_num NUMBER;
61138 l_tmp_amt NUMBER;
61139 l_acc_rev_natural_side_code VARCHAR2(1);
61140
61141 l_num_entries NUMBER;
61142 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
61143 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
61144 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
61145 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
61146 l_recog_line_1 NUMBER;
61147 l_recog_line_2 NUMBER;
61148
61149 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
61150 l_bflow_applied_to_amt NUMBER; -- 5132302
61151 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
61152
61153 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61154
61155 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
61156 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
61157
61158 ---------------------------------------------------------------------------------------------------------------
61159
61160
61161 --
61162 -- bulk performance
61163 --
61164 l_balance_type_code VARCHAR2(1);
61165 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
61166 l_log_module VARCHAR2(240);
61167
61168 --
61169 -- Upgrade strategy
61170 --
61171 l_actual_upg_option VARCHAR2(1);
61172 l_enc_upg_option VARCHAR2(1);
61173
61174 --
61175 BEGIN
61176 --
61177 IF g_log_enabled THEN
61178 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_143';
61179 END IF;
61180 --
61181 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61182
61183 trace
61184 (p_msg => 'BEGIN of AcctLineType_143'
61185 ,p_level => C_LEVEL_PROCEDURE
61186 ,p_module => l_log_module);
61187
61188 END IF;
61189 --
61190 l_component_type := 'AMB_JLT';
61191 l_component_code := 'INV';
61192 l_component_type_code := 'S';
61193 l_component_appl_id := 555;
61194 l_amb_context_code := 'DEFAULT';
61195 l_entity_code := 'INVENTORY';
61196 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
61197 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
61198 l_line_definition_owner_code := 'S';
61199 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
61200 --
61201 l_balance_type_code := 'A';
61202 l_segment := NULL;
61203 l_ccid := NULL;
61204 l_adr_transaction_coa_id := NULL;
61205 l_adr_accounting_coa_id := NULL;
61206 l_adr_flexfield_segment_code := NULL;
61207 l_adr_flex_value_set_id := NULL;
61208 l_adr_value_type_code := NULL;
61209 l_adr_value_combination_id := NULL;
61210 l_adr_value_segment_code := NULL;
61211
61215 l_budgetary_control_flag := 'N';
61212 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
61213 l_bflow_class_code := ''; -- 4219869 Business Flow
61214 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
61216
61217 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61218 l_bflow_applied_to_amt := NULL; -- 5132302
61219 l_entered_amt_idx := NULL; -- 4262811
61220 l_accted_amt_idx := NULL; -- 4262811
61221 l_acc_rev_flag := NULL; -- 4262811
61222 l_accrual_line_num := NULL; -- 4262811
61223 l_tmp_amt := NULL; -- 4262811
61224 --
61225
61226 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61227 l_balance_type_code <> 'B' THEN
61228 IF NVL(p_source_2,'
61229 ') = 'INV'
61230 THEN
61231
61232 --
61233 XLA_AE_LINES_PKG.SetNewLine;
61234
61235 p_balance_type_code := l_balance_type_code;
61236 -- set the flag so later we will know whether the gain loss line needs to be created
61237
61238 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61239 p_actual_flag :='A';
61240 END IF;
61241
61242 --
61243 -- bulk performance
61244 --
61245 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61246 p_header_num => 0); -- 4262811
61247 --
61248 -- set accounting line options
61249 --
61250 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61251 p_natural_side_code => 'D'
61252 , p_gain_or_loss_flag => 'N'
61253 , p_gl_transfer_mode_code => 'D'
61254 , p_acct_entry_type_code => 'A'
61255 , p_switch_side_flag => 'Y'
61256 , p_merge_duplicate_code => 'W'
61257 );
61258 --
61259 l_acc_rev_natural_side_code := 'C'; -- 4262811
61260 --
61261 --
61262 -- set accounting line type info
61263 --
61264 xla_ae_lines_pkg.SetAcctLineType
61265 (p_component_type => l_component_type
61266 ,p_event_type_code => l_event_type_code
61267 ,p_line_definition_owner_code => l_line_definition_owner_code
61268 ,p_line_definition_code => l_line_definition_code
61269 ,p_accounting_line_code => l_component_code
61270 ,p_accounting_line_type_code => l_component_type_code
61271 ,p_accounting_line_appl_id => l_component_appl_id
61272 ,p_amb_context_code => l_amb_context_code
61273 ,p_entity_code => l_entity_code
61274 ,p_event_class_code => l_event_class_code);
61275 --
61276 -- set accounting class
61277 --
61278 xla_ae_lines_pkg.SetAcctClass(
61279 p_accounting_class_code => 'INVENTORY_VALUATION'
61280 , p_ae_header_id => l_ae_header_id
61281 );
61282
61283 --
61284 -- set rounding class
61285 --
61286 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61287 'INVENTORY_VALUATION';
61288
61289 --
61290 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61291 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61292 --
61293 -- bulk performance
61294 --
61295 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61296
61297 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61298 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61299
61300 -- 4955764
61301 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61302 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61303
61304 -- 4458381 Public Sector Enh
61305
61306 --
61307 -- set accounting attributes for the line type
61308 --
61309 l_entered_amt_idx := 3;
61310 l_accted_amt_idx := 8;
61311 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61312 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61313 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
61314 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61315 l_rec_acct_attrs.array_char_value(2) := p_source_6;
61316 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61317 l_rec_acct_attrs.array_num_value(3) := p_source_3;
61318 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61319 l_rec_acct_attrs.array_char_value(4) := p_source_7;
61320 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61321 l_rec_acct_attrs.array_date_value(5) := p_source_8;
61322 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61323 l_rec_acct_attrs.array_num_value(6) := p_source_9;
61324 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61325 l_rec_acct_attrs.array_char_value(7) := p_source_10;
61326 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61327 l_rec_acct_attrs.array_num_value(8) := p_source_11;
61328
61329 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61333 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61330 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61331
61332 ---------------------------------------------------------------------------------------------------------------
61334 ---------------------------------------------------------------------------------------------------------------
61335 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61336
61337 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61338 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61339
61340 IF xla_accounting_cache_pkg.GetValueChar
61341 (p_source_code => 'LEDGER_CATEGORY_CODE'
61342 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61343 AND l_bflow_method_code = 'PRIOR_ENTRY'
61344 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61345 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61346 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61347 )
61348 THEN
61349 xla_ae_lines_pkg.BflowUpgEntry
61350 (p_business_method_code => l_bflow_method_code
61351 ,p_business_class_code => l_bflow_class_code
61352 ,p_balance_type => l_balance_type_code);
61353 ELSE
61354 NULL;
61355 -- No business flow processing for business flow method of NONE.
61356 END IF;
61357
61358 --
61359 -- call analytical criteria
61360 --
61361
61362 --
61363 -- call description
61364 --
61365 -- No description or it is inherited.
61366 --
61367 -- call ADRs
61368 -- Bug 4922099
61369 --
61370 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61371 (NVL(l_actual_upg_option, 'N') = 'O') OR
61372 (NVL(l_enc_upg_option, 'N') = 'O')
61373 )
61374 THEN
61375 NULL;
61376 --
61377 --
61378
61379 l_ccid := AcctDerRule_17(
61380 p_application_id => p_application_id
61381 , p_ae_header_id => l_ae_header_id
61382 , p_source_1 => p_source_1
61383 , p_source_2 => p_source_2
61384 , x_transaction_coa_id => l_adr_transaction_coa_id
61385 , x_accounting_coa_id => l_adr_accounting_coa_id
61386 , x_value_type_code => l_adr_value_type_code
61387 , p_side => 'NA'
61388 );
61389
61390 xla_ae_lines_pkg.set_ccid(
61391 p_code_combination_id => l_ccid
61392 , p_value_type_code => l_adr_value_type_code
61393 , p_transaction_coa_id => l_adr_transaction_coa_id
61394 , p_accounting_coa_id => l_adr_accounting_coa_id
61395 , p_adr_code => 'INV'
61396 , p_adr_type_code => 'S'
61397 , p_component_type => l_component_type
61398 , p_component_code => l_component_code
61399 , p_component_type_code => l_component_type_code
61400 , p_component_appl_id => l_component_appl_id
61401 , p_amb_context_code => l_amb_context_code
61402 , p_side => 'NA'
61403 );
61404
61405
61406 --
61407 --
61408 END IF;
61409 --
61410 -- Bug 4922099
61411 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61412 (NVL(l_enc_upg_option, 'N') = 'O')
61413 ) AND
61414 (l_bflow_method_code = 'PRIOR_ENTRY')
61415 )
61416 THEN
61417 IF
61418 --
61419 1 = 2
61420 --
61421 THEN
61422 xla_accounting_err_pkg.build_message
61423 (p_appli_s_name => 'XLA'
61424 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61425 ,p_token_1 => 'LINE_NUMBER'
61426 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
61427 ,p_token_2 => 'LINE_TYPE_NAME'
61428 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
61429 l_component_type
61430 ,l_component_code
61431 ,l_component_type_code
61432 ,l_component_appl_id
61433 ,l_amb_context_code
61434 ,l_entity_code
61435 ,l_event_class_code
61436 )
61437 ,p_token_3 => 'OWNER'
61438 ,p_value_3 => xla_lookups_pkg.get_meaning(
61439 p_lookup_type => 'XLA_OWNER_TYPE'
61443 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61440 ,p_lookup_code => l_component_type_code
61441 )
61442 ,p_token_4 => 'PRODUCT_NAME'
61444 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61445 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61446 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61447 ,p_ae_header_id => NULL
61448 );
61449
61450 IF (C_LEVEL_ERROR>= g_log_level) THEN
61451 trace
61452 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61453 ,p_level => C_LEVEL_ERROR
61454 ,p_module => l_log_module);
61455 END IF;
61456 END IF;
61457 END IF;
61458 --
61459 --
61460 ------------------------------------------------------------------------------------------------
61461 -- 4219869 Business Flow
61462 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61463 -- Prior Entry. Currently, the following code is always generated.
61464 ------------------------------------------------------------------------------------------------
61465 XLA_AE_LINES_PKG.ValidateCurrentLine;
61466
61467 ------------------------------------------------------------------------------------
61468 -- 4219869 Business Flow
61469 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61470 ------------------------------------------------------------------------------------
61471 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61472
61473 ----------------------------------------------------------------------------------
61474 -- 4219869 Business Flow
61475 -- Update journal entry status -- Need to generate this within IF <condition>
61476 ----------------------------------------------------------------------------------
61477 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61478 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61479 ,p_balance_type_code => l_balance_type_code
61480 );
61481
61482 -------------------------------------------------------------------------------------------
61483 -- 4262811 - Generate the Accrual Reversal lines
61484 -------------------------------------------------------------------------------------------
61485 BEGIN
61486 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61487 (g_array_event(p_event_id).array_value_num('header_index'));
61488 IF l_acc_rev_flag IS NULL THEN
61489 l_acc_rev_flag := 'N';
61490 END IF;
61491 EXCEPTION
61492 WHEN OTHERS THEN
61493 l_acc_rev_flag := 'N';
61494 END;
61495 --
61496 IF (l_acc_rev_flag = 'Y') THEN
61497
61498 -- 4645092 ------------------------------------------------------------------------------
61499 -- To allow MPA report to determine if it should generate report process
61500 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61501 ------------------------------------------------------------------------------------------
61502
61503 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61504 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61505 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
61506 -- call ADRs
61507 -- Bug 4922099
61508 --
61509 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61510 (NVL(l_actual_upg_option, 'N') = 'O') OR
61511 (NVL(l_enc_upg_option, 'N') = 'O')
61512 )
61513 THEN
61514 NULL;
61515 --
61516 --
61517
61518 l_ccid := AcctDerRule_17(
61519 p_application_id => p_application_id
61520 , p_ae_header_id => l_ae_header_id
61521 , p_source_1 => p_source_1
61522 , p_source_2 => p_source_2
61523 , x_transaction_coa_id => l_adr_transaction_coa_id
61524 , x_accounting_coa_id => l_adr_accounting_coa_id
61525 , x_value_type_code => l_adr_value_type_code
61526 , p_side => 'NA'
61527 );
61528
61529 xla_ae_lines_pkg.set_ccid(
61530 p_code_combination_id => l_ccid
61531 , p_value_type_code => l_adr_value_type_code
61532 , p_transaction_coa_id => l_adr_transaction_coa_id
61533 , p_accounting_coa_id => l_adr_accounting_coa_id
61534 , p_adr_code => 'INV'
61535 , p_adr_type_code => 'S'
61536 , p_component_type => l_component_type
61537 , p_component_code => l_component_code
61538 , p_component_type_code => l_component_type_code
61539 , p_component_appl_id => l_component_appl_id
61540 , p_amb_context_code => l_amb_context_code
61541 , p_side => 'NA'
61542 );
61543
61544
61545 --
61546 --
61547 END IF;
61548
61549 --
61550 -- Update the line information that should be overwritten
61554 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
61551 --
61552 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61553 p_header_num => 1);
61555
61556 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61557
61558 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
61559 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61560 END IF;
61561
61562 --
61563 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61564 --
61565 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61566 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
61567 ELSE
61568 ---------------------------------------------------------------------------------------------------
61569 -- 4262811a Switch Sign
61570 ---------------------------------------------------------------------------------------------------
61571 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
61572 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61573 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61574 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61575 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61576 -- 5132302
61577 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61578 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61579
61580 END IF;
61581
61582 -- 4955764
61583 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61584 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61585
61586
61587 XLA_AE_LINES_PKG.ValidateCurrentLine;
61588 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61589
61590 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61591 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61592 ,p_balance_type_code => l_balance_type_code);
61593
61594 END IF;
61595
61596 -----------------------------------------------------------------------------------------
61597 -- 4262811 Multiperiod Accounting
61598 -----------------------------------------------------------------------------------------
61599 -- No MPA option is assigned.
61600
61601
61602 END IF;
61603 END IF;
61604 --
61605
61606 --
61607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61608 trace
61609 (p_msg => 'END of AcctLineType_143'
61610 ,p_level => C_LEVEL_PROCEDURE
61611 ,p_module => l_log_module);
61612 END IF;
61613 --
61614 EXCEPTION
61615 WHEN xla_exceptions_pkg.application_exception THEN
61616 RAISE;
61617 WHEN OTHERS THEN
61618 xla_exceptions_pkg.raise_message
61619 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_143');
61620 END AcctLineType_143;
61621 --
61622
61623 ---------------------------------------
61624 --
61625 -- PRIVATE FUNCTION
61626 -- AcctLineType_144
61627 --
61628 ---------------------------------------
61629 PROCEDURE AcctLineType_144 (
61630 p_application_id IN NUMBER
61631 ,p_event_id IN NUMBER
61632 ,p_calculate_acctd_flag IN VARCHAR2
61633 ,p_calculate_g_l_flag IN VARCHAR2
61634 ,p_actual_flag IN OUT VARCHAR2
61635 ,p_balance_type_code OUT VARCHAR2
61636 ,p_gain_or_loss_ref OUT VARCHAR2
61637
61638 --Transaction Account
61639 , p_source_1 IN NUMBER
61640 --Journal Line Type
61641 , p_source_2 IN VARCHAR2
61642 --Entered Amount
61643 , p_source_3 IN NUMBER
61644 --First Distribution Identifier
61645 , p_source_5 IN NUMBER
61646 --Distribution Type
61647 , p_source_6 IN VARCHAR2
61648 --Currency Code
61649 , p_source_7 IN VARCHAR2
61650 --Currency Conversion Date
61651 , p_source_8 IN DATE
61652 --Currency Conversion Rate
61653 , p_source_9 IN NUMBER
61654 --Currency Conversion Type
61655 , p_source_10 IN VARCHAR2
61656 --Accounted Amount
61657 , p_source_11 IN NUMBER
61658 )
61659 IS
61660
61661 l_component_type VARCHAR2(80);
61662 l_component_code VARCHAR2(30);
61663 l_component_type_code VARCHAR2(1);
61664 l_component_appl_id INTEGER;
61665 l_amb_context_code VARCHAR2(30);
61666 l_entity_code VARCHAR2(30);
61667 l_event_class_code VARCHAR2(30);
61668 l_ae_header_id NUMBER;
61669 l_event_type_code VARCHAR2(30);
61670 l_line_definition_code VARCHAR2(30);
61671 l_line_definition_owner_code VARCHAR2(1);
61672 --
61673 -- adr variables
61674 l_segment VARCHAR2(30);
61675 l_ccid NUMBER;
61679 l_adr_flex_value_set_id NUMBER;
61676 l_adr_transaction_coa_id NUMBER;
61677 l_adr_accounting_coa_id NUMBER;
61678 l_adr_flexfield_segment_code VARCHAR2(30);
61680 l_adr_value_type_code VARCHAR2(30);
61681 l_adr_value_combination_id NUMBER;
61682 l_adr_value_segment_code VARCHAR2(30);
61683
61684 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
61685 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
61686 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
61687 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
61688
61689 -- 4262811 Variables ------------------------------------------------------------------------------------------
61690 l_entered_amt_idx NUMBER;
61691 l_accted_amt_idx NUMBER;
61692 l_acc_rev_flag VARCHAR2(1);
61693 l_accrual_line_num NUMBER;
61694 l_tmp_amt NUMBER;
61695 l_acc_rev_natural_side_code VARCHAR2(1);
61696
61697 l_num_entries NUMBER;
61698 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
61699 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
61700 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
61701 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
61702 l_recog_line_1 NUMBER;
61703 l_recog_line_2 NUMBER;
61704
61705 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
61706 l_bflow_applied_to_amt NUMBER; -- 5132302
61707 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
61708
61709 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61710
61711 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
61712 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
61713
61714 ---------------------------------------------------------------------------------------------------------------
61715
61716
61717 --
61718 -- bulk performance
61719 --
61720 l_balance_type_code VARCHAR2(1);
61721 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
61722 l_log_module VARCHAR2(240);
61723
61724 --
61725 -- Upgrade strategy
61726 --
61727 l_actual_upg_option VARCHAR2(1);
61728 l_enc_upg_option VARCHAR2(1);
61729
61730 --
61731 BEGIN
61732 --
61733 IF g_log_enabled THEN
61734 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_144';
61735 END IF;
61736 --
61737 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61738
61739 trace
61740 (p_msg => 'BEGIN of AcctLineType_144'
61741 ,p_level => C_LEVEL_PROCEDURE
61742 ,p_module => l_log_module);
61743
61744 END IF;
61745 --
61746 l_component_type := 'AMB_JLT';
61747 l_component_code := 'INV';
61748 l_component_type_code := 'S';
61749 l_component_appl_id := 555;
61750 l_amb_context_code := 'DEFAULT';
61751 l_entity_code := 'INVENTORY';
61752 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
61753 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT';
61754 l_line_definition_owner_code := 'S';
61755 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
61756 --
61757 l_balance_type_code := 'A';
61758 l_segment := NULL;
61759 l_ccid := NULL;
61760 l_adr_transaction_coa_id := NULL;
61761 l_adr_accounting_coa_id := NULL;
61762 l_adr_flexfield_segment_code := NULL;
61763 l_adr_flex_value_set_id := NULL;
61764 l_adr_value_type_code := NULL;
61765 l_adr_value_combination_id := NULL;
61766 l_adr_value_segment_code := NULL;
61767
61768 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
61769 l_bflow_class_code := ''; -- 4219869 Business Flow
61770 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
61771 l_budgetary_control_flag := 'N';
61772
61773 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61774 l_bflow_applied_to_amt := NULL; -- 5132302
61775 l_entered_amt_idx := NULL; -- 4262811
61776 l_accted_amt_idx := NULL; -- 4262811
61777 l_acc_rev_flag := NULL; -- 4262811
61778 l_accrual_line_num := NULL; -- 4262811
61779 l_tmp_amt := NULL; -- 4262811
61780 --
61781
61782 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61783 l_balance_type_code <> 'B' THEN
61784 IF NVL(p_source_2,'
61785 ') = 'INV'
61786 THEN
61787
61788 --
61789 XLA_AE_LINES_PKG.SetNewLine;
61790
61791 p_balance_type_code := l_balance_type_code;
61792 -- set the flag so later we will know whether the gain loss line needs to be created
61793
61794 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61795 p_actual_flag :='A';
61796 END IF;
61797
61798 --
61799 -- bulk performance
61800 --
61801 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61802 p_header_num => 0); -- 4262811
61803 --
61807 p_natural_side_code => 'D'
61804 -- set accounting line options
61805 --
61806 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61808 , p_gain_or_loss_flag => 'N'
61809 , p_gl_transfer_mode_code => 'D'
61810 , p_acct_entry_type_code => 'A'
61811 , p_switch_side_flag => 'Y'
61812 , p_merge_duplicate_code => 'W'
61813 );
61814 --
61815 l_acc_rev_natural_side_code := 'C'; -- 4262811
61816 --
61817 --
61818 -- set accounting line type info
61819 --
61820 xla_ae_lines_pkg.SetAcctLineType
61821 (p_component_type => l_component_type
61822 ,p_event_type_code => l_event_type_code
61823 ,p_line_definition_owner_code => l_line_definition_owner_code
61824 ,p_line_definition_code => l_line_definition_code
61825 ,p_accounting_line_code => l_component_code
61826 ,p_accounting_line_type_code => l_component_type_code
61827 ,p_accounting_line_appl_id => l_component_appl_id
61828 ,p_amb_context_code => l_amb_context_code
61829 ,p_entity_code => l_entity_code
61830 ,p_event_class_code => l_event_class_code);
61831 --
61832 -- set accounting class
61833 --
61834 xla_ae_lines_pkg.SetAcctClass(
61835 p_accounting_class_code => 'INVENTORY_VALUATION'
61836 , p_ae_header_id => l_ae_header_id
61837 );
61838
61839 --
61840 -- set rounding class
61841 --
61842 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61843 'INVENTORY_VALUATION';
61844
61845 --
61846 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61847 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61848 --
61849 -- bulk performance
61850 --
61851 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61852
61853 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61854 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61855
61856 -- 4955764
61857 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61858 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61859
61860 -- 4458381 Public Sector Enh
61861
61862 --
61863 -- set accounting attributes for the line type
61864 --
61865 l_entered_amt_idx := 3;
61866 l_accted_amt_idx := 8;
61867 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61868 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61869 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
61870 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61871 l_rec_acct_attrs.array_char_value(2) := p_source_6;
61872 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61873 l_rec_acct_attrs.array_num_value(3) := p_source_3;
61874 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61875 l_rec_acct_attrs.array_char_value(4) := p_source_7;
61876 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61877 l_rec_acct_attrs.array_date_value(5) := p_source_8;
61878 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61879 l_rec_acct_attrs.array_num_value(6) := p_source_9;
61880 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61881 l_rec_acct_attrs.array_char_value(7) := p_source_10;
61882 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61883 l_rec_acct_attrs.array_num_value(8) := p_source_11;
61884
61885 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61886 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61887
61888 ---------------------------------------------------------------------------------------------------------------
61889 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61890 ---------------------------------------------------------------------------------------------------------------
61891 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61892
61893 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61894 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61895
61896 IF xla_accounting_cache_pkg.GetValueChar
61897 (p_source_code => 'LEDGER_CATEGORY_CODE'
61898 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61899 AND l_bflow_method_code = 'PRIOR_ENTRY'
61900 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61901 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61902 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61903 )
61904 THEN
61905 xla_ae_lines_pkg.BflowUpgEntry
61906 (p_business_method_code => l_bflow_method_code
61907 ,p_business_class_code => l_bflow_class_code
61908 ,p_balance_type => l_balance_type_code);
61909 ELSE
61910 NULL;
61914 --
61911 -- No business flow processing for business flow method of NONE.
61912 END IF;
61913
61915 -- call analytical criteria
61916 --
61917
61918 --
61919 -- call description
61920 --
61921 -- No description or it is inherited.
61922 --
61923 -- call ADRs
61924 -- Bug 4922099
61925 --
61926 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61927 (NVL(l_actual_upg_option, 'N') = 'O') OR
61928 (NVL(l_enc_upg_option, 'N') = 'O')
61929 )
61930 THEN
61931 NULL;
61932 --
61933 --
61934
61935 l_ccid := AcctDerRule_17(
61936 p_application_id => p_application_id
61937 , p_ae_header_id => l_ae_header_id
61938 , p_source_1 => p_source_1
61939 , p_source_2 => p_source_2
61940 , x_transaction_coa_id => l_adr_transaction_coa_id
61941 , x_accounting_coa_id => l_adr_accounting_coa_id
61942 , x_value_type_code => l_adr_value_type_code
61943 , p_side => 'NA'
61944 );
61945
61946 xla_ae_lines_pkg.set_ccid(
61947 p_code_combination_id => l_ccid
61948 , p_value_type_code => l_adr_value_type_code
61949 , p_transaction_coa_id => l_adr_transaction_coa_id
61950 , p_accounting_coa_id => l_adr_accounting_coa_id
61951 , p_adr_code => 'INV'
61952 , p_adr_type_code => 'S'
61953 , p_component_type => l_component_type
61954 , p_component_code => l_component_code
61955 , p_component_type_code => l_component_type_code
61956 , p_component_appl_id => l_component_appl_id
61957 , p_amb_context_code => l_amb_context_code
61958 , p_side => 'NA'
61959 );
61960
61961
61962 --
61963 --
61964 END IF;
61965 --
61966 -- Bug 4922099
61967 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61968 (NVL(l_enc_upg_option, 'N') = 'O')
61969 ) AND
61970 (l_bflow_method_code = 'PRIOR_ENTRY')
61971 )
61972 THEN
61973 IF
61974 --
61975 1 = 2
61976 --
61977 THEN
61978 xla_accounting_err_pkg.build_message
61979 (p_appli_s_name => 'XLA'
61980 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61981 ,p_token_1 => 'LINE_NUMBER'
61982 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
61983 ,p_token_2 => 'LINE_TYPE_NAME'
61984 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
61985 l_component_type
61986 ,l_component_code
61987 ,l_component_type_code
61988 ,l_component_appl_id
61989 ,l_amb_context_code
61990 ,l_entity_code
61991 ,l_event_class_code
61992 )
61993 ,p_token_3 => 'OWNER'
61994 ,p_value_3 => xla_lookups_pkg.get_meaning(
61995 p_lookup_type => 'XLA_OWNER_TYPE'
61996 ,p_lookup_code => l_component_type_code
61997 )
61998 ,p_token_4 => 'PRODUCT_NAME'
61999 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62000 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62001 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62002 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62003 ,p_ae_header_id => NULL
62004 );
62005
62006 IF (C_LEVEL_ERROR>= g_log_level) THEN
62007 trace
62008 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62009 ,p_level => C_LEVEL_ERROR
62010 ,p_module => l_log_module);
62011 END IF;
62012 END IF;
62013 END IF;
62014 --
62015 --
62016 ------------------------------------------------------------------------------------------------
62017 -- 4219869 Business Flow
62018 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62019 -- Prior Entry. Currently, the following code is always generated.
62020 ------------------------------------------------------------------------------------------------
62021 XLA_AE_LINES_PKG.ValidateCurrentLine;
62022
62026 ------------------------------------------------------------------------------------
62023 ------------------------------------------------------------------------------------
62024 -- 4219869 Business Flow
62025 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62027 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62028
62029 ----------------------------------------------------------------------------------
62030 -- 4219869 Business Flow
62031 -- Update journal entry status -- Need to generate this within IF <condition>
62032 ----------------------------------------------------------------------------------
62033 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62034 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62035 ,p_balance_type_code => l_balance_type_code
62036 );
62037
62038 -------------------------------------------------------------------------------------------
62039 -- 4262811 - Generate the Accrual Reversal lines
62040 -------------------------------------------------------------------------------------------
62041 BEGIN
62042 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62043 (g_array_event(p_event_id).array_value_num('header_index'));
62044 IF l_acc_rev_flag IS NULL THEN
62045 l_acc_rev_flag := 'N';
62046 END IF;
62047 EXCEPTION
62048 WHEN OTHERS THEN
62049 l_acc_rev_flag := 'N';
62050 END;
62051 --
62052 IF (l_acc_rev_flag = 'Y') THEN
62053
62054 -- 4645092 ------------------------------------------------------------------------------
62055 -- To allow MPA report to determine if it should generate report process
62056 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62057 ------------------------------------------------------------------------------------------
62058
62059 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62060 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62061 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
62062 -- call ADRs
62063 -- Bug 4922099
62064 --
62065 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62066 (NVL(l_actual_upg_option, 'N') = 'O') OR
62067 (NVL(l_enc_upg_option, 'N') = 'O')
62068 )
62069 THEN
62070 NULL;
62071 --
62072 --
62073
62074 l_ccid := AcctDerRule_17(
62075 p_application_id => p_application_id
62076 , p_ae_header_id => l_ae_header_id
62077 , p_source_1 => p_source_1
62078 , p_source_2 => p_source_2
62079 , x_transaction_coa_id => l_adr_transaction_coa_id
62080 , x_accounting_coa_id => l_adr_accounting_coa_id
62081 , x_value_type_code => l_adr_value_type_code
62082 , p_side => 'NA'
62083 );
62084
62085 xla_ae_lines_pkg.set_ccid(
62086 p_code_combination_id => l_ccid
62087 , p_value_type_code => l_adr_value_type_code
62088 , p_transaction_coa_id => l_adr_transaction_coa_id
62089 , p_accounting_coa_id => l_adr_accounting_coa_id
62090 , p_adr_code => 'INV'
62091 , p_adr_type_code => 'S'
62092 , p_component_type => l_component_type
62093 , p_component_code => l_component_code
62094 , p_component_type_code => l_component_type_code
62095 , p_component_appl_id => l_component_appl_id
62096 , p_amb_context_code => l_amb_context_code
62097 , p_side => 'NA'
62098 );
62099
62100
62101 --
62102 --
62103 END IF;
62104
62105 --
62106 -- Update the line information that should be overwritten
62107 --
62108 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62109 p_header_num => 1);
62110 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
62111
62112 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62113
62114 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
62115 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62116 END IF;
62117
62118 --
62119 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62120 --
62121 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62122 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
62123 ELSE
62124 ---------------------------------------------------------------------------------------------------
62125 -- 4262811a Switch Sign
62126 ---------------------------------------------------------------------------------------------------
62127 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
62128 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62129 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62130 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62134 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62131 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62132 -- 5132302
62133 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62135
62136 END IF;
62137
62138 -- 4955764
62139 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62140 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62141
62142
62143 XLA_AE_LINES_PKG.ValidateCurrentLine;
62144 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62145
62146 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62147 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62148 ,p_balance_type_code => l_balance_type_code);
62149
62150 END IF;
62151
62152 -----------------------------------------------------------------------------------------
62153 -- 4262811 Multiperiod Accounting
62154 -----------------------------------------------------------------------------------------
62155 -- No MPA option is assigned.
62156
62157
62158 END IF;
62159 END IF;
62160 --
62161
62162 --
62163 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62164 trace
62165 (p_msg => 'END of AcctLineType_144'
62166 ,p_level => C_LEVEL_PROCEDURE
62167 ,p_module => l_log_module);
62168 END IF;
62169 --
62170 EXCEPTION
62171 WHEN xla_exceptions_pkg.application_exception THEN
62172 RAISE;
62173 WHEN OTHERS THEN
62174 xla_exceptions_pkg.raise_message
62175 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_144');
62176 END AcctLineType_144;
62177 --
62178
62179 ---------------------------------------
62180 --
62181 -- PRIVATE FUNCTION
62182 -- AcctLineType_145
62183 --
62184 ---------------------------------------
62185 PROCEDURE AcctLineType_145 (
62186 p_application_id IN NUMBER
62187 ,p_event_id IN NUMBER
62188 ,p_calculate_acctd_flag IN VARCHAR2
62189 ,p_calculate_g_l_flag IN VARCHAR2
62190 ,p_actual_flag IN OUT VARCHAR2
62191 ,p_balance_type_code OUT VARCHAR2
62192 ,p_gain_or_loss_ref OUT VARCHAR2
62193
62194 --Transaction Account
62195 , p_source_1 IN NUMBER
62196 --Journal Line Type
62197 , p_source_2 IN VARCHAR2
62198 --Entered Amount
62199 , p_source_3 IN NUMBER
62200 --First Distribution Identifier
62201 , p_source_5 IN NUMBER
62202 --Distribution Type
62203 , p_source_6 IN VARCHAR2
62204 --Currency Code
62205 , p_source_7 IN VARCHAR2
62206 --Currency Conversion Date
62207 , p_source_8 IN DATE
62208 --Currency Conversion Rate
62209 , p_source_9 IN NUMBER
62210 --Currency Conversion Type
62211 , p_source_10 IN VARCHAR2
62212 --Accounted Amount
62213 , p_source_11 IN NUMBER
62214 )
62215 IS
62216
62217 l_component_type VARCHAR2(80);
62218 l_component_code VARCHAR2(30);
62219 l_component_type_code VARCHAR2(1);
62220 l_component_appl_id INTEGER;
62221 l_amb_context_code VARCHAR2(30);
62222 l_entity_code VARCHAR2(30);
62223 l_event_class_code VARCHAR2(30);
62224 l_ae_header_id NUMBER;
62225 l_event_type_code VARCHAR2(30);
62226 l_line_definition_code VARCHAR2(30);
62227 l_line_definition_owner_code VARCHAR2(1);
62228 --
62229 -- adr variables
62230 l_segment VARCHAR2(30);
62231 l_ccid NUMBER;
62232 l_adr_transaction_coa_id NUMBER;
62233 l_adr_accounting_coa_id NUMBER;
62234 l_adr_flexfield_segment_code VARCHAR2(30);
62235 l_adr_flex_value_set_id NUMBER;
62236 l_adr_value_type_code VARCHAR2(30);
62237 l_adr_value_combination_id NUMBER;
62238 l_adr_value_segment_code VARCHAR2(30);
62239
62240 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
62241 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
62242 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
62243 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
62244
62245 -- 4262811 Variables ------------------------------------------------------------------------------------------
62246 l_entered_amt_idx NUMBER;
62247 l_accted_amt_idx NUMBER;
62248 l_acc_rev_flag VARCHAR2(1);
62249 l_accrual_line_num NUMBER;
62250 l_tmp_amt NUMBER;
62251 l_acc_rev_natural_side_code VARCHAR2(1);
62252
62253 l_num_entries NUMBER;
62254 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
62255 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
62256 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
62257 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
62258 l_recog_line_1 NUMBER;
62259 l_recog_line_2 NUMBER;
62260
62261 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
62262 l_bflow_applied_to_amt NUMBER; -- 5132302
62266
62263 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
62264
62265 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62267 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
62268 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
62269
62270 ---------------------------------------------------------------------------------------------------------------
62271
62272
62273 --
62274 -- bulk performance
62275 --
62276 l_balance_type_code VARCHAR2(1);
62277 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
62278 l_log_module VARCHAR2(240);
62279
62280 --
62281 -- Upgrade strategy
62282 --
62283 l_actual_upg_option VARCHAR2(1);
62284 l_enc_upg_option VARCHAR2(1);
62285
62286 --
62287 BEGIN
62288 --
62289 IF g_log_enabled THEN
62290 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_145';
62291 END IF;
62292 --
62293 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62294
62295 trace
62296 (p_msg => 'BEGIN of AcctLineType_145'
62297 ,p_level => C_LEVEL_PROCEDURE
62298 ,p_module => l_log_module);
62299
62300 END IF;
62301 --
62302 l_component_type := 'AMB_JLT';
62303 l_component_code := 'INV';
62304 l_component_type_code := 'S';
62305 l_component_appl_id := 555;
62306 l_amb_context_code := 'DEFAULT';
62307 l_entity_code := 'INVENTORY';
62308 l_event_class_code := 'LOG_INTERCOMPANY';
62309 l_event_type_code := 'LOG_IC_SHIPMENT_RCPT';
62310 l_line_definition_owner_code := 'S';
62311 l_line_definition_code := 'LOG_IC_SHIPMENT_RCPT';
62312 --
62313 l_balance_type_code := 'A';
62314 l_segment := NULL;
62315 l_ccid := NULL;
62316 l_adr_transaction_coa_id := NULL;
62317 l_adr_accounting_coa_id := NULL;
62318 l_adr_flexfield_segment_code := NULL;
62319 l_adr_flex_value_set_id := NULL;
62320 l_adr_value_type_code := NULL;
62321 l_adr_value_combination_id := NULL;
62322 l_adr_value_segment_code := NULL;
62323
62324 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
62325 l_bflow_class_code := ''; -- 4219869 Business Flow
62326 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
62327 l_budgetary_control_flag := 'N';
62328
62329 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62330 l_bflow_applied_to_amt := NULL; -- 5132302
62331 l_entered_amt_idx := NULL; -- 4262811
62332 l_accted_amt_idx := NULL; -- 4262811
62333 l_acc_rev_flag := NULL; -- 4262811
62334 l_accrual_line_num := NULL; -- 4262811
62335 l_tmp_amt := NULL; -- 4262811
62336 --
62337
62338 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62339 l_balance_type_code <> 'B' THEN
62340 IF NVL(p_source_2,'
62341 ') = 'INV'
62342 THEN
62343
62344 --
62345 XLA_AE_LINES_PKG.SetNewLine;
62346
62347 p_balance_type_code := l_balance_type_code;
62348 -- set the flag so later we will know whether the gain loss line needs to be created
62349
62350 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62351 p_actual_flag :='A';
62352 END IF;
62353
62354 --
62355 -- bulk performance
62356 --
62357 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62358 p_header_num => 0); -- 4262811
62359 --
62360 -- set accounting line options
62361 --
62362 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62363 p_natural_side_code => 'D'
62364 , p_gain_or_loss_flag => 'N'
62365 , p_gl_transfer_mode_code => 'D'
62366 , p_acct_entry_type_code => 'A'
62367 , p_switch_side_flag => 'Y'
62368 , p_merge_duplicate_code => 'W'
62369 );
62370 --
62371 l_acc_rev_natural_side_code := 'C'; -- 4262811
62372 --
62373 --
62374 -- set accounting line type info
62375 --
62376 xla_ae_lines_pkg.SetAcctLineType
62377 (p_component_type => l_component_type
62378 ,p_event_type_code => l_event_type_code
62379 ,p_line_definition_owner_code => l_line_definition_owner_code
62380 ,p_line_definition_code => l_line_definition_code
62381 ,p_accounting_line_code => l_component_code
62382 ,p_accounting_line_type_code => l_component_type_code
62383 ,p_accounting_line_appl_id => l_component_appl_id
62384 ,p_amb_context_code => l_amb_context_code
62385 ,p_entity_code => l_entity_code
62386 ,p_event_class_code => l_event_class_code);
62387 --
62388 -- set accounting class
62389 --
62390 xla_ae_lines_pkg.SetAcctClass(
62391 p_accounting_class_code => 'INVENTORY_VALUATION'
62392 , p_ae_header_id => l_ae_header_id
62393 );
62394
62395 --
62396 -- set rounding class
62397 --
62401 --
62398 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62399 'INVENTORY_VALUATION';
62400
62402 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62403 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62404 --
62405 -- bulk performance
62406 --
62407 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62408
62409 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62410 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62411
62412 -- 4955764
62413 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62414 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62415
62416 -- 4458381 Public Sector Enh
62417
62418 --
62419 -- set accounting attributes for the line type
62420 --
62421 l_entered_amt_idx := 3;
62422 l_accted_amt_idx := 8;
62423 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62424 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62425 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
62426 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62427 l_rec_acct_attrs.array_char_value(2) := p_source_6;
62428 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62429 l_rec_acct_attrs.array_num_value(3) := p_source_3;
62430 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62431 l_rec_acct_attrs.array_char_value(4) := p_source_7;
62432 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62433 l_rec_acct_attrs.array_date_value(5) := p_source_8;
62434 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62435 l_rec_acct_attrs.array_num_value(6) := p_source_9;
62436 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62437 l_rec_acct_attrs.array_char_value(7) := p_source_10;
62438 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62439 l_rec_acct_attrs.array_num_value(8) := p_source_11;
62440
62441 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62442 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62443
62444 ---------------------------------------------------------------------------------------------------------------
62445 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62446 ---------------------------------------------------------------------------------------------------------------
62447 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62448
62449 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62450 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62451
62452 IF xla_accounting_cache_pkg.GetValueChar
62453 (p_source_code => 'LEDGER_CATEGORY_CODE'
62454 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62455 AND l_bflow_method_code = 'PRIOR_ENTRY'
62456 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62457 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62458 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62459 )
62460 THEN
62461 xla_ae_lines_pkg.BflowUpgEntry
62462 (p_business_method_code => l_bflow_method_code
62463 ,p_business_class_code => l_bflow_class_code
62464 ,p_balance_type => l_balance_type_code);
62465 ELSE
62466 NULL;
62467 -- No business flow processing for business flow method of NONE.
62468 END IF;
62469
62470 --
62471 -- call analytical criteria
62472 --
62473
62474 --
62475 -- call description
62476 --
62477 -- No description or it is inherited.
62478 --
62479 -- call ADRs
62480 -- Bug 4922099
62481 --
62482 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62483 (NVL(l_actual_upg_option, 'N') = 'O') OR
62484 (NVL(l_enc_upg_option, 'N') = 'O')
62485 )
62486 THEN
62487 NULL;
62488 --
62489 --
62490
62491 l_ccid := AcctDerRule_17(
62492 p_application_id => p_application_id
62493 , p_ae_header_id => l_ae_header_id
62494 , p_source_1 => p_source_1
62495 , p_source_2 => p_source_2
62496 , x_transaction_coa_id => l_adr_transaction_coa_id
62497 , x_accounting_coa_id => l_adr_accounting_coa_id
62498 , x_value_type_code => l_adr_value_type_code
62499 , p_side => 'NA'
62500 );
62501
62502 xla_ae_lines_pkg.set_ccid(
62503 p_code_combination_id => l_ccid
62504 , p_value_type_code => l_adr_value_type_code
62505 , p_transaction_coa_id => l_adr_transaction_coa_id
62506 , p_accounting_coa_id => l_adr_accounting_coa_id
62507 , p_adr_code => 'INV'
62508 , p_adr_type_code => 'S'
62509 , p_component_type => l_component_type
62510 , p_component_code => l_component_code
62514 , p_side => 'NA'
62511 , p_component_type_code => l_component_type_code
62512 , p_component_appl_id => l_component_appl_id
62513 , p_amb_context_code => l_amb_context_code
62515 );
62516
62517
62518 --
62519 --
62520 END IF;
62521 --
62522 -- Bug 4922099
62523 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62524 (NVL(l_enc_upg_option, 'N') = 'O')
62525 ) AND
62526 (l_bflow_method_code = 'PRIOR_ENTRY')
62527 )
62528 THEN
62529 IF
62530 --
62531 1 = 2
62532 --
62533 THEN
62534 xla_accounting_err_pkg.build_message
62535 (p_appli_s_name => 'XLA'
62536 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62537 ,p_token_1 => 'LINE_NUMBER'
62538 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
62539 ,p_token_2 => 'LINE_TYPE_NAME'
62540 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
62541 l_component_type
62542 ,l_component_code
62543 ,l_component_type_code
62544 ,l_component_appl_id
62545 ,l_amb_context_code
62546 ,l_entity_code
62547 ,l_event_class_code
62548 )
62549 ,p_token_3 => 'OWNER'
62550 ,p_value_3 => xla_lookups_pkg.get_meaning(
62551 p_lookup_type => 'XLA_OWNER_TYPE'
62552 ,p_lookup_code => l_component_type_code
62553 )
62554 ,p_token_4 => 'PRODUCT_NAME'
62555 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62556 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62557 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62558 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62559 ,p_ae_header_id => NULL
62560 );
62561
62562 IF (C_LEVEL_ERROR>= g_log_level) THEN
62563 trace
62564 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62565 ,p_level => C_LEVEL_ERROR
62566 ,p_module => l_log_module);
62567 END IF;
62568 END IF;
62569 END IF;
62570 --
62571 --
62572 ------------------------------------------------------------------------------------------------
62573 -- 4219869 Business Flow
62574 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62575 -- Prior Entry. Currently, the following code is always generated.
62576 ------------------------------------------------------------------------------------------------
62577 XLA_AE_LINES_PKG.ValidateCurrentLine;
62578
62579 ------------------------------------------------------------------------------------
62580 -- 4219869 Business Flow
62581 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62582 ------------------------------------------------------------------------------------
62583 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62584
62585 ----------------------------------------------------------------------------------
62586 -- 4219869 Business Flow
62587 -- Update journal entry status -- Need to generate this within IF <condition>
62588 ----------------------------------------------------------------------------------
62589 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62590 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62591 ,p_balance_type_code => l_balance_type_code
62592 );
62593
62594 -------------------------------------------------------------------------------------------
62595 -- 4262811 - Generate the Accrual Reversal lines
62596 -------------------------------------------------------------------------------------------
62597 BEGIN
62598 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62599 (g_array_event(p_event_id).array_value_num('header_index'));
62600 IF l_acc_rev_flag IS NULL THEN
62601 l_acc_rev_flag := 'N';
62602 END IF;
62603 EXCEPTION
62604 WHEN OTHERS THEN
62605 l_acc_rev_flag := 'N';
62606 END;
62607 --
62608 IF (l_acc_rev_flag = 'Y') THEN
62609
62613 ------------------------------------------------------------------------------------------
62610 -- 4645092 ------------------------------------------------------------------------------
62611 -- To allow MPA report to determine if it should generate report process
62612 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62614
62615 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62616 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62617 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
62618 -- call ADRs
62619 -- Bug 4922099
62620 --
62621 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62622 (NVL(l_actual_upg_option, 'N') = 'O') OR
62623 (NVL(l_enc_upg_option, 'N') = 'O')
62624 )
62625 THEN
62626 NULL;
62627 --
62628 --
62629
62630 l_ccid := AcctDerRule_17(
62631 p_application_id => p_application_id
62632 , p_ae_header_id => l_ae_header_id
62633 , p_source_1 => p_source_1
62634 , p_source_2 => p_source_2
62635 , x_transaction_coa_id => l_adr_transaction_coa_id
62636 , x_accounting_coa_id => l_adr_accounting_coa_id
62637 , x_value_type_code => l_adr_value_type_code
62638 , p_side => 'NA'
62639 );
62640
62641 xla_ae_lines_pkg.set_ccid(
62642 p_code_combination_id => l_ccid
62643 , p_value_type_code => l_adr_value_type_code
62644 , p_transaction_coa_id => l_adr_transaction_coa_id
62645 , p_accounting_coa_id => l_adr_accounting_coa_id
62646 , p_adr_code => 'INV'
62647 , p_adr_type_code => 'S'
62648 , p_component_type => l_component_type
62649 , p_component_code => l_component_code
62650 , p_component_type_code => l_component_type_code
62651 , p_component_appl_id => l_component_appl_id
62652 , p_amb_context_code => l_amb_context_code
62653 , p_side => 'NA'
62654 );
62655
62656
62657 --
62658 --
62659 END IF;
62660
62661 --
62662 -- Update the line information that should be overwritten
62663 --
62664 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62665 p_header_num => 1);
62666 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
62667
62668 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62669
62670 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
62671 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62672 END IF;
62673
62674 --
62675 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62676 --
62677 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62678 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
62679 ELSE
62680 ---------------------------------------------------------------------------------------------------
62681 -- 4262811a Switch Sign
62682 ---------------------------------------------------------------------------------------------------
62683 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
62684 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62685 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62686 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62687 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62688 -- 5132302
62689 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62690 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62691
62692 END IF;
62693
62694 -- 4955764
62695 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62696 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62697
62698
62699 XLA_AE_LINES_PKG.ValidateCurrentLine;
62700 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62701
62702 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62703 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62704 ,p_balance_type_code => l_balance_type_code);
62705
62706 END IF;
62707
62708 -----------------------------------------------------------------------------------------
62709 -- 4262811 Multiperiod Accounting
62710 -----------------------------------------------------------------------------------------
62711 -- No MPA option is assigned.
62712
62713
62714 END IF;
62715 END IF;
62716 --
62717
62718 --
62719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62720 trace
62721 (p_msg => 'END of AcctLineType_145'
62722 ,p_level => C_LEVEL_PROCEDURE
62723 ,p_module => l_log_module);
62724 END IF;
62725 --
62726 EXCEPTION
62730 xla_exceptions_pkg.raise_message
62727 WHEN xla_exceptions_pkg.application_exception THEN
62728 RAISE;
62729 WHEN OTHERS THEN
62731 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_145');
62732 END AcctLineType_145;
62733 --
62734
62735 ---------------------------------------
62736 --
62737 -- PRIVATE FUNCTION
62738 -- AcctLineType_146
62739 --
62740 ---------------------------------------
62741 PROCEDURE AcctLineType_146 (
62742 p_application_id IN NUMBER
62743 ,p_event_id IN NUMBER
62744 ,p_calculate_acctd_flag IN VARCHAR2
62745 ,p_calculate_g_l_flag IN VARCHAR2
62746 ,p_actual_flag IN OUT VARCHAR2
62747 ,p_balance_type_code OUT VARCHAR2
62748 ,p_gain_or_loss_ref OUT VARCHAR2
62749
62750 --Transaction Account
62751 , p_source_1 IN NUMBER
62752 --Journal Line Type
62753 , p_source_2 IN VARCHAR2
62754 --Entered Amount
62755 , p_source_3 IN NUMBER
62756 --First Distribution Identifier
62757 , p_source_5 IN NUMBER
62758 --Distribution Type
62759 , p_source_6 IN VARCHAR2
62760 --Currency Code
62761 , p_source_7 IN VARCHAR2
62762 --Currency Conversion Date
62763 , p_source_8 IN DATE
62764 --Currency Conversion Rate
62765 , p_source_9 IN NUMBER
62766 --Currency Conversion Type
62767 , p_source_10 IN VARCHAR2
62768 --Accounted Amount
62769 , p_source_11 IN NUMBER
62770 )
62771 IS
62772
62773 l_component_type VARCHAR2(80);
62774 l_component_code VARCHAR2(30);
62775 l_component_type_code VARCHAR2(1);
62776 l_component_appl_id INTEGER;
62777 l_amb_context_code VARCHAR2(30);
62778 l_entity_code VARCHAR2(30);
62779 l_event_class_code VARCHAR2(30);
62780 l_ae_header_id NUMBER;
62781 l_event_type_code VARCHAR2(30);
62782 l_line_definition_code VARCHAR2(30);
62783 l_line_definition_owner_code VARCHAR2(1);
62784 --
62785 -- adr variables
62786 l_segment VARCHAR2(30);
62787 l_ccid NUMBER;
62788 l_adr_transaction_coa_id NUMBER;
62789 l_adr_accounting_coa_id NUMBER;
62790 l_adr_flexfield_segment_code VARCHAR2(30);
62791 l_adr_flex_value_set_id NUMBER;
62792 l_adr_value_type_code VARCHAR2(30);
62793 l_adr_value_combination_id NUMBER;
62794 l_adr_value_segment_code VARCHAR2(30);
62795
62796 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
62797 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
62798 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
62799 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
62800
62801 -- 4262811 Variables ------------------------------------------------------------------------------------------
62802 l_entered_amt_idx NUMBER;
62803 l_accted_amt_idx NUMBER;
62804 l_acc_rev_flag VARCHAR2(1);
62805 l_accrual_line_num NUMBER;
62806 l_tmp_amt NUMBER;
62807 l_acc_rev_natural_side_code VARCHAR2(1);
62808
62809 l_num_entries NUMBER;
62810 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
62811 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
62812 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
62813 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
62814 l_recog_line_1 NUMBER;
62815 l_recog_line_2 NUMBER;
62816
62817 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
62818 l_bflow_applied_to_amt NUMBER; -- 5132302
62819 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
62820
62821 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62822
62823 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
62824 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
62825
62826 ---------------------------------------------------------------------------------------------------------------
62827
62828
62829 --
62830 -- bulk performance
62831 --
62832 l_balance_type_code VARCHAR2(1);
62833 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
62834 l_log_module VARCHAR2(240);
62835
62836 --
62837 -- Upgrade strategy
62838 --
62839 l_actual_upg_option VARCHAR2(1);
62840 l_enc_upg_option VARCHAR2(1);
62841
62842 --
62843 BEGIN
62844 --
62845 IF g_log_enabled THEN
62846 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_146';
62847 END IF;
62848 --
62849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62850
62851 trace
62852 (p_msg => 'BEGIN of AcctLineType_146'
62853 ,p_level => C_LEVEL_PROCEDURE
62854 ,p_module => l_log_module);
62855
62856 END IF;
62857 --
62858 l_component_type := 'AMB_JLT';
62859 l_component_code := 'INV';
62860 l_component_type_code := 'S';
62861 l_component_appl_id := 555;
62862 l_amb_context_code := 'DEFAULT';
62866 l_line_definition_owner_code := 'S';
62863 l_entity_code := 'REVALUATION';
62864 l_event_class_code := 'COSTREVAL';
62865 l_event_type_code := 'COSTREVAL';
62867 l_line_definition_code := 'COSTREVAL';
62868 --
62869 l_balance_type_code := 'A';
62870 l_segment := NULL;
62871 l_ccid := NULL;
62872 l_adr_transaction_coa_id := NULL;
62873 l_adr_accounting_coa_id := NULL;
62874 l_adr_flexfield_segment_code := NULL;
62875 l_adr_flex_value_set_id := NULL;
62876 l_adr_value_type_code := NULL;
62877 l_adr_value_combination_id := NULL;
62878 l_adr_value_segment_code := NULL;
62879
62880 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
62881 l_bflow_class_code := ''; -- 4219869 Business Flow
62882 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
62883 l_budgetary_control_flag := 'N';
62884
62885 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62886 l_bflow_applied_to_amt := NULL; -- 5132302
62887 l_entered_amt_idx := NULL; -- 4262811
62888 l_accted_amt_idx := NULL; -- 4262811
62889 l_acc_rev_flag := NULL; -- 4262811
62890 l_accrual_line_num := NULL; -- 4262811
62891 l_tmp_amt := NULL; -- 4262811
62892 --
62893
62894 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62895 l_balance_type_code <> 'B' THEN
62896 IF NVL(p_source_2,'
62897 ') = 'INV'
62898 THEN
62899
62900 --
62901 XLA_AE_LINES_PKG.SetNewLine;
62902
62903 p_balance_type_code := l_balance_type_code;
62904 -- set the flag so later we will know whether the gain loss line needs to be created
62905
62906 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62907 p_actual_flag :='A';
62908 END IF;
62909
62910 --
62911 -- bulk performance
62912 --
62913 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62914 p_header_num => 0); -- 4262811
62915 --
62916 -- set accounting line options
62917 --
62918 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62919 p_natural_side_code => 'D'
62920 , p_gain_or_loss_flag => 'N'
62921 , p_gl_transfer_mode_code => 'D'
62922 , p_acct_entry_type_code => 'A'
62923 , p_switch_side_flag => 'Y'
62924 , p_merge_duplicate_code => 'W'
62925 );
62926 --
62927 l_acc_rev_natural_side_code := 'C'; -- 4262811
62928 --
62929 --
62930 -- set accounting line type info
62931 --
62932 xla_ae_lines_pkg.SetAcctLineType
62933 (p_component_type => l_component_type
62934 ,p_event_type_code => l_event_type_code
62935 ,p_line_definition_owner_code => l_line_definition_owner_code
62936 ,p_line_definition_code => l_line_definition_code
62937 ,p_accounting_line_code => l_component_code
62938 ,p_accounting_line_type_code => l_component_type_code
62939 ,p_accounting_line_appl_id => l_component_appl_id
62940 ,p_amb_context_code => l_amb_context_code
62941 ,p_entity_code => l_entity_code
62942 ,p_event_class_code => l_event_class_code);
62943 --
62944 -- set accounting class
62945 --
62946 xla_ae_lines_pkg.SetAcctClass(
62947 p_accounting_class_code => 'INVENTORY_VALUATION'
62948 , p_ae_header_id => l_ae_header_id
62949 );
62950
62951 --
62952 -- set rounding class
62953 --
62954 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62955 'INVENTORY_VALUATION';
62956
62957 --
62958 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62959 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62960 --
62961 -- bulk performance
62962 --
62963 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62964
62965 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62966 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62967
62968 -- 4955764
62969 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62970 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62971
62972 -- 4458381 Public Sector Enh
62973
62974 --
62975 -- set accounting attributes for the line type
62976 --
62977 l_entered_amt_idx := 3;
62978 l_accted_amt_idx := 8;
62979 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62980 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62981 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
62982 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62983 l_rec_acct_attrs.array_char_value(2) := p_source_6;
62984 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62985 l_rec_acct_attrs.array_num_value(3) := p_source_3;
62989 l_rec_acct_attrs.array_date_value(5) := p_source_8;
62986 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62987 l_rec_acct_attrs.array_char_value(4) := p_source_7;
62988 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62990 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62991 l_rec_acct_attrs.array_num_value(6) := p_source_9;
62992 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62993 l_rec_acct_attrs.array_char_value(7) := p_source_10;
62994 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62995 l_rec_acct_attrs.array_num_value(8) := p_source_11;
62996
62997 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62998 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62999
63000 ---------------------------------------------------------------------------------------------------------------
63001 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63002 ---------------------------------------------------------------------------------------------------------------
63003 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63004
63005 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63006 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63007
63008 IF xla_accounting_cache_pkg.GetValueChar
63009 (p_source_code => 'LEDGER_CATEGORY_CODE'
63010 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63011 AND l_bflow_method_code = 'PRIOR_ENTRY'
63012 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63013 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63014 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63015 )
63016 THEN
63017 xla_ae_lines_pkg.BflowUpgEntry
63018 (p_business_method_code => l_bflow_method_code
63019 ,p_business_class_code => l_bflow_class_code
63020 ,p_balance_type => l_balance_type_code);
63021 ELSE
63022 NULL;
63023 -- No business flow processing for business flow method of NONE.
63024 END IF;
63025
63026 --
63027 -- call analytical criteria
63028 --
63029
63030 --
63031 -- call description
63032 --
63033 -- No description or it is inherited.
63034 --
63035 -- call ADRs
63036 -- Bug 4922099
63037 --
63038 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63039 (NVL(l_actual_upg_option, 'N') = 'O') OR
63040 (NVL(l_enc_upg_option, 'N') = 'O')
63041 )
63042 THEN
63043 NULL;
63044 --
63045 --
63046
63047 l_ccid := AcctDerRule_17(
63048 p_application_id => p_application_id
63049 , p_ae_header_id => l_ae_header_id
63050 , p_source_1 => p_source_1
63051 , p_source_2 => p_source_2
63052 , x_transaction_coa_id => l_adr_transaction_coa_id
63053 , x_accounting_coa_id => l_adr_accounting_coa_id
63054 , x_value_type_code => l_adr_value_type_code
63055 , p_side => 'NA'
63056 );
63057
63058 xla_ae_lines_pkg.set_ccid(
63059 p_code_combination_id => l_ccid
63060 , p_value_type_code => l_adr_value_type_code
63061 , p_transaction_coa_id => l_adr_transaction_coa_id
63062 , p_accounting_coa_id => l_adr_accounting_coa_id
63063 , p_adr_code => 'INV'
63064 , p_adr_type_code => 'S'
63065 , p_component_type => l_component_type
63066 , p_component_code => l_component_code
63067 , p_component_type_code => l_component_type_code
63068 , p_component_appl_id => l_component_appl_id
63069 , p_amb_context_code => l_amb_context_code
63070 , p_side => 'NA'
63071 );
63072
63073
63074 --
63075 --
63076 END IF;
63077 --
63078 -- Bug 4922099
63079 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63080 (NVL(l_enc_upg_option, 'N') = 'O')
63081 ) AND
63082 (l_bflow_method_code = 'PRIOR_ENTRY')
63083 )
63084 THEN
63085 IF
63086 --
63087 1 = 2
63088 --
63089 THEN
63090 xla_accounting_err_pkg.build_message
63091 (p_appli_s_name => 'XLA'
63092 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63093 ,p_token_1 => 'LINE_NUMBER'
63094 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
63095 ,p_token_2 => 'LINE_TYPE_NAME'
63096 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
63097 l_component_type
63098 ,l_component_code
63099 ,l_component_type_code
63100 ,l_component_appl_id
63104 )
63101 ,l_amb_context_code
63102 ,l_entity_code
63103 ,l_event_class_code
63105 ,p_token_3 => 'OWNER'
63106 ,p_value_3 => xla_lookups_pkg.get_meaning(
63107 p_lookup_type => 'XLA_OWNER_TYPE'
63108 ,p_lookup_code => l_component_type_code
63109 )
63110 ,p_token_4 => 'PRODUCT_NAME'
63111 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63112 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63113 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63114 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63115 ,p_ae_header_id => NULL
63116 );
63117
63118 IF (C_LEVEL_ERROR>= g_log_level) THEN
63119 trace
63120 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63121 ,p_level => C_LEVEL_ERROR
63122 ,p_module => l_log_module);
63123 END IF;
63124 END IF;
63125 END IF;
63126 --
63127 --
63128 ------------------------------------------------------------------------------------------------
63129 -- 4219869 Business Flow
63130 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63131 -- Prior Entry. Currently, the following code is always generated.
63132 ------------------------------------------------------------------------------------------------
63133 XLA_AE_LINES_PKG.ValidateCurrentLine;
63134
63135 ------------------------------------------------------------------------------------
63136 -- 4219869 Business Flow
63137 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63138 ------------------------------------------------------------------------------------
63139 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63140
63141 ----------------------------------------------------------------------------------
63142 -- 4219869 Business Flow
63143 -- Update journal entry status -- Need to generate this within IF <condition>
63144 ----------------------------------------------------------------------------------
63145 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63146 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63147 ,p_balance_type_code => l_balance_type_code
63148 );
63149
63150 -------------------------------------------------------------------------------------------
63151 -- 4262811 - Generate the Accrual Reversal lines
63152 -------------------------------------------------------------------------------------------
63153 BEGIN
63154 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63155 (g_array_event(p_event_id).array_value_num('header_index'));
63156 IF l_acc_rev_flag IS NULL THEN
63157 l_acc_rev_flag := 'N';
63158 END IF;
63159 EXCEPTION
63160 WHEN OTHERS THEN
63161 l_acc_rev_flag := 'N';
63162 END;
63163 --
63164 IF (l_acc_rev_flag = 'Y') THEN
63165
63166 -- 4645092 ------------------------------------------------------------------------------
63167 -- To allow MPA report to determine if it should generate report process
63168 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63169 ------------------------------------------------------------------------------------------
63170
63171 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63172 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63173 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
63174 -- call ADRs
63175 -- Bug 4922099
63176 --
63177 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63178 (NVL(l_actual_upg_option, 'N') = 'O') OR
63179 (NVL(l_enc_upg_option, 'N') = 'O')
63180 )
63181 THEN
63182 NULL;
63183 --
63184 --
63185
63186 l_ccid := AcctDerRule_17(
63187 p_application_id => p_application_id
63188 , p_ae_header_id => l_ae_header_id
63189 , p_source_1 => p_source_1
63190 , p_source_2 => p_source_2
63191 , x_transaction_coa_id => l_adr_transaction_coa_id
63192 , x_accounting_coa_id => l_adr_accounting_coa_id
63193 , x_value_type_code => l_adr_value_type_code
63194 , p_side => 'NA'
63195 );
63196
63197 xla_ae_lines_pkg.set_ccid(
63198 p_code_combination_id => l_ccid
63199 , p_value_type_code => l_adr_value_type_code
63200 , p_transaction_coa_id => l_adr_transaction_coa_id
63204 , p_component_type => l_component_type
63201 , p_accounting_coa_id => l_adr_accounting_coa_id
63202 , p_adr_code => 'INV'
63203 , p_adr_type_code => 'S'
63205 , p_component_code => l_component_code
63206 , p_component_type_code => l_component_type_code
63207 , p_component_appl_id => l_component_appl_id
63208 , p_amb_context_code => l_amb_context_code
63209 , p_side => 'NA'
63210 );
63211
63212
63213 --
63214 --
63215 END IF;
63216
63217 --
63218 -- Update the line information that should be overwritten
63219 --
63220 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63221 p_header_num => 1);
63222 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
63223
63224 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63225
63226 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
63227 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63228 END IF;
63229
63230 --
63231 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63232 --
63233 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63234 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
63235 ELSE
63236 ---------------------------------------------------------------------------------------------------
63237 -- 4262811a Switch Sign
63238 ---------------------------------------------------------------------------------------------------
63239 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
63240 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63241 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63242 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63243 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63244 -- 5132302
63245 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63246 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63247
63248 END IF;
63249
63250 -- 4955764
63251 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63252 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63253
63254
63255 XLA_AE_LINES_PKG.ValidateCurrentLine;
63256 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63257
63258 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63259 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63260 ,p_balance_type_code => l_balance_type_code);
63261
63262 END IF;
63263
63264 -----------------------------------------------------------------------------------------
63265 -- 4262811 Multiperiod Accounting
63266 -----------------------------------------------------------------------------------------
63267 -- No MPA option is assigned.
63268
63269
63270 END IF;
63271 END IF;
63272 --
63273
63274 --
63275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63276 trace
63277 (p_msg => 'END of AcctLineType_146'
63278 ,p_level => C_LEVEL_PROCEDURE
63279 ,p_module => l_log_module);
63280 END IF;
63281 --
63282 EXCEPTION
63283 WHEN xla_exceptions_pkg.application_exception THEN
63284 RAISE;
63285 WHEN OTHERS THEN
63286 xla_exceptions_pkg.raise_message
63287 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_146');
63288 END AcctLineType_146;
63289 --
63290
63291 ---------------------------------------
63292 --
63293 -- PRIVATE FUNCTION
63294 -- AcctLineType_147
63295 --
63296 ---------------------------------------
63297 PROCEDURE AcctLineType_147 (
63298 p_application_id IN NUMBER
63299 ,p_event_id IN NUMBER
63300 ,p_calculate_acctd_flag IN VARCHAR2
63301 ,p_calculate_g_l_flag IN VARCHAR2
63302 ,p_actual_flag IN OUT VARCHAR2
63303 ,p_balance_type_code OUT VARCHAR2
63304 ,p_gain_or_loss_ref OUT VARCHAR2
63305
63306 --Transaction Account
63307 , p_source_1 IN NUMBER
63308 --Journal Line Type
63309 , p_source_2 IN VARCHAR2
63310 --Entered Amount
63311 , p_source_3 IN NUMBER
63312 --First Distribution Identifier
63313 , p_source_5 IN NUMBER
63314 --Distribution Type
63315 , p_source_6 IN VARCHAR2
63316 --Currency Code
63317 , p_source_7 IN VARCHAR2
63318 --Currency Conversion Date
63319 , p_source_8 IN DATE
63320 --Currency Conversion Rate
63321 , p_source_9 IN NUMBER
63322 --Currency Conversion Type
63323 , p_source_10 IN VARCHAR2
63324 --Accounted Amount
63328
63325 , p_source_11 IN NUMBER
63326 )
63327 IS
63329 l_component_type VARCHAR2(80);
63330 l_component_code VARCHAR2(30);
63331 l_component_type_code VARCHAR2(1);
63332 l_component_appl_id INTEGER;
63333 l_amb_context_code VARCHAR2(30);
63334 l_entity_code VARCHAR2(30);
63335 l_event_class_code VARCHAR2(30);
63336 l_ae_header_id NUMBER;
63337 l_event_type_code VARCHAR2(30);
63338 l_line_definition_code VARCHAR2(30);
63339 l_line_definition_owner_code VARCHAR2(1);
63340 --
63341 -- adr variables
63342 l_segment VARCHAR2(30);
63343 l_ccid NUMBER;
63344 l_adr_transaction_coa_id NUMBER;
63345 l_adr_accounting_coa_id NUMBER;
63346 l_adr_flexfield_segment_code VARCHAR2(30);
63347 l_adr_flex_value_set_id NUMBER;
63348 l_adr_value_type_code VARCHAR2(30);
63349 l_adr_value_combination_id NUMBER;
63350 l_adr_value_segment_code VARCHAR2(30);
63351
63352 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
63353 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
63354 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
63355 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
63356
63357 -- 4262811 Variables ------------------------------------------------------------------------------------------
63358 l_entered_amt_idx NUMBER;
63359 l_accted_amt_idx NUMBER;
63360 l_acc_rev_flag VARCHAR2(1);
63361 l_accrual_line_num NUMBER;
63362 l_tmp_amt NUMBER;
63363 l_acc_rev_natural_side_code VARCHAR2(1);
63364
63365 l_num_entries NUMBER;
63366 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
63367 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
63368 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
63369 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
63370 l_recog_line_1 NUMBER;
63371 l_recog_line_2 NUMBER;
63372
63373 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
63374 l_bflow_applied_to_amt NUMBER; -- 5132302
63375 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
63376
63377 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63378
63379 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
63380 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
63381
63382 ---------------------------------------------------------------------------------------------------------------
63383
63384
63385 --
63386 -- bulk performance
63387 --
63388 l_balance_type_code VARCHAR2(1);
63389 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
63390 l_log_module VARCHAR2(240);
63391
63392 --
63393 -- Upgrade strategy
63394 --
63395 l_actual_upg_option VARCHAR2(1);
63396 l_enc_upg_option VARCHAR2(1);
63397
63398 --
63399 BEGIN
63400 --
63401 IF g_log_enabled THEN
63402 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_147';
63403 END IF;
63404 --
63405 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63406
63407 trace
63408 (p_msg => 'BEGIN of AcctLineType_147'
63409 ,p_level => C_LEVEL_PROCEDURE
63410 ,p_module => l_log_module);
63411
63412 END IF;
63413 --
63414 l_component_type := 'AMB_JLT';
63415 l_component_code := 'INV';
63416 l_component_type_code := 'S';
63417 l_component_appl_id := 555;
63418 l_amb_context_code := 'DEFAULT';
63419 l_entity_code := 'INVENTORY';
63420 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
63421 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
63422 l_line_definition_owner_code := 'S';
63423 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
63424 --
63425 l_balance_type_code := 'A';
63426 l_segment := NULL;
63427 l_ccid := NULL;
63428 l_adr_transaction_coa_id := NULL;
63429 l_adr_accounting_coa_id := NULL;
63430 l_adr_flexfield_segment_code := NULL;
63431 l_adr_flex_value_set_id := NULL;
63432 l_adr_value_type_code := NULL;
63433 l_adr_value_combination_id := NULL;
63434 l_adr_value_segment_code := NULL;
63435
63436 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
63437 l_bflow_class_code := ''; -- 4219869 Business Flow
63438 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
63439 l_budgetary_control_flag := 'N';
63440
63441 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63442 l_bflow_applied_to_amt := NULL; -- 5132302
63443 l_entered_amt_idx := NULL; -- 4262811
63444 l_accted_amt_idx := NULL; -- 4262811
63445 l_acc_rev_flag := NULL; -- 4262811
63446 l_accrual_line_num := NULL; -- 4262811
63447 l_tmp_amt := NULL; -- 4262811
63448 --
63449
63453 ') = 'INV'
63450 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63451 l_balance_type_code <> 'B' THEN
63452 IF NVL(p_source_2,'
63454 THEN
63455
63456 --
63457 XLA_AE_LINES_PKG.SetNewLine;
63458
63459 p_balance_type_code := l_balance_type_code;
63460 -- set the flag so later we will know whether the gain loss line needs to be created
63461
63462 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63463 p_actual_flag :='A';
63464 END IF;
63465
63466 --
63467 -- bulk performance
63468 --
63469 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63470 p_header_num => 0); -- 4262811
63471 --
63472 -- set accounting line options
63473 --
63474 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63475 p_natural_side_code => 'D'
63476 , p_gain_or_loss_flag => 'N'
63477 , p_gl_transfer_mode_code => 'D'
63478 , p_acct_entry_type_code => 'A'
63479 , p_switch_side_flag => 'Y'
63480 , p_merge_duplicate_code => 'W'
63481 );
63482 --
63483 l_acc_rev_natural_side_code := 'C'; -- 4262811
63484 --
63485 --
63486 -- set accounting line type info
63487 --
63488 xla_ae_lines_pkg.SetAcctLineType
63489 (p_component_type => l_component_type
63490 ,p_event_type_code => l_event_type_code
63491 ,p_line_definition_owner_code => l_line_definition_owner_code
63492 ,p_line_definition_code => l_line_definition_code
63493 ,p_accounting_line_code => l_component_code
63494 ,p_accounting_line_type_code => l_component_type_code
63495 ,p_accounting_line_appl_id => l_component_appl_id
63496 ,p_amb_context_code => l_amb_context_code
63497 ,p_entity_code => l_entity_code
63498 ,p_event_class_code => l_event_class_code);
63499 --
63500 -- set accounting class
63501 --
63502 xla_ae_lines_pkg.SetAcctClass(
63503 p_accounting_class_code => 'INVENTORY_VALUATION'
63504 , p_ae_header_id => l_ae_header_id
63505 );
63506
63507 --
63508 -- set rounding class
63509 --
63510 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63511 'INVENTORY_VALUATION';
63512
63513 --
63514 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63515 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63516 --
63517 -- bulk performance
63518 --
63519 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63520
63521 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63522 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63523
63524 -- 4955764
63525 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63526 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63527
63528 -- 4458381 Public Sector Enh
63529
63530 --
63531 -- set accounting attributes for the line type
63532 --
63533 l_entered_amt_idx := 3;
63534 l_accted_amt_idx := 8;
63535 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63536 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63537 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
63538 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63539 l_rec_acct_attrs.array_char_value(2) := p_source_6;
63540 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63541 l_rec_acct_attrs.array_num_value(3) := p_source_3;
63542 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63543 l_rec_acct_attrs.array_char_value(4) := p_source_7;
63544 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63545 l_rec_acct_attrs.array_date_value(5) := p_source_8;
63546 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63547 l_rec_acct_attrs.array_num_value(6) := p_source_9;
63548 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63549 l_rec_acct_attrs.array_char_value(7) := p_source_10;
63550 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63551 l_rec_acct_attrs.array_num_value(8) := p_source_11;
63552
63553 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63554 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63555
63556 ---------------------------------------------------------------------------------------------------------------
63557 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63558 ---------------------------------------------------------------------------------------------------------------
63559 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63560
63561 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63562 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63563
63564 IF xla_accounting_cache_pkg.GetValueChar
63568 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63565 (p_source_code => 'LEDGER_CATEGORY_CODE'
63566 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63567 AND l_bflow_method_code = 'PRIOR_ENTRY'
63569 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63570 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63571 )
63572 THEN
63573 xla_ae_lines_pkg.BflowUpgEntry
63574 (p_business_method_code => l_bflow_method_code
63575 ,p_business_class_code => l_bflow_class_code
63576 ,p_balance_type => l_balance_type_code);
63577 ELSE
63578 NULL;
63579 -- No business flow processing for business flow method of NONE.
63580 END IF;
63581
63582 --
63583 -- call analytical criteria
63584 --
63585
63586 --
63587 -- call description
63588 --
63589 -- No description or it is inherited.
63590 --
63591 -- call ADRs
63592 -- Bug 4922099
63593 --
63594 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63595 (NVL(l_actual_upg_option, 'N') = 'O') OR
63596 (NVL(l_enc_upg_option, 'N') = 'O')
63597 )
63598 THEN
63599 NULL;
63600 --
63601 --
63602
63603 l_ccid := AcctDerRule_17(
63604 p_application_id => p_application_id
63605 , p_ae_header_id => l_ae_header_id
63606 , p_source_1 => p_source_1
63607 , p_source_2 => p_source_2
63608 , x_transaction_coa_id => l_adr_transaction_coa_id
63609 , x_accounting_coa_id => l_adr_accounting_coa_id
63610 , x_value_type_code => l_adr_value_type_code
63611 , p_side => 'NA'
63612 );
63613
63614 xla_ae_lines_pkg.set_ccid(
63615 p_code_combination_id => l_ccid
63616 , p_value_type_code => l_adr_value_type_code
63617 , p_transaction_coa_id => l_adr_transaction_coa_id
63618 , p_accounting_coa_id => l_adr_accounting_coa_id
63619 , p_adr_code => 'INV'
63620 , p_adr_type_code => 'S'
63621 , p_component_type => l_component_type
63622 , p_component_code => l_component_code
63623 , p_component_type_code => l_component_type_code
63624 , p_component_appl_id => l_component_appl_id
63625 , p_amb_context_code => l_amb_context_code
63626 , p_side => 'NA'
63627 );
63628
63629
63630 --
63631 --
63632 END IF;
63633 --
63634 -- Bug 4922099
63635 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63636 (NVL(l_enc_upg_option, 'N') = 'O')
63637 ) AND
63638 (l_bflow_method_code = 'PRIOR_ENTRY')
63639 )
63640 THEN
63641 IF
63642 --
63643 1 = 2
63644 --
63645 THEN
63646 xla_accounting_err_pkg.build_message
63647 (p_appli_s_name => 'XLA'
63648 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63649 ,p_token_1 => 'LINE_NUMBER'
63650 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
63651 ,p_token_2 => 'LINE_TYPE_NAME'
63652 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
63653 l_component_type
63654 ,l_component_code
63655 ,l_component_type_code
63656 ,l_component_appl_id
63657 ,l_amb_context_code
63658 ,l_entity_code
63659 ,l_event_class_code
63660 )
63661 ,p_token_3 => 'OWNER'
63662 ,p_value_3 => xla_lookups_pkg.get_meaning(
63663 p_lookup_type => 'XLA_OWNER_TYPE'
63664 ,p_lookup_code => l_component_type_code
63665 )
63666 ,p_token_4 => 'PRODUCT_NAME'
63667 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63668 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63669 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63670 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63671 ,p_ae_header_id => NULL
63672 );
63673
63674 IF (C_LEVEL_ERROR>= g_log_level) THEN
63675 trace
63679 END IF;
63676 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63677 ,p_level => C_LEVEL_ERROR
63678 ,p_module => l_log_module);
63680 END IF;
63681 END IF;
63682 --
63683 --
63684 ------------------------------------------------------------------------------------------------
63685 -- 4219869 Business Flow
63686 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63687 -- Prior Entry. Currently, the following code is always generated.
63688 ------------------------------------------------------------------------------------------------
63689 XLA_AE_LINES_PKG.ValidateCurrentLine;
63690
63691 ------------------------------------------------------------------------------------
63692 -- 4219869 Business Flow
63693 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63694 ------------------------------------------------------------------------------------
63695 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63696
63697 ----------------------------------------------------------------------------------
63698 -- 4219869 Business Flow
63699 -- Update journal entry status -- Need to generate this within IF <condition>
63700 ----------------------------------------------------------------------------------
63701 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63702 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63703 ,p_balance_type_code => l_balance_type_code
63704 );
63705
63706 -------------------------------------------------------------------------------------------
63707 -- 4262811 - Generate the Accrual Reversal lines
63708 -------------------------------------------------------------------------------------------
63709 BEGIN
63710 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63711 (g_array_event(p_event_id).array_value_num('header_index'));
63712 IF l_acc_rev_flag IS NULL THEN
63713 l_acc_rev_flag := 'N';
63714 END IF;
63715 EXCEPTION
63716 WHEN OTHERS THEN
63717 l_acc_rev_flag := 'N';
63718 END;
63719 --
63720 IF (l_acc_rev_flag = 'Y') THEN
63721
63722 -- 4645092 ------------------------------------------------------------------------------
63723 -- To allow MPA report to determine if it should generate report process
63724 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63725 ------------------------------------------------------------------------------------------
63726
63727 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63728 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63729 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
63730 -- call ADRs
63731 -- Bug 4922099
63732 --
63733 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63734 (NVL(l_actual_upg_option, 'N') = 'O') OR
63735 (NVL(l_enc_upg_option, 'N') = 'O')
63736 )
63737 THEN
63738 NULL;
63739 --
63740 --
63741
63742 l_ccid := AcctDerRule_17(
63743 p_application_id => p_application_id
63744 , p_ae_header_id => l_ae_header_id
63745 , p_source_1 => p_source_1
63746 , p_source_2 => p_source_2
63747 , x_transaction_coa_id => l_adr_transaction_coa_id
63748 , x_accounting_coa_id => l_adr_accounting_coa_id
63749 , x_value_type_code => l_adr_value_type_code
63750 , p_side => 'NA'
63751 );
63752
63753 xla_ae_lines_pkg.set_ccid(
63754 p_code_combination_id => l_ccid
63755 , p_value_type_code => l_adr_value_type_code
63756 , p_transaction_coa_id => l_adr_transaction_coa_id
63757 , p_accounting_coa_id => l_adr_accounting_coa_id
63758 , p_adr_code => 'INV'
63759 , p_adr_type_code => 'S'
63760 , p_component_type => l_component_type
63761 , p_component_code => l_component_code
63762 , p_component_type_code => l_component_type_code
63763 , p_component_appl_id => l_component_appl_id
63764 , p_amb_context_code => l_amb_context_code
63765 , p_side => 'NA'
63766 );
63767
63768
63769 --
63770 --
63771 END IF;
63772
63773 --
63774 -- Update the line information that should be overwritten
63775 --
63776 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63777 p_header_num => 1);
63778 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
63779
63780 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63781
63782 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
63783 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63784 END IF;
63785
63786 --
63787 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63788 --
63789 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63793 -- 4262811a Switch Sign
63790 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
63791 ELSE
63792 ---------------------------------------------------------------------------------------------------
63794 ---------------------------------------------------------------------------------------------------
63795 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
63796 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63797 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63798 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63799 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63800 -- 5132302
63801 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63802 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63803
63804 END IF;
63805
63806 -- 4955764
63807 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63808 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63809
63810
63811 XLA_AE_LINES_PKG.ValidateCurrentLine;
63812 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63813
63814 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63815 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63816 ,p_balance_type_code => l_balance_type_code);
63817
63818 END IF;
63819
63820 -----------------------------------------------------------------------------------------
63821 -- 4262811 Multiperiod Accounting
63822 -----------------------------------------------------------------------------------------
63823 -- No MPA option is assigned.
63824
63825
63826 END IF;
63827 END IF;
63828 --
63829
63830 --
63831 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63832 trace
63833 (p_msg => 'END of AcctLineType_147'
63834 ,p_level => C_LEVEL_PROCEDURE
63835 ,p_module => l_log_module);
63836 END IF;
63837 --
63838 EXCEPTION
63839 WHEN xla_exceptions_pkg.application_exception THEN
63840 RAISE;
63841 WHEN OTHERS THEN
63842 xla_exceptions_pkg.raise_message
63843 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_147');
63844 END AcctLineType_147;
63845 --
63846
63847 ---------------------------------------
63848 --
63849 -- PRIVATE FUNCTION
63850 -- AcctLineType_148
63851 --
63852 ---------------------------------------
63853 PROCEDURE AcctLineType_148 (
63854 p_application_id IN NUMBER
63855 ,p_event_id IN NUMBER
63856 ,p_calculate_acctd_flag IN VARCHAR2
63857 ,p_calculate_g_l_flag IN VARCHAR2
63858 ,p_actual_flag IN OUT VARCHAR2
63859 ,p_balance_type_code OUT VARCHAR2
63860 ,p_gain_or_loss_ref OUT VARCHAR2
63861
63862 --Transaction Account
63863 , p_source_1 IN NUMBER
63864 --Journal Line Type
63865 , p_source_2 IN VARCHAR2
63866 --Entered Amount
63867 , p_source_3 IN NUMBER
63868 --First Distribution Identifier
63869 , p_source_5 IN NUMBER
63870 --Distribution Type
63871 , p_source_6 IN VARCHAR2
63872 --Currency Code
63873 , p_source_7 IN VARCHAR2
63874 --Currency Conversion Date
63875 , p_source_8 IN DATE
63876 --Currency Conversion Rate
63877 , p_source_9 IN NUMBER
63878 --Currency Conversion Type
63879 , p_source_10 IN VARCHAR2
63880 --Accounted Amount
63881 , p_source_11 IN NUMBER
63882 )
63883 IS
63884
63885 l_component_type VARCHAR2(80);
63886 l_component_code VARCHAR2(30);
63887 l_component_type_code VARCHAR2(1);
63888 l_component_appl_id INTEGER;
63889 l_amb_context_code VARCHAR2(30);
63890 l_entity_code VARCHAR2(30);
63891 l_event_class_code VARCHAR2(30);
63892 l_ae_header_id NUMBER;
63893 l_event_type_code VARCHAR2(30);
63894 l_line_definition_code VARCHAR2(30);
63895 l_line_definition_owner_code VARCHAR2(1);
63896 --
63897 -- adr variables
63898 l_segment VARCHAR2(30);
63899 l_ccid NUMBER;
63900 l_adr_transaction_coa_id NUMBER;
63901 l_adr_accounting_coa_id NUMBER;
63902 l_adr_flexfield_segment_code VARCHAR2(30);
63903 l_adr_flex_value_set_id NUMBER;
63904 l_adr_value_type_code VARCHAR2(30);
63905 l_adr_value_combination_id NUMBER;
63906 l_adr_value_segment_code VARCHAR2(30);
63907
63908 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
63909 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
63910 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
63911 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
63912
63913 -- 4262811 Variables ------------------------------------------------------------------------------------------
63914 l_entered_amt_idx NUMBER;
63918 l_tmp_amt NUMBER;
63915 l_accted_amt_idx NUMBER;
63916 l_acc_rev_flag VARCHAR2(1);
63917 l_accrual_line_num NUMBER;
63919 l_acc_rev_natural_side_code VARCHAR2(1);
63920
63921 l_num_entries NUMBER;
63922 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
63923 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
63924 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
63925 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
63926 l_recog_line_1 NUMBER;
63927 l_recog_line_2 NUMBER;
63928
63929 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
63930 l_bflow_applied_to_amt NUMBER; -- 5132302
63931 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
63932
63933 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63934
63935 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
63936 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
63937
63938 ---------------------------------------------------------------------------------------------------------------
63939
63940
63941 --
63942 -- bulk performance
63943 --
63944 l_balance_type_code VARCHAR2(1);
63945 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
63946 l_log_module VARCHAR2(240);
63947
63948 --
63949 -- Upgrade strategy
63950 --
63951 l_actual_upg_option VARCHAR2(1);
63952 l_enc_upg_option VARCHAR2(1);
63953
63954 --
63955 BEGIN
63956 --
63957 IF g_log_enabled THEN
63958 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_148';
63959 END IF;
63960 --
63961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63962
63963 trace
63964 (p_msg => 'BEGIN of AcctLineType_148'
63965 ,p_level => C_LEVEL_PROCEDURE
63966 ,p_module => l_log_module);
63967
63968 END IF;
63969 --
63970 l_component_type := 'AMB_JLT';
63971 l_component_code := 'INV';
63972 l_component_type_code := 'S';
63973 l_component_appl_id := 555;
63974 l_amb_context_code := 'DEFAULT';
63975 l_entity_code := 'PURCHASING';
63976 l_event_class_code := 'PAYABLES_INVOICE';
63977 l_event_type_code := 'INVOICE_IPV_ADJ';
63978 l_line_definition_owner_code := 'S';
63979 l_line_definition_code := 'INVOICE_IPV_ADJ';
63980 --
63981 l_balance_type_code := 'A';
63982 l_segment := NULL;
63983 l_ccid := NULL;
63984 l_adr_transaction_coa_id := NULL;
63985 l_adr_accounting_coa_id := NULL;
63986 l_adr_flexfield_segment_code := NULL;
63987 l_adr_flex_value_set_id := NULL;
63988 l_adr_value_type_code := NULL;
63989 l_adr_value_combination_id := NULL;
63990 l_adr_value_segment_code := NULL;
63991
63992 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
63993 l_bflow_class_code := ''; -- 4219869 Business Flow
63994 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
63995 l_budgetary_control_flag := 'N';
63996
63997 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63998 l_bflow_applied_to_amt := NULL; -- 5132302
63999 l_entered_amt_idx := NULL; -- 4262811
64000 l_accted_amt_idx := NULL; -- 4262811
64001 l_acc_rev_flag := NULL; -- 4262811
64002 l_accrual_line_num := NULL; -- 4262811
64003 l_tmp_amt := NULL; -- 4262811
64004 --
64005
64006 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64007 l_balance_type_code <> 'B' THEN
64008 IF NVL(p_source_2,'
64009 ') = 'INV'
64010 THEN
64011
64012 --
64013 XLA_AE_LINES_PKG.SetNewLine;
64014
64015 p_balance_type_code := l_balance_type_code;
64016 -- set the flag so later we will know whether the gain loss line needs to be created
64017
64018 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64019 p_actual_flag :='A';
64020 END IF;
64021
64022 --
64023 -- bulk performance
64024 --
64025 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64026 p_header_num => 0); -- 4262811
64027 --
64028 -- set accounting line options
64029 --
64030 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64031 p_natural_side_code => 'D'
64032 , p_gain_or_loss_flag => 'N'
64033 , p_gl_transfer_mode_code => 'D'
64034 , p_acct_entry_type_code => 'A'
64035 , p_switch_side_flag => 'Y'
64036 , p_merge_duplicate_code => 'W'
64037 );
64038 --
64039 l_acc_rev_natural_side_code := 'C'; -- 4262811
64040 --
64041 --
64042 -- set accounting line type info
64043 --
64044 xla_ae_lines_pkg.SetAcctLineType
64045 (p_component_type => l_component_type
64046 ,p_event_type_code => l_event_type_code
64047 ,p_line_definition_owner_code => l_line_definition_owner_code
64051 ,p_accounting_line_appl_id => l_component_appl_id
64048 ,p_line_definition_code => l_line_definition_code
64049 ,p_accounting_line_code => l_component_code
64050 ,p_accounting_line_type_code => l_component_type_code
64052 ,p_amb_context_code => l_amb_context_code
64053 ,p_entity_code => l_entity_code
64054 ,p_event_class_code => l_event_class_code);
64055 --
64056 -- set accounting class
64057 --
64058 xla_ae_lines_pkg.SetAcctClass(
64059 p_accounting_class_code => 'INVENTORY_VALUATION'
64060 , p_ae_header_id => l_ae_header_id
64061 );
64062
64063 --
64064 -- set rounding class
64065 --
64066 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64067 'INVENTORY_VALUATION';
64068
64069 --
64070 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64071 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64072 --
64073 -- bulk performance
64074 --
64075 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64076
64077 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64078 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64079
64080 -- 4955764
64081 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64082 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64083
64084 -- 4458381 Public Sector Enh
64085
64086 --
64087 -- set accounting attributes for the line type
64088 --
64089 l_entered_amt_idx := 3;
64090 l_accted_amt_idx := 8;
64091 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64092 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64093 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
64094 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64095 l_rec_acct_attrs.array_char_value(2) := p_source_6;
64096 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64097 l_rec_acct_attrs.array_num_value(3) := p_source_3;
64098 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64099 l_rec_acct_attrs.array_char_value(4) := p_source_7;
64100 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64101 l_rec_acct_attrs.array_date_value(5) := p_source_8;
64102 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64103 l_rec_acct_attrs.array_num_value(6) := p_source_9;
64104 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64105 l_rec_acct_attrs.array_char_value(7) := p_source_10;
64106 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64107 l_rec_acct_attrs.array_num_value(8) := p_source_11;
64108
64109 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64110 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64111
64112 ---------------------------------------------------------------------------------------------------------------
64113 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64114 ---------------------------------------------------------------------------------------------------------------
64115 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64116
64117 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64118 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64119
64120 IF xla_accounting_cache_pkg.GetValueChar
64121 (p_source_code => 'LEDGER_CATEGORY_CODE'
64122 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64123 AND l_bflow_method_code = 'PRIOR_ENTRY'
64124 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64125 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64126 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64127 )
64128 THEN
64129 xla_ae_lines_pkg.BflowUpgEntry
64130 (p_business_method_code => l_bflow_method_code
64131 ,p_business_class_code => l_bflow_class_code
64132 ,p_balance_type => l_balance_type_code);
64133 ELSE
64134 NULL;
64135 -- No business flow processing for business flow method of NONE.
64136 END IF;
64137
64138 --
64139 -- call analytical criteria
64140 --
64141
64142 --
64143 -- call description
64144 --
64145 -- No description or it is inherited.
64146 --
64147 -- call ADRs
64148 -- Bug 4922099
64149 --
64150 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64151 (NVL(l_actual_upg_option, 'N') = 'O') OR
64152 (NVL(l_enc_upg_option, 'N') = 'O')
64153 )
64154 THEN
64155 NULL;
64156 --
64157 --
64158
64159 l_ccid := AcctDerRule_17(
64160 p_application_id => p_application_id
64161 , p_ae_header_id => l_ae_header_id
64162 , p_source_1 => p_source_1
64163 , p_source_2 => p_source_2
64164 , x_transaction_coa_id => l_adr_transaction_coa_id
64168 );
64165 , x_accounting_coa_id => l_adr_accounting_coa_id
64166 , x_value_type_code => l_adr_value_type_code
64167 , p_side => 'NA'
64169
64170 xla_ae_lines_pkg.set_ccid(
64171 p_code_combination_id => l_ccid
64172 , p_value_type_code => l_adr_value_type_code
64173 , p_transaction_coa_id => l_adr_transaction_coa_id
64174 , p_accounting_coa_id => l_adr_accounting_coa_id
64175 , p_adr_code => 'INV'
64176 , p_adr_type_code => 'S'
64177 , p_component_type => l_component_type
64178 , p_component_code => l_component_code
64179 , p_component_type_code => l_component_type_code
64180 , p_component_appl_id => l_component_appl_id
64181 , p_amb_context_code => l_amb_context_code
64182 , p_side => 'NA'
64183 );
64184
64185
64186 --
64187 --
64188 END IF;
64189 --
64190 -- Bug 4922099
64191 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64192 (NVL(l_enc_upg_option, 'N') = 'O')
64193 ) AND
64194 (l_bflow_method_code = 'PRIOR_ENTRY')
64195 )
64196 THEN
64197 IF
64198 --
64199 1 = 2
64200 --
64201 THEN
64202 xla_accounting_err_pkg.build_message
64203 (p_appli_s_name => 'XLA'
64204 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64205 ,p_token_1 => 'LINE_NUMBER'
64206 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
64207 ,p_token_2 => 'LINE_TYPE_NAME'
64208 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
64209 l_component_type
64210 ,l_component_code
64211 ,l_component_type_code
64212 ,l_component_appl_id
64213 ,l_amb_context_code
64214 ,l_entity_code
64215 ,l_event_class_code
64216 )
64217 ,p_token_3 => 'OWNER'
64218 ,p_value_3 => xla_lookups_pkg.get_meaning(
64219 p_lookup_type => 'XLA_OWNER_TYPE'
64220 ,p_lookup_code => l_component_type_code
64221 )
64222 ,p_token_4 => 'PRODUCT_NAME'
64223 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64224 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64225 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64226 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64227 ,p_ae_header_id => NULL
64228 );
64229
64230 IF (C_LEVEL_ERROR>= g_log_level) THEN
64231 trace
64232 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64233 ,p_level => C_LEVEL_ERROR
64234 ,p_module => l_log_module);
64235 END IF;
64236 END IF;
64237 END IF;
64238 --
64239 --
64240 ------------------------------------------------------------------------------------------------
64241 -- 4219869 Business Flow
64242 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64243 -- Prior Entry. Currently, the following code is always generated.
64244 ------------------------------------------------------------------------------------------------
64245 XLA_AE_LINES_PKG.ValidateCurrentLine;
64246
64247 ------------------------------------------------------------------------------------
64248 -- 4219869 Business Flow
64249 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64250 ------------------------------------------------------------------------------------
64251 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64252
64253 ----------------------------------------------------------------------------------
64254 -- 4219869 Business Flow
64255 -- Update journal entry status -- Need to generate this within IF <condition>
64256 ----------------------------------------------------------------------------------
64257 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64258 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64259 ,p_balance_type_code => l_balance_type_code
64260 );
64261
64265 BEGIN
64262 -------------------------------------------------------------------------------------------
64263 -- 4262811 - Generate the Accrual Reversal lines
64264 -------------------------------------------------------------------------------------------
64266 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64267 (g_array_event(p_event_id).array_value_num('header_index'));
64268 IF l_acc_rev_flag IS NULL THEN
64269 l_acc_rev_flag := 'N';
64270 END IF;
64271 EXCEPTION
64272 WHEN OTHERS THEN
64273 l_acc_rev_flag := 'N';
64274 END;
64275 --
64276 IF (l_acc_rev_flag = 'Y') THEN
64277
64278 -- 4645092 ------------------------------------------------------------------------------
64279 -- To allow MPA report to determine if it should generate report process
64280 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64281 ------------------------------------------------------------------------------------------
64282
64283 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64284 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64285 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
64286 -- call ADRs
64287 -- Bug 4922099
64288 --
64289 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64290 (NVL(l_actual_upg_option, 'N') = 'O') OR
64291 (NVL(l_enc_upg_option, 'N') = 'O')
64292 )
64293 THEN
64294 NULL;
64295 --
64296 --
64297
64298 l_ccid := AcctDerRule_17(
64299 p_application_id => p_application_id
64300 , p_ae_header_id => l_ae_header_id
64301 , p_source_1 => p_source_1
64302 , p_source_2 => p_source_2
64303 , x_transaction_coa_id => l_adr_transaction_coa_id
64304 , x_accounting_coa_id => l_adr_accounting_coa_id
64305 , x_value_type_code => l_adr_value_type_code
64306 , p_side => 'NA'
64307 );
64308
64309 xla_ae_lines_pkg.set_ccid(
64310 p_code_combination_id => l_ccid
64311 , p_value_type_code => l_adr_value_type_code
64312 , p_transaction_coa_id => l_adr_transaction_coa_id
64313 , p_accounting_coa_id => l_adr_accounting_coa_id
64314 , p_adr_code => 'INV'
64315 , p_adr_type_code => 'S'
64316 , p_component_type => l_component_type
64317 , p_component_code => l_component_code
64318 , p_component_type_code => l_component_type_code
64319 , p_component_appl_id => l_component_appl_id
64320 , p_amb_context_code => l_amb_context_code
64321 , p_side => 'NA'
64322 );
64323
64324
64325 --
64326 --
64327 END IF;
64328
64329 --
64330 -- Update the line information that should be overwritten
64331 --
64332 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64333 p_header_num => 1);
64334 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
64335
64336 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64337
64338 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
64339 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64340 END IF;
64341
64342 --
64343 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64344 --
64345 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64346 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
64347 ELSE
64348 ---------------------------------------------------------------------------------------------------
64349 -- 4262811a Switch Sign
64350 ---------------------------------------------------------------------------------------------------
64351 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
64352 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64353 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64354 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64355 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64356 -- 5132302
64357 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64358 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64359
64360 END IF;
64361
64362 -- 4955764
64363 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64364 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64365
64366
64367 XLA_AE_LINES_PKG.ValidateCurrentLine;
64368 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64369
64370 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64374 END IF;
64371 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64372 ,p_balance_type_code => l_balance_type_code);
64373
64375
64376 -----------------------------------------------------------------------------------------
64377 -- 4262811 Multiperiod Accounting
64378 -----------------------------------------------------------------------------------------
64379 -- No MPA option is assigned.
64380
64381
64382 END IF;
64383 END IF;
64384 --
64385
64386 --
64387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64388 trace
64389 (p_msg => 'END of AcctLineType_148'
64390 ,p_level => C_LEVEL_PROCEDURE
64391 ,p_module => l_log_module);
64392 END IF;
64393 --
64394 EXCEPTION
64395 WHEN xla_exceptions_pkg.application_exception THEN
64396 RAISE;
64397 WHEN OTHERS THEN
64398 xla_exceptions_pkg.raise_message
64399 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_148');
64400 END AcctLineType_148;
64401 --
64402
64403 ---------------------------------------
64404 --
64405 -- PRIVATE FUNCTION
64406 -- AcctLineType_149
64407 --
64408 ---------------------------------------
64409 PROCEDURE AcctLineType_149 (
64410 p_application_id IN NUMBER
64411 ,p_event_id IN NUMBER
64412 ,p_calculate_acctd_flag IN VARCHAR2
64413 ,p_calculate_g_l_flag IN VARCHAR2
64414 ,p_actual_flag IN OUT VARCHAR2
64415 ,p_balance_type_code OUT VARCHAR2
64416 ,p_gain_or_loss_ref OUT VARCHAR2
64417
64418 --Transaction Account
64419 , p_source_1 IN NUMBER
64420 --Journal Line Type
64421 , p_source_2 IN VARCHAR2
64422 --Entered Amount
64423 , p_source_3 IN NUMBER
64424 --First Distribution Identifier
64425 , p_source_5 IN NUMBER
64426 --Distribution Type
64427 , p_source_6 IN VARCHAR2
64428 --Currency Code
64429 , p_source_7 IN VARCHAR2
64430 --Currency Conversion Date
64431 , p_source_8 IN DATE
64432 --Currency Conversion Rate
64433 , p_source_9 IN NUMBER
64434 --Currency Conversion Type
64435 , p_source_10 IN VARCHAR2
64436 --Accounted Amount
64437 , p_source_11 IN NUMBER
64438 )
64439 IS
64440
64441 l_component_type VARCHAR2(80);
64442 l_component_code VARCHAR2(30);
64443 l_component_type_code VARCHAR2(1);
64444 l_component_appl_id INTEGER;
64445 l_amb_context_code VARCHAR2(30);
64446 l_entity_code VARCHAR2(30);
64447 l_event_class_code VARCHAR2(30);
64448 l_ae_header_id NUMBER;
64449 l_event_type_code VARCHAR2(30);
64450 l_line_definition_code VARCHAR2(30);
64451 l_line_definition_owner_code VARCHAR2(1);
64452 --
64453 -- adr variables
64454 l_segment VARCHAR2(30);
64455 l_ccid NUMBER;
64456 l_adr_transaction_coa_id NUMBER;
64457 l_adr_accounting_coa_id NUMBER;
64458 l_adr_flexfield_segment_code VARCHAR2(30);
64459 l_adr_flex_value_set_id NUMBER;
64460 l_adr_value_type_code VARCHAR2(30);
64461 l_adr_value_combination_id NUMBER;
64462 l_adr_value_segment_code VARCHAR2(30);
64463
64464 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
64465 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
64466 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
64467 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
64468
64469 -- 4262811 Variables ------------------------------------------------------------------------------------------
64470 l_entered_amt_idx NUMBER;
64471 l_accted_amt_idx NUMBER;
64472 l_acc_rev_flag VARCHAR2(1);
64473 l_accrual_line_num NUMBER;
64474 l_tmp_amt NUMBER;
64475 l_acc_rev_natural_side_code VARCHAR2(1);
64476
64477 l_num_entries NUMBER;
64478 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
64479 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
64480 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
64481 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
64482 l_recog_line_1 NUMBER;
64483 l_recog_line_2 NUMBER;
64484
64485 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
64486 l_bflow_applied_to_amt NUMBER; -- 5132302
64487 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
64488
64489 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64490
64491 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
64492 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
64493
64494 ---------------------------------------------------------------------------------------------------------------
64495
64496
64497 --
64498 -- bulk performance
64499 --
64500 l_balance_type_code VARCHAR2(1);
64501 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
64502 l_log_module VARCHAR2(240);
64503
64504 --
64508 l_enc_upg_option VARCHAR2(1);
64505 -- Upgrade strategy
64506 --
64507 l_actual_upg_option VARCHAR2(1);
64509
64510 --
64511 BEGIN
64512 --
64513 IF g_log_enabled THEN
64514 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_149';
64515 END IF;
64516 --
64517 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64518
64519 trace
64520 (p_msg => 'BEGIN of AcctLineType_149'
64521 ,p_level => C_LEVEL_PROCEDURE
64522 ,p_module => l_log_module);
64523
64524 END IF;
64525 --
64526 l_component_type := 'AMB_JLT';
64527 l_component_code := 'INV';
64528 l_component_type_code := 'S';
64529 l_component_appl_id := 555;
64530 l_amb_context_code := 'DEFAULT';
64531 l_entity_code := 'REVALUATION';
64532 l_event_class_code := 'ACTCOSTADJ';
64533 l_event_type_code := 'ACTCOSTADJ';
64534 l_line_definition_owner_code := 'S';
64535 l_line_definition_code := 'ACTCOSTADJ';
64536 --
64537 l_balance_type_code := 'A';
64538 l_segment := NULL;
64539 l_ccid := NULL;
64540 l_adr_transaction_coa_id := NULL;
64541 l_adr_accounting_coa_id := NULL;
64542 l_adr_flexfield_segment_code := NULL;
64543 l_adr_flex_value_set_id := NULL;
64544 l_adr_value_type_code := NULL;
64545 l_adr_value_combination_id := NULL;
64546 l_adr_value_segment_code := NULL;
64547
64548 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
64549 l_bflow_class_code := ''; -- 4219869 Business Flow
64550 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
64551 l_budgetary_control_flag := 'N';
64552
64553 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64554 l_bflow_applied_to_amt := NULL; -- 5132302
64555 l_entered_amt_idx := NULL; -- 4262811
64556 l_accted_amt_idx := NULL; -- 4262811
64557 l_acc_rev_flag := NULL; -- 4262811
64558 l_accrual_line_num := NULL; -- 4262811
64559 l_tmp_amt := NULL; -- 4262811
64560 --
64561
64562 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64563 l_balance_type_code <> 'B' THEN
64564 IF NVL(p_source_2,'
64565 ') = 'INV'
64566 THEN
64567
64568 --
64569 XLA_AE_LINES_PKG.SetNewLine;
64570
64571 p_balance_type_code := l_balance_type_code;
64572 -- set the flag so later we will know whether the gain loss line needs to be created
64573
64574 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64575 p_actual_flag :='A';
64576 END IF;
64577
64578 --
64579 -- bulk performance
64580 --
64581 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64582 p_header_num => 0); -- 4262811
64583 --
64584 -- set accounting line options
64585 --
64586 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64587 p_natural_side_code => 'D'
64588 , p_gain_or_loss_flag => 'N'
64589 , p_gl_transfer_mode_code => 'D'
64590 , p_acct_entry_type_code => 'A'
64591 , p_switch_side_flag => 'Y'
64592 , p_merge_duplicate_code => 'W'
64593 );
64594 --
64595 l_acc_rev_natural_side_code := 'C'; -- 4262811
64596 --
64597 --
64598 -- set accounting line type info
64599 --
64600 xla_ae_lines_pkg.SetAcctLineType
64601 (p_component_type => l_component_type
64602 ,p_event_type_code => l_event_type_code
64603 ,p_line_definition_owner_code => l_line_definition_owner_code
64604 ,p_line_definition_code => l_line_definition_code
64605 ,p_accounting_line_code => l_component_code
64606 ,p_accounting_line_type_code => l_component_type_code
64607 ,p_accounting_line_appl_id => l_component_appl_id
64608 ,p_amb_context_code => l_amb_context_code
64609 ,p_entity_code => l_entity_code
64610 ,p_event_class_code => l_event_class_code);
64611 --
64612 -- set accounting class
64613 --
64614 xla_ae_lines_pkg.SetAcctClass(
64615 p_accounting_class_code => 'INVENTORY_VALUATION'
64616 , p_ae_header_id => l_ae_header_id
64617 );
64618
64619 --
64620 -- set rounding class
64621 --
64622 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64623 'INVENTORY_VALUATION';
64624
64625 --
64626 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64627 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64628 --
64629 -- bulk performance
64630 --
64631 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64632
64633 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64634 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64635
64636 -- 4955764
64637 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64638 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64639
64643 -- set accounting attributes for the line type
64640 -- 4458381 Public Sector Enh
64641
64642 --
64644 --
64645 l_entered_amt_idx := 3;
64646 l_accted_amt_idx := 8;
64647 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64648 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64649 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
64650 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64651 l_rec_acct_attrs.array_char_value(2) := p_source_6;
64652 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64653 l_rec_acct_attrs.array_num_value(3) := p_source_3;
64654 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64655 l_rec_acct_attrs.array_char_value(4) := p_source_7;
64656 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64657 l_rec_acct_attrs.array_date_value(5) := p_source_8;
64658 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64659 l_rec_acct_attrs.array_num_value(6) := p_source_9;
64660 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64661 l_rec_acct_attrs.array_char_value(7) := p_source_10;
64662 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64663 l_rec_acct_attrs.array_num_value(8) := p_source_11;
64664
64665 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64666 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64667
64668 ---------------------------------------------------------------------------------------------------------------
64669 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64670 ---------------------------------------------------------------------------------------------------------------
64671 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64672
64673 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64674 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64675
64676 IF xla_accounting_cache_pkg.GetValueChar
64677 (p_source_code => 'LEDGER_CATEGORY_CODE'
64678 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64679 AND l_bflow_method_code = 'PRIOR_ENTRY'
64680 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64681 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64682 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64683 )
64684 THEN
64685 xla_ae_lines_pkg.BflowUpgEntry
64686 (p_business_method_code => l_bflow_method_code
64687 ,p_business_class_code => l_bflow_class_code
64688 ,p_balance_type => l_balance_type_code);
64689 ELSE
64690 NULL;
64691 -- No business flow processing for business flow method of NONE.
64692 END IF;
64693
64694 --
64695 -- call analytical criteria
64696 --
64697
64698 --
64699 -- call description
64700 --
64701 -- No description or it is inherited.
64702 --
64703 -- call ADRs
64704 -- Bug 4922099
64705 --
64706 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64707 (NVL(l_actual_upg_option, 'N') = 'O') OR
64708 (NVL(l_enc_upg_option, 'N') = 'O')
64709 )
64710 THEN
64711 NULL;
64712 --
64713 --
64714
64715 l_ccid := AcctDerRule_17(
64716 p_application_id => p_application_id
64717 , p_ae_header_id => l_ae_header_id
64718 , p_source_1 => p_source_1
64719 , p_source_2 => p_source_2
64720 , x_transaction_coa_id => l_adr_transaction_coa_id
64721 , x_accounting_coa_id => l_adr_accounting_coa_id
64722 , x_value_type_code => l_adr_value_type_code
64723 , p_side => 'NA'
64724 );
64725
64726 xla_ae_lines_pkg.set_ccid(
64727 p_code_combination_id => l_ccid
64728 , p_value_type_code => l_adr_value_type_code
64729 , p_transaction_coa_id => l_adr_transaction_coa_id
64730 , p_accounting_coa_id => l_adr_accounting_coa_id
64731 , p_adr_code => 'INV'
64732 , p_adr_type_code => 'S'
64733 , p_component_type => l_component_type
64734 , p_component_code => l_component_code
64735 , p_component_type_code => l_component_type_code
64736 , p_component_appl_id => l_component_appl_id
64737 , p_amb_context_code => l_amb_context_code
64738 , p_side => 'NA'
64739 );
64740
64741
64742 --
64743 --
64744 END IF;
64745 --
64746 -- Bug 4922099
64747 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64748 (NVL(l_enc_upg_option, 'N') = 'O')
64749 ) AND
64750 (l_bflow_method_code = 'PRIOR_ENTRY')
64751 )
64752 THEN
64753 IF
64754 --
64755 1 = 2
64756 --
64757 THEN
64758 xla_accounting_err_pkg.build_message
64759 (p_appli_s_name => 'XLA'
64760 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64761 ,p_token_1 => 'LINE_NUMBER'
64765 l_component_type
64762 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
64763 ,p_token_2 => 'LINE_TYPE_NAME'
64764 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
64766 ,l_component_code
64767 ,l_component_type_code
64768 ,l_component_appl_id
64769 ,l_amb_context_code
64770 ,l_entity_code
64771 ,l_event_class_code
64772 )
64773 ,p_token_3 => 'OWNER'
64774 ,p_value_3 => xla_lookups_pkg.get_meaning(
64775 p_lookup_type => 'XLA_OWNER_TYPE'
64776 ,p_lookup_code => l_component_type_code
64777 )
64778 ,p_token_4 => 'PRODUCT_NAME'
64779 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64780 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64781 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64782 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64783 ,p_ae_header_id => NULL
64784 );
64785
64786 IF (C_LEVEL_ERROR>= g_log_level) THEN
64787 trace
64788 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64789 ,p_level => C_LEVEL_ERROR
64790 ,p_module => l_log_module);
64791 END IF;
64792 END IF;
64793 END IF;
64794 --
64795 --
64796 ------------------------------------------------------------------------------------------------
64797 -- 4219869 Business Flow
64798 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64799 -- Prior Entry. Currently, the following code is always generated.
64800 ------------------------------------------------------------------------------------------------
64801 XLA_AE_LINES_PKG.ValidateCurrentLine;
64802
64803 ------------------------------------------------------------------------------------
64804 -- 4219869 Business Flow
64805 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64806 ------------------------------------------------------------------------------------
64807 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64808
64809 ----------------------------------------------------------------------------------
64810 -- 4219869 Business Flow
64811 -- Update journal entry status -- Need to generate this within IF <condition>
64812 ----------------------------------------------------------------------------------
64813 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64814 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64815 ,p_balance_type_code => l_balance_type_code
64816 );
64817
64818 -------------------------------------------------------------------------------------------
64819 -- 4262811 - Generate the Accrual Reversal lines
64820 -------------------------------------------------------------------------------------------
64821 BEGIN
64822 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64823 (g_array_event(p_event_id).array_value_num('header_index'));
64824 IF l_acc_rev_flag IS NULL THEN
64825 l_acc_rev_flag := 'N';
64826 END IF;
64827 EXCEPTION
64828 WHEN OTHERS THEN
64829 l_acc_rev_flag := 'N';
64830 END;
64831 --
64832 IF (l_acc_rev_flag = 'Y') THEN
64833
64834 -- 4645092 ------------------------------------------------------------------------------
64835 -- To allow MPA report to determine if it should generate report process
64836 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64837 ------------------------------------------------------------------------------------------
64838
64839 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64840 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64841 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
64842 -- call ADRs
64843 -- Bug 4922099
64844 --
64845 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64846 (NVL(l_actual_upg_option, 'N') = 'O') OR
64847 (NVL(l_enc_upg_option, 'N') = 'O')
64848 )
64849 THEN
64850 NULL;
64851 --
64852 --
64853
64854 l_ccid := AcctDerRule_17(
64858 , p_source_2 => p_source_2
64855 p_application_id => p_application_id
64856 , p_ae_header_id => l_ae_header_id
64857 , p_source_1 => p_source_1
64859 , x_transaction_coa_id => l_adr_transaction_coa_id
64860 , x_accounting_coa_id => l_adr_accounting_coa_id
64861 , x_value_type_code => l_adr_value_type_code
64862 , p_side => 'NA'
64863 );
64864
64865 xla_ae_lines_pkg.set_ccid(
64866 p_code_combination_id => l_ccid
64867 , p_value_type_code => l_adr_value_type_code
64868 , p_transaction_coa_id => l_adr_transaction_coa_id
64869 , p_accounting_coa_id => l_adr_accounting_coa_id
64870 , p_adr_code => 'INV'
64871 , p_adr_type_code => 'S'
64872 , p_component_type => l_component_type
64873 , p_component_code => l_component_code
64874 , p_component_type_code => l_component_type_code
64875 , p_component_appl_id => l_component_appl_id
64876 , p_amb_context_code => l_amb_context_code
64877 , p_side => 'NA'
64878 );
64879
64880
64881 --
64882 --
64883 END IF;
64884
64885 --
64886 -- Update the line information that should be overwritten
64887 --
64888 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64889 p_header_num => 1);
64890 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
64891
64892 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64893
64894 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
64895 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64896 END IF;
64897
64898 --
64899 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64900 --
64901 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64902 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
64903 ELSE
64904 ---------------------------------------------------------------------------------------------------
64905 -- 4262811a Switch Sign
64906 ---------------------------------------------------------------------------------------------------
64907 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
64908 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64909 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64910 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64911 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64912 -- 5132302
64913 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64914 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64915
64916 END IF;
64917
64918 -- 4955764
64919 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64920 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64921
64922
64923 XLA_AE_LINES_PKG.ValidateCurrentLine;
64924 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64925
64926 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64927 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64928 ,p_balance_type_code => l_balance_type_code);
64929
64930 END IF;
64931
64932 -----------------------------------------------------------------------------------------
64933 -- 4262811 Multiperiod Accounting
64934 -----------------------------------------------------------------------------------------
64935 -- No MPA option is assigned.
64936
64937
64938 END IF;
64939 END IF;
64940 --
64941
64942 --
64943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64944 trace
64945 (p_msg => 'END of AcctLineType_149'
64946 ,p_level => C_LEVEL_PROCEDURE
64947 ,p_module => l_log_module);
64948 END IF;
64949 --
64950 EXCEPTION
64951 WHEN xla_exceptions_pkg.application_exception THEN
64952 RAISE;
64953 WHEN OTHERS THEN
64954 xla_exceptions_pkg.raise_message
64955 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_149');
64956 END AcctLineType_149;
64957 --
64958
64959 ---------------------------------------
64960 --
64961 -- PRIVATE FUNCTION
64962 -- AcctLineType_150
64963 --
64964 ---------------------------------------
64965 PROCEDURE AcctLineType_150 (
64966 p_application_id IN NUMBER
64967 ,p_event_id IN NUMBER
64968 ,p_calculate_acctd_flag IN VARCHAR2
64969 ,p_calculate_g_l_flag IN VARCHAR2
64970 ,p_actual_flag IN OUT VARCHAR2
64971 ,p_balance_type_code OUT VARCHAR2
64972 ,p_gain_or_loss_ref OUT VARCHAR2
64976 --Journal Line Type
64973
64974 --Transaction Account
64975 , p_source_1 IN NUMBER
64977 , p_source_2 IN VARCHAR2
64978 --Entered Amount
64979 , p_source_3 IN NUMBER
64980 --First Distribution Identifier
64981 , p_source_5 IN NUMBER
64982 --Distribution Type
64983 , p_source_6 IN VARCHAR2
64984 --Currency Code
64985 , p_source_7 IN VARCHAR2
64986 --Currency Conversion Date
64987 , p_source_8 IN DATE
64988 --Currency Conversion Rate
64989 , p_source_9 IN NUMBER
64990 --Currency Conversion Type
64991 , p_source_10 IN VARCHAR2
64992 --Accounted Amount
64993 , p_source_11 IN NUMBER
64994 )
64995 IS
64996
64997 l_component_type VARCHAR2(80);
64998 l_component_code VARCHAR2(30);
64999 l_component_type_code VARCHAR2(1);
65000 l_component_appl_id INTEGER;
65001 l_amb_context_code VARCHAR2(30);
65002 l_entity_code VARCHAR2(30);
65003 l_event_class_code VARCHAR2(30);
65004 l_ae_header_id NUMBER;
65005 l_event_type_code VARCHAR2(30);
65006 l_line_definition_code VARCHAR2(30);
65007 l_line_definition_owner_code VARCHAR2(1);
65008 --
65009 -- adr variables
65010 l_segment VARCHAR2(30);
65011 l_ccid NUMBER;
65012 l_adr_transaction_coa_id NUMBER;
65013 l_adr_accounting_coa_id NUMBER;
65014 l_adr_flexfield_segment_code VARCHAR2(30);
65015 l_adr_flex_value_set_id NUMBER;
65016 l_adr_value_type_code VARCHAR2(30);
65017 l_adr_value_combination_id NUMBER;
65018 l_adr_value_segment_code VARCHAR2(30);
65019
65020 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
65021 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
65022 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
65023 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
65024
65025 -- 4262811 Variables ------------------------------------------------------------------------------------------
65026 l_entered_amt_idx NUMBER;
65027 l_accted_amt_idx NUMBER;
65028 l_acc_rev_flag VARCHAR2(1);
65029 l_accrual_line_num NUMBER;
65030 l_tmp_amt NUMBER;
65031 l_acc_rev_natural_side_code VARCHAR2(1);
65032
65033 l_num_entries NUMBER;
65034 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
65035 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
65036 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
65037 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
65038 l_recog_line_1 NUMBER;
65039 l_recog_line_2 NUMBER;
65040
65041 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
65042 l_bflow_applied_to_amt NUMBER; -- 5132302
65043 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
65044
65045 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65046
65047 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
65048 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
65049
65050 ---------------------------------------------------------------------------------------------------------------
65051
65052
65053 --
65054 -- bulk performance
65055 --
65056 l_balance_type_code VARCHAR2(1);
65057 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
65058 l_log_module VARCHAR2(240);
65059
65060 --
65061 -- Upgrade strategy
65062 --
65063 l_actual_upg_option VARCHAR2(1);
65064 l_enc_upg_option VARCHAR2(1);
65065
65066 --
65067 BEGIN
65068 --
65069 IF g_log_enabled THEN
65070 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_150';
65071 END IF;
65072 --
65073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65074
65075 trace
65076 (p_msg => 'BEGIN of AcctLineType_150'
65077 ,p_level => C_LEVEL_PROCEDURE
65078 ,p_module => l_log_module);
65079
65080 END IF;
65081 --
65082 l_component_type := 'AMB_JLT';
65083 l_component_code := 'INV';
65084 l_component_type_code := 'S';
65085 l_component_appl_id := 555;
65086 l_amb_context_code := 'DEFAULT';
65087 l_entity_code := 'INVENTORY';
65088 l_event_class_code := 'FOB_RCPT_SENDER_SHIP';
65089 l_event_type_code := 'FOB_RCPT_SENDER_SHIP';
65090 l_line_definition_owner_code := 'S';
65091 l_line_definition_code := 'FOB_RCPT_SENDER_SHIP';
65092 --
65093 l_balance_type_code := 'A';
65094 l_segment := NULL;
65095 l_ccid := NULL;
65096 l_adr_transaction_coa_id := NULL;
65097 l_adr_accounting_coa_id := NULL;
65098 l_adr_flexfield_segment_code := NULL;
65099 l_adr_flex_value_set_id := NULL;
65100 l_adr_value_type_code := NULL;
65101 l_adr_value_combination_id := NULL;
65102 l_adr_value_segment_code := NULL;
65103
65104 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
65105 l_bflow_class_code := ''; -- 4219869 Business Flow
65106 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
65110 l_bflow_applied_to_amt := NULL; -- 5132302
65107 l_budgetary_control_flag := 'N';
65108
65109 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65111 l_entered_amt_idx := NULL; -- 4262811
65112 l_accted_amt_idx := NULL; -- 4262811
65113 l_acc_rev_flag := NULL; -- 4262811
65114 l_accrual_line_num := NULL; -- 4262811
65115 l_tmp_amt := NULL; -- 4262811
65116 --
65117
65118 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65119 l_balance_type_code <> 'B' THEN
65120 IF NVL(p_source_2,'
65121 ') = 'INV'
65122 THEN
65123
65124 --
65125 XLA_AE_LINES_PKG.SetNewLine;
65126
65127 p_balance_type_code := l_balance_type_code;
65128 -- set the flag so later we will know whether the gain loss line needs to be created
65129
65130 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65131 p_actual_flag :='A';
65132 END IF;
65133
65134 --
65135 -- bulk performance
65136 --
65137 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65138 p_header_num => 0); -- 4262811
65139 --
65140 -- set accounting line options
65141 --
65142 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65143 p_natural_side_code => 'D'
65144 , p_gain_or_loss_flag => 'N'
65145 , p_gl_transfer_mode_code => 'D'
65146 , p_acct_entry_type_code => 'A'
65147 , p_switch_side_flag => 'Y'
65148 , p_merge_duplicate_code => 'W'
65149 );
65150 --
65151 l_acc_rev_natural_side_code := 'C'; -- 4262811
65152 --
65153 --
65154 -- set accounting line type info
65155 --
65156 xla_ae_lines_pkg.SetAcctLineType
65157 (p_component_type => l_component_type
65158 ,p_event_type_code => l_event_type_code
65159 ,p_line_definition_owner_code => l_line_definition_owner_code
65160 ,p_line_definition_code => l_line_definition_code
65161 ,p_accounting_line_code => l_component_code
65162 ,p_accounting_line_type_code => l_component_type_code
65163 ,p_accounting_line_appl_id => l_component_appl_id
65164 ,p_amb_context_code => l_amb_context_code
65165 ,p_entity_code => l_entity_code
65166 ,p_event_class_code => l_event_class_code);
65167 --
65168 -- set accounting class
65169 --
65170 xla_ae_lines_pkg.SetAcctClass(
65171 p_accounting_class_code => 'INVENTORY_VALUATION'
65172 , p_ae_header_id => l_ae_header_id
65173 );
65174
65175 --
65176 -- set rounding class
65177 --
65178 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65179 'INVENTORY_VALUATION';
65180
65181 --
65182 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65183 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65184 --
65185 -- bulk performance
65186 --
65187 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65188
65189 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65190 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65191
65192 -- 4955764
65193 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65194 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65195
65196 -- 4458381 Public Sector Enh
65197
65198 --
65199 -- set accounting attributes for the line type
65200 --
65201 l_entered_amt_idx := 3;
65202 l_accted_amt_idx := 8;
65203 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65204 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65205 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
65206 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65207 l_rec_acct_attrs.array_char_value(2) := p_source_6;
65208 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65209 l_rec_acct_attrs.array_num_value(3) := p_source_3;
65210 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65211 l_rec_acct_attrs.array_char_value(4) := p_source_7;
65212 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65213 l_rec_acct_attrs.array_date_value(5) := p_source_8;
65214 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65215 l_rec_acct_attrs.array_num_value(6) := p_source_9;
65216 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65217 l_rec_acct_attrs.array_char_value(7) := p_source_10;
65218 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65219 l_rec_acct_attrs.array_num_value(8) := p_source_11;
65220
65221 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65222 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65223
65224 ---------------------------------------------------------------------------------------------------------------
65225 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65229 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65226 ---------------------------------------------------------------------------------------------------------------
65227 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65228
65230 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65231
65232 IF xla_accounting_cache_pkg.GetValueChar
65233 (p_source_code => 'LEDGER_CATEGORY_CODE'
65234 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65235 AND l_bflow_method_code = 'PRIOR_ENTRY'
65236 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65237 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65238 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65239 )
65240 THEN
65241 xla_ae_lines_pkg.BflowUpgEntry
65242 (p_business_method_code => l_bflow_method_code
65243 ,p_business_class_code => l_bflow_class_code
65244 ,p_balance_type => l_balance_type_code);
65245 ELSE
65246 NULL;
65247 -- No business flow processing for business flow method of NONE.
65248 END IF;
65249
65250 --
65251 -- call analytical criteria
65252 --
65253
65254 --
65255 -- call description
65256 --
65257 -- No description or it is inherited.
65258 --
65259 -- call ADRs
65260 -- Bug 4922099
65261 --
65262 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65263 (NVL(l_actual_upg_option, 'N') = 'O') OR
65264 (NVL(l_enc_upg_option, 'N') = 'O')
65265 )
65266 THEN
65267 NULL;
65268 --
65269 --
65270
65271 l_ccid := AcctDerRule_17(
65272 p_application_id => p_application_id
65273 , p_ae_header_id => l_ae_header_id
65274 , p_source_1 => p_source_1
65275 , p_source_2 => p_source_2
65276 , x_transaction_coa_id => l_adr_transaction_coa_id
65277 , x_accounting_coa_id => l_adr_accounting_coa_id
65278 , x_value_type_code => l_adr_value_type_code
65279 , p_side => 'NA'
65280 );
65281
65282 xla_ae_lines_pkg.set_ccid(
65283 p_code_combination_id => l_ccid
65284 , p_value_type_code => l_adr_value_type_code
65285 , p_transaction_coa_id => l_adr_transaction_coa_id
65286 , p_accounting_coa_id => l_adr_accounting_coa_id
65287 , p_adr_code => 'INV'
65288 , p_adr_type_code => 'S'
65289 , p_component_type => l_component_type
65290 , p_component_code => l_component_code
65291 , p_component_type_code => l_component_type_code
65292 , p_component_appl_id => l_component_appl_id
65293 , p_amb_context_code => l_amb_context_code
65294 , p_side => 'NA'
65295 );
65296
65297
65298 --
65299 --
65300 END IF;
65301 --
65302 -- Bug 4922099
65303 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65304 (NVL(l_enc_upg_option, 'N') = 'O')
65305 ) AND
65306 (l_bflow_method_code = 'PRIOR_ENTRY')
65307 )
65308 THEN
65309 IF
65310 --
65311 1 = 2
65312 --
65313 THEN
65314 xla_accounting_err_pkg.build_message
65315 (p_appli_s_name => 'XLA'
65316 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65317 ,p_token_1 => 'LINE_NUMBER'
65318 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
65319 ,p_token_2 => 'LINE_TYPE_NAME'
65320 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
65321 l_component_type
65322 ,l_component_code
65323 ,l_component_type_code
65324 ,l_component_appl_id
65325 ,l_amb_context_code
65326 ,l_entity_code
65327 ,l_event_class_code
65328 )
65329 ,p_token_3 => 'OWNER'
65330 ,p_value_3 => xla_lookups_pkg.get_meaning(
65331 p_lookup_type => 'XLA_OWNER_TYPE'
65332 ,p_lookup_code => l_component_type_code
65333 )
65334 ,p_token_4 => 'PRODUCT_NAME'
65335 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65339 ,p_ae_header_id => NULL
65336 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65337 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65338 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65340 );
65341
65342 IF (C_LEVEL_ERROR>= g_log_level) THEN
65343 trace
65344 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65345 ,p_level => C_LEVEL_ERROR
65346 ,p_module => l_log_module);
65347 END IF;
65348 END IF;
65349 END IF;
65350 --
65351 --
65352 ------------------------------------------------------------------------------------------------
65353 -- 4219869 Business Flow
65354 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65355 -- Prior Entry. Currently, the following code is always generated.
65356 ------------------------------------------------------------------------------------------------
65357 XLA_AE_LINES_PKG.ValidateCurrentLine;
65358
65359 ------------------------------------------------------------------------------------
65360 -- 4219869 Business Flow
65361 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65362 ------------------------------------------------------------------------------------
65363 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65364
65365 ----------------------------------------------------------------------------------
65366 -- 4219869 Business Flow
65367 -- Update journal entry status -- Need to generate this within IF <condition>
65368 ----------------------------------------------------------------------------------
65369 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65370 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65371 ,p_balance_type_code => l_balance_type_code
65372 );
65373
65374 -------------------------------------------------------------------------------------------
65375 -- 4262811 - Generate the Accrual Reversal lines
65376 -------------------------------------------------------------------------------------------
65377 BEGIN
65378 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65379 (g_array_event(p_event_id).array_value_num('header_index'));
65380 IF l_acc_rev_flag IS NULL THEN
65381 l_acc_rev_flag := 'N';
65382 END IF;
65383 EXCEPTION
65384 WHEN OTHERS THEN
65385 l_acc_rev_flag := 'N';
65386 END;
65387 --
65388 IF (l_acc_rev_flag = 'Y') THEN
65389
65390 -- 4645092 ------------------------------------------------------------------------------
65391 -- To allow MPA report to determine if it should generate report process
65392 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65393 ------------------------------------------------------------------------------------------
65394
65395 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65396 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65397 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
65398 -- call ADRs
65399 -- Bug 4922099
65400 --
65401 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65402 (NVL(l_actual_upg_option, 'N') = 'O') OR
65403 (NVL(l_enc_upg_option, 'N') = 'O')
65404 )
65405 THEN
65406 NULL;
65407 --
65408 --
65409
65410 l_ccid := AcctDerRule_17(
65411 p_application_id => p_application_id
65412 , p_ae_header_id => l_ae_header_id
65413 , p_source_1 => p_source_1
65414 , p_source_2 => p_source_2
65415 , x_transaction_coa_id => l_adr_transaction_coa_id
65416 , x_accounting_coa_id => l_adr_accounting_coa_id
65417 , x_value_type_code => l_adr_value_type_code
65418 , p_side => 'NA'
65419 );
65420
65421 xla_ae_lines_pkg.set_ccid(
65422 p_code_combination_id => l_ccid
65423 , p_value_type_code => l_adr_value_type_code
65424 , p_transaction_coa_id => l_adr_transaction_coa_id
65425 , p_accounting_coa_id => l_adr_accounting_coa_id
65426 , p_adr_code => 'INV'
65427 , p_adr_type_code => 'S'
65428 , p_component_type => l_component_type
65429 , p_component_code => l_component_code
65430 , p_component_type_code => l_component_type_code
65431 , p_component_appl_id => l_component_appl_id
65432 , p_amb_context_code => l_amb_context_code
65433 , p_side => 'NA'
65434 );
65435
65436
65437 --
65438 --
65439 END IF;
65440
65441 --
65442 -- Update the line information that should be overwritten
65443 --
65444 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65445 p_header_num => 1);
65446 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
65447
65451 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65448 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65449
65450 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
65452 END IF;
65453
65454 --
65455 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65456 --
65457 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65458 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
65459 ELSE
65460 ---------------------------------------------------------------------------------------------------
65461 -- 4262811a Switch Sign
65462 ---------------------------------------------------------------------------------------------------
65463 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
65464 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65465 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65466 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65467 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65468 -- 5132302
65469 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65470 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65471
65472 END IF;
65473
65474 -- 4955764
65475 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65476 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65477
65478
65479 XLA_AE_LINES_PKG.ValidateCurrentLine;
65480 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65481
65482 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65483 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65484 ,p_balance_type_code => l_balance_type_code);
65485
65486 END IF;
65487
65488 -----------------------------------------------------------------------------------------
65489 -- 4262811 Multiperiod Accounting
65490 -----------------------------------------------------------------------------------------
65491 -- No MPA option is assigned.
65492
65493
65494 END IF;
65495 END IF;
65496 --
65497
65498 --
65499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65500 trace
65501 (p_msg => 'END of AcctLineType_150'
65502 ,p_level => C_LEVEL_PROCEDURE
65503 ,p_module => l_log_module);
65504 END IF;
65505 --
65506 EXCEPTION
65507 WHEN xla_exceptions_pkg.application_exception THEN
65508 RAISE;
65509 WHEN OTHERS THEN
65510 xla_exceptions_pkg.raise_message
65511 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_150');
65512 END AcctLineType_150;
65513 --
65514
65515 ---------------------------------------
65516 --
65517 -- PRIVATE FUNCTION
65518 -- AcctLineType_151
65519 --
65520 ---------------------------------------
65521 PROCEDURE AcctLineType_151 (
65522 p_application_id IN NUMBER
65523 ,p_event_id IN NUMBER
65524 ,p_calculate_acctd_flag IN VARCHAR2
65525 ,p_calculate_g_l_flag IN VARCHAR2
65526 ,p_actual_flag IN OUT VARCHAR2
65527 ,p_balance_type_code OUT VARCHAR2
65528 ,p_gain_or_loss_ref OUT VARCHAR2
65529
65530 --Transaction Account
65531 , p_source_1 IN NUMBER
65532 --Journal Line Type
65533 , p_source_2 IN VARCHAR2
65534 --Entered Amount
65535 , p_source_3 IN NUMBER
65536 --First Distribution Identifier
65537 , p_source_5 IN NUMBER
65538 --Distribution Type
65539 , p_source_6 IN VARCHAR2
65540 --Currency Code
65541 , p_source_7 IN VARCHAR2
65542 --Currency Conversion Date
65543 , p_source_8 IN DATE
65544 --Currency Conversion Rate
65545 , p_source_9 IN NUMBER
65546 --Currency Conversion Type
65547 , p_source_10 IN VARCHAR2
65548 --Accounted Amount
65549 , p_source_11 IN NUMBER
65550 )
65551 IS
65552
65553 l_component_type VARCHAR2(80);
65554 l_component_code VARCHAR2(30);
65555 l_component_type_code VARCHAR2(1);
65556 l_component_appl_id INTEGER;
65557 l_amb_context_code VARCHAR2(30);
65558 l_entity_code VARCHAR2(30);
65559 l_event_class_code VARCHAR2(30);
65560 l_ae_header_id NUMBER;
65561 l_event_type_code VARCHAR2(30);
65562 l_line_definition_code VARCHAR2(30);
65563 l_line_definition_owner_code VARCHAR2(1);
65564 --
65565 -- adr variables
65566 l_segment VARCHAR2(30);
65567 l_ccid NUMBER;
65568 l_adr_transaction_coa_id NUMBER;
65569 l_adr_accounting_coa_id NUMBER;
65570 l_adr_flexfield_segment_code VARCHAR2(30);
65571 l_adr_flex_value_set_id NUMBER;
65572 l_adr_value_type_code VARCHAR2(30);
65573 l_adr_value_combination_id NUMBER;
65577 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
65574 l_adr_value_segment_code VARCHAR2(30);
65575
65576 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
65578 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
65579 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
65580
65581 -- 4262811 Variables ------------------------------------------------------------------------------------------
65582 l_entered_amt_idx NUMBER;
65583 l_accted_amt_idx NUMBER;
65584 l_acc_rev_flag VARCHAR2(1);
65585 l_accrual_line_num NUMBER;
65586 l_tmp_amt NUMBER;
65587 l_acc_rev_natural_side_code VARCHAR2(1);
65588
65589 l_num_entries NUMBER;
65590 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
65591 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
65592 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
65593 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
65594 l_recog_line_1 NUMBER;
65595 l_recog_line_2 NUMBER;
65596
65597 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
65598 l_bflow_applied_to_amt NUMBER; -- 5132302
65599 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
65600
65601 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65602
65603 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
65604 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
65605
65606 ---------------------------------------------------------------------------------------------------------------
65607
65608
65609 --
65610 -- bulk performance
65611 --
65612 l_balance_type_code VARCHAR2(1);
65613 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
65614 l_log_module VARCHAR2(240);
65615
65616 --
65617 -- Upgrade strategy
65618 --
65619 l_actual_upg_option VARCHAR2(1);
65620 l_enc_upg_option VARCHAR2(1);
65621
65622 --
65623 BEGIN
65624 --
65625 IF g_log_enabled THEN
65626 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_151';
65627 END IF;
65628 --
65629 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65630
65631 trace
65632 (p_msg => 'BEGIN of AcctLineType_151'
65633 ,p_level => C_LEVEL_PROCEDURE
65634 ,p_module => l_log_module);
65635
65636 END IF;
65637 --
65638 l_component_type := 'AMB_JLT';
65639 l_component_code := 'INV';
65640 l_component_type_code := 'S';
65641 l_component_appl_id := 555;
65642 l_amb_context_code := 'DEFAULT';
65643 l_entity_code := 'INVENTORY';
65644 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
65645 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
65646 l_line_definition_owner_code := 'S';
65647 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
65648 --
65649 l_balance_type_code := 'A';
65650 l_segment := NULL;
65651 l_ccid := NULL;
65652 l_adr_transaction_coa_id := NULL;
65653 l_adr_accounting_coa_id := NULL;
65654 l_adr_flexfield_segment_code := NULL;
65655 l_adr_flex_value_set_id := NULL;
65656 l_adr_value_type_code := NULL;
65657 l_adr_value_combination_id := NULL;
65658 l_adr_value_segment_code := NULL;
65659
65660 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
65661 l_bflow_class_code := ''; -- 4219869 Business Flow
65662 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
65663 l_budgetary_control_flag := 'N';
65664
65665 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65666 l_bflow_applied_to_amt := NULL; -- 5132302
65667 l_entered_amt_idx := NULL; -- 4262811
65668 l_accted_amt_idx := NULL; -- 4262811
65669 l_acc_rev_flag := NULL; -- 4262811
65670 l_accrual_line_num := NULL; -- 4262811
65671 l_tmp_amt := NULL; -- 4262811
65672 --
65673
65674 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65675 l_balance_type_code <> 'B' THEN
65676 IF NVL(p_source_2,'
65677 ') = 'INV'
65678 THEN
65679
65680 --
65681 XLA_AE_LINES_PKG.SetNewLine;
65682
65683 p_balance_type_code := l_balance_type_code;
65684 -- set the flag so later we will know whether the gain loss line needs to be created
65685
65686 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65687 p_actual_flag :='A';
65688 END IF;
65689
65690 --
65691 -- bulk performance
65692 --
65693 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65694 p_header_num => 0); -- 4262811
65695 --
65696 -- set accounting line options
65697 --
65698 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65699 p_natural_side_code => 'D'
65700 , p_gain_or_loss_flag => 'N'
65701 , p_gl_transfer_mode_code => 'D'
65702 , p_acct_entry_type_code => 'A'
65703 , p_switch_side_flag => 'Y'
65707 l_acc_rev_natural_side_code := 'C'; -- 4262811
65704 , p_merge_duplicate_code => 'W'
65705 );
65706 --
65708 --
65709 --
65710 -- set accounting line type info
65711 --
65712 xla_ae_lines_pkg.SetAcctLineType
65713 (p_component_type => l_component_type
65714 ,p_event_type_code => l_event_type_code
65715 ,p_line_definition_owner_code => l_line_definition_owner_code
65716 ,p_line_definition_code => l_line_definition_code
65717 ,p_accounting_line_code => l_component_code
65718 ,p_accounting_line_type_code => l_component_type_code
65719 ,p_accounting_line_appl_id => l_component_appl_id
65720 ,p_amb_context_code => l_amb_context_code
65721 ,p_entity_code => l_entity_code
65722 ,p_event_class_code => l_event_class_code);
65723 --
65724 -- set accounting class
65725 --
65726 xla_ae_lines_pkg.SetAcctClass(
65727 p_accounting_class_code => 'INVENTORY_VALUATION'
65728 , p_ae_header_id => l_ae_header_id
65729 );
65730
65731 --
65732 -- set rounding class
65733 --
65734 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65735 'INVENTORY_VALUATION';
65736
65737 --
65738 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65739 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65740 --
65741 -- bulk performance
65742 --
65743 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65744
65745 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65746 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65747
65748 -- 4955764
65749 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65750 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65751
65752 -- 4458381 Public Sector Enh
65753
65754 --
65755 -- set accounting attributes for the line type
65756 --
65757 l_entered_amt_idx := 3;
65758 l_accted_amt_idx := 8;
65759 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65760 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65761 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
65762 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65763 l_rec_acct_attrs.array_char_value(2) := p_source_6;
65764 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65765 l_rec_acct_attrs.array_num_value(3) := p_source_3;
65766 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65767 l_rec_acct_attrs.array_char_value(4) := p_source_7;
65768 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65769 l_rec_acct_attrs.array_date_value(5) := p_source_8;
65770 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65771 l_rec_acct_attrs.array_num_value(6) := p_source_9;
65772 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65773 l_rec_acct_attrs.array_char_value(7) := p_source_10;
65774 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65775 l_rec_acct_attrs.array_num_value(8) := p_source_11;
65776
65777 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65778 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65779
65780 ---------------------------------------------------------------------------------------------------------------
65781 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65782 ---------------------------------------------------------------------------------------------------------------
65783 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65784
65785 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65786 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65787
65788 IF xla_accounting_cache_pkg.GetValueChar
65789 (p_source_code => 'LEDGER_CATEGORY_CODE'
65790 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65791 AND l_bflow_method_code = 'PRIOR_ENTRY'
65792 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65793 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65794 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65795 )
65796 THEN
65797 xla_ae_lines_pkg.BflowUpgEntry
65798 (p_business_method_code => l_bflow_method_code
65799 ,p_business_class_code => l_bflow_class_code
65800 ,p_balance_type => l_balance_type_code);
65801 ELSE
65802 NULL;
65803 -- No business flow processing for business flow method of NONE.
65804 END IF;
65805
65806 --
65807 -- call analytical criteria
65808 --
65809
65810 --
65811 -- call description
65812 --
65813 -- No description or it is inherited.
65814 --
65815 -- call ADRs
65816 -- Bug 4922099
65817 --
65818 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65822 THEN
65819 (NVL(l_actual_upg_option, 'N') = 'O') OR
65820 (NVL(l_enc_upg_option, 'N') = 'O')
65821 )
65823 NULL;
65824 --
65825 --
65826
65827 l_ccid := AcctDerRule_17(
65828 p_application_id => p_application_id
65829 , p_ae_header_id => l_ae_header_id
65830 , p_source_1 => p_source_1
65831 , p_source_2 => p_source_2
65832 , x_transaction_coa_id => l_adr_transaction_coa_id
65833 , x_accounting_coa_id => l_adr_accounting_coa_id
65834 , x_value_type_code => l_adr_value_type_code
65835 , p_side => 'NA'
65836 );
65837
65838 xla_ae_lines_pkg.set_ccid(
65839 p_code_combination_id => l_ccid
65840 , p_value_type_code => l_adr_value_type_code
65841 , p_transaction_coa_id => l_adr_transaction_coa_id
65842 , p_accounting_coa_id => l_adr_accounting_coa_id
65843 , p_adr_code => 'INV'
65844 , p_adr_type_code => 'S'
65845 , p_component_type => l_component_type
65846 , p_component_code => l_component_code
65847 , p_component_type_code => l_component_type_code
65848 , p_component_appl_id => l_component_appl_id
65849 , p_amb_context_code => l_amb_context_code
65850 , p_side => 'NA'
65851 );
65852
65853
65854 --
65855 --
65856 END IF;
65857 --
65858 -- Bug 4922099
65859 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65860 (NVL(l_enc_upg_option, 'N') = 'O')
65861 ) AND
65862 (l_bflow_method_code = 'PRIOR_ENTRY')
65863 )
65864 THEN
65865 IF
65866 --
65867 1 = 2
65868 --
65869 THEN
65870 xla_accounting_err_pkg.build_message
65871 (p_appli_s_name => 'XLA'
65872 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65873 ,p_token_1 => 'LINE_NUMBER'
65874 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
65875 ,p_token_2 => 'LINE_TYPE_NAME'
65876 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
65877 l_component_type
65878 ,l_component_code
65879 ,l_component_type_code
65880 ,l_component_appl_id
65881 ,l_amb_context_code
65882 ,l_entity_code
65883 ,l_event_class_code
65884 )
65885 ,p_token_3 => 'OWNER'
65886 ,p_value_3 => xla_lookups_pkg.get_meaning(
65887 p_lookup_type => 'XLA_OWNER_TYPE'
65888 ,p_lookup_code => l_component_type_code
65889 )
65890 ,p_token_4 => 'PRODUCT_NAME'
65891 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65892 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65893 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65894 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65895 ,p_ae_header_id => NULL
65896 );
65897
65898 IF (C_LEVEL_ERROR>= g_log_level) THEN
65899 trace
65900 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65901 ,p_level => C_LEVEL_ERROR
65902 ,p_module => l_log_module);
65903 END IF;
65904 END IF;
65905 END IF;
65906 --
65907 --
65908 ------------------------------------------------------------------------------------------------
65909 -- 4219869 Business Flow
65910 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65911 -- Prior Entry. Currently, the following code is always generated.
65912 ------------------------------------------------------------------------------------------------
65913 XLA_AE_LINES_PKG.ValidateCurrentLine;
65914
65915 ------------------------------------------------------------------------------------
65916 -- 4219869 Business Flow
65917 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65918 ------------------------------------------------------------------------------------
65922 -- 4219869 Business Flow
65919 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65920
65921 ----------------------------------------------------------------------------------
65923 -- Update journal entry status -- Need to generate this within IF <condition>
65924 ----------------------------------------------------------------------------------
65925 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65926 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65927 ,p_balance_type_code => l_balance_type_code
65928 );
65929
65930 -------------------------------------------------------------------------------------------
65931 -- 4262811 - Generate the Accrual Reversal lines
65932 -------------------------------------------------------------------------------------------
65933 BEGIN
65934 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65935 (g_array_event(p_event_id).array_value_num('header_index'));
65936 IF l_acc_rev_flag IS NULL THEN
65937 l_acc_rev_flag := 'N';
65938 END IF;
65939 EXCEPTION
65940 WHEN OTHERS THEN
65941 l_acc_rev_flag := 'N';
65942 END;
65943 --
65944 IF (l_acc_rev_flag = 'Y') THEN
65945
65946 -- 4645092 ------------------------------------------------------------------------------
65947 -- To allow MPA report to determine if it should generate report process
65948 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65949 ------------------------------------------------------------------------------------------
65950
65951 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65952 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65953 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
65954 -- call ADRs
65955 -- Bug 4922099
65956 --
65957 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65958 (NVL(l_actual_upg_option, 'N') = 'O') OR
65959 (NVL(l_enc_upg_option, 'N') = 'O')
65960 )
65961 THEN
65962 NULL;
65963 --
65964 --
65965
65966 l_ccid := AcctDerRule_17(
65967 p_application_id => p_application_id
65968 , p_ae_header_id => l_ae_header_id
65969 , p_source_1 => p_source_1
65970 , p_source_2 => p_source_2
65971 , x_transaction_coa_id => l_adr_transaction_coa_id
65972 , x_accounting_coa_id => l_adr_accounting_coa_id
65973 , x_value_type_code => l_adr_value_type_code
65974 , p_side => 'NA'
65975 );
65976
65977 xla_ae_lines_pkg.set_ccid(
65978 p_code_combination_id => l_ccid
65979 , p_value_type_code => l_adr_value_type_code
65980 , p_transaction_coa_id => l_adr_transaction_coa_id
65981 , p_accounting_coa_id => l_adr_accounting_coa_id
65982 , p_adr_code => 'INV'
65983 , p_adr_type_code => 'S'
65984 , p_component_type => l_component_type
65985 , p_component_code => l_component_code
65986 , p_component_type_code => l_component_type_code
65987 , p_component_appl_id => l_component_appl_id
65988 , p_amb_context_code => l_amb_context_code
65989 , p_side => 'NA'
65990 );
65991
65992
65993 --
65994 --
65995 END IF;
65996
65997 --
65998 -- Update the line information that should be overwritten
65999 --
66000 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66001 p_header_num => 1);
66002 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
66003
66004 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66005
66006 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
66007 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66008 END IF;
66009
66010 --
66011 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66012 --
66013 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66014 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
66015 ELSE
66016 ---------------------------------------------------------------------------------------------------
66017 -- 4262811a Switch Sign
66018 ---------------------------------------------------------------------------------------------------
66019 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
66020 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66021 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66022 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66023 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66024 -- 5132302
66025 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66029
66026 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66027
66028 END IF;
66030 -- 4955764
66031 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66032 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66033
66034
66035 XLA_AE_LINES_PKG.ValidateCurrentLine;
66036 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66037
66038 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66039 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66040 ,p_balance_type_code => l_balance_type_code);
66041
66042 END IF;
66043
66044 -----------------------------------------------------------------------------------------
66045 -- 4262811 Multiperiod Accounting
66046 -----------------------------------------------------------------------------------------
66047 -- No MPA option is assigned.
66048
66049
66050 END IF;
66051 END IF;
66052 --
66053
66054 --
66055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66056 trace
66057 (p_msg => 'END of AcctLineType_151'
66058 ,p_level => C_LEVEL_PROCEDURE
66059 ,p_module => l_log_module);
66060 END IF;
66061 --
66062 EXCEPTION
66063 WHEN xla_exceptions_pkg.application_exception THEN
66064 RAISE;
66065 WHEN OTHERS THEN
66066 xla_exceptions_pkg.raise_message
66067 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_151');
66068 END AcctLineType_151;
66069 --
66070
66071 ---------------------------------------
66072 --
66073 -- PRIVATE FUNCTION
66074 -- AcctLineType_152
66075 --
66076 ---------------------------------------
66077 PROCEDURE AcctLineType_152 (
66078 p_application_id IN NUMBER
66079 ,p_event_id IN NUMBER
66080 ,p_calculate_acctd_flag IN VARCHAR2
66081 ,p_calculate_g_l_flag IN VARCHAR2
66082 ,p_actual_flag IN OUT VARCHAR2
66083 ,p_balance_type_code OUT VARCHAR2
66084 ,p_gain_or_loss_ref OUT VARCHAR2
66085
66086 --Transaction Account
66087 , p_source_1 IN NUMBER
66088 --Journal Line Type
66089 , p_source_2 IN VARCHAR2
66090 --Entered Amount
66091 , p_source_3 IN NUMBER
66092 --First Distribution Identifier
66093 , p_source_5 IN NUMBER
66094 --Distribution Type
66095 , p_source_6 IN VARCHAR2
66096 --Currency Code
66097 , p_source_7 IN VARCHAR2
66098 --Currency Conversion Date
66099 , p_source_8 IN DATE
66100 --Currency Conversion Rate
66101 , p_source_9 IN NUMBER
66102 --Currency Conversion Type
66103 , p_source_10 IN VARCHAR2
66104 --Accounted Amount
66105 , p_source_11 IN NUMBER
66106 )
66107 IS
66108
66109 l_component_type VARCHAR2(80);
66110 l_component_code VARCHAR2(30);
66111 l_component_type_code VARCHAR2(1);
66112 l_component_appl_id INTEGER;
66113 l_amb_context_code VARCHAR2(30);
66114 l_entity_code VARCHAR2(30);
66115 l_event_class_code VARCHAR2(30);
66116 l_ae_header_id NUMBER;
66117 l_event_type_code VARCHAR2(30);
66118 l_line_definition_code VARCHAR2(30);
66119 l_line_definition_owner_code VARCHAR2(1);
66120 --
66121 -- adr variables
66122 l_segment VARCHAR2(30);
66123 l_ccid NUMBER;
66124 l_adr_transaction_coa_id NUMBER;
66125 l_adr_accounting_coa_id NUMBER;
66126 l_adr_flexfield_segment_code VARCHAR2(30);
66127 l_adr_flex_value_set_id NUMBER;
66128 l_adr_value_type_code VARCHAR2(30);
66129 l_adr_value_combination_id NUMBER;
66130 l_adr_value_segment_code VARCHAR2(30);
66131
66132 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
66133 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
66134 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
66135 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
66136
66137 -- 4262811 Variables ------------------------------------------------------------------------------------------
66138 l_entered_amt_idx NUMBER;
66139 l_accted_amt_idx NUMBER;
66140 l_acc_rev_flag VARCHAR2(1);
66141 l_accrual_line_num NUMBER;
66142 l_tmp_amt NUMBER;
66143 l_acc_rev_natural_side_code VARCHAR2(1);
66144
66145 l_num_entries NUMBER;
66146 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
66147 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
66148 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
66149 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
66150 l_recog_line_1 NUMBER;
66151 l_recog_line_2 NUMBER;
66152
66153 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
66154 l_bflow_applied_to_amt NUMBER; -- 5132302
66155 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
66156
66157 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66158
66159 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
66163
66160 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
66161
66162 ---------------------------------------------------------------------------------------------------------------
66164
66165 --
66166 -- bulk performance
66167 --
66168 l_balance_type_code VARCHAR2(1);
66169 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
66170 l_log_module VARCHAR2(240);
66171
66172 --
66173 -- Upgrade strategy
66174 --
66175 l_actual_upg_option VARCHAR2(1);
66176 l_enc_upg_option VARCHAR2(1);
66177
66178 --
66179 BEGIN
66180 --
66181 IF g_log_enabled THEN
66182 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_152';
66183 END IF;
66184 --
66185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66186
66187 trace
66188 (p_msg => 'BEGIN of AcctLineType_152'
66189 ,p_level => C_LEVEL_PROCEDURE
66190 ,p_module => l_log_module);
66191
66192 END IF;
66193 --
66194 l_component_type := 'AMB_JLT';
66195 l_component_code := 'INV';
66196 l_component_type_code := 'S';
66197 l_component_appl_id := 555;
66198 l_amb_context_code := 'DEFAULT';
66199 l_entity_code := 'INVENTORY';
66200 l_event_class_code := 'LOG_INTERCOMPANY';
66201 l_event_type_code := 'LOG_IC_SALES_RETURN';
66202 l_line_definition_owner_code := 'S';
66203 l_line_definition_code := 'LOG_IC_SALES_RETURN';
66204 --
66205 l_balance_type_code := 'A';
66206 l_segment := NULL;
66207 l_ccid := NULL;
66208 l_adr_transaction_coa_id := NULL;
66209 l_adr_accounting_coa_id := NULL;
66210 l_adr_flexfield_segment_code := NULL;
66211 l_adr_flex_value_set_id := NULL;
66212 l_adr_value_type_code := NULL;
66213 l_adr_value_combination_id := NULL;
66214 l_adr_value_segment_code := NULL;
66215
66216 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
66217 l_bflow_class_code := ''; -- 4219869 Business Flow
66218 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
66219 l_budgetary_control_flag := 'N';
66220
66221 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66222 l_bflow_applied_to_amt := NULL; -- 5132302
66223 l_entered_amt_idx := NULL; -- 4262811
66224 l_accted_amt_idx := NULL; -- 4262811
66225 l_acc_rev_flag := NULL; -- 4262811
66226 l_accrual_line_num := NULL; -- 4262811
66227 l_tmp_amt := NULL; -- 4262811
66228 --
66229
66230 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66231 l_balance_type_code <> 'B' THEN
66232 IF NVL(p_source_2,'
66233 ') = 'INV'
66234 THEN
66235
66236 --
66237 XLA_AE_LINES_PKG.SetNewLine;
66238
66239 p_balance_type_code := l_balance_type_code;
66240 -- set the flag so later we will know whether the gain loss line needs to be created
66241
66242 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66243 p_actual_flag :='A';
66244 END IF;
66245
66246 --
66247 -- bulk performance
66248 --
66249 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66250 p_header_num => 0); -- 4262811
66251 --
66252 -- set accounting line options
66253 --
66254 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66255 p_natural_side_code => 'D'
66256 , p_gain_or_loss_flag => 'N'
66257 , p_gl_transfer_mode_code => 'D'
66258 , p_acct_entry_type_code => 'A'
66259 , p_switch_side_flag => 'Y'
66260 , p_merge_duplicate_code => 'W'
66261 );
66262 --
66263 l_acc_rev_natural_side_code := 'C'; -- 4262811
66264 --
66265 --
66266 -- set accounting line type info
66267 --
66268 xla_ae_lines_pkg.SetAcctLineType
66269 (p_component_type => l_component_type
66270 ,p_event_type_code => l_event_type_code
66271 ,p_line_definition_owner_code => l_line_definition_owner_code
66272 ,p_line_definition_code => l_line_definition_code
66273 ,p_accounting_line_code => l_component_code
66274 ,p_accounting_line_type_code => l_component_type_code
66275 ,p_accounting_line_appl_id => l_component_appl_id
66276 ,p_amb_context_code => l_amb_context_code
66277 ,p_entity_code => l_entity_code
66278 ,p_event_class_code => l_event_class_code);
66279 --
66280 -- set accounting class
66281 --
66282 xla_ae_lines_pkg.SetAcctClass(
66283 p_accounting_class_code => 'INVENTORY_VALUATION'
66284 , p_ae_header_id => l_ae_header_id
66285 );
66286
66287 --
66288 -- set rounding class
66289 --
66290 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66291 'INVENTORY_VALUATION';
66292
66293 --
66294 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66295 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66299 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66296 --
66297 -- bulk performance
66298 --
66300
66301 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66302 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66303
66304 -- 4955764
66305 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66306 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66307
66308 -- 4458381 Public Sector Enh
66309
66310 --
66311 -- set accounting attributes for the line type
66312 --
66313 l_entered_amt_idx := 3;
66314 l_accted_amt_idx := 8;
66315 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66316 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66317 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
66318 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66319 l_rec_acct_attrs.array_char_value(2) := p_source_6;
66320 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66321 l_rec_acct_attrs.array_num_value(3) := p_source_3;
66322 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66323 l_rec_acct_attrs.array_char_value(4) := p_source_7;
66324 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66325 l_rec_acct_attrs.array_date_value(5) := p_source_8;
66326 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66327 l_rec_acct_attrs.array_num_value(6) := p_source_9;
66328 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66329 l_rec_acct_attrs.array_char_value(7) := p_source_10;
66330 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66331 l_rec_acct_attrs.array_num_value(8) := p_source_11;
66332
66333 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66334 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66335
66336 ---------------------------------------------------------------------------------------------------------------
66337 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66338 ---------------------------------------------------------------------------------------------------------------
66339 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66340
66341 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66342 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66343
66344 IF xla_accounting_cache_pkg.GetValueChar
66345 (p_source_code => 'LEDGER_CATEGORY_CODE'
66346 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66347 AND l_bflow_method_code = 'PRIOR_ENTRY'
66348 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66349 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66350 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66351 )
66352 THEN
66353 xla_ae_lines_pkg.BflowUpgEntry
66354 (p_business_method_code => l_bflow_method_code
66355 ,p_business_class_code => l_bflow_class_code
66356 ,p_balance_type => l_balance_type_code);
66357 ELSE
66358 NULL;
66359 -- No business flow processing for business flow method of NONE.
66360 END IF;
66361
66362 --
66363 -- call analytical criteria
66364 --
66365
66366 --
66367 -- call description
66368 --
66369 -- No description or it is inherited.
66370 --
66371 -- call ADRs
66372 -- Bug 4922099
66373 --
66374 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66375 (NVL(l_actual_upg_option, 'N') = 'O') OR
66376 (NVL(l_enc_upg_option, 'N') = 'O')
66377 )
66378 THEN
66379 NULL;
66380 --
66381 --
66382
66383 l_ccid := AcctDerRule_17(
66384 p_application_id => p_application_id
66385 , p_ae_header_id => l_ae_header_id
66386 , p_source_1 => p_source_1
66387 , p_source_2 => p_source_2
66388 , x_transaction_coa_id => l_adr_transaction_coa_id
66389 , x_accounting_coa_id => l_adr_accounting_coa_id
66390 , x_value_type_code => l_adr_value_type_code
66391 , p_side => 'NA'
66392 );
66393
66394 xla_ae_lines_pkg.set_ccid(
66395 p_code_combination_id => l_ccid
66396 , p_value_type_code => l_adr_value_type_code
66397 , p_transaction_coa_id => l_adr_transaction_coa_id
66398 , p_accounting_coa_id => l_adr_accounting_coa_id
66399 , p_adr_code => 'INV'
66400 , p_adr_type_code => 'S'
66401 , p_component_type => l_component_type
66402 , p_component_code => l_component_code
66403 , p_component_type_code => l_component_type_code
66404 , p_component_appl_id => l_component_appl_id
66405 , p_amb_context_code => l_amb_context_code
66406 , p_side => 'NA'
66407 );
66408
66409
66410 --
66411 --
66412 END IF;
66413 --
66414 -- Bug 4922099
66418 (l_bflow_method_code = 'PRIOR_ENTRY')
66415 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66416 (NVL(l_enc_upg_option, 'N') = 'O')
66417 ) AND
66419 )
66420 THEN
66421 IF
66422 --
66423 1 = 2
66424 --
66425 THEN
66426 xla_accounting_err_pkg.build_message
66427 (p_appli_s_name => 'XLA'
66428 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66429 ,p_token_1 => 'LINE_NUMBER'
66430 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
66431 ,p_token_2 => 'LINE_TYPE_NAME'
66432 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
66433 l_component_type
66434 ,l_component_code
66435 ,l_component_type_code
66436 ,l_component_appl_id
66437 ,l_amb_context_code
66438 ,l_entity_code
66439 ,l_event_class_code
66440 )
66441 ,p_token_3 => 'OWNER'
66442 ,p_value_3 => xla_lookups_pkg.get_meaning(
66443 p_lookup_type => 'XLA_OWNER_TYPE'
66444 ,p_lookup_code => l_component_type_code
66445 )
66446 ,p_token_4 => 'PRODUCT_NAME'
66447 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66448 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66449 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66450 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66451 ,p_ae_header_id => NULL
66452 );
66453
66454 IF (C_LEVEL_ERROR>= g_log_level) THEN
66455 trace
66456 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66457 ,p_level => C_LEVEL_ERROR
66458 ,p_module => l_log_module);
66459 END IF;
66460 END IF;
66461 END IF;
66462 --
66463 --
66464 ------------------------------------------------------------------------------------------------
66465 -- 4219869 Business Flow
66466 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66467 -- Prior Entry. Currently, the following code is always generated.
66468 ------------------------------------------------------------------------------------------------
66469 XLA_AE_LINES_PKG.ValidateCurrentLine;
66470
66471 ------------------------------------------------------------------------------------
66472 -- 4219869 Business Flow
66473 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66474 ------------------------------------------------------------------------------------
66475 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66476
66477 ----------------------------------------------------------------------------------
66478 -- 4219869 Business Flow
66479 -- Update journal entry status -- Need to generate this within IF <condition>
66480 ----------------------------------------------------------------------------------
66481 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66482 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66483 ,p_balance_type_code => l_balance_type_code
66484 );
66485
66486 -------------------------------------------------------------------------------------------
66487 -- 4262811 - Generate the Accrual Reversal lines
66488 -------------------------------------------------------------------------------------------
66489 BEGIN
66490 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66491 (g_array_event(p_event_id).array_value_num('header_index'));
66492 IF l_acc_rev_flag IS NULL THEN
66493 l_acc_rev_flag := 'N';
66494 END IF;
66495 EXCEPTION
66496 WHEN OTHERS THEN
66497 l_acc_rev_flag := 'N';
66498 END;
66499 --
66500 IF (l_acc_rev_flag = 'Y') THEN
66501
66502 -- 4645092 ------------------------------------------------------------------------------
66503 -- To allow MPA report to determine if it should generate report process
66504 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66505 ------------------------------------------------------------------------------------------
66506
66510 -- call ADRs
66507 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66508 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66509 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
66511 -- Bug 4922099
66512 --
66513 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66514 (NVL(l_actual_upg_option, 'N') = 'O') OR
66515 (NVL(l_enc_upg_option, 'N') = 'O')
66516 )
66517 THEN
66518 NULL;
66519 --
66520 --
66521
66522 l_ccid := AcctDerRule_17(
66523 p_application_id => p_application_id
66524 , p_ae_header_id => l_ae_header_id
66525 , p_source_1 => p_source_1
66526 , p_source_2 => p_source_2
66527 , x_transaction_coa_id => l_adr_transaction_coa_id
66528 , x_accounting_coa_id => l_adr_accounting_coa_id
66529 , x_value_type_code => l_adr_value_type_code
66530 , p_side => 'NA'
66531 );
66532
66533 xla_ae_lines_pkg.set_ccid(
66534 p_code_combination_id => l_ccid
66535 , p_value_type_code => l_adr_value_type_code
66536 , p_transaction_coa_id => l_adr_transaction_coa_id
66537 , p_accounting_coa_id => l_adr_accounting_coa_id
66538 , p_adr_code => 'INV'
66539 , p_adr_type_code => 'S'
66540 , p_component_type => l_component_type
66541 , p_component_code => l_component_code
66542 , p_component_type_code => l_component_type_code
66543 , p_component_appl_id => l_component_appl_id
66544 , p_amb_context_code => l_amb_context_code
66545 , p_side => 'NA'
66546 );
66547
66548
66549 --
66550 --
66551 END IF;
66552
66553 --
66554 -- Update the line information that should be overwritten
66555 --
66556 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66557 p_header_num => 1);
66558 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
66559
66560 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66561
66562 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
66563 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66564 END IF;
66565
66566 --
66567 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66568 --
66569 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66570 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
66571 ELSE
66572 ---------------------------------------------------------------------------------------------------
66573 -- 4262811a Switch Sign
66574 ---------------------------------------------------------------------------------------------------
66575 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
66576 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66577 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66578 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66579 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66580 -- 5132302
66581 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66582 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66583
66584 END IF;
66585
66586 -- 4955764
66587 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66588 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66589
66590
66591 XLA_AE_LINES_PKG.ValidateCurrentLine;
66592 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66593
66594 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66595 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66596 ,p_balance_type_code => l_balance_type_code);
66597
66598 END IF;
66599
66600 -----------------------------------------------------------------------------------------
66601 -- 4262811 Multiperiod Accounting
66602 -----------------------------------------------------------------------------------------
66603 -- No MPA option is assigned.
66604
66605
66606 END IF;
66607 END IF;
66608 --
66609
66610 --
66611 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66612 trace
66613 (p_msg => 'END of AcctLineType_152'
66614 ,p_level => C_LEVEL_PROCEDURE
66615 ,p_module => l_log_module);
66616 END IF;
66617 --
66618 EXCEPTION
66619 WHEN xla_exceptions_pkg.application_exception THEN
66620 RAISE;
66621 WHEN OTHERS THEN
66622 xla_exceptions_pkg.raise_message
66623 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_152');
66624 END AcctLineType_152;
66625 --
66626
66627 ---------------------------------------
66631 --
66628 --
66629 -- PRIVATE FUNCTION
66630 -- AcctLineType_153
66632 ---------------------------------------
66633 PROCEDURE AcctLineType_153 (
66634 p_application_id IN NUMBER
66635 ,p_event_id IN NUMBER
66636 ,p_calculate_acctd_flag IN VARCHAR2
66637 ,p_calculate_g_l_flag IN VARCHAR2
66638 ,p_actual_flag IN OUT VARCHAR2
66639 ,p_balance_type_code OUT VARCHAR2
66640 ,p_gain_or_loss_ref OUT VARCHAR2
66641
66642 --Transaction Account
66643 , p_source_1 IN NUMBER
66644 --Journal Line Type
66645 , p_source_2 IN VARCHAR2
66646 --Entered Amount
66647 , p_source_3 IN NUMBER
66648 --First Distribution Identifier
66649 , p_source_5 IN NUMBER
66650 --Distribution Type
66651 , p_source_6 IN VARCHAR2
66652 --Currency Code
66653 , p_source_7 IN VARCHAR2
66654 --Currency Conversion Date
66655 , p_source_8 IN DATE
66656 --Currency Conversion Rate
66657 , p_source_9 IN NUMBER
66658 --Currency Conversion Type
66659 , p_source_10 IN VARCHAR2
66660 --Accounted Amount
66661 , p_source_11 IN NUMBER
66662 )
66663 IS
66664
66665 l_component_type VARCHAR2(80);
66666 l_component_code VARCHAR2(30);
66667 l_component_type_code VARCHAR2(1);
66668 l_component_appl_id INTEGER;
66669 l_amb_context_code VARCHAR2(30);
66670 l_entity_code VARCHAR2(30);
66671 l_event_class_code VARCHAR2(30);
66672 l_ae_header_id NUMBER;
66673 l_event_type_code VARCHAR2(30);
66674 l_line_definition_code VARCHAR2(30);
66675 l_line_definition_owner_code VARCHAR2(1);
66676 --
66677 -- adr variables
66678 l_segment VARCHAR2(30);
66679 l_ccid NUMBER;
66680 l_adr_transaction_coa_id NUMBER;
66681 l_adr_accounting_coa_id NUMBER;
66682 l_adr_flexfield_segment_code VARCHAR2(30);
66683 l_adr_flex_value_set_id NUMBER;
66684 l_adr_value_type_code VARCHAR2(30);
66685 l_adr_value_combination_id NUMBER;
66686 l_adr_value_segment_code VARCHAR2(30);
66687
66688 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
66689 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
66690 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
66691 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
66692
66693 -- 4262811 Variables ------------------------------------------------------------------------------------------
66694 l_entered_amt_idx NUMBER;
66695 l_accted_amt_idx NUMBER;
66696 l_acc_rev_flag VARCHAR2(1);
66697 l_accrual_line_num NUMBER;
66698 l_tmp_amt NUMBER;
66699 l_acc_rev_natural_side_code VARCHAR2(1);
66700
66701 l_num_entries NUMBER;
66702 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
66703 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
66704 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
66705 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
66706 l_recog_line_1 NUMBER;
66707 l_recog_line_2 NUMBER;
66708
66709 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
66710 l_bflow_applied_to_amt NUMBER; -- 5132302
66711 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
66712
66713 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66714
66715 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
66716 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
66717
66718 ---------------------------------------------------------------------------------------------------------------
66719
66720
66721 --
66722 -- bulk performance
66723 --
66724 l_balance_type_code VARCHAR2(1);
66725 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
66726 l_log_module VARCHAR2(240);
66727
66728 --
66729 -- Upgrade strategy
66730 --
66731 l_actual_upg_option VARCHAR2(1);
66732 l_enc_upg_option VARCHAR2(1);
66733
66734 --
66735 BEGIN
66736 --
66737 IF g_log_enabled THEN
66738 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_153';
66739 END IF;
66740 --
66741 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66742
66743 trace
66744 (p_msg => 'BEGIN of AcctLineType_153'
66745 ,p_level => C_LEVEL_PROCEDURE
66746 ,p_module => l_log_module);
66747
66748 END IF;
66749 --
66750 l_component_type := 'AMB_JLT';
66751 l_component_code := 'INV';
66752 l_component_type_code := 'S';
66753 l_component_appl_id := 555;
66754 l_amb_context_code := 'DEFAULT';
66755 l_entity_code := 'ORDERMANAGEMENT';
66756 l_event_class_code := 'SHIPPING';
66757 l_event_type_code := 'SO_ISSUE';
66758 l_line_definition_owner_code := 'S';
66759 l_line_definition_code := 'SO_ISSUE';
66760 --
66761 l_balance_type_code := 'A';
66762 l_segment := NULL;
66763 l_ccid := NULL;
66764 l_adr_transaction_coa_id := NULL;
66768 l_adr_value_type_code := NULL;
66765 l_adr_accounting_coa_id := NULL;
66766 l_adr_flexfield_segment_code := NULL;
66767 l_adr_flex_value_set_id := NULL;
66769 l_adr_value_combination_id := NULL;
66770 l_adr_value_segment_code := NULL;
66771
66772 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
66773 l_bflow_class_code := ''; -- 4219869 Business Flow
66774 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
66775 l_budgetary_control_flag := 'N';
66776
66777 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66778 l_bflow_applied_to_amt := NULL; -- 5132302
66779 l_entered_amt_idx := NULL; -- 4262811
66780 l_accted_amt_idx := NULL; -- 4262811
66781 l_acc_rev_flag := NULL; -- 4262811
66782 l_accrual_line_num := NULL; -- 4262811
66783 l_tmp_amt := NULL; -- 4262811
66784 --
66785
66786 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66787 l_balance_type_code <> 'B' THEN
66788 IF NVL(p_source_2,'
66789 ') = 'INV'
66790 THEN
66791
66792 --
66793 XLA_AE_LINES_PKG.SetNewLine;
66794
66795 p_balance_type_code := l_balance_type_code;
66796 -- set the flag so later we will know whether the gain loss line needs to be created
66797
66798 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66799 p_actual_flag :='A';
66800 END IF;
66801
66802 --
66803 -- bulk performance
66804 --
66805 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66806 p_header_num => 0); -- 4262811
66807 --
66808 -- set accounting line options
66809 --
66810 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66811 p_natural_side_code => 'D'
66812 , p_gain_or_loss_flag => 'N'
66813 , p_gl_transfer_mode_code => 'D'
66814 , p_acct_entry_type_code => 'A'
66815 , p_switch_side_flag => 'Y'
66816 , p_merge_duplicate_code => 'W'
66817 );
66818 --
66819 l_acc_rev_natural_side_code := 'C'; -- 4262811
66820 --
66821 --
66822 -- set accounting line type info
66823 --
66824 xla_ae_lines_pkg.SetAcctLineType
66825 (p_component_type => l_component_type
66826 ,p_event_type_code => l_event_type_code
66827 ,p_line_definition_owner_code => l_line_definition_owner_code
66828 ,p_line_definition_code => l_line_definition_code
66829 ,p_accounting_line_code => l_component_code
66830 ,p_accounting_line_type_code => l_component_type_code
66831 ,p_accounting_line_appl_id => l_component_appl_id
66832 ,p_amb_context_code => l_amb_context_code
66833 ,p_entity_code => l_entity_code
66834 ,p_event_class_code => l_event_class_code);
66835 --
66836 -- set accounting class
66837 --
66838 xla_ae_lines_pkg.SetAcctClass(
66839 p_accounting_class_code => 'INVENTORY_VALUATION'
66840 , p_ae_header_id => l_ae_header_id
66841 );
66842
66843 --
66844 -- set rounding class
66845 --
66846 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66847 'INVENTORY_VALUATION';
66848
66849 --
66850 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66851 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66852 --
66853 -- bulk performance
66854 --
66855 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66856
66857 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66858 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66859
66860 -- 4955764
66861 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66862 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66863
66864 -- 4458381 Public Sector Enh
66865
66866 --
66867 -- set accounting attributes for the line type
66868 --
66869 l_entered_amt_idx := 3;
66870 l_accted_amt_idx := 8;
66871 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66872 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66873 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
66874 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66875 l_rec_acct_attrs.array_char_value(2) := p_source_6;
66876 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66877 l_rec_acct_attrs.array_num_value(3) := p_source_3;
66878 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66879 l_rec_acct_attrs.array_char_value(4) := p_source_7;
66880 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66881 l_rec_acct_attrs.array_date_value(5) := p_source_8;
66882 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66883 l_rec_acct_attrs.array_num_value(6) := p_source_9;
66884 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66885 l_rec_acct_attrs.array_char_value(7) := p_source_10;
66889 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66886 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66887 l_rec_acct_attrs.array_num_value(8) := p_source_11;
66888
66890 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66891
66892 ---------------------------------------------------------------------------------------------------------------
66893 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66894 ---------------------------------------------------------------------------------------------------------------
66895 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66896
66897 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66898 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66899
66900 IF xla_accounting_cache_pkg.GetValueChar
66901 (p_source_code => 'LEDGER_CATEGORY_CODE'
66902 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66903 AND l_bflow_method_code = 'PRIOR_ENTRY'
66904 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66905 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66906 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66907 )
66908 THEN
66909 xla_ae_lines_pkg.BflowUpgEntry
66910 (p_business_method_code => l_bflow_method_code
66911 ,p_business_class_code => l_bflow_class_code
66912 ,p_balance_type => l_balance_type_code);
66913 ELSE
66914 NULL;
66915 -- No business flow processing for business flow method of NONE.
66916 END IF;
66917
66918 --
66919 -- call analytical criteria
66920 --
66921
66922 --
66923 -- call description
66924 --
66925 -- No description or it is inherited.
66926 --
66927 -- call ADRs
66928 -- Bug 4922099
66929 --
66930 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66931 (NVL(l_actual_upg_option, 'N') = 'O') OR
66932 (NVL(l_enc_upg_option, 'N') = 'O')
66933 )
66934 THEN
66935 NULL;
66936 --
66937 --
66938
66939 l_ccid := AcctDerRule_17(
66940 p_application_id => p_application_id
66941 , p_ae_header_id => l_ae_header_id
66942 , p_source_1 => p_source_1
66943 , p_source_2 => p_source_2
66944 , x_transaction_coa_id => l_adr_transaction_coa_id
66945 , x_accounting_coa_id => l_adr_accounting_coa_id
66946 , x_value_type_code => l_adr_value_type_code
66947 , p_side => 'NA'
66948 );
66949
66950 xla_ae_lines_pkg.set_ccid(
66951 p_code_combination_id => l_ccid
66952 , p_value_type_code => l_adr_value_type_code
66953 , p_transaction_coa_id => l_adr_transaction_coa_id
66954 , p_accounting_coa_id => l_adr_accounting_coa_id
66955 , p_adr_code => 'INV'
66956 , p_adr_type_code => 'S'
66957 , p_component_type => l_component_type
66958 , p_component_code => l_component_code
66959 , p_component_type_code => l_component_type_code
66960 , p_component_appl_id => l_component_appl_id
66961 , p_amb_context_code => l_amb_context_code
66962 , p_side => 'NA'
66963 );
66964
66965
66966 --
66967 --
66968 END IF;
66969 --
66970 -- Bug 4922099
66971 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66972 (NVL(l_enc_upg_option, 'N') = 'O')
66973 ) AND
66974 (l_bflow_method_code = 'PRIOR_ENTRY')
66975 )
66976 THEN
66977 IF
66978 --
66979 1 = 2
66980 --
66981 THEN
66982 xla_accounting_err_pkg.build_message
66983 (p_appli_s_name => 'XLA'
66984 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66985 ,p_token_1 => 'LINE_NUMBER'
66986 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
66987 ,p_token_2 => 'LINE_TYPE_NAME'
66988 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
66989 l_component_type
66990 ,l_component_code
66991 ,l_component_type_code
66992 ,l_component_appl_id
66993 ,l_amb_context_code
66994 ,l_entity_code
66995 ,l_event_class_code
66996 )
66997 ,p_token_3 => 'OWNER'
67001 )
66998 ,p_value_3 => xla_lookups_pkg.get_meaning(
66999 p_lookup_type => 'XLA_OWNER_TYPE'
67000 ,p_lookup_code => l_component_type_code
67002 ,p_token_4 => 'PRODUCT_NAME'
67003 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67004 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67005 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67006 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67007 ,p_ae_header_id => NULL
67008 );
67009
67010 IF (C_LEVEL_ERROR>= g_log_level) THEN
67011 trace
67012 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67013 ,p_level => C_LEVEL_ERROR
67014 ,p_module => l_log_module);
67015 END IF;
67016 END IF;
67017 END IF;
67018 --
67019 --
67020 ------------------------------------------------------------------------------------------------
67021 -- 4219869 Business Flow
67022 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67023 -- Prior Entry. Currently, the following code is always generated.
67024 ------------------------------------------------------------------------------------------------
67025 XLA_AE_LINES_PKG.ValidateCurrentLine;
67026
67027 ------------------------------------------------------------------------------------
67028 -- 4219869 Business Flow
67029 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67030 ------------------------------------------------------------------------------------
67031 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67032
67033 ----------------------------------------------------------------------------------
67034 -- 4219869 Business Flow
67035 -- Update journal entry status -- Need to generate this within IF <condition>
67036 ----------------------------------------------------------------------------------
67037 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67038 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67039 ,p_balance_type_code => l_balance_type_code
67040 );
67041
67042 -------------------------------------------------------------------------------------------
67043 -- 4262811 - Generate the Accrual Reversal lines
67044 -------------------------------------------------------------------------------------------
67045 BEGIN
67046 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67047 (g_array_event(p_event_id).array_value_num('header_index'));
67048 IF l_acc_rev_flag IS NULL THEN
67049 l_acc_rev_flag := 'N';
67050 END IF;
67051 EXCEPTION
67052 WHEN OTHERS THEN
67053 l_acc_rev_flag := 'N';
67054 END;
67055 --
67056 IF (l_acc_rev_flag = 'Y') THEN
67057
67058 -- 4645092 ------------------------------------------------------------------------------
67059 -- To allow MPA report to determine if it should generate report process
67060 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67061 ------------------------------------------------------------------------------------------
67062
67063 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67064 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67065 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
67066 -- call ADRs
67067 -- Bug 4922099
67068 --
67069 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67070 (NVL(l_actual_upg_option, 'N') = 'O') OR
67071 (NVL(l_enc_upg_option, 'N') = 'O')
67072 )
67073 THEN
67074 NULL;
67075 --
67076 --
67077
67078 l_ccid := AcctDerRule_17(
67079 p_application_id => p_application_id
67080 , p_ae_header_id => l_ae_header_id
67081 , p_source_1 => p_source_1
67082 , p_source_2 => p_source_2
67083 , x_transaction_coa_id => l_adr_transaction_coa_id
67084 , x_accounting_coa_id => l_adr_accounting_coa_id
67085 , x_value_type_code => l_adr_value_type_code
67086 , p_side => 'NA'
67087 );
67088
67089 xla_ae_lines_pkg.set_ccid(
67090 p_code_combination_id => l_ccid
67091 , p_value_type_code => l_adr_value_type_code
67092 , p_transaction_coa_id => l_adr_transaction_coa_id
67093 , p_accounting_coa_id => l_adr_accounting_coa_id
67094 , p_adr_code => 'INV'
67095 , p_adr_type_code => 'S'
67096 , p_component_type => l_component_type
67097 , p_component_code => l_component_code
67098 , p_component_type_code => l_component_type_code
67099 , p_component_appl_id => l_component_appl_id
67100 , p_amb_context_code => l_amb_context_code
67104
67101 , p_side => 'NA'
67102 );
67103
67105 --
67106 --
67107 END IF;
67108
67109 --
67110 -- Update the line information that should be overwritten
67111 --
67112 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67113 p_header_num => 1);
67114 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
67115
67116 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67117
67118 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
67119 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67120 END IF;
67121
67122 --
67123 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67124 --
67125 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67126 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
67127 ELSE
67128 ---------------------------------------------------------------------------------------------------
67129 -- 4262811a Switch Sign
67130 ---------------------------------------------------------------------------------------------------
67131 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
67132 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67133 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67134 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67135 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67136 -- 5132302
67137 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67138 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67139
67140 END IF;
67141
67142 -- 4955764
67143 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67144 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67145
67146
67147 XLA_AE_LINES_PKG.ValidateCurrentLine;
67148 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67149
67150 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67151 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67152 ,p_balance_type_code => l_balance_type_code);
67153
67154 END IF;
67155
67156 -----------------------------------------------------------------------------------------
67157 -- 4262811 Multiperiod Accounting
67158 -----------------------------------------------------------------------------------------
67159 -- No MPA option is assigned.
67160
67161
67162 END IF;
67163 END IF;
67164 --
67165
67166 --
67167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67168 trace
67169 (p_msg => 'END of AcctLineType_153'
67170 ,p_level => C_LEVEL_PROCEDURE
67171 ,p_module => l_log_module);
67172 END IF;
67173 --
67174 EXCEPTION
67175 WHEN xla_exceptions_pkg.application_exception THEN
67176 RAISE;
67177 WHEN OTHERS THEN
67178 xla_exceptions_pkg.raise_message
67179 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_153');
67180 END AcctLineType_153;
67181 --
67182
67183 ---------------------------------------
67184 --
67185 -- PRIVATE FUNCTION
67186 -- AcctLineType_154
67187 --
67188 ---------------------------------------
67189 PROCEDURE AcctLineType_154 (
67190 p_application_id IN NUMBER
67191 ,p_event_id IN NUMBER
67192 ,p_calculate_acctd_flag IN VARCHAR2
67193 ,p_calculate_g_l_flag IN VARCHAR2
67194 ,p_actual_flag IN OUT VARCHAR2
67195 ,p_balance_type_code OUT VARCHAR2
67196 ,p_gain_or_loss_ref OUT VARCHAR2
67197
67198 --Transaction Account
67199 , p_source_1 IN NUMBER
67200 --Journal Line Type
67201 , p_source_2 IN VARCHAR2
67202 --Entered Amount
67203 , p_source_3 IN NUMBER
67204 --First Distribution Identifier
67205 , p_source_5 IN NUMBER
67206 --Distribution Type
67207 , p_source_6 IN VARCHAR2
67208 --Currency Code
67209 , p_source_7 IN VARCHAR2
67210 --Currency Conversion Date
67211 , p_source_8 IN DATE
67212 --Currency Conversion Rate
67213 , p_source_9 IN NUMBER
67214 --Currency Conversion Type
67215 , p_source_10 IN VARCHAR2
67216 --Accounted Amount
67217 , p_source_11 IN NUMBER
67218 )
67219 IS
67220
67221 l_component_type VARCHAR2(80);
67222 l_component_code VARCHAR2(30);
67223 l_component_type_code VARCHAR2(1);
67224 l_component_appl_id INTEGER;
67225 l_amb_context_code VARCHAR2(30);
67226 l_entity_code VARCHAR2(30);
67227 l_event_class_code VARCHAR2(30);
67228 l_ae_header_id NUMBER;
67229 l_event_type_code VARCHAR2(30);
67230 l_line_definition_code VARCHAR2(30);
67231 l_line_definition_owner_code VARCHAR2(1);
67232 --
67236 l_adr_transaction_coa_id NUMBER;
67233 -- adr variables
67234 l_segment VARCHAR2(30);
67235 l_ccid NUMBER;
67237 l_adr_accounting_coa_id NUMBER;
67238 l_adr_flexfield_segment_code VARCHAR2(30);
67239 l_adr_flex_value_set_id NUMBER;
67240 l_adr_value_type_code VARCHAR2(30);
67241 l_adr_value_combination_id NUMBER;
67242 l_adr_value_segment_code VARCHAR2(30);
67243
67244 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
67245 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
67246 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
67247 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
67248
67249 -- 4262811 Variables ------------------------------------------------------------------------------------------
67250 l_entered_amt_idx NUMBER;
67251 l_accted_amt_idx NUMBER;
67252 l_acc_rev_flag VARCHAR2(1);
67253 l_accrual_line_num NUMBER;
67254 l_tmp_amt NUMBER;
67255 l_acc_rev_natural_side_code VARCHAR2(1);
67256
67257 l_num_entries NUMBER;
67258 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
67259 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
67260 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
67261 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
67262 l_recog_line_1 NUMBER;
67263 l_recog_line_2 NUMBER;
67264
67265 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
67266 l_bflow_applied_to_amt NUMBER; -- 5132302
67267 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
67268
67269 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67270
67271 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
67272 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
67273
67274 ---------------------------------------------------------------------------------------------------------------
67275
67276
67277 --
67278 -- bulk performance
67279 --
67280 l_balance_type_code VARCHAR2(1);
67281 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
67282 l_log_module VARCHAR2(240);
67283
67284 --
67285 -- Upgrade strategy
67286 --
67287 l_actual_upg_option VARCHAR2(1);
67288 l_enc_upg_option VARCHAR2(1);
67289
67290 --
67291 BEGIN
67292 --
67293 IF g_log_enabled THEN
67294 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_154';
67295 END IF;
67296 --
67297 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67298
67299 trace
67300 (p_msg => 'BEGIN of AcctLineType_154'
67301 ,p_level => C_LEVEL_PROCEDURE
67302 ,p_module => l_log_module);
67303
67304 END IF;
67305 --
67306 l_component_type := 'AMB_JLT';
67307 l_component_code := 'INV';
67308 l_component_type_code := 'S';
67309 l_component_appl_id := 555;
67310 l_amb_context_code := 'DEFAULT';
67311 l_entity_code := 'PRODUCTION';
67312 l_event_class_code := 'BATCH_MATERIAL';
67313 l_event_type_code := 'CERT';
67314 l_line_definition_owner_code := 'S';
67315 l_line_definition_code := 'BATCH_COMPLETION';
67316 --
67317 l_balance_type_code := 'A';
67318 l_segment := NULL;
67319 l_ccid := NULL;
67320 l_adr_transaction_coa_id := NULL;
67321 l_adr_accounting_coa_id := NULL;
67322 l_adr_flexfield_segment_code := NULL;
67323 l_adr_flex_value_set_id := NULL;
67324 l_adr_value_type_code := NULL;
67325 l_adr_value_combination_id := NULL;
67326 l_adr_value_segment_code := NULL;
67327
67328 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
67329 l_bflow_class_code := ''; -- 4219869 Business Flow
67330 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
67331 l_budgetary_control_flag := 'N';
67332
67333 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67334 l_bflow_applied_to_amt := NULL; -- 5132302
67335 l_entered_amt_idx := NULL; -- 4262811
67336 l_accted_amt_idx := NULL; -- 4262811
67337 l_acc_rev_flag := NULL; -- 4262811
67338 l_accrual_line_num := NULL; -- 4262811
67339 l_tmp_amt := NULL; -- 4262811
67340 --
67341
67342 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67343 l_balance_type_code <> 'B' THEN
67344 IF NVL(p_source_2,'
67345 ') = 'INV'
67346 THEN
67347
67348 --
67349 XLA_AE_LINES_PKG.SetNewLine;
67350
67351 p_balance_type_code := l_balance_type_code;
67352 -- set the flag so later we will know whether the gain loss line needs to be created
67353
67354 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67355 p_actual_flag :='A';
67356 END IF;
67357
67358 --
67359 -- bulk performance
67360 --
67361 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67365 --
67362 p_header_num => 0); -- 4262811
67363 --
67364 -- set accounting line options
67366 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67367 p_natural_side_code => 'D'
67368 , p_gain_or_loss_flag => 'N'
67369 , p_gl_transfer_mode_code => 'D'
67370 , p_acct_entry_type_code => 'A'
67371 , p_switch_side_flag => 'Y'
67372 , p_merge_duplicate_code => 'W'
67373 );
67374 --
67375 l_acc_rev_natural_side_code := 'C'; -- 4262811
67376 --
67377 --
67378 -- set accounting line type info
67379 --
67380 xla_ae_lines_pkg.SetAcctLineType
67381 (p_component_type => l_component_type
67382 ,p_event_type_code => l_event_type_code
67383 ,p_line_definition_owner_code => l_line_definition_owner_code
67384 ,p_line_definition_code => l_line_definition_code
67385 ,p_accounting_line_code => l_component_code
67386 ,p_accounting_line_type_code => l_component_type_code
67387 ,p_accounting_line_appl_id => l_component_appl_id
67388 ,p_amb_context_code => l_amb_context_code
67389 ,p_entity_code => l_entity_code
67390 ,p_event_class_code => l_event_class_code);
67391 --
67392 -- set accounting class
67393 --
67394 xla_ae_lines_pkg.SetAcctClass(
67395 p_accounting_class_code => 'INVENTORY_VALUATION'
67396 , p_ae_header_id => l_ae_header_id
67397 );
67398
67399 --
67400 -- set rounding class
67401 --
67402 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67403 'INVENTORY_VALUATION';
67404
67405 --
67406 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67407 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67408 --
67409 -- bulk performance
67410 --
67411 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67412
67413 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67414 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67415
67416 -- 4955764
67417 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67418 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67419
67420 -- 4458381 Public Sector Enh
67421
67422 --
67423 -- set accounting attributes for the line type
67424 --
67425 l_entered_amt_idx := 3;
67426 l_accted_amt_idx := 8;
67427 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67428 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67429 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
67430 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67431 l_rec_acct_attrs.array_char_value(2) := p_source_6;
67432 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67433 l_rec_acct_attrs.array_num_value(3) := p_source_3;
67434 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67435 l_rec_acct_attrs.array_char_value(4) := p_source_7;
67436 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67437 l_rec_acct_attrs.array_date_value(5) := p_source_8;
67438 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67439 l_rec_acct_attrs.array_num_value(6) := p_source_9;
67440 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67441 l_rec_acct_attrs.array_char_value(7) := p_source_10;
67442 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67443 l_rec_acct_attrs.array_num_value(8) := p_source_11;
67444
67445 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67446 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67447
67448 ---------------------------------------------------------------------------------------------------------------
67449 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67450 ---------------------------------------------------------------------------------------------------------------
67451 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67452
67453 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67454 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67455
67456 IF xla_accounting_cache_pkg.GetValueChar
67457 (p_source_code => 'LEDGER_CATEGORY_CODE'
67458 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67459 AND l_bflow_method_code = 'PRIOR_ENTRY'
67460 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67461 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67462 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67463 )
67464 THEN
67465 xla_ae_lines_pkg.BflowUpgEntry
67466 (p_business_method_code => l_bflow_method_code
67467 ,p_business_class_code => l_bflow_class_code
67471 -- No business flow processing for business flow method of NONE.
67468 ,p_balance_type => l_balance_type_code);
67469 ELSE
67470 NULL;
67472 END IF;
67473
67474 --
67475 -- call analytical criteria
67476 --
67477
67478 --
67479 -- call description
67480 --
67481 -- No description or it is inherited.
67482 --
67483 -- call ADRs
67484 -- Bug 4922099
67485 --
67486 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67487 (NVL(l_actual_upg_option, 'N') = 'O') OR
67488 (NVL(l_enc_upg_option, 'N') = 'O')
67489 )
67490 THEN
67491 NULL;
67492 --
67493 --
67494
67495 l_ccid := AcctDerRule_17(
67496 p_application_id => p_application_id
67497 , p_ae_header_id => l_ae_header_id
67498 , p_source_1 => p_source_1
67499 , p_source_2 => p_source_2
67500 , x_transaction_coa_id => l_adr_transaction_coa_id
67501 , x_accounting_coa_id => l_adr_accounting_coa_id
67502 , x_value_type_code => l_adr_value_type_code
67503 , p_side => 'NA'
67504 );
67505
67506 xla_ae_lines_pkg.set_ccid(
67507 p_code_combination_id => l_ccid
67508 , p_value_type_code => l_adr_value_type_code
67509 , p_transaction_coa_id => l_adr_transaction_coa_id
67510 , p_accounting_coa_id => l_adr_accounting_coa_id
67511 , p_adr_code => 'INV'
67512 , p_adr_type_code => 'S'
67513 , p_component_type => l_component_type
67514 , p_component_code => l_component_code
67515 , p_component_type_code => l_component_type_code
67516 , p_component_appl_id => l_component_appl_id
67517 , p_amb_context_code => l_amb_context_code
67518 , p_side => 'NA'
67519 );
67520
67521
67522 --
67523 --
67524 END IF;
67525 --
67526 -- Bug 4922099
67527 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67528 (NVL(l_enc_upg_option, 'N') = 'O')
67529 ) AND
67530 (l_bflow_method_code = 'PRIOR_ENTRY')
67531 )
67532 THEN
67533 IF
67534 --
67535 1 = 2
67536 --
67537 THEN
67538 xla_accounting_err_pkg.build_message
67539 (p_appli_s_name => 'XLA'
67540 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67541 ,p_token_1 => 'LINE_NUMBER'
67542 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
67543 ,p_token_2 => 'LINE_TYPE_NAME'
67544 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
67545 l_component_type
67546 ,l_component_code
67547 ,l_component_type_code
67548 ,l_component_appl_id
67549 ,l_amb_context_code
67550 ,l_entity_code
67551 ,l_event_class_code
67552 )
67553 ,p_token_3 => 'OWNER'
67554 ,p_value_3 => xla_lookups_pkg.get_meaning(
67555 p_lookup_type => 'XLA_OWNER_TYPE'
67556 ,p_lookup_code => l_component_type_code
67557 )
67558 ,p_token_4 => 'PRODUCT_NAME'
67559 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67560 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67561 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67562 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67563 ,p_ae_header_id => NULL
67564 );
67565
67566 IF (C_LEVEL_ERROR>= g_log_level) THEN
67567 trace
67568 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67569 ,p_level => C_LEVEL_ERROR
67570 ,p_module => l_log_module);
67571 END IF;
67572 END IF;
67573 END IF;
67574 --
67575 --
67576 ------------------------------------------------------------------------------------------------
67577 -- 4219869 Business Flow
67578 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67582
67579 -- Prior Entry. Currently, the following code is always generated.
67580 ------------------------------------------------------------------------------------------------
67581 XLA_AE_LINES_PKG.ValidateCurrentLine;
67583 ------------------------------------------------------------------------------------
67584 -- 4219869 Business Flow
67585 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67586 ------------------------------------------------------------------------------------
67587 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67588
67589 ----------------------------------------------------------------------------------
67590 -- 4219869 Business Flow
67591 -- Update journal entry status -- Need to generate this within IF <condition>
67592 ----------------------------------------------------------------------------------
67593 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67594 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67595 ,p_balance_type_code => l_balance_type_code
67596 );
67597
67598 -------------------------------------------------------------------------------------------
67599 -- 4262811 - Generate the Accrual Reversal lines
67600 -------------------------------------------------------------------------------------------
67601 BEGIN
67602 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67603 (g_array_event(p_event_id).array_value_num('header_index'));
67604 IF l_acc_rev_flag IS NULL THEN
67605 l_acc_rev_flag := 'N';
67606 END IF;
67607 EXCEPTION
67608 WHEN OTHERS THEN
67609 l_acc_rev_flag := 'N';
67610 END;
67611 --
67612 IF (l_acc_rev_flag = 'Y') THEN
67613
67614 -- 4645092 ------------------------------------------------------------------------------
67615 -- To allow MPA report to determine if it should generate report process
67616 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67617 ------------------------------------------------------------------------------------------
67618
67619 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67620 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67621 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
67622 -- call ADRs
67623 -- Bug 4922099
67624 --
67625 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67626 (NVL(l_actual_upg_option, 'N') = 'O') OR
67627 (NVL(l_enc_upg_option, 'N') = 'O')
67628 )
67629 THEN
67630 NULL;
67631 --
67632 --
67633
67634 l_ccid := AcctDerRule_17(
67635 p_application_id => p_application_id
67636 , p_ae_header_id => l_ae_header_id
67637 , p_source_1 => p_source_1
67638 , p_source_2 => p_source_2
67639 , x_transaction_coa_id => l_adr_transaction_coa_id
67640 , x_accounting_coa_id => l_adr_accounting_coa_id
67641 , x_value_type_code => l_adr_value_type_code
67642 , p_side => 'NA'
67643 );
67644
67645 xla_ae_lines_pkg.set_ccid(
67646 p_code_combination_id => l_ccid
67647 , p_value_type_code => l_adr_value_type_code
67648 , p_transaction_coa_id => l_adr_transaction_coa_id
67649 , p_accounting_coa_id => l_adr_accounting_coa_id
67650 , p_adr_code => 'INV'
67651 , p_adr_type_code => 'S'
67652 , p_component_type => l_component_type
67653 , p_component_code => l_component_code
67654 , p_component_type_code => l_component_type_code
67655 , p_component_appl_id => l_component_appl_id
67656 , p_amb_context_code => l_amb_context_code
67657 , p_side => 'NA'
67658 );
67659
67660
67661 --
67662 --
67663 END IF;
67664
67665 --
67666 -- Update the line information that should be overwritten
67667 --
67668 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67669 p_header_num => 1);
67670 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
67671
67672 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67673
67674 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
67675 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67676 END IF;
67677
67678 --
67679 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67680 --
67681 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67682 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
67683 ELSE
67684 ---------------------------------------------------------------------------------------------------
67685 -- 4262811a Switch Sign
67686 ---------------------------------------------------------------------------------------------------
67687 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
67688 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67692 -- 5132302
67689 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67690 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67691 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67693 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67694 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67695
67696 END IF;
67697
67698 -- 4955764
67699 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67700 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67701
67702
67703 XLA_AE_LINES_PKG.ValidateCurrentLine;
67704 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67705
67706 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67707 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67708 ,p_balance_type_code => l_balance_type_code);
67709
67710 END IF;
67711
67712 -----------------------------------------------------------------------------------------
67713 -- 4262811 Multiperiod Accounting
67714 -----------------------------------------------------------------------------------------
67715 -- No MPA option is assigned.
67716
67717
67718 END IF;
67719 END IF;
67720 --
67721
67722 --
67723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67724 trace
67725 (p_msg => 'END of AcctLineType_154'
67726 ,p_level => C_LEVEL_PROCEDURE
67727 ,p_module => l_log_module);
67728 END IF;
67729 --
67730 EXCEPTION
67731 WHEN xla_exceptions_pkg.application_exception THEN
67732 RAISE;
67733 WHEN OTHERS THEN
67734 xla_exceptions_pkg.raise_message
67735 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_154');
67736 END AcctLineType_154;
67737 --
67738
67739 ---------------------------------------
67740 --
67741 -- PRIVATE FUNCTION
67742 -- AcctLineType_155
67743 --
67744 ---------------------------------------
67745 PROCEDURE AcctLineType_155 (
67746 p_application_id IN NUMBER
67747 ,p_event_id IN NUMBER
67748 ,p_calculate_acctd_flag IN VARCHAR2
67749 ,p_calculate_g_l_flag IN VARCHAR2
67750 ,p_actual_flag IN OUT VARCHAR2
67751 ,p_balance_type_code OUT VARCHAR2
67752 ,p_gain_or_loss_ref OUT VARCHAR2
67753
67754 --Transaction Account
67755 , p_source_1 IN NUMBER
67756 --Journal Line Type
67757 , p_source_2 IN VARCHAR2
67758 --Entered Amount
67759 , p_source_3 IN NUMBER
67760 --First Distribution Identifier
67761 , p_source_5 IN NUMBER
67762 --Distribution Type
67763 , p_source_6 IN VARCHAR2
67764 --Currency Code
67765 , p_source_7 IN VARCHAR2
67766 --Currency Conversion Date
67767 , p_source_8 IN DATE
67768 --Currency Conversion Rate
67769 , p_source_9 IN NUMBER
67770 --Currency Conversion Type
67771 , p_source_10 IN VARCHAR2
67772 --Accounted Amount
67773 , p_source_11 IN NUMBER
67774 )
67775 IS
67776
67777 l_component_type VARCHAR2(80);
67778 l_component_code VARCHAR2(30);
67779 l_component_type_code VARCHAR2(1);
67780 l_component_appl_id INTEGER;
67781 l_amb_context_code VARCHAR2(30);
67782 l_entity_code VARCHAR2(30);
67783 l_event_class_code VARCHAR2(30);
67784 l_ae_header_id NUMBER;
67785 l_event_type_code VARCHAR2(30);
67786 l_line_definition_code VARCHAR2(30);
67787 l_line_definition_owner_code VARCHAR2(1);
67788 --
67789 -- adr variables
67790 l_segment VARCHAR2(30);
67791 l_ccid NUMBER;
67792 l_adr_transaction_coa_id NUMBER;
67793 l_adr_accounting_coa_id NUMBER;
67794 l_adr_flexfield_segment_code VARCHAR2(30);
67795 l_adr_flex_value_set_id NUMBER;
67796 l_adr_value_type_code VARCHAR2(30);
67797 l_adr_value_combination_id NUMBER;
67798 l_adr_value_segment_code VARCHAR2(30);
67799
67800 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
67801 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
67802 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
67803 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
67804
67805 -- 4262811 Variables ------------------------------------------------------------------------------------------
67806 l_entered_amt_idx NUMBER;
67807 l_accted_amt_idx NUMBER;
67808 l_acc_rev_flag VARCHAR2(1);
67809 l_accrual_line_num NUMBER;
67810 l_tmp_amt NUMBER;
67811 l_acc_rev_natural_side_code VARCHAR2(1);
67812
67813 l_num_entries NUMBER;
67814 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
67815 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
67816 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
67817 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
67818 l_recog_line_1 NUMBER;
67819 l_recog_line_2 NUMBER;
67823 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
67820
67821 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
67822 l_bflow_applied_to_amt NUMBER; -- 5132302
67824
67825 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67826
67827 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
67828 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
67829
67830 ---------------------------------------------------------------------------------------------------------------
67831
67832
67833 --
67834 -- bulk performance
67835 --
67836 l_balance_type_code VARCHAR2(1);
67837 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
67838 l_log_module VARCHAR2(240);
67839
67840 --
67841 -- Upgrade strategy
67842 --
67843 l_actual_upg_option VARCHAR2(1);
67844 l_enc_upg_option VARCHAR2(1);
67845
67846 --
67847 BEGIN
67848 --
67849 IF g_log_enabled THEN
67850 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_155';
67851 END IF;
67852 --
67853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67854
67855 trace
67856 (p_msg => 'BEGIN of AcctLineType_155'
67857 ,p_level => C_LEVEL_PROCEDURE
67858 ,p_module => l_log_module);
67859
67860 END IF;
67861 --
67862 l_component_type := 'AMB_JLT';
67863 l_component_code := 'INV';
67864 l_component_type_code := 'S';
67865 l_component_appl_id := 555;
67866 l_amb_context_code := 'DEFAULT';
67867 l_entity_code := 'PURCHASING';
67868 l_event_class_code := 'DELIVER';
67869 l_event_type_code := 'PO_RECEIPT_ADJ';
67870 l_line_definition_owner_code := 'S';
67871 l_line_definition_code := 'PO_RECEIPT_ADJ';
67872 --
67873 l_balance_type_code := 'A';
67874 l_segment := NULL;
67875 l_ccid := NULL;
67876 l_adr_transaction_coa_id := NULL;
67877 l_adr_accounting_coa_id := NULL;
67878 l_adr_flexfield_segment_code := NULL;
67879 l_adr_flex_value_set_id := NULL;
67880 l_adr_value_type_code := NULL;
67881 l_adr_value_combination_id := NULL;
67882 l_adr_value_segment_code := NULL;
67883
67884 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
67885 l_bflow_class_code := ''; -- 4219869 Business Flow
67886 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
67887 l_budgetary_control_flag := 'N';
67888
67889 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67890 l_bflow_applied_to_amt := NULL; -- 5132302
67891 l_entered_amt_idx := NULL; -- 4262811
67892 l_accted_amt_idx := NULL; -- 4262811
67893 l_acc_rev_flag := NULL; -- 4262811
67894 l_accrual_line_num := NULL; -- 4262811
67895 l_tmp_amt := NULL; -- 4262811
67896 --
67897
67898 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67899 l_balance_type_code <> 'B' THEN
67900 IF NVL(p_source_2,'
67901 ') = 'INV'
67902 THEN
67903
67904 --
67905 XLA_AE_LINES_PKG.SetNewLine;
67906
67907 p_balance_type_code := l_balance_type_code;
67908 -- set the flag so later we will know whether the gain loss line needs to be created
67909
67910 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67911 p_actual_flag :='A';
67912 END IF;
67913
67914 --
67915 -- bulk performance
67916 --
67917 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67918 p_header_num => 0); -- 4262811
67919 --
67920 -- set accounting line options
67921 --
67922 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67923 p_natural_side_code => 'D'
67924 , p_gain_or_loss_flag => 'N'
67925 , p_gl_transfer_mode_code => 'D'
67926 , p_acct_entry_type_code => 'A'
67927 , p_switch_side_flag => 'Y'
67928 , p_merge_duplicate_code => 'W'
67929 );
67930 --
67931 l_acc_rev_natural_side_code := 'C'; -- 4262811
67932 --
67933 --
67934 -- set accounting line type info
67935 --
67936 xla_ae_lines_pkg.SetAcctLineType
67937 (p_component_type => l_component_type
67938 ,p_event_type_code => l_event_type_code
67939 ,p_line_definition_owner_code => l_line_definition_owner_code
67940 ,p_line_definition_code => l_line_definition_code
67941 ,p_accounting_line_code => l_component_code
67942 ,p_accounting_line_type_code => l_component_type_code
67943 ,p_accounting_line_appl_id => l_component_appl_id
67944 ,p_amb_context_code => l_amb_context_code
67945 ,p_entity_code => l_entity_code
67946 ,p_event_class_code => l_event_class_code);
67947 --
67948 -- set accounting class
67949 --
67950 xla_ae_lines_pkg.SetAcctClass(
67951 p_accounting_class_code => 'INVENTORY_VALUATION'
67952 , p_ae_header_id => l_ae_header_id
67953 );
67954
67958 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67955 --
67956 -- set rounding class
67957 --
67959 'INVENTORY_VALUATION';
67960
67961 --
67962 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67963 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67964 --
67965 -- bulk performance
67966 --
67967 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67968
67969 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67970 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67971
67972 -- 4955764
67973 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67974 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67975
67976 -- 4458381 Public Sector Enh
67977
67978 --
67979 -- set accounting attributes for the line type
67980 --
67981 l_entered_amt_idx := 3;
67982 l_accted_amt_idx := 8;
67983 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67984 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67985 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
67986 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67987 l_rec_acct_attrs.array_char_value(2) := p_source_6;
67988 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67989 l_rec_acct_attrs.array_num_value(3) := p_source_3;
67990 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67991 l_rec_acct_attrs.array_char_value(4) := p_source_7;
67992 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67993 l_rec_acct_attrs.array_date_value(5) := p_source_8;
67994 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67995 l_rec_acct_attrs.array_num_value(6) := p_source_9;
67996 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67997 l_rec_acct_attrs.array_char_value(7) := p_source_10;
67998 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67999 l_rec_acct_attrs.array_num_value(8) := p_source_11;
68000
68001 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68002 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68003
68004 ---------------------------------------------------------------------------------------------------------------
68005 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68006 ---------------------------------------------------------------------------------------------------------------
68007 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68008
68009 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68010 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68011
68012 IF xla_accounting_cache_pkg.GetValueChar
68013 (p_source_code => 'LEDGER_CATEGORY_CODE'
68014 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68015 AND l_bflow_method_code = 'PRIOR_ENTRY'
68016 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68017 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68018 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68019 )
68020 THEN
68021 xla_ae_lines_pkg.BflowUpgEntry
68022 (p_business_method_code => l_bflow_method_code
68023 ,p_business_class_code => l_bflow_class_code
68024 ,p_balance_type => l_balance_type_code);
68025 ELSE
68026 NULL;
68027 -- No business flow processing for business flow method of NONE.
68028 END IF;
68029
68030 --
68031 -- call analytical criteria
68032 --
68033
68034 --
68035 -- call description
68036 --
68037 -- No description or it is inherited.
68038 --
68039 -- call ADRs
68040 -- Bug 4922099
68041 --
68042 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68043 (NVL(l_actual_upg_option, 'N') = 'O') OR
68044 (NVL(l_enc_upg_option, 'N') = 'O')
68045 )
68046 THEN
68047 NULL;
68048 --
68049 --
68050
68051 l_ccid := AcctDerRule_17(
68052 p_application_id => p_application_id
68053 , p_ae_header_id => l_ae_header_id
68054 , p_source_1 => p_source_1
68055 , p_source_2 => p_source_2
68056 , x_transaction_coa_id => l_adr_transaction_coa_id
68057 , x_accounting_coa_id => l_adr_accounting_coa_id
68058 , x_value_type_code => l_adr_value_type_code
68059 , p_side => 'NA'
68060 );
68061
68062 xla_ae_lines_pkg.set_ccid(
68063 p_code_combination_id => l_ccid
68064 , p_value_type_code => l_adr_value_type_code
68065 , p_transaction_coa_id => l_adr_transaction_coa_id
68066 , p_accounting_coa_id => l_adr_accounting_coa_id
68067 , p_adr_code => 'INV'
68068 , p_adr_type_code => 'S'
68069 , p_component_type => l_component_type
68073 , p_amb_context_code => l_amb_context_code
68070 , p_component_code => l_component_code
68071 , p_component_type_code => l_component_type_code
68072 , p_component_appl_id => l_component_appl_id
68074 , p_side => 'NA'
68075 );
68076
68077
68078 --
68079 --
68080 END IF;
68081 --
68082 -- Bug 4922099
68083 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68084 (NVL(l_enc_upg_option, 'N') = 'O')
68085 ) AND
68086 (l_bflow_method_code = 'PRIOR_ENTRY')
68087 )
68088 THEN
68089 IF
68090 --
68091 1 = 2
68092 --
68093 THEN
68094 xla_accounting_err_pkg.build_message
68095 (p_appli_s_name => 'XLA'
68096 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68097 ,p_token_1 => 'LINE_NUMBER'
68098 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
68099 ,p_token_2 => 'LINE_TYPE_NAME'
68100 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
68101 l_component_type
68102 ,l_component_code
68103 ,l_component_type_code
68104 ,l_component_appl_id
68105 ,l_amb_context_code
68106 ,l_entity_code
68107 ,l_event_class_code
68108 )
68109 ,p_token_3 => 'OWNER'
68110 ,p_value_3 => xla_lookups_pkg.get_meaning(
68111 p_lookup_type => 'XLA_OWNER_TYPE'
68112 ,p_lookup_code => l_component_type_code
68113 )
68114 ,p_token_4 => 'PRODUCT_NAME'
68115 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68116 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68117 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68118 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68119 ,p_ae_header_id => NULL
68120 );
68121
68122 IF (C_LEVEL_ERROR>= g_log_level) THEN
68123 trace
68124 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68125 ,p_level => C_LEVEL_ERROR
68126 ,p_module => l_log_module);
68127 END IF;
68128 END IF;
68129 END IF;
68130 --
68131 --
68132 ------------------------------------------------------------------------------------------------
68133 -- 4219869 Business Flow
68134 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68135 -- Prior Entry. Currently, the following code is always generated.
68136 ------------------------------------------------------------------------------------------------
68137 XLA_AE_LINES_PKG.ValidateCurrentLine;
68138
68139 ------------------------------------------------------------------------------------
68140 -- 4219869 Business Flow
68141 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68142 ------------------------------------------------------------------------------------
68143 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68144
68145 ----------------------------------------------------------------------------------
68146 -- 4219869 Business Flow
68147 -- Update journal entry status -- Need to generate this within IF <condition>
68148 ----------------------------------------------------------------------------------
68149 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68150 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68151 ,p_balance_type_code => l_balance_type_code
68152 );
68153
68154 -------------------------------------------------------------------------------------------
68155 -- 4262811 - Generate the Accrual Reversal lines
68156 -------------------------------------------------------------------------------------------
68157 BEGIN
68158 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68159 (g_array_event(p_event_id).array_value_num('header_index'));
68160 IF l_acc_rev_flag IS NULL THEN
68161 l_acc_rev_flag := 'N';
68162 END IF;
68163 EXCEPTION
68164 WHEN OTHERS THEN
68165 l_acc_rev_flag := 'N';
68166 END;
68167 --
68168 IF (l_acc_rev_flag = 'Y') THEN
68172 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68169
68170 -- 4645092 ------------------------------------------------------------------------------
68171 -- To allow MPA report to determine if it should generate report process
68173 ------------------------------------------------------------------------------------------
68174
68175 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68176 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68177 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
68178 -- call ADRs
68179 -- Bug 4922099
68180 --
68181 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68182 (NVL(l_actual_upg_option, 'N') = 'O') OR
68183 (NVL(l_enc_upg_option, 'N') = 'O')
68184 )
68185 THEN
68186 NULL;
68187 --
68188 --
68189
68190 l_ccid := AcctDerRule_17(
68191 p_application_id => p_application_id
68192 , p_ae_header_id => l_ae_header_id
68193 , p_source_1 => p_source_1
68194 , p_source_2 => p_source_2
68195 , x_transaction_coa_id => l_adr_transaction_coa_id
68196 , x_accounting_coa_id => l_adr_accounting_coa_id
68197 , x_value_type_code => l_adr_value_type_code
68198 , p_side => 'NA'
68199 );
68200
68201 xla_ae_lines_pkg.set_ccid(
68202 p_code_combination_id => l_ccid
68203 , p_value_type_code => l_adr_value_type_code
68204 , p_transaction_coa_id => l_adr_transaction_coa_id
68205 , p_accounting_coa_id => l_adr_accounting_coa_id
68206 , p_adr_code => 'INV'
68207 , p_adr_type_code => 'S'
68208 , p_component_type => l_component_type
68209 , p_component_code => l_component_code
68210 , p_component_type_code => l_component_type_code
68211 , p_component_appl_id => l_component_appl_id
68212 , p_amb_context_code => l_amb_context_code
68213 , p_side => 'NA'
68214 );
68215
68216
68217 --
68218 --
68219 END IF;
68220
68221 --
68222 -- Update the line information that should be overwritten
68223 --
68224 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68225 p_header_num => 1);
68226 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
68227
68228 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68229
68230 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
68231 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68232 END IF;
68233
68234 --
68235 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68236 --
68237 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68238 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
68239 ELSE
68240 ---------------------------------------------------------------------------------------------------
68241 -- 4262811a Switch Sign
68242 ---------------------------------------------------------------------------------------------------
68243 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
68244 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68245 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68246 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68247 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68248 -- 5132302
68249 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68250 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68251
68252 END IF;
68253
68254 -- 4955764
68255 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68256 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68257
68258
68259 XLA_AE_LINES_PKG.ValidateCurrentLine;
68260 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68261
68262 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68263 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68264 ,p_balance_type_code => l_balance_type_code);
68265
68266 END IF;
68267
68268 -----------------------------------------------------------------------------------------
68269 -- 4262811 Multiperiod Accounting
68270 -----------------------------------------------------------------------------------------
68271 -- No MPA option is assigned.
68272
68273
68274 END IF;
68275 END IF;
68276 --
68277
68278 --
68279 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68280 trace
68281 (p_msg => 'END of AcctLineType_155'
68282 ,p_level => C_LEVEL_PROCEDURE
68283 ,p_module => l_log_module);
68284 END IF;
68285 --
68286 EXCEPTION
68290 xla_exceptions_pkg.raise_message
68287 WHEN xla_exceptions_pkg.application_exception THEN
68288 RAISE;
68289 WHEN OTHERS THEN
68291 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_155');
68292 END AcctLineType_155;
68293 --
68294
68295 ---------------------------------------
68296 --
68297 -- PRIVATE FUNCTION
68298 -- AcctLineType_156
68299 --
68300 ---------------------------------------
68301 PROCEDURE AcctLineType_156 (
68302 p_application_id IN NUMBER
68303 ,p_event_id IN NUMBER
68304 ,p_calculate_acctd_flag IN VARCHAR2
68305 ,p_calculate_g_l_flag IN VARCHAR2
68306 ,p_actual_flag IN OUT VARCHAR2
68307 ,p_balance_type_code OUT VARCHAR2
68308 ,p_gain_or_loss_ref OUT VARCHAR2
68309
68310 --Transaction Account
68311 , p_source_1 IN NUMBER
68312 --Journal Line Type
68313 , p_source_2 IN VARCHAR2
68314 --Entered Amount
68315 , p_source_3 IN NUMBER
68316 --First Distribution Identifier
68317 , p_source_5 IN NUMBER
68318 --Distribution Type
68319 , p_source_6 IN VARCHAR2
68320 --Currency Code
68321 , p_source_7 IN VARCHAR2
68322 --Currency Conversion Date
68323 , p_source_8 IN DATE
68324 --Currency Conversion Rate
68325 , p_source_9 IN NUMBER
68326 --Currency Conversion Type
68327 , p_source_10 IN VARCHAR2
68328 --Accounted Amount
68329 , p_source_11 IN NUMBER
68330 )
68331 IS
68332
68333 l_component_type VARCHAR2(80);
68334 l_component_code VARCHAR2(30);
68335 l_component_type_code VARCHAR2(1);
68336 l_component_appl_id INTEGER;
68337 l_amb_context_code VARCHAR2(30);
68338 l_entity_code VARCHAR2(30);
68339 l_event_class_code VARCHAR2(30);
68340 l_ae_header_id NUMBER;
68341 l_event_type_code VARCHAR2(30);
68342 l_line_definition_code VARCHAR2(30);
68343 l_line_definition_owner_code VARCHAR2(1);
68344 --
68345 -- adr variables
68346 l_segment VARCHAR2(30);
68347 l_ccid NUMBER;
68348 l_adr_transaction_coa_id NUMBER;
68349 l_adr_accounting_coa_id NUMBER;
68350 l_adr_flexfield_segment_code VARCHAR2(30);
68351 l_adr_flex_value_set_id NUMBER;
68352 l_adr_value_type_code VARCHAR2(30);
68353 l_adr_value_combination_id NUMBER;
68354 l_adr_value_segment_code VARCHAR2(30);
68355
68356 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
68357 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
68358 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
68359 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
68360
68361 -- 4262811 Variables ------------------------------------------------------------------------------------------
68362 l_entered_amt_idx NUMBER;
68363 l_accted_amt_idx NUMBER;
68364 l_acc_rev_flag VARCHAR2(1);
68365 l_accrual_line_num NUMBER;
68366 l_tmp_amt NUMBER;
68367 l_acc_rev_natural_side_code VARCHAR2(1);
68368
68369 l_num_entries NUMBER;
68370 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
68371 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
68372 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
68373 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
68374 l_recog_line_1 NUMBER;
68375 l_recog_line_2 NUMBER;
68376
68377 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
68378 l_bflow_applied_to_amt NUMBER; -- 5132302
68379 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
68380
68381 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68382
68383 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
68384 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
68385
68386 ---------------------------------------------------------------------------------------------------------------
68387
68388
68389 --
68390 -- bulk performance
68391 --
68392 l_balance_type_code VARCHAR2(1);
68393 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
68394 l_log_module VARCHAR2(240);
68395
68396 --
68397 -- Upgrade strategy
68398 --
68399 l_actual_upg_option VARCHAR2(1);
68400 l_enc_upg_option VARCHAR2(1);
68401
68402 --
68403 BEGIN
68404 --
68405 IF g_log_enabled THEN
68406 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_156';
68407 END IF;
68408 --
68409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68410
68411 trace
68412 (p_msg => 'BEGIN of AcctLineType_156'
68413 ,p_level => C_LEVEL_PROCEDURE
68414 ,p_module => l_log_module);
68415
68416 END IF;
68417 --
68418 l_component_type := 'AMB_JLT';
68419 l_component_code := 'INV';
68420 l_component_type_code := 'S';
68421 l_component_appl_id := 555;
68422 l_amb_context_code := 'DEFAULT';
68423 l_entity_code := 'PURCHASING';
68427 l_line_definition_code := 'XFER_TO_CONSIGN';
68424 l_event_class_code := 'DELIVER';
68425 l_event_type_code := 'XFER_TO_CONSIGNED';
68426 l_line_definition_owner_code := 'S';
68428 --
68429 l_balance_type_code := 'A';
68430 l_segment := NULL;
68431 l_ccid := NULL;
68432 l_adr_transaction_coa_id := NULL;
68433 l_adr_accounting_coa_id := NULL;
68434 l_adr_flexfield_segment_code := NULL;
68435 l_adr_flex_value_set_id := NULL;
68436 l_adr_value_type_code := NULL;
68437 l_adr_value_combination_id := NULL;
68438 l_adr_value_segment_code := NULL;
68439
68440 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
68441 l_bflow_class_code := ''; -- 4219869 Business Flow
68442 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
68443 l_budgetary_control_flag := 'N';
68444
68445 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68446 l_bflow_applied_to_amt := NULL; -- 5132302
68447 l_entered_amt_idx := NULL; -- 4262811
68448 l_accted_amt_idx := NULL; -- 4262811
68449 l_acc_rev_flag := NULL; -- 4262811
68450 l_accrual_line_num := NULL; -- 4262811
68451 l_tmp_amt := NULL; -- 4262811
68452 --
68453
68454 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68455 l_balance_type_code <> 'B' THEN
68456 IF NVL(p_source_2,'
68457 ') = 'INV'
68458 THEN
68459
68460 --
68461 XLA_AE_LINES_PKG.SetNewLine;
68462
68463 p_balance_type_code := l_balance_type_code;
68464 -- set the flag so later we will know whether the gain loss line needs to be created
68465
68466 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68467 p_actual_flag :='A';
68468 END IF;
68469
68470 --
68471 -- bulk performance
68472 --
68473 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68474 p_header_num => 0); -- 4262811
68475 --
68476 -- set accounting line options
68477 --
68478 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68479 p_natural_side_code => 'D'
68480 , p_gain_or_loss_flag => 'N'
68481 , p_gl_transfer_mode_code => 'D'
68482 , p_acct_entry_type_code => 'A'
68483 , p_switch_side_flag => 'Y'
68484 , p_merge_duplicate_code => 'W'
68485 );
68486 --
68487 l_acc_rev_natural_side_code := 'C'; -- 4262811
68488 --
68489 --
68490 -- set accounting line type info
68491 --
68492 xla_ae_lines_pkg.SetAcctLineType
68493 (p_component_type => l_component_type
68494 ,p_event_type_code => l_event_type_code
68495 ,p_line_definition_owner_code => l_line_definition_owner_code
68496 ,p_line_definition_code => l_line_definition_code
68497 ,p_accounting_line_code => l_component_code
68498 ,p_accounting_line_type_code => l_component_type_code
68499 ,p_accounting_line_appl_id => l_component_appl_id
68500 ,p_amb_context_code => l_amb_context_code
68501 ,p_entity_code => l_entity_code
68502 ,p_event_class_code => l_event_class_code);
68503 --
68504 -- set accounting class
68505 --
68506 xla_ae_lines_pkg.SetAcctClass(
68507 p_accounting_class_code => 'INVENTORY_VALUATION'
68508 , p_ae_header_id => l_ae_header_id
68509 );
68510
68511 --
68512 -- set rounding class
68513 --
68514 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68515 'INVENTORY_VALUATION';
68516
68517 --
68518 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68519 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68520 --
68521 -- bulk performance
68522 --
68523 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68524
68525 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68526 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68527
68528 -- 4955764
68529 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68530 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68531
68532 -- 4458381 Public Sector Enh
68533
68534 --
68535 -- set accounting attributes for the line type
68536 --
68537 l_entered_amt_idx := 3;
68538 l_accted_amt_idx := 8;
68539 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68540 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68541 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
68542 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68543 l_rec_acct_attrs.array_char_value(2) := p_source_6;
68544 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68545 l_rec_acct_attrs.array_num_value(3) := p_source_3;
68546 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68550 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68547 l_rec_acct_attrs.array_char_value(4) := p_source_7;
68548 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68549 l_rec_acct_attrs.array_date_value(5) := p_source_8;
68551 l_rec_acct_attrs.array_num_value(6) := p_source_9;
68552 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68553 l_rec_acct_attrs.array_char_value(7) := p_source_10;
68554 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68555 l_rec_acct_attrs.array_num_value(8) := p_source_11;
68556
68557 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68558 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68559
68560 ---------------------------------------------------------------------------------------------------------------
68561 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68562 ---------------------------------------------------------------------------------------------------------------
68563 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68564
68565 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68566 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68567
68568 IF xla_accounting_cache_pkg.GetValueChar
68569 (p_source_code => 'LEDGER_CATEGORY_CODE'
68570 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68571 AND l_bflow_method_code = 'PRIOR_ENTRY'
68572 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68573 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68574 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68575 )
68576 THEN
68577 xla_ae_lines_pkg.BflowUpgEntry
68578 (p_business_method_code => l_bflow_method_code
68579 ,p_business_class_code => l_bflow_class_code
68580 ,p_balance_type => l_balance_type_code);
68581 ELSE
68582 NULL;
68583 -- No business flow processing for business flow method of NONE.
68584 END IF;
68585
68586 --
68587 -- call analytical criteria
68588 --
68589
68590 --
68591 -- call description
68592 --
68593 -- No description or it is inherited.
68594 --
68595 -- call ADRs
68596 -- Bug 4922099
68597 --
68598 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68599 (NVL(l_actual_upg_option, 'N') = 'O') OR
68600 (NVL(l_enc_upg_option, 'N') = 'O')
68601 )
68602 THEN
68603 NULL;
68604 --
68605 --
68606
68607 l_ccid := AcctDerRule_17(
68608 p_application_id => p_application_id
68609 , p_ae_header_id => l_ae_header_id
68610 , p_source_1 => p_source_1
68611 , p_source_2 => p_source_2
68612 , x_transaction_coa_id => l_adr_transaction_coa_id
68613 , x_accounting_coa_id => l_adr_accounting_coa_id
68614 , x_value_type_code => l_adr_value_type_code
68615 , p_side => 'NA'
68616 );
68617
68618 xla_ae_lines_pkg.set_ccid(
68619 p_code_combination_id => l_ccid
68620 , p_value_type_code => l_adr_value_type_code
68621 , p_transaction_coa_id => l_adr_transaction_coa_id
68622 , p_accounting_coa_id => l_adr_accounting_coa_id
68623 , p_adr_code => 'INV'
68624 , p_adr_type_code => 'S'
68625 , p_component_type => l_component_type
68626 , p_component_code => l_component_code
68627 , p_component_type_code => l_component_type_code
68628 , p_component_appl_id => l_component_appl_id
68629 , p_amb_context_code => l_amb_context_code
68630 , p_side => 'NA'
68631 );
68632
68633
68634 --
68635 --
68636 END IF;
68637 --
68638 -- Bug 4922099
68639 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68640 (NVL(l_enc_upg_option, 'N') = 'O')
68641 ) AND
68642 (l_bflow_method_code = 'PRIOR_ENTRY')
68643 )
68644 THEN
68645 IF
68646 --
68647 1 = 2
68648 --
68649 THEN
68650 xla_accounting_err_pkg.build_message
68651 (p_appli_s_name => 'XLA'
68652 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68653 ,p_token_1 => 'LINE_NUMBER'
68654 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
68655 ,p_token_2 => 'LINE_TYPE_NAME'
68656 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
68657 l_component_type
68658 ,l_component_code
68659 ,l_component_type_code
68660 ,l_component_appl_id
68664 )
68661 ,l_amb_context_code
68662 ,l_entity_code
68663 ,l_event_class_code
68665 ,p_token_3 => 'OWNER'
68666 ,p_value_3 => xla_lookups_pkg.get_meaning(
68667 p_lookup_type => 'XLA_OWNER_TYPE'
68668 ,p_lookup_code => l_component_type_code
68669 )
68670 ,p_token_4 => 'PRODUCT_NAME'
68671 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68672 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68673 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68674 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68675 ,p_ae_header_id => NULL
68676 );
68677
68678 IF (C_LEVEL_ERROR>= g_log_level) THEN
68679 trace
68680 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68681 ,p_level => C_LEVEL_ERROR
68682 ,p_module => l_log_module);
68683 END IF;
68684 END IF;
68685 END IF;
68686 --
68687 --
68688 ------------------------------------------------------------------------------------------------
68689 -- 4219869 Business Flow
68690 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68691 -- Prior Entry. Currently, the following code is always generated.
68692 ------------------------------------------------------------------------------------------------
68693 XLA_AE_LINES_PKG.ValidateCurrentLine;
68694
68695 ------------------------------------------------------------------------------------
68696 -- 4219869 Business Flow
68697 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68698 ------------------------------------------------------------------------------------
68699 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68700
68701 ----------------------------------------------------------------------------------
68702 -- 4219869 Business Flow
68703 -- Update journal entry status -- Need to generate this within IF <condition>
68704 ----------------------------------------------------------------------------------
68705 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68706 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68707 ,p_balance_type_code => l_balance_type_code
68708 );
68709
68710 -------------------------------------------------------------------------------------------
68711 -- 4262811 - Generate the Accrual Reversal lines
68712 -------------------------------------------------------------------------------------------
68713 BEGIN
68714 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68715 (g_array_event(p_event_id).array_value_num('header_index'));
68716 IF l_acc_rev_flag IS NULL THEN
68717 l_acc_rev_flag := 'N';
68718 END IF;
68719 EXCEPTION
68720 WHEN OTHERS THEN
68721 l_acc_rev_flag := 'N';
68722 END;
68723 --
68724 IF (l_acc_rev_flag = 'Y') THEN
68725
68726 -- 4645092 ------------------------------------------------------------------------------
68727 -- To allow MPA report to determine if it should generate report process
68728 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68729 ------------------------------------------------------------------------------------------
68730
68731 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68732 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68733 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
68734 -- call ADRs
68735 -- Bug 4922099
68736 --
68737 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68738 (NVL(l_actual_upg_option, 'N') = 'O') OR
68739 (NVL(l_enc_upg_option, 'N') = 'O')
68740 )
68741 THEN
68742 NULL;
68743 --
68744 --
68745
68746 l_ccid := AcctDerRule_17(
68747 p_application_id => p_application_id
68748 , p_ae_header_id => l_ae_header_id
68749 , p_source_1 => p_source_1
68750 , p_source_2 => p_source_2
68751 , x_transaction_coa_id => l_adr_transaction_coa_id
68752 , x_accounting_coa_id => l_adr_accounting_coa_id
68753 , x_value_type_code => l_adr_value_type_code
68754 , p_side => 'NA'
68755 );
68756
68757 xla_ae_lines_pkg.set_ccid(
68758 p_code_combination_id => l_ccid
68759 , p_value_type_code => l_adr_value_type_code
68760 , p_transaction_coa_id => l_adr_transaction_coa_id
68761 , p_accounting_coa_id => l_adr_accounting_coa_id
68765 , p_component_code => l_component_code
68762 , p_adr_code => 'INV'
68763 , p_adr_type_code => 'S'
68764 , p_component_type => l_component_type
68766 , p_component_type_code => l_component_type_code
68767 , p_component_appl_id => l_component_appl_id
68768 , p_amb_context_code => l_amb_context_code
68769 , p_side => 'NA'
68770 );
68771
68772
68773 --
68774 --
68775 END IF;
68776
68777 --
68778 -- Update the line information that should be overwritten
68779 --
68780 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68781 p_header_num => 1);
68782 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
68783
68784 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68785
68786 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
68787 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68788 END IF;
68789
68790 --
68791 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68792 --
68793 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68794 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
68795 ELSE
68796 ---------------------------------------------------------------------------------------------------
68797 -- 4262811a Switch Sign
68798 ---------------------------------------------------------------------------------------------------
68799 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
68800 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68801 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68802 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68803 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68804 -- 5132302
68805 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68806 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68807
68808 END IF;
68809
68810 -- 4955764
68811 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68812 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68813
68814
68815 XLA_AE_LINES_PKG.ValidateCurrentLine;
68816 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68817
68818 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68819 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68820 ,p_balance_type_code => l_balance_type_code);
68821
68822 END IF;
68823
68824 -----------------------------------------------------------------------------------------
68825 -- 4262811 Multiperiod Accounting
68826 -----------------------------------------------------------------------------------------
68827 -- No MPA option is assigned.
68828
68829
68830 END IF;
68831 END IF;
68832 --
68833
68834 --
68835 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68836 trace
68837 (p_msg => 'END of AcctLineType_156'
68838 ,p_level => C_LEVEL_PROCEDURE
68839 ,p_module => l_log_module);
68840 END IF;
68841 --
68842 EXCEPTION
68843 WHEN xla_exceptions_pkg.application_exception THEN
68844 RAISE;
68845 WHEN OTHERS THEN
68846 xla_exceptions_pkg.raise_message
68847 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_156');
68848 END AcctLineType_156;
68849 --
68850
68851 ---------------------------------------
68852 --
68853 -- PRIVATE FUNCTION
68854 -- AcctLineType_157
68855 --
68856 ---------------------------------------
68857 PROCEDURE AcctLineType_157 (
68858 p_application_id IN NUMBER
68859 ,p_event_id IN NUMBER
68860 ,p_calculate_acctd_flag IN VARCHAR2
68861 ,p_calculate_g_l_flag IN VARCHAR2
68862 ,p_actual_flag IN OUT VARCHAR2
68863 ,p_balance_type_code OUT VARCHAR2
68864 ,p_gain_or_loss_ref OUT VARCHAR2
68865
68866 --Transaction Account
68867 , p_source_1 IN NUMBER
68868 --Journal Line Type
68869 , p_source_2 IN VARCHAR2
68870 --Entered Amount
68871 , p_source_3 IN NUMBER
68872 --First Distribution Identifier
68873 , p_source_5 IN NUMBER
68874 --Distribution Type
68875 , p_source_6 IN VARCHAR2
68876 --Currency Code
68877 , p_source_7 IN VARCHAR2
68878 --Currency Conversion Date
68879 , p_source_8 IN DATE
68880 --Currency Conversion Rate
68881 , p_source_9 IN NUMBER
68882 --Currency Conversion Type
68883 , p_source_10 IN VARCHAR2
68884 --Accounted Amount
68885 , p_source_11 IN NUMBER
68886 )
68887 IS
68888
68892 l_component_appl_id INTEGER;
68889 l_component_type VARCHAR2(80);
68890 l_component_code VARCHAR2(30);
68891 l_component_type_code VARCHAR2(1);
68893 l_amb_context_code VARCHAR2(30);
68894 l_entity_code VARCHAR2(30);
68895 l_event_class_code VARCHAR2(30);
68896 l_ae_header_id NUMBER;
68897 l_event_type_code VARCHAR2(30);
68898 l_line_definition_code VARCHAR2(30);
68899 l_line_definition_owner_code VARCHAR2(1);
68900 --
68901 -- adr variables
68902 l_segment VARCHAR2(30);
68903 l_ccid NUMBER;
68904 l_adr_transaction_coa_id NUMBER;
68905 l_adr_accounting_coa_id NUMBER;
68906 l_adr_flexfield_segment_code VARCHAR2(30);
68907 l_adr_flex_value_set_id NUMBER;
68908 l_adr_value_type_code VARCHAR2(30);
68909 l_adr_value_combination_id NUMBER;
68910 l_adr_value_segment_code VARCHAR2(30);
68911
68912 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
68913 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
68914 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
68915 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
68916
68917 -- 4262811 Variables ------------------------------------------------------------------------------------------
68918 l_entered_amt_idx NUMBER;
68919 l_accted_amt_idx NUMBER;
68920 l_acc_rev_flag VARCHAR2(1);
68921 l_accrual_line_num NUMBER;
68922 l_tmp_amt NUMBER;
68923 l_acc_rev_natural_side_code VARCHAR2(1);
68924
68925 l_num_entries NUMBER;
68926 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
68927 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
68928 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
68929 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
68930 l_recog_line_1 NUMBER;
68931 l_recog_line_2 NUMBER;
68932
68933 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
68934 l_bflow_applied_to_amt NUMBER; -- 5132302
68935 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
68936
68937 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68938
68939 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
68940 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
68941
68942 ---------------------------------------------------------------------------------------------------------------
68943
68944
68945 --
68946 -- bulk performance
68947 --
68948 l_balance_type_code VARCHAR2(1);
68949 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
68950 l_log_module VARCHAR2(240);
68951
68952 --
68953 -- Upgrade strategy
68954 --
68955 l_actual_upg_option VARCHAR2(1);
68956 l_enc_upg_option VARCHAR2(1);
68957
68958 --
68959 BEGIN
68960 --
68961 IF g_log_enabled THEN
68962 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_157';
68963 END IF;
68964 --
68965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68966
68967 trace
68968 (p_msg => 'BEGIN of AcctLineType_157'
68969 ,p_level => C_LEVEL_PROCEDURE
68970 ,p_module => l_log_module);
68971
68972 END IF;
68973 --
68974 l_component_type := 'AMB_JLT';
68975 l_component_code := 'INV';
68976 l_component_type_code := 'S';
68977 l_component_appl_id := 555;
68978 l_amb_context_code := 'DEFAULT';
68979 l_entity_code := 'INVENTORY';
68980 l_event_class_code := 'DIR_INTERORG_RCPT';
68981 l_event_type_code := 'DIR_INTERORG_RCPT';
68982 l_line_definition_owner_code := 'S';
68983 l_line_definition_code := 'DIRECT_XFER_RECV';
68984 --
68985 l_balance_type_code := 'A';
68986 l_segment := NULL;
68987 l_ccid := NULL;
68988 l_adr_transaction_coa_id := NULL;
68989 l_adr_accounting_coa_id := NULL;
68990 l_adr_flexfield_segment_code := NULL;
68991 l_adr_flex_value_set_id := NULL;
68992 l_adr_value_type_code := NULL;
68993 l_adr_value_combination_id := NULL;
68994 l_adr_value_segment_code := NULL;
68995
68996 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
68997 l_bflow_class_code := ''; -- 4219869 Business Flow
68998 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
68999 l_budgetary_control_flag := 'N';
69000
69001 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69002 l_bflow_applied_to_amt := NULL; -- 5132302
69003 l_entered_amt_idx := NULL; -- 4262811
69004 l_accted_amt_idx := NULL; -- 4262811
69005 l_acc_rev_flag := NULL; -- 4262811
69006 l_accrual_line_num := NULL; -- 4262811
69007 l_tmp_amt := NULL; -- 4262811
69008 --
69009
69010 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69011 l_balance_type_code <> 'B' THEN
69012 IF NVL(p_source_2,'
69013 ') = 'INV'
69014 THEN
69015
69019 p_balance_type_code := l_balance_type_code;
69016 --
69017 XLA_AE_LINES_PKG.SetNewLine;
69018
69020 -- set the flag so later we will know whether the gain loss line needs to be created
69021
69022 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69023 p_actual_flag :='A';
69024 END IF;
69025
69026 --
69027 -- bulk performance
69028 --
69029 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69030 p_header_num => 0); -- 4262811
69031 --
69032 -- set accounting line options
69033 --
69034 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69035 p_natural_side_code => 'D'
69036 , p_gain_or_loss_flag => 'N'
69037 , p_gl_transfer_mode_code => 'D'
69038 , p_acct_entry_type_code => 'A'
69039 , p_switch_side_flag => 'Y'
69040 , p_merge_duplicate_code => 'W'
69041 );
69042 --
69043 l_acc_rev_natural_side_code := 'C'; -- 4262811
69044 --
69045 --
69046 -- set accounting line type info
69047 --
69048 xla_ae_lines_pkg.SetAcctLineType
69049 (p_component_type => l_component_type
69050 ,p_event_type_code => l_event_type_code
69051 ,p_line_definition_owner_code => l_line_definition_owner_code
69052 ,p_line_definition_code => l_line_definition_code
69053 ,p_accounting_line_code => l_component_code
69054 ,p_accounting_line_type_code => l_component_type_code
69055 ,p_accounting_line_appl_id => l_component_appl_id
69056 ,p_amb_context_code => l_amb_context_code
69057 ,p_entity_code => l_entity_code
69058 ,p_event_class_code => l_event_class_code);
69059 --
69060 -- set accounting class
69061 --
69062 xla_ae_lines_pkg.SetAcctClass(
69063 p_accounting_class_code => 'INVENTORY_VALUATION'
69064 , p_ae_header_id => l_ae_header_id
69065 );
69066
69067 --
69068 -- set rounding class
69069 --
69070 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69071 'INVENTORY_VALUATION';
69072
69073 --
69074 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69075 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69076 --
69077 -- bulk performance
69078 --
69079 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69080
69081 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69082 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69083
69084 -- 4955764
69085 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69086 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69087
69088 -- 4458381 Public Sector Enh
69089
69090 --
69091 -- set accounting attributes for the line type
69092 --
69093 l_entered_amt_idx := 3;
69094 l_accted_amt_idx := 8;
69095 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69096 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69097 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
69098 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69099 l_rec_acct_attrs.array_char_value(2) := p_source_6;
69100 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69101 l_rec_acct_attrs.array_num_value(3) := p_source_3;
69102 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69103 l_rec_acct_attrs.array_char_value(4) := p_source_7;
69104 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69105 l_rec_acct_attrs.array_date_value(5) := p_source_8;
69106 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69107 l_rec_acct_attrs.array_num_value(6) := p_source_9;
69108 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69109 l_rec_acct_attrs.array_char_value(7) := p_source_10;
69110 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69111 l_rec_acct_attrs.array_num_value(8) := p_source_11;
69112
69113 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69114 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69115
69116 ---------------------------------------------------------------------------------------------------------------
69117 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69118 ---------------------------------------------------------------------------------------------------------------
69119 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69120
69121 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69122 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69123
69124 IF xla_accounting_cache_pkg.GetValueChar
69125 (p_source_code => 'LEDGER_CATEGORY_CODE'
69129 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69126 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69127 AND l_bflow_method_code = 'PRIOR_ENTRY'
69128 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69130 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69131 )
69132 THEN
69133 xla_ae_lines_pkg.BflowUpgEntry
69134 (p_business_method_code => l_bflow_method_code
69135 ,p_business_class_code => l_bflow_class_code
69136 ,p_balance_type => l_balance_type_code);
69137 ELSE
69138 NULL;
69139 -- No business flow processing for business flow method of NONE.
69140 END IF;
69141
69142 --
69143 -- call analytical criteria
69144 --
69145
69146 --
69147 -- call description
69148 --
69149 -- No description or it is inherited.
69150 --
69151 -- call ADRs
69152 -- Bug 4922099
69153 --
69154 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69155 (NVL(l_actual_upg_option, 'N') = 'O') OR
69156 (NVL(l_enc_upg_option, 'N') = 'O')
69157 )
69158 THEN
69159 NULL;
69160 --
69161 --
69162
69163 l_ccid := AcctDerRule_17(
69164 p_application_id => p_application_id
69165 , p_ae_header_id => l_ae_header_id
69166 , p_source_1 => p_source_1
69167 , p_source_2 => p_source_2
69168 , x_transaction_coa_id => l_adr_transaction_coa_id
69169 , x_accounting_coa_id => l_adr_accounting_coa_id
69170 , x_value_type_code => l_adr_value_type_code
69171 , p_side => 'NA'
69172 );
69173
69174 xla_ae_lines_pkg.set_ccid(
69175 p_code_combination_id => l_ccid
69176 , p_value_type_code => l_adr_value_type_code
69177 , p_transaction_coa_id => l_adr_transaction_coa_id
69178 , p_accounting_coa_id => l_adr_accounting_coa_id
69179 , p_adr_code => 'INV'
69180 , p_adr_type_code => 'S'
69181 , p_component_type => l_component_type
69182 , p_component_code => l_component_code
69183 , p_component_type_code => l_component_type_code
69184 , p_component_appl_id => l_component_appl_id
69185 , p_amb_context_code => l_amb_context_code
69186 , p_side => 'NA'
69187 );
69188
69189
69190 --
69191 --
69192 END IF;
69193 --
69194 -- Bug 4922099
69195 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69196 (NVL(l_enc_upg_option, 'N') = 'O')
69197 ) AND
69198 (l_bflow_method_code = 'PRIOR_ENTRY')
69199 )
69200 THEN
69201 IF
69202 --
69203 1 = 2
69204 --
69205 THEN
69206 xla_accounting_err_pkg.build_message
69207 (p_appli_s_name => 'XLA'
69208 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69209 ,p_token_1 => 'LINE_NUMBER'
69210 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
69211 ,p_token_2 => 'LINE_TYPE_NAME'
69212 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
69213 l_component_type
69214 ,l_component_code
69215 ,l_component_type_code
69216 ,l_component_appl_id
69217 ,l_amb_context_code
69218 ,l_entity_code
69219 ,l_event_class_code
69220 )
69221 ,p_token_3 => 'OWNER'
69222 ,p_value_3 => xla_lookups_pkg.get_meaning(
69223 p_lookup_type => 'XLA_OWNER_TYPE'
69224 ,p_lookup_code => l_component_type_code
69225 )
69226 ,p_token_4 => 'PRODUCT_NAME'
69227 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69228 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69229 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69230 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69231 ,p_ae_header_id => NULL
69232 );
69233
69234 IF (C_LEVEL_ERROR>= g_log_level) THEN
69235 trace
69236 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69240 END IF;
69237 ,p_level => C_LEVEL_ERROR
69238 ,p_module => l_log_module);
69239 END IF;
69241 END IF;
69242 --
69243 --
69244 ------------------------------------------------------------------------------------------------
69245 -- 4219869 Business Flow
69246 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69247 -- Prior Entry. Currently, the following code is always generated.
69248 ------------------------------------------------------------------------------------------------
69249 XLA_AE_LINES_PKG.ValidateCurrentLine;
69250
69251 ------------------------------------------------------------------------------------
69252 -- 4219869 Business Flow
69253 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69254 ------------------------------------------------------------------------------------
69255 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69256
69257 ----------------------------------------------------------------------------------
69258 -- 4219869 Business Flow
69259 -- Update journal entry status -- Need to generate this within IF <condition>
69260 ----------------------------------------------------------------------------------
69261 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69262 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69263 ,p_balance_type_code => l_balance_type_code
69264 );
69265
69266 -------------------------------------------------------------------------------------------
69267 -- 4262811 - Generate the Accrual Reversal lines
69268 -------------------------------------------------------------------------------------------
69269 BEGIN
69270 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69271 (g_array_event(p_event_id).array_value_num('header_index'));
69272 IF l_acc_rev_flag IS NULL THEN
69273 l_acc_rev_flag := 'N';
69274 END IF;
69275 EXCEPTION
69276 WHEN OTHERS THEN
69277 l_acc_rev_flag := 'N';
69278 END;
69279 --
69280 IF (l_acc_rev_flag = 'Y') THEN
69281
69282 -- 4645092 ------------------------------------------------------------------------------
69283 -- To allow MPA report to determine if it should generate report process
69284 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69285 ------------------------------------------------------------------------------------------
69286
69287 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69288 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69289 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
69290 -- call ADRs
69291 -- Bug 4922099
69292 --
69293 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69294 (NVL(l_actual_upg_option, 'N') = 'O') OR
69295 (NVL(l_enc_upg_option, 'N') = 'O')
69296 )
69297 THEN
69298 NULL;
69299 --
69300 --
69301
69302 l_ccid := AcctDerRule_17(
69303 p_application_id => p_application_id
69304 , p_ae_header_id => l_ae_header_id
69305 , p_source_1 => p_source_1
69306 , p_source_2 => p_source_2
69307 , x_transaction_coa_id => l_adr_transaction_coa_id
69308 , x_accounting_coa_id => l_adr_accounting_coa_id
69309 , x_value_type_code => l_adr_value_type_code
69310 , p_side => 'NA'
69311 );
69312
69313 xla_ae_lines_pkg.set_ccid(
69314 p_code_combination_id => l_ccid
69315 , p_value_type_code => l_adr_value_type_code
69316 , p_transaction_coa_id => l_adr_transaction_coa_id
69317 , p_accounting_coa_id => l_adr_accounting_coa_id
69318 , p_adr_code => 'INV'
69319 , p_adr_type_code => 'S'
69320 , p_component_type => l_component_type
69321 , p_component_code => l_component_code
69322 , p_component_type_code => l_component_type_code
69323 , p_component_appl_id => l_component_appl_id
69324 , p_amb_context_code => l_amb_context_code
69325 , p_side => 'NA'
69326 );
69327
69328
69329 --
69330 --
69331 END IF;
69332
69333 --
69334 -- Update the line information that should be overwritten
69335 --
69336 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69337 p_header_num => 1);
69338 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
69339
69340 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69341
69342 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
69343 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69344 END IF;
69345
69346 --
69347 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69348 --
69349 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69350 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
69351 ELSE
69355 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
69352 ---------------------------------------------------------------------------------------------------
69353 -- 4262811a Switch Sign
69354 ---------------------------------------------------------------------------------------------------
69356 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69357 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69358 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69359 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69360 -- 5132302
69361 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69362 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69363
69364 END IF;
69365
69366 -- 4955764
69367 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69368 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69369
69370
69371 XLA_AE_LINES_PKG.ValidateCurrentLine;
69372 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69373
69374 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69375 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69376 ,p_balance_type_code => l_balance_type_code);
69377
69378 END IF;
69379
69380 -----------------------------------------------------------------------------------------
69381 -- 4262811 Multiperiod Accounting
69382 -----------------------------------------------------------------------------------------
69383 -- No MPA option is assigned.
69384
69385
69386 END IF;
69387 END IF;
69388 --
69389
69390 --
69391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69392 trace
69393 (p_msg => 'END of AcctLineType_157'
69394 ,p_level => C_LEVEL_PROCEDURE
69395 ,p_module => l_log_module);
69396 END IF;
69397 --
69398 EXCEPTION
69399 WHEN xla_exceptions_pkg.application_exception THEN
69400 RAISE;
69401 WHEN OTHERS THEN
69402 xla_exceptions_pkg.raise_message
69403 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_157');
69404 END AcctLineType_157;
69405 --
69406
69407 ---------------------------------------
69408 --
69409 -- PRIVATE FUNCTION
69410 -- AcctLineType_158
69411 --
69412 ---------------------------------------
69413 PROCEDURE AcctLineType_158 (
69414 p_application_id IN NUMBER
69415 ,p_event_id IN NUMBER
69416 ,p_calculate_acctd_flag IN VARCHAR2
69417 ,p_calculate_g_l_flag IN VARCHAR2
69418 ,p_actual_flag IN OUT VARCHAR2
69419 ,p_balance_type_code OUT VARCHAR2
69420 ,p_gain_or_loss_ref OUT VARCHAR2
69421
69422 --Transaction Account
69423 , p_source_1 IN NUMBER
69424 --Journal Line Type
69425 , p_source_2 IN VARCHAR2
69426 --Entered Amount
69427 , p_source_3 IN NUMBER
69428 --First Distribution Identifier
69429 , p_source_5 IN NUMBER
69430 --Distribution Type
69431 , p_source_6 IN VARCHAR2
69432 --Currency Code
69433 , p_source_7 IN VARCHAR2
69434 --Currency Conversion Date
69435 , p_source_8 IN DATE
69436 --Currency Conversion Rate
69437 , p_source_9 IN NUMBER
69438 --Currency Conversion Type
69439 , p_source_10 IN VARCHAR2
69440 --Accounted Amount
69441 , p_source_11 IN NUMBER
69442 )
69443 IS
69444
69445 l_component_type VARCHAR2(80);
69446 l_component_code VARCHAR2(30);
69447 l_component_type_code VARCHAR2(1);
69448 l_component_appl_id INTEGER;
69449 l_amb_context_code VARCHAR2(30);
69450 l_entity_code VARCHAR2(30);
69451 l_event_class_code VARCHAR2(30);
69452 l_ae_header_id NUMBER;
69453 l_event_type_code VARCHAR2(30);
69454 l_line_definition_code VARCHAR2(30);
69455 l_line_definition_owner_code VARCHAR2(1);
69456 --
69457 -- adr variables
69458 l_segment VARCHAR2(30);
69459 l_ccid NUMBER;
69460 l_adr_transaction_coa_id NUMBER;
69461 l_adr_accounting_coa_id NUMBER;
69462 l_adr_flexfield_segment_code VARCHAR2(30);
69463 l_adr_flex_value_set_id NUMBER;
69464 l_adr_value_type_code VARCHAR2(30);
69465 l_adr_value_combination_id NUMBER;
69466 l_adr_value_segment_code VARCHAR2(30);
69467
69468 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
69469 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
69470 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
69471 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
69472
69473 -- 4262811 Variables ------------------------------------------------------------------------------------------
69474 l_entered_amt_idx NUMBER;
69475 l_accted_amt_idx NUMBER;
69476 l_acc_rev_flag VARCHAR2(1);
69477 l_accrual_line_num NUMBER;
69478 l_tmp_amt NUMBER;
69479 l_acc_rev_natural_side_code VARCHAR2(1);
69483 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
69480
69481 l_num_entries NUMBER;
69482 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
69484 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
69485 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
69486 l_recog_line_1 NUMBER;
69487 l_recog_line_2 NUMBER;
69488
69489 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
69490 l_bflow_applied_to_amt NUMBER; -- 5132302
69491 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
69492
69493 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69494
69495 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
69496 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
69497
69498 ---------------------------------------------------------------------------------------------------------------
69499
69500
69501 --
69502 -- bulk performance
69503 --
69504 l_balance_type_code VARCHAR2(1);
69505 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
69506 l_log_module VARCHAR2(240);
69507
69508 --
69509 -- Upgrade strategy
69510 --
69511 l_actual_upg_option VARCHAR2(1);
69512 l_enc_upg_option VARCHAR2(1);
69513
69514 --
69515 BEGIN
69516 --
69517 IF g_log_enabled THEN
69518 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_158';
69519 END IF;
69520 --
69521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69522
69523 trace
69524 (p_msg => 'BEGIN of AcctLineType_158'
69525 ,p_level => C_LEVEL_PROCEDURE
69526 ,p_module => l_log_module);
69527
69528 END IF;
69529 --
69530 l_component_type := 'AMB_JLT';
69531 l_component_code := 'INV';
69532 l_component_type_code := 'S';
69533 l_component_appl_id := 555;
69534 l_amb_context_code := 'DEFAULT';
69535 l_entity_code := 'INVENTORY';
69536 l_event_class_code := 'DIR_INTERORG_RCPT';
69537 l_event_type_code := 'DIR_INTERORG_RCPT_TP';
69538 l_line_definition_owner_code := 'S';
69539 l_line_definition_code := 'DIRECT_XFER_RECV_TP';
69540 --
69541 l_balance_type_code := 'A';
69542 l_segment := NULL;
69543 l_ccid := NULL;
69544 l_adr_transaction_coa_id := NULL;
69545 l_adr_accounting_coa_id := NULL;
69546 l_adr_flexfield_segment_code := NULL;
69547 l_adr_flex_value_set_id := NULL;
69548 l_adr_value_type_code := NULL;
69549 l_adr_value_combination_id := NULL;
69550 l_adr_value_segment_code := NULL;
69551
69552 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
69553 l_bflow_class_code := ''; -- 4219869 Business Flow
69554 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
69555 l_budgetary_control_flag := 'N';
69556
69557 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69558 l_bflow_applied_to_amt := NULL; -- 5132302
69559 l_entered_amt_idx := NULL; -- 4262811
69560 l_accted_amt_idx := NULL; -- 4262811
69561 l_acc_rev_flag := NULL; -- 4262811
69562 l_accrual_line_num := NULL; -- 4262811
69563 l_tmp_amt := NULL; -- 4262811
69564 --
69565
69566 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69567 l_balance_type_code <> 'B' THEN
69568 IF NVL(p_source_2,'
69569 ') = 'INV'
69570 THEN
69571
69572 --
69573 XLA_AE_LINES_PKG.SetNewLine;
69574
69575 p_balance_type_code := l_balance_type_code;
69576 -- set the flag so later we will know whether the gain loss line needs to be created
69577
69578 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69579 p_actual_flag :='A';
69580 END IF;
69581
69582 --
69583 -- bulk performance
69584 --
69585 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69586 p_header_num => 0); -- 4262811
69587 --
69588 -- set accounting line options
69589 --
69590 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69591 p_natural_side_code => 'D'
69592 , p_gain_or_loss_flag => 'N'
69593 , p_gl_transfer_mode_code => 'D'
69594 , p_acct_entry_type_code => 'A'
69595 , p_switch_side_flag => 'Y'
69596 , p_merge_duplicate_code => 'W'
69597 );
69598 --
69599 l_acc_rev_natural_side_code := 'C'; -- 4262811
69600 --
69601 --
69602 -- set accounting line type info
69603 --
69604 xla_ae_lines_pkg.SetAcctLineType
69605 (p_component_type => l_component_type
69606 ,p_event_type_code => l_event_type_code
69607 ,p_line_definition_owner_code => l_line_definition_owner_code
69608 ,p_line_definition_code => l_line_definition_code
69609 ,p_accounting_line_code => l_component_code
69610 ,p_accounting_line_type_code => l_component_type_code
69614 ,p_event_class_code => l_event_class_code);
69611 ,p_accounting_line_appl_id => l_component_appl_id
69612 ,p_amb_context_code => l_amb_context_code
69613 ,p_entity_code => l_entity_code
69615 --
69616 -- set accounting class
69617 --
69618 xla_ae_lines_pkg.SetAcctClass(
69619 p_accounting_class_code => 'INVENTORY_VALUATION'
69620 , p_ae_header_id => l_ae_header_id
69621 );
69622
69623 --
69624 -- set rounding class
69625 --
69626 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69627 'INVENTORY_VALUATION';
69628
69629 --
69630 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69631 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69632 --
69633 -- bulk performance
69634 --
69635 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69636
69637 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69638 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69639
69640 -- 4955764
69641 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69642 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69643
69644 -- 4458381 Public Sector Enh
69645
69646 --
69647 -- set accounting attributes for the line type
69648 --
69649 l_entered_amt_idx := 3;
69650 l_accted_amt_idx := 8;
69651 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69652 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69653 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
69654 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69655 l_rec_acct_attrs.array_char_value(2) := p_source_6;
69656 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69657 l_rec_acct_attrs.array_num_value(3) := p_source_3;
69658 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69659 l_rec_acct_attrs.array_char_value(4) := p_source_7;
69660 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69661 l_rec_acct_attrs.array_date_value(5) := p_source_8;
69662 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69663 l_rec_acct_attrs.array_num_value(6) := p_source_9;
69664 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69665 l_rec_acct_attrs.array_char_value(7) := p_source_10;
69666 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69667 l_rec_acct_attrs.array_num_value(8) := p_source_11;
69668
69669 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69670 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69671
69672 ---------------------------------------------------------------------------------------------------------------
69673 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69674 ---------------------------------------------------------------------------------------------------------------
69675 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69676
69677 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69678 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69679
69680 IF xla_accounting_cache_pkg.GetValueChar
69681 (p_source_code => 'LEDGER_CATEGORY_CODE'
69682 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69683 AND l_bflow_method_code = 'PRIOR_ENTRY'
69684 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69685 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69686 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69687 )
69688 THEN
69689 xla_ae_lines_pkg.BflowUpgEntry
69690 (p_business_method_code => l_bflow_method_code
69691 ,p_business_class_code => l_bflow_class_code
69692 ,p_balance_type => l_balance_type_code);
69693 ELSE
69694 NULL;
69695 -- No business flow processing for business flow method of NONE.
69696 END IF;
69697
69698 --
69699 -- call analytical criteria
69700 --
69701
69702 --
69703 -- call description
69704 --
69705 -- No description or it is inherited.
69706 --
69707 -- call ADRs
69708 -- Bug 4922099
69709 --
69710 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69711 (NVL(l_actual_upg_option, 'N') = 'O') OR
69712 (NVL(l_enc_upg_option, 'N') = 'O')
69713 )
69714 THEN
69715 NULL;
69716 --
69717 --
69718
69719 l_ccid := AcctDerRule_17(
69720 p_application_id => p_application_id
69721 , p_ae_header_id => l_ae_header_id
69722 , p_source_1 => p_source_1
69723 , p_source_2 => p_source_2
69724 , x_transaction_coa_id => l_adr_transaction_coa_id
69725 , x_accounting_coa_id => l_adr_accounting_coa_id
69729
69726 , x_value_type_code => l_adr_value_type_code
69727 , p_side => 'NA'
69728 );
69730 xla_ae_lines_pkg.set_ccid(
69731 p_code_combination_id => l_ccid
69732 , p_value_type_code => l_adr_value_type_code
69733 , p_transaction_coa_id => l_adr_transaction_coa_id
69734 , p_accounting_coa_id => l_adr_accounting_coa_id
69735 , p_adr_code => 'INV'
69736 , p_adr_type_code => 'S'
69737 , p_component_type => l_component_type
69738 , p_component_code => l_component_code
69739 , p_component_type_code => l_component_type_code
69740 , p_component_appl_id => l_component_appl_id
69741 , p_amb_context_code => l_amb_context_code
69742 , p_side => 'NA'
69743 );
69744
69745
69746 --
69747 --
69748 END IF;
69749 --
69750 -- Bug 4922099
69751 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69752 (NVL(l_enc_upg_option, 'N') = 'O')
69753 ) AND
69754 (l_bflow_method_code = 'PRIOR_ENTRY')
69755 )
69756 THEN
69757 IF
69758 --
69759 1 = 2
69760 --
69761 THEN
69762 xla_accounting_err_pkg.build_message
69763 (p_appli_s_name => 'XLA'
69764 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69765 ,p_token_1 => 'LINE_NUMBER'
69766 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
69767 ,p_token_2 => 'LINE_TYPE_NAME'
69768 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
69769 l_component_type
69770 ,l_component_code
69771 ,l_component_type_code
69772 ,l_component_appl_id
69773 ,l_amb_context_code
69774 ,l_entity_code
69775 ,l_event_class_code
69776 )
69777 ,p_token_3 => 'OWNER'
69778 ,p_value_3 => xla_lookups_pkg.get_meaning(
69779 p_lookup_type => 'XLA_OWNER_TYPE'
69780 ,p_lookup_code => l_component_type_code
69781 )
69782 ,p_token_4 => 'PRODUCT_NAME'
69783 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69784 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69785 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69786 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69787 ,p_ae_header_id => NULL
69788 );
69789
69790 IF (C_LEVEL_ERROR>= g_log_level) THEN
69791 trace
69792 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69793 ,p_level => C_LEVEL_ERROR
69794 ,p_module => l_log_module);
69795 END IF;
69796 END IF;
69797 END IF;
69798 --
69799 --
69800 ------------------------------------------------------------------------------------------------
69801 -- 4219869 Business Flow
69802 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69803 -- Prior Entry. Currently, the following code is always generated.
69804 ------------------------------------------------------------------------------------------------
69805 XLA_AE_LINES_PKG.ValidateCurrentLine;
69806
69807 ------------------------------------------------------------------------------------
69808 -- 4219869 Business Flow
69809 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69810 ------------------------------------------------------------------------------------
69811 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69812
69813 ----------------------------------------------------------------------------------
69814 -- 4219869 Business Flow
69815 -- Update journal entry status -- Need to generate this within IF <condition>
69816 ----------------------------------------------------------------------------------
69817 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69818 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69819 ,p_balance_type_code => l_balance_type_code
69820 );
69821
69822 -------------------------------------------------------------------------------------------
69823 -- 4262811 - Generate the Accrual Reversal lines
69827 (g_array_event(p_event_id).array_value_num('header_index'));
69824 -------------------------------------------------------------------------------------------
69825 BEGIN
69826 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69828 IF l_acc_rev_flag IS NULL THEN
69829 l_acc_rev_flag := 'N';
69830 END IF;
69831 EXCEPTION
69832 WHEN OTHERS THEN
69833 l_acc_rev_flag := 'N';
69834 END;
69835 --
69836 IF (l_acc_rev_flag = 'Y') THEN
69837
69838 -- 4645092 ------------------------------------------------------------------------------
69839 -- To allow MPA report to determine if it should generate report process
69840 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69841 ------------------------------------------------------------------------------------------
69842
69843 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69844 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69845 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
69846 -- call ADRs
69847 -- Bug 4922099
69848 --
69849 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69850 (NVL(l_actual_upg_option, 'N') = 'O') OR
69851 (NVL(l_enc_upg_option, 'N') = 'O')
69852 )
69853 THEN
69854 NULL;
69855 --
69856 --
69857
69858 l_ccid := AcctDerRule_17(
69859 p_application_id => p_application_id
69860 , p_ae_header_id => l_ae_header_id
69861 , p_source_1 => p_source_1
69862 , p_source_2 => p_source_2
69863 , x_transaction_coa_id => l_adr_transaction_coa_id
69864 , x_accounting_coa_id => l_adr_accounting_coa_id
69865 , x_value_type_code => l_adr_value_type_code
69866 , p_side => 'NA'
69867 );
69868
69869 xla_ae_lines_pkg.set_ccid(
69870 p_code_combination_id => l_ccid
69871 , p_value_type_code => l_adr_value_type_code
69872 , p_transaction_coa_id => l_adr_transaction_coa_id
69873 , p_accounting_coa_id => l_adr_accounting_coa_id
69874 , p_adr_code => 'INV'
69875 , p_adr_type_code => 'S'
69876 , p_component_type => l_component_type
69877 , p_component_code => l_component_code
69878 , p_component_type_code => l_component_type_code
69879 , p_component_appl_id => l_component_appl_id
69880 , p_amb_context_code => l_amb_context_code
69881 , p_side => 'NA'
69882 );
69883
69884
69885 --
69886 --
69887 END IF;
69888
69889 --
69890 -- Update the line information that should be overwritten
69891 --
69892 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69893 p_header_num => 1);
69894 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
69895
69896 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69897
69898 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
69899 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69900 END IF;
69901
69902 --
69903 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69904 --
69905 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69906 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
69907 ELSE
69908 ---------------------------------------------------------------------------------------------------
69909 -- 4262811a Switch Sign
69910 ---------------------------------------------------------------------------------------------------
69911 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
69912 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69913 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69914 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69915 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69916 -- 5132302
69917 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69918 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69919
69920 END IF;
69921
69922 -- 4955764
69923 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69924 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69925
69926
69927 XLA_AE_LINES_PKG.ValidateCurrentLine;
69928 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69929
69930 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69931 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69932 ,p_balance_type_code => l_balance_type_code);
69933
69934 END IF;
69935
69939 -- No MPA option is assigned.
69936 -----------------------------------------------------------------------------------------
69937 -- 4262811 Multiperiod Accounting
69938 -----------------------------------------------------------------------------------------
69940
69941
69942 END IF;
69943 END IF;
69944 --
69945
69946 --
69947 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69948 trace
69949 (p_msg => 'END of AcctLineType_158'
69950 ,p_level => C_LEVEL_PROCEDURE
69951 ,p_module => l_log_module);
69952 END IF;
69953 --
69954 EXCEPTION
69955 WHEN xla_exceptions_pkg.application_exception THEN
69956 RAISE;
69957 WHEN OTHERS THEN
69958 xla_exceptions_pkg.raise_message
69959 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_158');
69960 END AcctLineType_158;
69961 --
69962
69963 ---------------------------------------
69964 --
69965 -- PRIVATE FUNCTION
69966 -- AcctLineType_159
69967 --
69968 ---------------------------------------
69969 PROCEDURE AcctLineType_159 (
69970 p_application_id IN NUMBER
69971 ,p_event_id IN NUMBER
69972 ,p_calculate_acctd_flag IN VARCHAR2
69973 ,p_calculate_g_l_flag IN VARCHAR2
69974 ,p_actual_flag IN OUT VARCHAR2
69975 ,p_balance_type_code OUT VARCHAR2
69976 ,p_gain_or_loss_ref OUT VARCHAR2
69977
69978 --Transaction Account
69979 , p_source_1 IN NUMBER
69980 --Journal Line Type
69981 , p_source_2 IN VARCHAR2
69982 --Entered Amount
69983 , p_source_3 IN NUMBER
69984 --First Distribution Identifier
69985 , p_source_5 IN NUMBER
69986 --Distribution Type
69987 , p_source_6 IN VARCHAR2
69988 --Currency Code
69989 , p_source_7 IN VARCHAR2
69990 --Currency Conversion Date
69991 , p_source_8 IN DATE
69992 --Currency Conversion Rate
69993 , p_source_9 IN NUMBER
69994 --Currency Conversion Type
69995 , p_source_10 IN VARCHAR2
69996 --Accounted Amount
69997 , p_source_11 IN NUMBER
69998 )
69999 IS
70000
70001 l_component_type VARCHAR2(80);
70002 l_component_code VARCHAR2(30);
70003 l_component_type_code VARCHAR2(1);
70004 l_component_appl_id INTEGER;
70005 l_amb_context_code VARCHAR2(30);
70006 l_entity_code VARCHAR2(30);
70007 l_event_class_code VARCHAR2(30);
70008 l_ae_header_id NUMBER;
70009 l_event_type_code VARCHAR2(30);
70010 l_line_definition_code VARCHAR2(30);
70011 l_line_definition_owner_code VARCHAR2(1);
70012 --
70013 -- adr variables
70014 l_segment VARCHAR2(30);
70015 l_ccid NUMBER;
70016 l_adr_transaction_coa_id NUMBER;
70017 l_adr_accounting_coa_id NUMBER;
70018 l_adr_flexfield_segment_code VARCHAR2(30);
70019 l_adr_flex_value_set_id NUMBER;
70020 l_adr_value_type_code VARCHAR2(30);
70021 l_adr_value_combination_id NUMBER;
70022 l_adr_value_segment_code VARCHAR2(30);
70023
70024 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
70025 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
70026 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
70027 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
70028
70029 -- 4262811 Variables ------------------------------------------------------------------------------------------
70030 l_entered_amt_idx NUMBER;
70031 l_accted_amt_idx NUMBER;
70032 l_acc_rev_flag VARCHAR2(1);
70033 l_accrual_line_num NUMBER;
70034 l_tmp_amt NUMBER;
70035 l_acc_rev_natural_side_code VARCHAR2(1);
70036
70037 l_num_entries NUMBER;
70038 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
70039 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
70040 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
70041 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
70042 l_recog_line_1 NUMBER;
70043 l_recog_line_2 NUMBER;
70044
70045 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
70046 l_bflow_applied_to_amt NUMBER; -- 5132302
70047 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
70048
70049 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70050
70051 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
70052 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
70053
70054 ---------------------------------------------------------------------------------------------------------------
70055
70056
70057 --
70058 -- bulk performance
70059 --
70060 l_balance_type_code VARCHAR2(1);
70061 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
70062 l_log_module VARCHAR2(240);
70063
70064 --
70065 -- Upgrade strategy
70066 --
70067 l_actual_upg_option VARCHAR2(1);
70068 l_enc_upg_option VARCHAR2(1);
70069
70070 --
70071 BEGIN
70072 --
70076 --
70073 IF g_log_enabled THEN
70074 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_159';
70075 END IF;
70077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70078
70079 trace
70080 (p_msg => 'BEGIN of AcctLineType_159'
70081 ,p_level => C_LEVEL_PROCEDURE
70082 ,p_module => l_log_module);
70083
70084 END IF;
70085 --
70086 l_component_type := 'AMB_JLT';
70087 l_component_code := 'INV';
70088 l_component_type_code := 'S';
70089 l_component_appl_id := 555;
70090 l_amb_context_code := 'DEFAULT';
70091 l_entity_code := 'INVENTORY';
70092 l_event_class_code := 'INT_ORDER_TO_EXP';
70093 l_event_type_code := 'INT_ORDER_ISSUE_TP';
70094 l_line_definition_owner_code := 'S';
70095 l_line_definition_code := 'INT_ORDER_ISSUE_TP';
70096 --
70097 l_balance_type_code := 'A';
70098 l_segment := NULL;
70099 l_ccid := NULL;
70100 l_adr_transaction_coa_id := NULL;
70101 l_adr_accounting_coa_id := NULL;
70102 l_adr_flexfield_segment_code := NULL;
70103 l_adr_flex_value_set_id := NULL;
70104 l_adr_value_type_code := NULL;
70105 l_adr_value_combination_id := NULL;
70106 l_adr_value_segment_code := NULL;
70107
70108 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
70109 l_bflow_class_code := ''; -- 4219869 Business Flow
70110 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
70111 l_budgetary_control_flag := 'N';
70112
70113 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70114 l_bflow_applied_to_amt := NULL; -- 5132302
70115 l_entered_amt_idx := NULL; -- 4262811
70116 l_accted_amt_idx := NULL; -- 4262811
70117 l_acc_rev_flag := NULL; -- 4262811
70118 l_accrual_line_num := NULL; -- 4262811
70119 l_tmp_amt := NULL; -- 4262811
70120 --
70121
70122 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70123 l_balance_type_code <> 'B' THEN
70124 IF NVL(p_source_2,'
70125 ') = 'INV'
70126 THEN
70127
70128 --
70129 XLA_AE_LINES_PKG.SetNewLine;
70130
70131 p_balance_type_code := l_balance_type_code;
70132 -- set the flag so later we will know whether the gain loss line needs to be created
70133
70134 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70135 p_actual_flag :='A';
70136 END IF;
70137
70138 --
70139 -- bulk performance
70140 --
70141 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70142 p_header_num => 0); -- 4262811
70143 --
70144 -- set accounting line options
70145 --
70146 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70147 p_natural_side_code => 'D'
70148 , p_gain_or_loss_flag => 'N'
70149 , p_gl_transfer_mode_code => 'D'
70150 , p_acct_entry_type_code => 'A'
70151 , p_switch_side_flag => 'Y'
70152 , p_merge_duplicate_code => 'W'
70153 );
70154 --
70155 l_acc_rev_natural_side_code := 'C'; -- 4262811
70156 --
70157 --
70158 -- set accounting line type info
70159 --
70160 xla_ae_lines_pkg.SetAcctLineType
70161 (p_component_type => l_component_type
70162 ,p_event_type_code => l_event_type_code
70163 ,p_line_definition_owner_code => l_line_definition_owner_code
70164 ,p_line_definition_code => l_line_definition_code
70165 ,p_accounting_line_code => l_component_code
70166 ,p_accounting_line_type_code => l_component_type_code
70167 ,p_accounting_line_appl_id => l_component_appl_id
70168 ,p_amb_context_code => l_amb_context_code
70169 ,p_entity_code => l_entity_code
70170 ,p_event_class_code => l_event_class_code);
70171 --
70172 -- set accounting class
70173 --
70174 xla_ae_lines_pkg.SetAcctClass(
70175 p_accounting_class_code => 'INVENTORY_VALUATION'
70176 , p_ae_header_id => l_ae_header_id
70177 );
70178
70179 --
70180 -- set rounding class
70181 --
70182 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70183 'INVENTORY_VALUATION';
70184
70185 --
70186 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70187 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70188 --
70189 -- bulk performance
70190 --
70191 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70192
70193 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70194 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70195
70196 -- 4955764
70197 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70198 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70199
70200 -- 4458381 Public Sector Enh
70201
70205 l_entered_amt_idx := 3;
70202 --
70203 -- set accounting attributes for the line type
70204 --
70206 l_accted_amt_idx := 8;
70207 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70208 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70209 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
70210 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70211 l_rec_acct_attrs.array_char_value(2) := p_source_6;
70212 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70213 l_rec_acct_attrs.array_num_value(3) := p_source_3;
70214 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70215 l_rec_acct_attrs.array_char_value(4) := p_source_7;
70216 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70217 l_rec_acct_attrs.array_date_value(5) := p_source_8;
70218 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70219 l_rec_acct_attrs.array_num_value(6) := p_source_9;
70220 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70221 l_rec_acct_attrs.array_char_value(7) := p_source_10;
70222 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70223 l_rec_acct_attrs.array_num_value(8) := p_source_11;
70224
70225 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70226 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70227
70228 ---------------------------------------------------------------------------------------------------------------
70229 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70230 ---------------------------------------------------------------------------------------------------------------
70231 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70232
70233 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70234 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70235
70236 IF xla_accounting_cache_pkg.GetValueChar
70237 (p_source_code => 'LEDGER_CATEGORY_CODE'
70238 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70239 AND l_bflow_method_code = 'PRIOR_ENTRY'
70240 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70241 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70242 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70243 )
70244 THEN
70245 xla_ae_lines_pkg.BflowUpgEntry
70246 (p_business_method_code => l_bflow_method_code
70247 ,p_business_class_code => l_bflow_class_code
70248 ,p_balance_type => l_balance_type_code);
70249 ELSE
70250 NULL;
70251 -- No business flow processing for business flow method of NONE.
70252 END IF;
70253
70254 --
70255 -- call analytical criteria
70256 --
70257
70258 --
70259 -- call description
70260 --
70261 -- No description or it is inherited.
70262 --
70263 -- call ADRs
70264 -- Bug 4922099
70265 --
70266 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70267 (NVL(l_actual_upg_option, 'N') = 'O') OR
70268 (NVL(l_enc_upg_option, 'N') = 'O')
70269 )
70270 THEN
70271 NULL;
70272 --
70273 --
70274
70275 l_ccid := AcctDerRule_17(
70276 p_application_id => p_application_id
70277 , p_ae_header_id => l_ae_header_id
70278 , p_source_1 => p_source_1
70279 , p_source_2 => p_source_2
70280 , x_transaction_coa_id => l_adr_transaction_coa_id
70281 , x_accounting_coa_id => l_adr_accounting_coa_id
70282 , x_value_type_code => l_adr_value_type_code
70283 , p_side => 'NA'
70284 );
70285
70286 xla_ae_lines_pkg.set_ccid(
70287 p_code_combination_id => l_ccid
70288 , p_value_type_code => l_adr_value_type_code
70289 , p_transaction_coa_id => l_adr_transaction_coa_id
70290 , p_accounting_coa_id => l_adr_accounting_coa_id
70291 , p_adr_code => 'INV'
70292 , p_adr_type_code => 'S'
70293 , p_component_type => l_component_type
70294 , p_component_code => l_component_code
70295 , p_component_type_code => l_component_type_code
70296 , p_component_appl_id => l_component_appl_id
70297 , p_amb_context_code => l_amb_context_code
70298 , p_side => 'NA'
70299 );
70300
70301
70302 --
70303 --
70304 END IF;
70305 --
70306 -- Bug 4922099
70307 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70308 (NVL(l_enc_upg_option, 'N') = 'O')
70309 ) AND
70310 (l_bflow_method_code = 'PRIOR_ENTRY')
70311 )
70312 THEN
70313 IF
70314 --
70315 1 = 2
70316 --
70317 THEN
70318 xla_accounting_err_pkg.build_message
70319 (p_appli_s_name => 'XLA'
70320 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70321 ,p_token_1 => 'LINE_NUMBER'
70325 l_component_type
70322 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
70323 ,p_token_2 => 'LINE_TYPE_NAME'
70324 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
70326 ,l_component_code
70327 ,l_component_type_code
70328 ,l_component_appl_id
70329 ,l_amb_context_code
70330 ,l_entity_code
70331 ,l_event_class_code
70332 )
70333 ,p_token_3 => 'OWNER'
70334 ,p_value_3 => xla_lookups_pkg.get_meaning(
70335 p_lookup_type => 'XLA_OWNER_TYPE'
70336 ,p_lookup_code => l_component_type_code
70337 )
70338 ,p_token_4 => 'PRODUCT_NAME'
70339 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70340 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70341 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70342 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70343 ,p_ae_header_id => NULL
70344 );
70345
70346 IF (C_LEVEL_ERROR>= g_log_level) THEN
70347 trace
70348 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70349 ,p_level => C_LEVEL_ERROR
70350 ,p_module => l_log_module);
70351 END IF;
70352 END IF;
70353 END IF;
70354 --
70355 --
70356 ------------------------------------------------------------------------------------------------
70357 -- 4219869 Business Flow
70358 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
70359 -- Prior Entry. Currently, the following code is always generated.
70360 ------------------------------------------------------------------------------------------------
70361 XLA_AE_LINES_PKG.ValidateCurrentLine;
70362
70363 ------------------------------------------------------------------------------------
70364 -- 4219869 Business Flow
70365 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
70366 ------------------------------------------------------------------------------------
70367 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70368
70369 ----------------------------------------------------------------------------------
70370 -- 4219869 Business Flow
70371 -- Update journal entry status -- Need to generate this within IF <condition>
70372 ----------------------------------------------------------------------------------
70373 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70374 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
70375 ,p_balance_type_code => l_balance_type_code
70376 );
70377
70378 -------------------------------------------------------------------------------------------
70379 -- 4262811 - Generate the Accrual Reversal lines
70380 -------------------------------------------------------------------------------------------
70381 BEGIN
70382 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
70383 (g_array_event(p_event_id).array_value_num('header_index'));
70384 IF l_acc_rev_flag IS NULL THEN
70385 l_acc_rev_flag := 'N';
70386 END IF;
70387 EXCEPTION
70388 WHEN OTHERS THEN
70389 l_acc_rev_flag := 'N';
70390 END;
70391 --
70392 IF (l_acc_rev_flag = 'Y') THEN
70393
70394 -- 4645092 ------------------------------------------------------------------------------
70395 -- To allow MPA report to determine if it should generate report process
70396 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
70397 ------------------------------------------------------------------------------------------
70398
70399 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
70400 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
70401 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
70402 -- call ADRs
70403 -- Bug 4922099
70404 --
70405 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70406 (NVL(l_actual_upg_option, 'N') = 'O') OR
70407 (NVL(l_enc_upg_option, 'N') = 'O')
70408 )
70409 THEN
70410 NULL;
70411 --
70412 --
70413
70414 l_ccid := AcctDerRule_17(
70415 p_application_id => p_application_id
70419 , x_transaction_coa_id => l_adr_transaction_coa_id
70416 , p_ae_header_id => l_ae_header_id
70417 , p_source_1 => p_source_1
70418 , p_source_2 => p_source_2
70420 , x_accounting_coa_id => l_adr_accounting_coa_id
70421 , x_value_type_code => l_adr_value_type_code
70422 , p_side => 'NA'
70423 );
70424
70425 xla_ae_lines_pkg.set_ccid(
70426 p_code_combination_id => l_ccid
70427 , p_value_type_code => l_adr_value_type_code
70428 , p_transaction_coa_id => l_adr_transaction_coa_id
70429 , p_accounting_coa_id => l_adr_accounting_coa_id
70430 , p_adr_code => 'INV'
70431 , p_adr_type_code => 'S'
70432 , p_component_type => l_component_type
70433 , p_component_code => l_component_code
70434 , p_component_type_code => l_component_type_code
70435 , p_component_appl_id => l_component_appl_id
70436 , p_amb_context_code => l_amb_context_code
70437 , p_side => 'NA'
70438 );
70439
70440
70441 --
70442 --
70443 END IF;
70444
70445 --
70446 -- Update the line information that should be overwritten
70447 --
70448 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
70449 p_header_num => 1);
70450 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
70451
70452 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
70453
70454 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
70455 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
70456 END IF;
70457
70458 --
70459 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
70460 --
70461 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
70462 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
70463 ELSE
70464 ---------------------------------------------------------------------------------------------------
70465 -- 4262811a Switch Sign
70466 ---------------------------------------------------------------------------------------------------
70467 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
70468 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70469 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70470 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70471 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70472 -- 5132302
70473 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70474 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70475
70476 END IF;
70477
70478 -- 4955764
70479 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70480 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70481
70482
70483 XLA_AE_LINES_PKG.ValidateCurrentLine;
70484 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70485
70486 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70487 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70488 ,p_balance_type_code => l_balance_type_code);
70489
70490 END IF;
70491
70492 -----------------------------------------------------------------------------------------
70493 -- 4262811 Multiperiod Accounting
70494 -----------------------------------------------------------------------------------------
70495 -- No MPA option is assigned.
70496
70497
70498 END IF;
70499 END IF;
70500 --
70501
70502 --
70503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70504 trace
70505 (p_msg => 'END of AcctLineType_159'
70506 ,p_level => C_LEVEL_PROCEDURE
70507 ,p_module => l_log_module);
70508 END IF;
70509 --
70510 EXCEPTION
70511 WHEN xla_exceptions_pkg.application_exception THEN
70512 RAISE;
70513 WHEN OTHERS THEN
70514 xla_exceptions_pkg.raise_message
70515 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_159');
70516 END AcctLineType_159;
70517 --
70518
70519 ---------------------------------------
70520 --
70521 -- PRIVATE FUNCTION
70522 -- AcctLineType_160
70523 --
70524 ---------------------------------------
70525 PROCEDURE AcctLineType_160 (
70526 p_application_id IN NUMBER
70527 ,p_event_id IN NUMBER
70528 ,p_calculate_acctd_flag IN VARCHAR2
70529 ,p_calculate_g_l_flag IN VARCHAR2
70530 ,p_actual_flag IN OUT VARCHAR2
70531 ,p_balance_type_code OUT VARCHAR2
70532 ,p_gain_or_loss_ref OUT VARCHAR2
70533
70534 --Transaction Account
70535 , p_source_1 IN NUMBER
70536 --Journal Line Type
70537 , p_source_2 IN VARCHAR2
70541 , p_source_5 IN NUMBER
70538 --Entered Amount
70539 , p_source_3 IN NUMBER
70540 --First Distribution Identifier
70542 --Distribution Type
70543 , p_source_6 IN VARCHAR2
70544 --Currency Code
70545 , p_source_7 IN VARCHAR2
70546 --Currency Conversion Date
70547 , p_source_8 IN DATE
70548 --Currency Conversion Rate
70549 , p_source_9 IN NUMBER
70550 --Accounted Amount
70551 , p_source_11 IN NUMBER
70552 )
70553 IS
70554
70555 l_component_type VARCHAR2(80);
70556 l_component_code VARCHAR2(30);
70557 l_component_type_code VARCHAR2(1);
70558 l_component_appl_id INTEGER;
70559 l_amb_context_code VARCHAR2(30);
70560 l_entity_code VARCHAR2(30);
70561 l_event_class_code VARCHAR2(30);
70562 l_ae_header_id NUMBER;
70563 l_event_type_code VARCHAR2(30);
70564 l_line_definition_code VARCHAR2(30);
70565 l_line_definition_owner_code VARCHAR2(1);
70566 --
70567 -- adr variables
70568 l_segment VARCHAR2(30);
70569 l_ccid NUMBER;
70570 l_adr_transaction_coa_id NUMBER;
70571 l_adr_accounting_coa_id NUMBER;
70572 l_adr_flexfield_segment_code VARCHAR2(30);
70573 l_adr_flex_value_set_id NUMBER;
70574 l_adr_value_type_code VARCHAR2(30);
70575 l_adr_value_combination_id NUMBER;
70576 l_adr_value_segment_code VARCHAR2(30);
70577
70578 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
70579 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
70580 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
70581 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
70582
70583 -- 4262811 Variables ------------------------------------------------------------------------------------------
70584 l_entered_amt_idx NUMBER;
70585 l_accted_amt_idx NUMBER;
70586 l_acc_rev_flag VARCHAR2(1);
70587 l_accrual_line_num NUMBER;
70588 l_tmp_amt NUMBER;
70589 l_acc_rev_natural_side_code VARCHAR2(1);
70590
70591 l_num_entries NUMBER;
70592 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
70593 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
70594 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
70595 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
70596 l_recog_line_1 NUMBER;
70597 l_recog_line_2 NUMBER;
70598
70599 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
70600 l_bflow_applied_to_amt NUMBER; -- 5132302
70601 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
70602
70603 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70604
70605 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
70606 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
70607
70608 ---------------------------------------------------------------------------------------------------------------
70609
70610
70611 --
70612 -- bulk performance
70613 --
70614 l_balance_type_code VARCHAR2(1);
70615 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
70616 l_log_module VARCHAR2(240);
70617
70618 --
70619 -- Upgrade strategy
70620 --
70621 l_actual_upg_option VARCHAR2(1);
70622 l_enc_upg_option VARCHAR2(1);
70623
70624 --
70625 BEGIN
70626 --
70627 IF g_log_enabled THEN
70628 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_160';
70629 END IF;
70630 --
70631 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70632
70633 trace
70634 (p_msg => 'BEGIN of AcctLineType_160'
70635 ,p_level => C_LEVEL_PROCEDURE
70636 ,p_module => l_log_module);
70637
70638 END IF;
70639 --
70640 l_component_type := 'AMB_JLT';
70641 l_component_code := 'INV';
70642 l_component_type_code := 'S';
70643 l_component_appl_id := 555;
70644 l_amb_context_code := 'DEFAULT';
70645 l_entity_code := 'INVENTORY';
70646 l_event_class_code := 'MISC_TXN';
70647 l_event_type_code := 'MISC_TXN_ALL';
70648 l_line_definition_owner_code := 'S';
70649 l_line_definition_code := 'MISC_TXN';
70650 --
70651 l_balance_type_code := 'A';
70652 l_segment := NULL;
70653 l_ccid := NULL;
70654 l_adr_transaction_coa_id := NULL;
70655 l_adr_accounting_coa_id := NULL;
70656 l_adr_flexfield_segment_code := NULL;
70657 l_adr_flex_value_set_id := NULL;
70658 l_adr_value_type_code := NULL;
70659 l_adr_value_combination_id := NULL;
70660 l_adr_value_segment_code := NULL;
70661
70662 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
70663 l_bflow_class_code := ''; -- 4219869 Business Flow
70664 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
70665 l_budgetary_control_flag := 'N';
70666
70667 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70668 l_bflow_applied_to_amt := NULL; -- 5132302
70672 l_accrual_line_num := NULL; -- 4262811
70669 l_entered_amt_idx := NULL; -- 4262811
70670 l_accted_amt_idx := NULL; -- 4262811
70671 l_acc_rev_flag := NULL; -- 4262811
70673 l_tmp_amt := NULL; -- 4262811
70674 --
70675
70676 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70677 l_balance_type_code <> 'B' THEN
70678 IF NVL(p_source_2,'
70679 ') = 'INV'
70680 THEN
70681
70682 --
70683 XLA_AE_LINES_PKG.SetNewLine;
70684
70685 p_balance_type_code := l_balance_type_code;
70686 -- set the flag so later we will know whether the gain loss line needs to be created
70687
70688 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70689 p_actual_flag :='A';
70690 END IF;
70691
70692 --
70693 -- bulk performance
70694 --
70695 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70696 p_header_num => 0); -- 4262811
70697 --
70698 -- set accounting line options
70699 --
70700 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70701 p_natural_side_code => 'D'
70702 , p_gain_or_loss_flag => 'N'
70703 , p_gl_transfer_mode_code => 'D'
70704 , p_acct_entry_type_code => 'A'
70705 , p_switch_side_flag => 'Y'
70706 , p_merge_duplicate_code => 'W'
70707 );
70708 --
70709 l_acc_rev_natural_side_code := 'C'; -- 4262811
70710 --
70711 --
70712 -- set accounting line type info
70713 --
70714 xla_ae_lines_pkg.SetAcctLineType
70715 (p_component_type => l_component_type
70716 ,p_event_type_code => l_event_type_code
70717 ,p_line_definition_owner_code => l_line_definition_owner_code
70718 ,p_line_definition_code => l_line_definition_code
70719 ,p_accounting_line_code => l_component_code
70720 ,p_accounting_line_type_code => l_component_type_code
70721 ,p_accounting_line_appl_id => l_component_appl_id
70722 ,p_amb_context_code => l_amb_context_code
70723 ,p_entity_code => l_entity_code
70724 ,p_event_class_code => l_event_class_code);
70725 --
70726 -- set accounting class
70727 --
70728 xla_ae_lines_pkg.SetAcctClass(
70729 p_accounting_class_code => 'INVENTORY_VALUATION'
70730 , p_ae_header_id => l_ae_header_id
70731 );
70732
70733 --
70734 -- set rounding class
70735 --
70736 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70737 'INVENTORY_VALUATION';
70738
70739 --
70740 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70741 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70742 --
70743 -- bulk performance
70744 --
70745 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70746
70747 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70748 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70749
70750 -- 4955764
70751 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70752 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70753
70754 -- 4458381 Public Sector Enh
70755
70756 --
70757 -- set accounting attributes for the line type
70758 --
70759 l_entered_amt_idx := 3;
70760 l_accted_amt_idx := 8;
70761 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70762 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70763 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
70764 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
70765 l_rec_acct_attrs.array_char_value(2) := p_source_6;
70766 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
70767 l_rec_acct_attrs.array_num_value(3) := p_source_3;
70768 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
70769 l_rec_acct_attrs.array_char_value(4) := p_source_7;
70770 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
70771 l_rec_acct_attrs.array_date_value(5) := p_source_8;
70772 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
70773 l_rec_acct_attrs.array_num_value(6) := p_source_9;
70774 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
70775 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_9);
70776 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
70777 l_rec_acct_attrs.array_num_value(8) := p_source_11;
70778
70779 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70780 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70781
70782 ---------------------------------------------------------------------------------------------------------------
70783 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70784 ---------------------------------------------------------------------------------------------------------------
70788 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70785 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70786
70787 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70789
70790 IF xla_accounting_cache_pkg.GetValueChar
70791 (p_source_code => 'LEDGER_CATEGORY_CODE'
70792 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70793 AND l_bflow_method_code = 'PRIOR_ENTRY'
70794 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70795 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70796 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70797 )
70798 THEN
70799 xla_ae_lines_pkg.BflowUpgEntry
70800 (p_business_method_code => l_bflow_method_code
70801 ,p_business_class_code => l_bflow_class_code
70802 ,p_balance_type => l_balance_type_code);
70803 ELSE
70804 NULL;
70805 -- No business flow processing for business flow method of NONE.
70806 END IF;
70807
70808 --
70809 -- call analytical criteria
70810 --
70811
70812 --
70813 -- call description
70814 --
70815 -- No description or it is inherited.
70816 --
70817 -- call ADRs
70818 -- Bug 4922099
70819 --
70820 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70821 (NVL(l_actual_upg_option, 'N') = 'O') OR
70822 (NVL(l_enc_upg_option, 'N') = 'O')
70823 )
70824 THEN
70825 NULL;
70826 --
70827 --
70828
70829 l_ccid := AcctDerRule_17(
70830 p_application_id => p_application_id
70831 , p_ae_header_id => l_ae_header_id
70832 , p_source_1 => p_source_1
70833 , p_source_2 => p_source_2
70834 , x_transaction_coa_id => l_adr_transaction_coa_id
70835 , x_accounting_coa_id => l_adr_accounting_coa_id
70836 , x_value_type_code => l_adr_value_type_code
70837 , p_side => 'NA'
70838 );
70839
70840 xla_ae_lines_pkg.set_ccid(
70841 p_code_combination_id => l_ccid
70842 , p_value_type_code => l_adr_value_type_code
70843 , p_transaction_coa_id => l_adr_transaction_coa_id
70844 , p_accounting_coa_id => l_adr_accounting_coa_id
70845 , p_adr_code => 'INV'
70846 , p_adr_type_code => 'S'
70847 , p_component_type => l_component_type
70848 , p_component_code => l_component_code
70849 , p_component_type_code => l_component_type_code
70850 , p_component_appl_id => l_component_appl_id
70851 , p_amb_context_code => l_amb_context_code
70852 , p_side => 'NA'
70853 );
70854
70855
70856 --
70857 --
70858 END IF;
70859 --
70860 -- Bug 4922099
70861 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70862 (NVL(l_enc_upg_option, 'N') = 'O')
70863 ) AND
70864 (l_bflow_method_code = 'PRIOR_ENTRY')
70865 )
70866 THEN
70867 IF
70868 --
70869 1 = 2
70870 --
70871 THEN
70872 xla_accounting_err_pkg.build_message
70873 (p_appli_s_name => 'XLA'
70874 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70875 ,p_token_1 => 'LINE_NUMBER'
70876 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
70877 ,p_token_2 => 'LINE_TYPE_NAME'
70878 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
70879 l_component_type
70880 ,l_component_code
70881 ,l_component_type_code
70882 ,l_component_appl_id
70883 ,l_amb_context_code
70884 ,l_entity_code
70885 ,l_event_class_code
70886 )
70887 ,p_token_3 => 'OWNER'
70888 ,p_value_3 => xla_lookups_pkg.get_meaning(
70889 p_lookup_type => 'XLA_OWNER_TYPE'
70890 ,p_lookup_code => l_component_type_code
70891 )
70892 ,p_token_4 => 'PRODUCT_NAME'
70893 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70894 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70895 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70899
70896 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70897 ,p_ae_header_id => NULL
70898 );
70900 IF (C_LEVEL_ERROR>= g_log_level) THEN
70901 trace
70902 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70903 ,p_level => C_LEVEL_ERROR
70904 ,p_module => l_log_module);
70905 END IF;
70906 END IF;
70907 END IF;
70908 --
70909 --
70910 ------------------------------------------------------------------------------------------------
70911 -- 4219869 Business Flow
70912 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
70913 -- Prior Entry. Currently, the following code is always generated.
70914 ------------------------------------------------------------------------------------------------
70915 XLA_AE_LINES_PKG.ValidateCurrentLine;
70916
70917 ------------------------------------------------------------------------------------
70918 -- 4219869 Business Flow
70919 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
70920 ------------------------------------------------------------------------------------
70921 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70922
70923 ----------------------------------------------------------------------------------
70924 -- 4219869 Business Flow
70925 -- Update journal entry status -- Need to generate this within IF <condition>
70926 ----------------------------------------------------------------------------------
70927 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70928 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
70929 ,p_balance_type_code => l_balance_type_code
70930 );
70931
70932 -------------------------------------------------------------------------------------------
70933 -- 4262811 - Generate the Accrual Reversal lines
70934 -------------------------------------------------------------------------------------------
70935 BEGIN
70936 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
70937 (g_array_event(p_event_id).array_value_num('header_index'));
70938 IF l_acc_rev_flag IS NULL THEN
70939 l_acc_rev_flag := 'N';
70940 END IF;
70941 EXCEPTION
70942 WHEN OTHERS THEN
70943 l_acc_rev_flag := 'N';
70944 END;
70945 --
70946 IF (l_acc_rev_flag = 'Y') THEN
70947
70948 -- 4645092 ------------------------------------------------------------------------------
70949 -- To allow MPA report to determine if it should generate report process
70950 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
70951 ------------------------------------------------------------------------------------------
70952
70953 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
70954 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
70955 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
70956 -- call ADRs
70957 -- Bug 4922099
70958 --
70959 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70960 (NVL(l_actual_upg_option, 'N') = 'O') OR
70961 (NVL(l_enc_upg_option, 'N') = 'O')
70962 )
70963 THEN
70964 NULL;
70965 --
70966 --
70967
70968 l_ccid := AcctDerRule_17(
70969 p_application_id => p_application_id
70970 , p_ae_header_id => l_ae_header_id
70971 , p_source_1 => p_source_1
70972 , p_source_2 => p_source_2
70973 , x_transaction_coa_id => l_adr_transaction_coa_id
70974 , x_accounting_coa_id => l_adr_accounting_coa_id
70975 , x_value_type_code => l_adr_value_type_code
70976 , p_side => 'NA'
70977 );
70978
70979 xla_ae_lines_pkg.set_ccid(
70980 p_code_combination_id => l_ccid
70981 , p_value_type_code => l_adr_value_type_code
70982 , p_transaction_coa_id => l_adr_transaction_coa_id
70983 , p_accounting_coa_id => l_adr_accounting_coa_id
70984 , p_adr_code => 'INV'
70985 , p_adr_type_code => 'S'
70986 , p_component_type => l_component_type
70987 , p_component_code => l_component_code
70988 , p_component_type_code => l_component_type_code
70989 , p_component_appl_id => l_component_appl_id
70990 , p_amb_context_code => l_amb_context_code
70991 , p_side => 'NA'
70992 );
70993
70994
70995 --
70996 --
70997 END IF;
70998
70999 --
71000 -- Update the line information that should be overwritten
71001 --
71002 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71003 p_header_num => 1);
71004 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
71005
71006 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71007
71008 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
71009 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71010 END IF;
71014 --
71011
71012 --
71013 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71015 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71016 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
71017 ELSE
71018 ---------------------------------------------------------------------------------------------------
71019 -- 4262811a Switch Sign
71020 ---------------------------------------------------------------------------------------------------
71021 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
71022 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71023 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71024 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71025 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71026 -- 5132302
71027 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71028 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71029
71030 END IF;
71031
71032 -- 4955764
71033 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71034 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71035
71036
71037 XLA_AE_LINES_PKG.ValidateCurrentLine;
71038 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71039
71040 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71041 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71042 ,p_balance_type_code => l_balance_type_code);
71043
71044 END IF;
71045
71046 -----------------------------------------------------------------------------------------
71047 -- 4262811 Multiperiod Accounting
71048 -----------------------------------------------------------------------------------------
71049 -- No MPA option is assigned.
71050
71051
71052 END IF;
71053 END IF;
71054 --
71055
71056 --
71057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71058 trace
71059 (p_msg => 'END of AcctLineType_160'
71060 ,p_level => C_LEVEL_PROCEDURE
71061 ,p_module => l_log_module);
71062 END IF;
71063 --
71064 EXCEPTION
71065 WHEN xla_exceptions_pkg.application_exception THEN
71066 RAISE;
71067 WHEN OTHERS THEN
71068 xla_exceptions_pkg.raise_message
71069 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_160');
71070 END AcctLineType_160;
71071 --
71072
71073 ---------------------------------------
71074 --
71075 -- PRIVATE FUNCTION
71076 -- AcctLineType_161
71077 --
71078 ---------------------------------------
71079 PROCEDURE AcctLineType_161 (
71080 p_application_id IN NUMBER
71081 ,p_event_id IN NUMBER
71082 ,p_calculate_acctd_flag IN VARCHAR2
71083 ,p_calculate_g_l_flag IN VARCHAR2
71084 ,p_actual_flag IN OUT VARCHAR2
71085 ,p_balance_type_code OUT VARCHAR2
71086 ,p_gain_or_loss_ref OUT VARCHAR2
71087
71088 --Transaction Account
71089 , p_source_1 IN NUMBER
71090 --Journal Line Type
71091 , p_source_2 IN VARCHAR2
71092 --Entered Amount
71093 , p_source_3 IN NUMBER
71094 --First Distribution Identifier
71095 , p_source_5 IN NUMBER
71096 --Distribution Type
71097 , p_source_6 IN VARCHAR2
71098 --Currency Code
71099 , p_source_7 IN VARCHAR2
71100 --Currency Conversion Date
71101 , p_source_8 IN DATE
71102 --Currency Conversion Rate
71103 , p_source_9 IN NUMBER
71104 --Currency Conversion Type
71105 , p_source_10 IN VARCHAR2
71106 --Accounted Amount
71107 , p_source_11 IN NUMBER
71108 )
71109 IS
71110
71111 l_component_type VARCHAR2(80);
71112 l_component_code VARCHAR2(30);
71113 l_component_type_code VARCHAR2(1);
71114 l_component_appl_id INTEGER;
71115 l_amb_context_code VARCHAR2(30);
71116 l_entity_code VARCHAR2(30);
71117 l_event_class_code VARCHAR2(30);
71118 l_ae_header_id NUMBER;
71119 l_event_type_code VARCHAR2(30);
71120 l_line_definition_code VARCHAR2(30);
71121 l_line_definition_owner_code VARCHAR2(1);
71122 --
71123 -- adr variables
71124 l_segment VARCHAR2(30);
71125 l_ccid NUMBER;
71126 l_adr_transaction_coa_id NUMBER;
71127 l_adr_accounting_coa_id NUMBER;
71128 l_adr_flexfield_segment_code VARCHAR2(30);
71129 l_adr_flex_value_set_id NUMBER;
71130 l_adr_value_type_code VARCHAR2(30);
71131 l_adr_value_combination_id NUMBER;
71132 l_adr_value_segment_code VARCHAR2(30);
71133
71134 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
71135 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
71136 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
71140 l_entered_amt_idx NUMBER;
71137 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
71138
71139 -- 4262811 Variables ------------------------------------------------------------------------------------------
71141 l_accted_amt_idx NUMBER;
71142 l_acc_rev_flag VARCHAR2(1);
71143 l_accrual_line_num NUMBER;
71144 l_tmp_amt NUMBER;
71145 l_acc_rev_natural_side_code VARCHAR2(1);
71146
71147 l_num_entries NUMBER;
71148 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
71149 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
71150 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
71151 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
71152 l_recog_line_1 NUMBER;
71153 l_recog_line_2 NUMBER;
71154
71155 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
71156 l_bflow_applied_to_amt NUMBER; -- 5132302
71157 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
71158
71159 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71160
71161 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
71162 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
71163
71164 ---------------------------------------------------------------------------------------------------------------
71165
71166
71167 --
71168 -- bulk performance
71169 --
71170 l_balance_type_code VARCHAR2(1);
71171 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
71172 l_log_module VARCHAR2(240);
71173
71174 --
71175 -- Upgrade strategy
71176 --
71177 l_actual_upg_option VARCHAR2(1);
71178 l_enc_upg_option VARCHAR2(1);
71179
71180 --
71181 BEGIN
71182 --
71183 IF g_log_enabled THEN
71184 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_161';
71185 END IF;
71186 --
71187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71188
71189 trace
71190 (p_msg => 'BEGIN of AcctLineType_161'
71191 ,p_level => C_LEVEL_PROCEDURE
71192 ,p_module => l_log_module);
71193
71194 END IF;
71195 --
71196 l_component_type := 'AMB_JLT';
71197 l_component_code := 'INV';
71198 l_component_type_code := 'S';
71199 l_component_appl_id := 555;
71200 l_amb_context_code := 'DEFAULT';
71201 l_entity_code := 'PURCHASING';
71202 l_event_class_code := 'DELIVER';
71203 l_event_type_code := 'INT_REQ_RECEIPT_ADJ';
71204 l_line_definition_owner_code := 'S';
71205 l_line_definition_code := 'INT_REQ_RCPT_ADJ';
71206 --
71207 l_balance_type_code := 'A';
71208 l_segment := NULL;
71209 l_ccid := NULL;
71210 l_adr_transaction_coa_id := NULL;
71211 l_adr_accounting_coa_id := NULL;
71212 l_adr_flexfield_segment_code := NULL;
71213 l_adr_flex_value_set_id := NULL;
71214 l_adr_value_type_code := NULL;
71215 l_adr_value_combination_id := NULL;
71216 l_adr_value_segment_code := NULL;
71217
71218 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
71219 l_bflow_class_code := ''; -- 4219869 Business Flow
71220 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
71221 l_budgetary_control_flag := 'N';
71222
71223 l_bflow_applied_to_amt_idx := NULL; -- 5132302
71224 l_bflow_applied_to_amt := NULL; -- 5132302
71225 l_entered_amt_idx := NULL; -- 4262811
71226 l_accted_amt_idx := NULL; -- 4262811
71227 l_acc_rev_flag := NULL; -- 4262811
71228 l_accrual_line_num := NULL; -- 4262811
71229 l_tmp_amt := NULL; -- 4262811
71230 --
71231
71232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71233 l_balance_type_code <> 'B' THEN
71234 IF NVL(p_source_2,'
71235 ') = 'INV'
71236 THEN
71237
71238 --
71239 XLA_AE_LINES_PKG.SetNewLine;
71240
71241 p_balance_type_code := l_balance_type_code;
71242 -- set the flag so later we will know whether the gain loss line needs to be created
71243
71244 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71245 p_actual_flag :='A';
71246 END IF;
71247
71248 --
71249 -- bulk performance
71250 --
71251 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71252 p_header_num => 0); -- 4262811
71253 --
71254 -- set accounting line options
71255 --
71256 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71257 p_natural_side_code => 'D'
71258 , p_gain_or_loss_flag => 'N'
71259 , p_gl_transfer_mode_code => 'D'
71260 , p_acct_entry_type_code => 'A'
71261 , p_switch_side_flag => 'Y'
71262 , p_merge_duplicate_code => 'W'
71263 );
71264 --
71265 l_acc_rev_natural_side_code := 'C'; -- 4262811
71266 --
71267 --
71268 -- set accounting line type info
71272 ,p_event_type_code => l_event_type_code
71269 --
71270 xla_ae_lines_pkg.SetAcctLineType
71271 (p_component_type => l_component_type
71273 ,p_line_definition_owner_code => l_line_definition_owner_code
71274 ,p_line_definition_code => l_line_definition_code
71275 ,p_accounting_line_code => l_component_code
71276 ,p_accounting_line_type_code => l_component_type_code
71277 ,p_accounting_line_appl_id => l_component_appl_id
71278 ,p_amb_context_code => l_amb_context_code
71279 ,p_entity_code => l_entity_code
71280 ,p_event_class_code => l_event_class_code);
71281 --
71282 -- set accounting class
71283 --
71284 xla_ae_lines_pkg.SetAcctClass(
71285 p_accounting_class_code => 'INVENTORY_VALUATION'
71286 , p_ae_header_id => l_ae_header_id
71287 );
71288
71289 --
71290 -- set rounding class
71291 --
71292 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71293 'INVENTORY_VALUATION';
71294
71295 --
71296 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71297 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71298 --
71299 -- bulk performance
71300 --
71301 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71302
71303 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71304 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71305
71306 -- 4955764
71307 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71308 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71309
71310 -- 4458381 Public Sector Enh
71311
71312 --
71313 -- set accounting attributes for the line type
71314 --
71315 l_entered_amt_idx := 3;
71316 l_accted_amt_idx := 8;
71317 l_bflow_applied_to_amt_idx := NULL; -- 5132302
71318 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71319 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
71320 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
71321 l_rec_acct_attrs.array_char_value(2) := p_source_6;
71322 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
71323 l_rec_acct_attrs.array_num_value(3) := p_source_3;
71324 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
71325 l_rec_acct_attrs.array_char_value(4) := p_source_7;
71326 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
71327 l_rec_acct_attrs.array_date_value(5) := p_source_8;
71328 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
71329 l_rec_acct_attrs.array_num_value(6) := p_source_9;
71330 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
71331 l_rec_acct_attrs.array_char_value(7) := p_source_10;
71332 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
71333 l_rec_acct_attrs.array_num_value(8) := p_source_11;
71334
71335 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
71336 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
71337
71338 ---------------------------------------------------------------------------------------------------------------
71339 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
71340 ---------------------------------------------------------------------------------------------------------------
71341 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
71342
71343 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71344 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71345
71346 IF xla_accounting_cache_pkg.GetValueChar
71347 (p_source_code => 'LEDGER_CATEGORY_CODE'
71348 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
71349 AND l_bflow_method_code = 'PRIOR_ENTRY'
71350 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
71351 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
71352 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
71353 )
71354 THEN
71355 xla_ae_lines_pkg.BflowUpgEntry
71356 (p_business_method_code => l_bflow_method_code
71357 ,p_business_class_code => l_bflow_class_code
71358 ,p_balance_type => l_balance_type_code);
71359 ELSE
71360 NULL;
71361 -- No business flow processing for business flow method of NONE.
71362 END IF;
71363
71364 --
71365 -- call analytical criteria
71366 --
71367
71368 --
71369 -- call description
71370 --
71371 -- No description or it is inherited.
71372 --
71373 -- call ADRs
71374 -- Bug 4922099
71375 --
71376 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71377 (NVL(l_actual_upg_option, 'N') = 'O') OR
71378 (NVL(l_enc_upg_option, 'N') = 'O')
71379 )
71380 THEN
71381 NULL;
71382 --
71383 --
71384
71385 l_ccid := AcctDerRule_17(
71386 p_application_id => p_application_id
71390 , x_transaction_coa_id => l_adr_transaction_coa_id
71387 , p_ae_header_id => l_ae_header_id
71388 , p_source_1 => p_source_1
71389 , p_source_2 => p_source_2
71391 , x_accounting_coa_id => l_adr_accounting_coa_id
71392 , x_value_type_code => l_adr_value_type_code
71393 , p_side => 'NA'
71394 );
71395
71396 xla_ae_lines_pkg.set_ccid(
71397 p_code_combination_id => l_ccid
71398 , p_value_type_code => l_adr_value_type_code
71399 , p_transaction_coa_id => l_adr_transaction_coa_id
71400 , p_accounting_coa_id => l_adr_accounting_coa_id
71401 , p_adr_code => 'INV'
71402 , p_adr_type_code => 'S'
71403 , p_component_type => l_component_type
71404 , p_component_code => l_component_code
71405 , p_component_type_code => l_component_type_code
71406 , p_component_appl_id => l_component_appl_id
71407 , p_amb_context_code => l_amb_context_code
71408 , p_side => 'NA'
71409 );
71410
71411
71412 --
71413 --
71414 END IF;
71415 --
71416 -- Bug 4922099
71417 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71418 (NVL(l_enc_upg_option, 'N') = 'O')
71419 ) AND
71420 (l_bflow_method_code = 'PRIOR_ENTRY')
71421 )
71422 THEN
71423 IF
71424 --
71425 1 = 2
71426 --
71427 THEN
71428 xla_accounting_err_pkg.build_message
71429 (p_appli_s_name => 'XLA'
71430 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71431 ,p_token_1 => 'LINE_NUMBER'
71432 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
71433 ,p_token_2 => 'LINE_TYPE_NAME'
71434 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
71435 l_component_type
71436 ,l_component_code
71437 ,l_component_type_code
71438 ,l_component_appl_id
71439 ,l_amb_context_code
71440 ,l_entity_code
71441 ,l_event_class_code
71442 )
71443 ,p_token_3 => 'OWNER'
71444 ,p_value_3 => xla_lookups_pkg.get_meaning(
71445 p_lookup_type => 'XLA_OWNER_TYPE'
71446 ,p_lookup_code => l_component_type_code
71447 )
71448 ,p_token_4 => 'PRODUCT_NAME'
71449 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71450 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71451 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71452 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71453 ,p_ae_header_id => NULL
71454 );
71455
71456 IF (C_LEVEL_ERROR>= g_log_level) THEN
71457 trace
71458 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71459 ,p_level => C_LEVEL_ERROR
71460 ,p_module => l_log_module);
71461 END IF;
71462 END IF;
71463 END IF;
71464 --
71465 --
71466 ------------------------------------------------------------------------------------------------
71467 -- 4219869 Business Flow
71468 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71469 -- Prior Entry. Currently, the following code is always generated.
71470 ------------------------------------------------------------------------------------------------
71471 XLA_AE_LINES_PKG.ValidateCurrentLine;
71472
71473 ------------------------------------------------------------------------------------
71474 -- 4219869 Business Flow
71475 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71476 ------------------------------------------------------------------------------------
71477 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71478
71479 ----------------------------------------------------------------------------------
71480 -- 4219869 Business Flow
71481 -- Update journal entry status -- Need to generate this within IF <condition>
71482 ----------------------------------------------------------------------------------
71483 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71487
71484 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71485 ,p_balance_type_code => l_balance_type_code
71486 );
71488 -------------------------------------------------------------------------------------------
71489 -- 4262811 - Generate the Accrual Reversal lines
71490 -------------------------------------------------------------------------------------------
71491 BEGIN
71492 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71493 (g_array_event(p_event_id).array_value_num('header_index'));
71494 IF l_acc_rev_flag IS NULL THEN
71495 l_acc_rev_flag := 'N';
71496 END IF;
71497 EXCEPTION
71498 WHEN OTHERS THEN
71499 l_acc_rev_flag := 'N';
71500 END;
71501 --
71502 IF (l_acc_rev_flag = 'Y') THEN
71503
71504 -- 4645092 ------------------------------------------------------------------------------
71505 -- To allow MPA report to determine if it should generate report process
71506 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71507 ------------------------------------------------------------------------------------------
71508
71509 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71510 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71511 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
71512 -- call ADRs
71513 -- Bug 4922099
71514 --
71515 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71516 (NVL(l_actual_upg_option, 'N') = 'O') OR
71517 (NVL(l_enc_upg_option, 'N') = 'O')
71518 )
71519 THEN
71520 NULL;
71521 --
71522 --
71523
71524 l_ccid := AcctDerRule_17(
71525 p_application_id => p_application_id
71526 , p_ae_header_id => l_ae_header_id
71527 , p_source_1 => p_source_1
71528 , p_source_2 => p_source_2
71529 , x_transaction_coa_id => l_adr_transaction_coa_id
71530 , x_accounting_coa_id => l_adr_accounting_coa_id
71531 , x_value_type_code => l_adr_value_type_code
71532 , p_side => 'NA'
71533 );
71534
71535 xla_ae_lines_pkg.set_ccid(
71536 p_code_combination_id => l_ccid
71537 , p_value_type_code => l_adr_value_type_code
71538 , p_transaction_coa_id => l_adr_transaction_coa_id
71539 , p_accounting_coa_id => l_adr_accounting_coa_id
71540 , p_adr_code => 'INV'
71541 , p_adr_type_code => 'S'
71542 , p_component_type => l_component_type
71543 , p_component_code => l_component_code
71544 , p_component_type_code => l_component_type_code
71545 , p_component_appl_id => l_component_appl_id
71546 , p_amb_context_code => l_amb_context_code
71547 , p_side => 'NA'
71548 );
71549
71550
71551 --
71552 --
71553 END IF;
71554
71555 --
71556 -- Update the line information that should be overwritten
71557 --
71558 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71559 p_header_num => 1);
71560 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
71561
71562 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71563
71564 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
71565 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71566 END IF;
71567
71568 --
71569 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71570 --
71571 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71572 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
71573 ELSE
71574 ---------------------------------------------------------------------------------------------------
71575 -- 4262811a Switch Sign
71576 ---------------------------------------------------------------------------------------------------
71577 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
71578 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71579 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71580 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71581 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71582 -- 5132302
71583 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71584 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71585
71586 END IF;
71587
71588 -- 4955764
71589 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71590 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71591
71592
71593 XLA_AE_LINES_PKG.ValidateCurrentLine;
71597 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71594 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71595
71596 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71598 ,p_balance_type_code => l_balance_type_code);
71599
71600 END IF;
71601
71602 -----------------------------------------------------------------------------------------
71603 -- 4262811 Multiperiod Accounting
71604 -----------------------------------------------------------------------------------------
71605 -- No MPA option is assigned.
71606
71607
71608 END IF;
71609 END IF;
71610 --
71611
71612 --
71613 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71614 trace
71615 (p_msg => 'END of AcctLineType_161'
71616 ,p_level => C_LEVEL_PROCEDURE
71617 ,p_module => l_log_module);
71618 END IF;
71619 --
71620 EXCEPTION
71621 WHEN xla_exceptions_pkg.application_exception THEN
71622 RAISE;
71623 WHEN OTHERS THEN
71624 xla_exceptions_pkg.raise_message
71625 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_161');
71626 END AcctLineType_161;
71627 --
71628
71629 ---------------------------------------
71630 --
71631 -- PRIVATE FUNCTION
71632 -- AcctLineType_162
71633 --
71634 ---------------------------------------
71635 PROCEDURE AcctLineType_162 (
71636 p_application_id IN NUMBER
71637 ,p_event_id IN NUMBER
71638 ,p_calculate_acctd_flag IN VARCHAR2
71639 ,p_calculate_g_l_flag IN VARCHAR2
71640 ,p_actual_flag IN OUT VARCHAR2
71641 ,p_balance_type_code OUT VARCHAR2
71642 ,p_gain_or_loss_ref OUT VARCHAR2
71643
71644 --Transaction Account
71645 , p_source_1 IN NUMBER
71646 --Journal Line Type
71647 , p_source_2 IN VARCHAR2
71648 --Entered Amount
71649 , p_source_3 IN NUMBER
71650 --First Distribution Identifier
71651 , p_source_5 IN NUMBER
71652 --Distribution Type
71653 , p_source_6 IN VARCHAR2
71654 --Currency Code
71655 , p_source_7 IN VARCHAR2
71656 --Currency Conversion Date
71657 , p_source_8 IN DATE
71658 --Currency Conversion Rate
71659 , p_source_9 IN NUMBER
71660 --Currency Conversion Type
71661 , p_source_10 IN VARCHAR2
71662 --Accounted Amount
71663 , p_source_11 IN NUMBER
71664 )
71665 IS
71666
71667 l_component_type VARCHAR2(80);
71668 l_component_code VARCHAR2(30);
71669 l_component_type_code VARCHAR2(1);
71670 l_component_appl_id INTEGER;
71671 l_amb_context_code VARCHAR2(30);
71672 l_entity_code VARCHAR2(30);
71673 l_event_class_code VARCHAR2(30);
71674 l_ae_header_id NUMBER;
71675 l_event_type_code VARCHAR2(30);
71676 l_line_definition_code VARCHAR2(30);
71677 l_line_definition_owner_code VARCHAR2(1);
71678 --
71679 -- adr variables
71680 l_segment VARCHAR2(30);
71681 l_ccid NUMBER;
71682 l_adr_transaction_coa_id NUMBER;
71683 l_adr_accounting_coa_id NUMBER;
71684 l_adr_flexfield_segment_code VARCHAR2(30);
71685 l_adr_flex_value_set_id NUMBER;
71686 l_adr_value_type_code VARCHAR2(30);
71687 l_adr_value_combination_id NUMBER;
71688 l_adr_value_segment_code VARCHAR2(30);
71689
71690 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
71691 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
71692 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
71693 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
71694
71695 -- 4262811 Variables ------------------------------------------------------------------------------------------
71696 l_entered_amt_idx NUMBER;
71697 l_accted_amt_idx NUMBER;
71698 l_acc_rev_flag VARCHAR2(1);
71699 l_accrual_line_num NUMBER;
71700 l_tmp_amt NUMBER;
71701 l_acc_rev_natural_side_code VARCHAR2(1);
71702
71703 l_num_entries NUMBER;
71704 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
71705 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
71706 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
71707 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
71708 l_recog_line_1 NUMBER;
71709 l_recog_line_2 NUMBER;
71710
71711 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
71712 l_bflow_applied_to_amt NUMBER; -- 5132302
71713 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
71714
71715 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71716
71717 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
71718 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
71719
71720 ---------------------------------------------------------------------------------------------------------------
71721
71722
71723 --
71724 -- bulk performance
71725 --
71726 l_balance_type_code VARCHAR2(1);
71730 --
71727 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
71728 l_log_module VARCHAR2(240);
71729
71731 -- Upgrade strategy
71732 --
71733 l_actual_upg_option VARCHAR2(1);
71734 l_enc_upg_option VARCHAR2(1);
71735
71736 --
71737 BEGIN
71738 --
71739 IF g_log_enabled THEN
71740 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_162';
71741 END IF;
71742 --
71743 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71744
71745 trace
71746 (p_msg => 'BEGIN of AcctLineType_162'
71747 ,p_level => C_LEVEL_PROCEDURE
71748 ,p_module => l_log_module);
71749
71750 END IF;
71751 --
71752 l_component_type := 'AMB_JLT';
71753 l_component_code := 'INV';
71754 l_component_type_code := 'S';
71755 l_component_appl_id := 555;
71756 l_amb_context_code := 'DEFAULT';
71757 l_entity_code := 'PURCHASING';
71758 l_event_class_code := 'DELIVER';
71759 l_event_type_code := 'LOG_PO_RCV_ADJ';
71760 l_line_definition_owner_code := 'S';
71761 l_line_definition_code := 'LOG_PO_RCV_ADJ';
71762 --
71763 l_balance_type_code := 'A';
71764 l_segment := NULL;
71765 l_ccid := NULL;
71766 l_adr_transaction_coa_id := NULL;
71767 l_adr_accounting_coa_id := NULL;
71768 l_adr_flexfield_segment_code := NULL;
71769 l_adr_flex_value_set_id := NULL;
71770 l_adr_value_type_code := NULL;
71771 l_adr_value_combination_id := NULL;
71772 l_adr_value_segment_code := NULL;
71773
71774 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
71775 l_bflow_class_code := ''; -- 4219869 Business Flow
71776 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
71777 l_budgetary_control_flag := 'N';
71778
71779 l_bflow_applied_to_amt_idx := NULL; -- 5132302
71780 l_bflow_applied_to_amt := NULL; -- 5132302
71781 l_entered_amt_idx := NULL; -- 4262811
71782 l_accted_amt_idx := NULL; -- 4262811
71783 l_acc_rev_flag := NULL; -- 4262811
71784 l_accrual_line_num := NULL; -- 4262811
71785 l_tmp_amt := NULL; -- 4262811
71786 --
71787
71788 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71789 l_balance_type_code <> 'B' THEN
71790 IF NVL(p_source_2,'
71791 ') = 'INV'
71792 THEN
71793
71794 --
71795 XLA_AE_LINES_PKG.SetNewLine;
71796
71797 p_balance_type_code := l_balance_type_code;
71798 -- set the flag so later we will know whether the gain loss line needs to be created
71799
71800 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71801 p_actual_flag :='A';
71802 END IF;
71803
71804 --
71805 -- bulk performance
71806 --
71807 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71808 p_header_num => 0); -- 4262811
71809 --
71810 -- set accounting line options
71811 --
71812 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71813 p_natural_side_code => 'D'
71814 , p_gain_or_loss_flag => 'N'
71815 , p_gl_transfer_mode_code => 'D'
71816 , p_acct_entry_type_code => 'A'
71817 , p_switch_side_flag => 'Y'
71818 , p_merge_duplicate_code => 'W'
71819 );
71820 --
71821 l_acc_rev_natural_side_code := 'C'; -- 4262811
71822 --
71823 --
71824 -- set accounting line type info
71825 --
71826 xla_ae_lines_pkg.SetAcctLineType
71827 (p_component_type => l_component_type
71828 ,p_event_type_code => l_event_type_code
71829 ,p_line_definition_owner_code => l_line_definition_owner_code
71830 ,p_line_definition_code => l_line_definition_code
71831 ,p_accounting_line_code => l_component_code
71832 ,p_accounting_line_type_code => l_component_type_code
71833 ,p_accounting_line_appl_id => l_component_appl_id
71834 ,p_amb_context_code => l_amb_context_code
71835 ,p_entity_code => l_entity_code
71836 ,p_event_class_code => l_event_class_code);
71837 --
71838 -- set accounting class
71839 --
71840 xla_ae_lines_pkg.SetAcctClass(
71841 p_accounting_class_code => 'INVENTORY_VALUATION'
71842 , p_ae_header_id => l_ae_header_id
71843 );
71844
71845 --
71846 -- set rounding class
71847 --
71848 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71849 'INVENTORY_VALUATION';
71850
71851 --
71852 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71853 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71854 --
71855 -- bulk performance
71856 --
71857 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71858
71859 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71860 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71861
71862 -- 4955764
71866 -- 4458381 Public Sector Enh
71863 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71864 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71865
71867
71868 --
71869 -- set accounting attributes for the line type
71870 --
71871 l_entered_amt_idx := 3;
71872 l_accted_amt_idx := 8;
71873 l_bflow_applied_to_amt_idx := NULL; -- 5132302
71874 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
71875 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
71876 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
71877 l_rec_acct_attrs.array_char_value(2) := p_source_6;
71878 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
71879 l_rec_acct_attrs.array_num_value(3) := p_source_3;
71880 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
71881 l_rec_acct_attrs.array_char_value(4) := p_source_7;
71882 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
71883 l_rec_acct_attrs.array_date_value(5) := p_source_8;
71884 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
71885 l_rec_acct_attrs.array_num_value(6) := p_source_9;
71886 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
71887 l_rec_acct_attrs.array_char_value(7) := p_source_10;
71888 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
71889 l_rec_acct_attrs.array_num_value(8) := p_source_11;
71890
71891 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
71892 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
71893
71894 ---------------------------------------------------------------------------------------------------------------
71895 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
71896 ---------------------------------------------------------------------------------------------------------------
71897 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
71898
71899 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71900 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71901
71902 IF xla_accounting_cache_pkg.GetValueChar
71903 (p_source_code => 'LEDGER_CATEGORY_CODE'
71904 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
71905 AND l_bflow_method_code = 'PRIOR_ENTRY'
71906 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
71907 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
71908 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
71909 )
71910 THEN
71911 xla_ae_lines_pkg.BflowUpgEntry
71912 (p_business_method_code => l_bflow_method_code
71913 ,p_business_class_code => l_bflow_class_code
71914 ,p_balance_type => l_balance_type_code);
71915 ELSE
71916 NULL;
71917 -- No business flow processing for business flow method of NONE.
71918 END IF;
71919
71920 --
71921 -- call analytical criteria
71922 --
71923
71924 --
71925 -- call description
71926 --
71927 -- No description or it is inherited.
71928 --
71929 -- call ADRs
71930 -- Bug 4922099
71931 --
71932 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71933 (NVL(l_actual_upg_option, 'N') = 'O') OR
71934 (NVL(l_enc_upg_option, 'N') = 'O')
71935 )
71936 THEN
71937 NULL;
71938 --
71939 --
71940
71941 l_ccid := AcctDerRule_17(
71942 p_application_id => p_application_id
71943 , p_ae_header_id => l_ae_header_id
71944 , p_source_1 => p_source_1
71945 , p_source_2 => p_source_2
71946 , x_transaction_coa_id => l_adr_transaction_coa_id
71947 , x_accounting_coa_id => l_adr_accounting_coa_id
71948 , x_value_type_code => l_adr_value_type_code
71949 , p_side => 'NA'
71950 );
71951
71952 xla_ae_lines_pkg.set_ccid(
71953 p_code_combination_id => l_ccid
71954 , p_value_type_code => l_adr_value_type_code
71955 , p_transaction_coa_id => l_adr_transaction_coa_id
71956 , p_accounting_coa_id => l_adr_accounting_coa_id
71957 , p_adr_code => 'INV'
71958 , p_adr_type_code => 'S'
71959 , p_component_type => l_component_type
71960 , p_component_code => l_component_code
71961 , p_component_type_code => l_component_type_code
71962 , p_component_appl_id => l_component_appl_id
71963 , p_amb_context_code => l_amb_context_code
71964 , p_side => 'NA'
71965 );
71966
71967
71968 --
71969 --
71970 END IF;
71971 --
71972 -- Bug 4922099
71973 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71974 (NVL(l_enc_upg_option, 'N') = 'O')
71975 ) AND
71976 (l_bflow_method_code = 'PRIOR_ENTRY')
71977 )
71978 THEN
71979 IF
71980 --
71981 1 = 2
71982 --
71983 THEN
71984 xla_accounting_err_pkg.build_message
71988 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
71985 (p_appli_s_name => 'XLA'
71986 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71987 ,p_token_1 => 'LINE_NUMBER'
71989 ,p_token_2 => 'LINE_TYPE_NAME'
71990 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
71991 l_component_type
71992 ,l_component_code
71993 ,l_component_type_code
71994 ,l_component_appl_id
71995 ,l_amb_context_code
71996 ,l_entity_code
71997 ,l_event_class_code
71998 )
71999 ,p_token_3 => 'OWNER'
72000 ,p_value_3 => xla_lookups_pkg.get_meaning(
72001 p_lookup_type => 'XLA_OWNER_TYPE'
72002 ,p_lookup_code => l_component_type_code
72003 )
72004 ,p_token_4 => 'PRODUCT_NAME'
72005 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72006 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72007 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72008 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72009 ,p_ae_header_id => NULL
72010 );
72011
72012 IF (C_LEVEL_ERROR>= g_log_level) THEN
72013 trace
72014 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72015 ,p_level => C_LEVEL_ERROR
72016 ,p_module => l_log_module);
72017 END IF;
72018 END IF;
72019 END IF;
72020 --
72021 --
72022 ------------------------------------------------------------------------------------------------
72023 -- 4219869 Business Flow
72024 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72025 -- Prior Entry. Currently, the following code is always generated.
72026 ------------------------------------------------------------------------------------------------
72027 XLA_AE_LINES_PKG.ValidateCurrentLine;
72028
72029 ------------------------------------------------------------------------------------
72030 -- 4219869 Business Flow
72031 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72032 ------------------------------------------------------------------------------------
72033 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72034
72035 ----------------------------------------------------------------------------------
72036 -- 4219869 Business Flow
72037 -- Update journal entry status -- Need to generate this within IF <condition>
72038 ----------------------------------------------------------------------------------
72039 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72040 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72041 ,p_balance_type_code => l_balance_type_code
72042 );
72043
72044 -------------------------------------------------------------------------------------------
72045 -- 4262811 - Generate the Accrual Reversal lines
72046 -------------------------------------------------------------------------------------------
72047 BEGIN
72048 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72049 (g_array_event(p_event_id).array_value_num('header_index'));
72050 IF l_acc_rev_flag IS NULL THEN
72051 l_acc_rev_flag := 'N';
72052 END IF;
72053 EXCEPTION
72054 WHEN OTHERS THEN
72055 l_acc_rev_flag := 'N';
72056 END;
72057 --
72058 IF (l_acc_rev_flag = 'Y') THEN
72059
72060 -- 4645092 ------------------------------------------------------------------------------
72061 -- To allow MPA report to determine if it should generate report process
72062 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72063 ------------------------------------------------------------------------------------------
72064
72065 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72066 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72067 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
72068 -- call ADRs
72069 -- Bug 4922099
72070 --
72071 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72072 (NVL(l_actual_upg_option, 'N') = 'O') OR
72073 (NVL(l_enc_upg_option, 'N') = 'O')
72077 --
72074 )
72075 THEN
72076 NULL;
72078 --
72079
72080 l_ccid := AcctDerRule_17(
72081 p_application_id => p_application_id
72082 , p_ae_header_id => l_ae_header_id
72083 , p_source_1 => p_source_1
72084 , p_source_2 => p_source_2
72085 , x_transaction_coa_id => l_adr_transaction_coa_id
72086 , x_accounting_coa_id => l_adr_accounting_coa_id
72087 , x_value_type_code => l_adr_value_type_code
72088 , p_side => 'NA'
72089 );
72090
72091 xla_ae_lines_pkg.set_ccid(
72092 p_code_combination_id => l_ccid
72093 , p_value_type_code => l_adr_value_type_code
72094 , p_transaction_coa_id => l_adr_transaction_coa_id
72095 , p_accounting_coa_id => l_adr_accounting_coa_id
72096 , p_adr_code => 'INV'
72097 , p_adr_type_code => 'S'
72098 , p_component_type => l_component_type
72099 , p_component_code => l_component_code
72100 , p_component_type_code => l_component_type_code
72101 , p_component_appl_id => l_component_appl_id
72102 , p_amb_context_code => l_amb_context_code
72103 , p_side => 'NA'
72104 );
72105
72106
72107 --
72108 --
72109 END IF;
72110
72111 --
72112 -- Update the line information that should be overwritten
72113 --
72114 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72115 p_header_num => 1);
72116 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
72117
72118 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72119
72120 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
72121 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72122 END IF;
72123
72124 --
72125 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72126 --
72127 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72128 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
72129 ELSE
72130 ---------------------------------------------------------------------------------------------------
72131 -- 4262811a Switch Sign
72132 ---------------------------------------------------------------------------------------------------
72133 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
72134 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72135 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72136 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72137 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72138 -- 5132302
72139 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72140 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72141
72142 END IF;
72143
72144 -- 4955764
72145 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72146 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72147
72148
72149 XLA_AE_LINES_PKG.ValidateCurrentLine;
72150 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72151
72152 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72153 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72154 ,p_balance_type_code => l_balance_type_code);
72155
72156 END IF;
72157
72158 -----------------------------------------------------------------------------------------
72159 -- 4262811 Multiperiod Accounting
72160 -----------------------------------------------------------------------------------------
72161 -- No MPA option is assigned.
72162
72163
72164 END IF;
72165 END IF;
72166 --
72167
72168 --
72169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72170 trace
72171 (p_msg => 'END of AcctLineType_162'
72172 ,p_level => C_LEVEL_PROCEDURE
72173 ,p_module => l_log_module);
72174 END IF;
72175 --
72176 EXCEPTION
72177 WHEN xla_exceptions_pkg.application_exception THEN
72178 RAISE;
72179 WHEN OTHERS THEN
72180 xla_exceptions_pkg.raise_message
72181 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_162');
72182 END AcctLineType_162;
72183 --
72184
72185 ---------------------------------------
72186 --
72187 -- PRIVATE FUNCTION
72188 -- AcctLineType_163
72189 --
72190 ---------------------------------------
72191 PROCEDURE AcctLineType_163 (
72192 p_application_id IN NUMBER
72193 ,p_event_id IN NUMBER
72194 ,p_calculate_acctd_flag IN VARCHAR2
72195 ,p_calculate_g_l_flag IN VARCHAR2
72199
72196 ,p_actual_flag IN OUT VARCHAR2
72197 ,p_balance_type_code OUT VARCHAR2
72198 ,p_gain_or_loss_ref OUT VARCHAR2
72200 --Transaction Account
72201 , p_source_1 IN NUMBER
72202 --Journal Line Type
72203 , p_source_2 IN VARCHAR2
72204 --Entered Amount
72205 , p_source_3 IN NUMBER
72206 --First Distribution Identifier
72207 , p_source_5 IN NUMBER
72208 --Distribution Type
72209 , p_source_6 IN VARCHAR2
72210 --Currency Code
72211 , p_source_7 IN VARCHAR2
72212 --Currency Conversion Date
72213 , p_source_8 IN DATE
72214 --Currency Conversion Rate
72215 , p_source_9 IN NUMBER
72216 --Currency Conversion Type
72217 , p_source_10 IN VARCHAR2
72218 --Accounted Amount
72219 , p_source_11 IN NUMBER
72220 )
72221 IS
72222
72223 l_component_type VARCHAR2(80);
72224 l_component_code VARCHAR2(30);
72225 l_component_type_code VARCHAR2(1);
72226 l_component_appl_id INTEGER;
72227 l_amb_context_code VARCHAR2(30);
72228 l_entity_code VARCHAR2(30);
72229 l_event_class_code VARCHAR2(30);
72230 l_ae_header_id NUMBER;
72231 l_event_type_code VARCHAR2(30);
72232 l_line_definition_code VARCHAR2(30);
72233 l_line_definition_owner_code VARCHAR2(1);
72234 --
72235 -- adr variables
72236 l_segment VARCHAR2(30);
72237 l_ccid NUMBER;
72238 l_adr_transaction_coa_id NUMBER;
72239 l_adr_accounting_coa_id NUMBER;
72240 l_adr_flexfield_segment_code VARCHAR2(30);
72241 l_adr_flex_value_set_id NUMBER;
72242 l_adr_value_type_code VARCHAR2(30);
72243 l_adr_value_combination_id NUMBER;
72244 l_adr_value_segment_code VARCHAR2(30);
72245
72246 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
72247 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
72248 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
72249 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
72250
72251 -- 4262811 Variables ------------------------------------------------------------------------------------------
72252 l_entered_amt_idx NUMBER;
72253 l_accted_amt_idx NUMBER;
72254 l_acc_rev_flag VARCHAR2(1);
72255 l_accrual_line_num NUMBER;
72256 l_tmp_amt NUMBER;
72257 l_acc_rev_natural_side_code VARCHAR2(1);
72258
72259 l_num_entries NUMBER;
72260 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
72261 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
72262 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
72263 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
72264 l_recog_line_1 NUMBER;
72265 l_recog_line_2 NUMBER;
72266
72267 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
72268 l_bflow_applied_to_amt NUMBER; -- 5132302
72269 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
72270
72271 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72272
72273 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
72274 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
72275
72276 ---------------------------------------------------------------------------------------------------------------
72277
72278
72279 --
72280 -- bulk performance
72281 --
72282 l_balance_type_code VARCHAR2(1);
72283 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
72284 l_log_module VARCHAR2(240);
72285
72286 --
72287 -- Upgrade strategy
72288 --
72289 l_actual_upg_option VARCHAR2(1);
72290 l_enc_upg_option VARCHAR2(1);
72291
72292 --
72293 BEGIN
72294 --
72295 IF g_log_enabled THEN
72296 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_163';
72297 END IF;
72298 --
72299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72300
72301 trace
72302 (p_msg => 'BEGIN of AcctLineType_163'
72303 ,p_level => C_LEVEL_PROCEDURE
72304 ,p_module => l_log_module);
72305
72306 END IF;
72307 --
72308 l_component_type := 'AMB_JLT';
72309 l_component_code := 'INV';
72310 l_component_type_code := 'S';
72311 l_component_appl_id := 555;
72312 l_amb_context_code := 'DEFAULT';
72313 l_entity_code := 'REVALUATION';
72314 l_event_class_code := 'LOTCOSTADJ';
72315 l_event_type_code := 'LOTCOSTADJ';
72316 l_line_definition_owner_code := 'S';
72317 l_line_definition_code := 'LOTCOSTADJ';
72318 --
72319 l_balance_type_code := 'A';
72320 l_segment := NULL;
72321 l_ccid := NULL;
72322 l_adr_transaction_coa_id := NULL;
72323 l_adr_accounting_coa_id := NULL;
72324 l_adr_flexfield_segment_code := NULL;
72325 l_adr_flex_value_set_id := NULL;
72326 l_adr_value_type_code := NULL;
72327 l_adr_value_combination_id := NULL;
72328 l_adr_value_segment_code := NULL;
72329
72333 l_budgetary_control_flag := 'N';
72330 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
72331 l_bflow_class_code := ''; -- 4219869 Business Flow
72332 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
72334
72335 l_bflow_applied_to_amt_idx := NULL; -- 5132302
72336 l_bflow_applied_to_amt := NULL; -- 5132302
72337 l_entered_amt_idx := NULL; -- 4262811
72338 l_accted_amt_idx := NULL; -- 4262811
72339 l_acc_rev_flag := NULL; -- 4262811
72340 l_accrual_line_num := NULL; -- 4262811
72341 l_tmp_amt := NULL; -- 4262811
72342 --
72343
72344 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
72345 l_balance_type_code <> 'B' THEN
72346 IF NVL(p_source_2,'
72347 ') = 'INV'
72348 THEN
72349
72350 --
72351 XLA_AE_LINES_PKG.SetNewLine;
72352
72353 p_balance_type_code := l_balance_type_code;
72354 -- set the flag so later we will know whether the gain loss line needs to be created
72355
72356 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
72357 p_actual_flag :='A';
72358 END IF;
72359
72360 --
72361 -- bulk performance
72362 --
72363 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72364 p_header_num => 0); -- 4262811
72365 --
72366 -- set accounting line options
72367 --
72368 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72369 p_natural_side_code => 'D'
72370 , p_gain_or_loss_flag => 'N'
72371 , p_gl_transfer_mode_code => 'D'
72372 , p_acct_entry_type_code => 'A'
72373 , p_switch_side_flag => 'Y'
72374 , p_merge_duplicate_code => 'W'
72375 );
72376 --
72377 l_acc_rev_natural_side_code := 'C'; -- 4262811
72378 --
72379 --
72380 -- set accounting line type info
72381 --
72382 xla_ae_lines_pkg.SetAcctLineType
72383 (p_component_type => l_component_type
72384 ,p_event_type_code => l_event_type_code
72385 ,p_line_definition_owner_code => l_line_definition_owner_code
72386 ,p_line_definition_code => l_line_definition_code
72387 ,p_accounting_line_code => l_component_code
72388 ,p_accounting_line_type_code => l_component_type_code
72389 ,p_accounting_line_appl_id => l_component_appl_id
72390 ,p_amb_context_code => l_amb_context_code
72391 ,p_entity_code => l_entity_code
72392 ,p_event_class_code => l_event_class_code);
72393 --
72394 -- set accounting class
72395 --
72396 xla_ae_lines_pkg.SetAcctClass(
72397 p_accounting_class_code => 'INVENTORY_VALUATION'
72398 , p_ae_header_id => l_ae_header_id
72399 );
72400
72401 --
72402 -- set rounding class
72403 --
72404 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72405 'INVENTORY_VALUATION';
72406
72407 --
72408 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72409 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72410 --
72411 -- bulk performance
72412 --
72413 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72414
72415 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72416 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72417
72418 -- 4955764
72419 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72420 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72421
72422 -- 4458381 Public Sector Enh
72423
72424 --
72425 -- set accounting attributes for the line type
72426 --
72427 l_entered_amt_idx := 3;
72428 l_accted_amt_idx := 8;
72429 l_bflow_applied_to_amt_idx := NULL; -- 5132302
72430 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
72431 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
72432 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72433 l_rec_acct_attrs.array_char_value(2) := p_source_6;
72434 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72435 l_rec_acct_attrs.array_num_value(3) := p_source_3;
72436 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72437 l_rec_acct_attrs.array_char_value(4) := p_source_7;
72438 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72439 l_rec_acct_attrs.array_date_value(5) := p_source_8;
72440 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72441 l_rec_acct_attrs.array_num_value(6) := p_source_9;
72442 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72443 l_rec_acct_attrs.array_char_value(7) := p_source_10;
72444 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
72445 l_rec_acct_attrs.array_num_value(8) := p_source_11;
72446
72447 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72448 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72449
72453 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72450 ---------------------------------------------------------------------------------------------------------------
72451 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72452 ---------------------------------------------------------------------------------------------------------------
72454
72455 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72456 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72457
72458 IF xla_accounting_cache_pkg.GetValueChar
72459 (p_source_code => 'LEDGER_CATEGORY_CODE'
72460 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72461 AND l_bflow_method_code = 'PRIOR_ENTRY'
72462 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72463 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72464 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72465 )
72466 THEN
72467 xla_ae_lines_pkg.BflowUpgEntry
72468 (p_business_method_code => l_bflow_method_code
72469 ,p_business_class_code => l_bflow_class_code
72470 ,p_balance_type => l_balance_type_code);
72471 ELSE
72472 NULL;
72473 -- No business flow processing for business flow method of NONE.
72474 END IF;
72475
72476 --
72477 -- call analytical criteria
72478 --
72479
72480 --
72481 -- call description
72482 --
72483 -- No description or it is inherited.
72484 --
72485 -- call ADRs
72486 -- Bug 4922099
72487 --
72488 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72489 (NVL(l_actual_upg_option, 'N') = 'O') OR
72490 (NVL(l_enc_upg_option, 'N') = 'O')
72491 )
72492 THEN
72493 NULL;
72494 --
72495 --
72496
72497 l_ccid := AcctDerRule_17(
72498 p_application_id => p_application_id
72499 , p_ae_header_id => l_ae_header_id
72500 , p_source_1 => p_source_1
72501 , p_source_2 => p_source_2
72502 , x_transaction_coa_id => l_adr_transaction_coa_id
72503 , x_accounting_coa_id => l_adr_accounting_coa_id
72504 , x_value_type_code => l_adr_value_type_code
72505 , p_side => 'NA'
72506 );
72507
72508 xla_ae_lines_pkg.set_ccid(
72509 p_code_combination_id => l_ccid
72510 , p_value_type_code => l_adr_value_type_code
72511 , p_transaction_coa_id => l_adr_transaction_coa_id
72512 , p_accounting_coa_id => l_adr_accounting_coa_id
72513 , p_adr_code => 'INV'
72514 , p_adr_type_code => 'S'
72515 , p_component_type => l_component_type
72516 , p_component_code => l_component_code
72517 , p_component_type_code => l_component_type_code
72518 , p_component_appl_id => l_component_appl_id
72519 , p_amb_context_code => l_amb_context_code
72520 , p_side => 'NA'
72521 );
72522
72523
72524 --
72525 --
72526 END IF;
72527 --
72528 -- Bug 4922099
72529 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72530 (NVL(l_enc_upg_option, 'N') = 'O')
72531 ) AND
72532 (l_bflow_method_code = 'PRIOR_ENTRY')
72533 )
72534 THEN
72535 IF
72536 --
72537 1 = 2
72538 --
72539 THEN
72540 xla_accounting_err_pkg.build_message
72541 (p_appli_s_name => 'XLA'
72542 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72543 ,p_token_1 => 'LINE_NUMBER'
72544 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
72545 ,p_token_2 => 'LINE_TYPE_NAME'
72546 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
72547 l_component_type
72548 ,l_component_code
72549 ,l_component_type_code
72550 ,l_component_appl_id
72551 ,l_amb_context_code
72552 ,l_entity_code
72553 ,l_event_class_code
72554 )
72555 ,p_token_3 => 'OWNER'
72556 ,p_value_3 => xla_lookups_pkg.get_meaning(
72557 p_lookup_type => 'XLA_OWNER_TYPE'
72558 ,p_lookup_code => l_component_type_code
72559 )
72563 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72560 ,p_token_4 => 'PRODUCT_NAME'
72561 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72562 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72564 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72565 ,p_ae_header_id => NULL
72566 );
72567
72568 IF (C_LEVEL_ERROR>= g_log_level) THEN
72569 trace
72570 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72571 ,p_level => C_LEVEL_ERROR
72572 ,p_module => l_log_module);
72573 END IF;
72574 END IF;
72575 END IF;
72576 --
72577 --
72578 ------------------------------------------------------------------------------------------------
72579 -- 4219869 Business Flow
72580 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72581 -- Prior Entry. Currently, the following code is always generated.
72582 ------------------------------------------------------------------------------------------------
72583 XLA_AE_LINES_PKG.ValidateCurrentLine;
72584
72585 ------------------------------------------------------------------------------------
72586 -- 4219869 Business Flow
72587 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72588 ------------------------------------------------------------------------------------
72589 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72590
72591 ----------------------------------------------------------------------------------
72592 -- 4219869 Business Flow
72593 -- Update journal entry status -- Need to generate this within IF <condition>
72594 ----------------------------------------------------------------------------------
72595 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72596 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72597 ,p_balance_type_code => l_balance_type_code
72598 );
72599
72600 -------------------------------------------------------------------------------------------
72601 -- 4262811 - Generate the Accrual Reversal lines
72602 -------------------------------------------------------------------------------------------
72603 BEGIN
72604 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72605 (g_array_event(p_event_id).array_value_num('header_index'));
72606 IF l_acc_rev_flag IS NULL THEN
72607 l_acc_rev_flag := 'N';
72608 END IF;
72609 EXCEPTION
72610 WHEN OTHERS THEN
72611 l_acc_rev_flag := 'N';
72612 END;
72613 --
72614 IF (l_acc_rev_flag = 'Y') THEN
72615
72616 -- 4645092 ------------------------------------------------------------------------------
72617 -- To allow MPA report to determine if it should generate report process
72618 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72619 ------------------------------------------------------------------------------------------
72620
72621 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72622 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72623 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
72624 -- call ADRs
72625 -- Bug 4922099
72626 --
72627 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72628 (NVL(l_actual_upg_option, 'N') = 'O') OR
72629 (NVL(l_enc_upg_option, 'N') = 'O')
72630 )
72631 THEN
72632 NULL;
72633 --
72634 --
72635
72636 l_ccid := AcctDerRule_17(
72637 p_application_id => p_application_id
72638 , p_ae_header_id => l_ae_header_id
72639 , p_source_1 => p_source_1
72640 , p_source_2 => p_source_2
72641 , x_transaction_coa_id => l_adr_transaction_coa_id
72642 , x_accounting_coa_id => l_adr_accounting_coa_id
72643 , x_value_type_code => l_adr_value_type_code
72644 , p_side => 'NA'
72645 );
72646
72647 xla_ae_lines_pkg.set_ccid(
72648 p_code_combination_id => l_ccid
72649 , p_value_type_code => l_adr_value_type_code
72650 , p_transaction_coa_id => l_adr_transaction_coa_id
72651 , p_accounting_coa_id => l_adr_accounting_coa_id
72652 , p_adr_code => 'INV'
72653 , p_adr_type_code => 'S'
72654 , p_component_type => l_component_type
72655 , p_component_code => l_component_code
72656 , p_component_type_code => l_component_type_code
72657 , p_component_appl_id => l_component_appl_id
72658 , p_amb_context_code => l_amb_context_code
72659 , p_side => 'NA'
72660 );
72661
72662
72663 --
72664 --
72665 END IF;
72666
72667 --
72668 -- Update the line information that should be overwritten
72669 --
72673
72670 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72671 p_header_num => 1);
72672 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
72674 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72675
72676 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
72677 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72678 END IF;
72679
72680 --
72681 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72682 --
72683 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72684 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
72685 ELSE
72686 ---------------------------------------------------------------------------------------------------
72687 -- 4262811a Switch Sign
72688 ---------------------------------------------------------------------------------------------------
72689 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
72690 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72691 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72692 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72693 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72694 -- 5132302
72695 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72696 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72697
72698 END IF;
72699
72700 -- 4955764
72701 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72702 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72703
72704
72705 XLA_AE_LINES_PKG.ValidateCurrentLine;
72706 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72707
72708 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72709 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72710 ,p_balance_type_code => l_balance_type_code);
72711
72712 END IF;
72713
72714 -----------------------------------------------------------------------------------------
72715 -- 4262811 Multiperiod Accounting
72716 -----------------------------------------------------------------------------------------
72717 -- No MPA option is assigned.
72718
72719
72720 END IF;
72721 END IF;
72722 --
72723
72724 --
72725 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72726 trace
72727 (p_msg => 'END of AcctLineType_163'
72728 ,p_level => C_LEVEL_PROCEDURE
72729 ,p_module => l_log_module);
72730 END IF;
72731 --
72732 EXCEPTION
72733 WHEN xla_exceptions_pkg.application_exception THEN
72734 RAISE;
72735 WHEN OTHERS THEN
72736 xla_exceptions_pkg.raise_message
72737 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_163');
72738 END AcctLineType_163;
72739 --
72740
72741 ---------------------------------------
72742 --
72743 -- PRIVATE FUNCTION
72744 -- AcctLineType_164
72745 --
72746 ---------------------------------------
72747 PROCEDURE AcctLineType_164 (
72748 p_application_id IN NUMBER
72749 ,p_event_id IN NUMBER
72750 ,p_calculate_acctd_flag IN VARCHAR2
72751 ,p_calculate_g_l_flag IN VARCHAR2
72752 ,p_actual_flag IN OUT VARCHAR2
72753 ,p_balance_type_code OUT VARCHAR2
72754 ,p_gain_or_loss_ref OUT VARCHAR2
72755
72756 --Transaction Account
72757 , p_source_1 IN NUMBER
72758 --Journal Line Type
72759 , p_source_2 IN VARCHAR2
72760 --Entered Amount
72761 , p_source_3 IN NUMBER
72762 --First Distribution Identifier
72763 , p_source_5 IN NUMBER
72764 --Distribution Type
72765 , p_source_6 IN VARCHAR2
72766 --Currency Code
72767 , p_source_7 IN VARCHAR2
72768 --Currency Conversion Date
72769 , p_source_8 IN DATE
72770 --Currency Conversion Rate
72771 , p_source_9 IN NUMBER
72772 --Currency Conversion Type
72773 , p_source_10 IN VARCHAR2
72774 --Accounted Amount
72775 , p_source_11 IN NUMBER
72776 )
72777 IS
72778
72779 l_component_type VARCHAR2(80);
72780 l_component_code VARCHAR2(30);
72781 l_component_type_code VARCHAR2(1);
72782 l_component_appl_id INTEGER;
72783 l_amb_context_code VARCHAR2(30);
72784 l_entity_code VARCHAR2(30);
72785 l_event_class_code VARCHAR2(30);
72786 l_ae_header_id NUMBER;
72787 l_event_type_code VARCHAR2(30);
72788 l_line_definition_code VARCHAR2(30);
72789 l_line_definition_owner_code VARCHAR2(1);
72790 --
72791 -- adr variables
72792 l_segment VARCHAR2(30);
72793 l_ccid NUMBER;
72797 l_adr_flex_value_set_id NUMBER;
72794 l_adr_transaction_coa_id NUMBER;
72795 l_adr_accounting_coa_id NUMBER;
72796 l_adr_flexfield_segment_code VARCHAR2(30);
72798 l_adr_value_type_code VARCHAR2(30);
72799 l_adr_value_combination_id NUMBER;
72800 l_adr_value_segment_code VARCHAR2(30);
72801
72802 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
72803 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
72804 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
72805 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
72806
72807 -- 4262811 Variables ------------------------------------------------------------------------------------------
72808 l_entered_amt_idx NUMBER;
72809 l_accted_amt_idx NUMBER;
72810 l_acc_rev_flag VARCHAR2(1);
72811 l_accrual_line_num NUMBER;
72812 l_tmp_amt NUMBER;
72813 l_acc_rev_natural_side_code VARCHAR2(1);
72814
72815 l_num_entries NUMBER;
72816 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
72817 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
72818 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
72819 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
72820 l_recog_line_1 NUMBER;
72821 l_recog_line_2 NUMBER;
72822
72823 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
72824 l_bflow_applied_to_amt NUMBER; -- 5132302
72825 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
72826
72827 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72828
72829 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
72830 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
72831
72832 ---------------------------------------------------------------------------------------------------------------
72833
72834
72835 --
72836 -- bulk performance
72837 --
72838 l_balance_type_code VARCHAR2(1);
72839 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
72840 l_log_module VARCHAR2(240);
72841
72842 --
72843 -- Upgrade strategy
72844 --
72845 l_actual_upg_option VARCHAR2(1);
72846 l_enc_upg_option VARCHAR2(1);
72847
72848 --
72849 BEGIN
72850 --
72851 IF g_log_enabled THEN
72852 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_164';
72853 END IF;
72854 --
72855 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72856
72857 trace
72858 (p_msg => 'BEGIN of AcctLineType_164'
72859 ,p_level => C_LEVEL_PROCEDURE
72860 ,p_module => l_log_module);
72861
72862 END IF;
72863 --
72864 l_component_type := 'AMB_JLT';
72865 l_component_code := 'INV';
72866 l_component_type_code := 'S';
72867 l_component_appl_id := 555;
72868 l_amb_context_code := 'DEFAULT';
72869 l_entity_code := 'INVENTORY';
72870 l_event_class_code := 'DIR_INTERORG_SHIP';
72871 l_event_type_code := 'DIR_INTERORG_SHIP';
72872 l_line_definition_owner_code := 'S';
72873 l_line_definition_code := 'DIRECT_XFER_SHIP';
72874 --
72875 l_balance_type_code := 'A';
72876 l_segment := NULL;
72877 l_ccid := NULL;
72878 l_adr_transaction_coa_id := NULL;
72879 l_adr_accounting_coa_id := NULL;
72880 l_adr_flexfield_segment_code := NULL;
72881 l_adr_flex_value_set_id := NULL;
72882 l_adr_value_type_code := NULL;
72883 l_adr_value_combination_id := NULL;
72884 l_adr_value_segment_code := NULL;
72885
72886 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
72887 l_bflow_class_code := ''; -- 4219869 Business Flow
72888 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
72889 l_budgetary_control_flag := 'N';
72890
72891 l_bflow_applied_to_amt_idx := NULL; -- 5132302
72892 l_bflow_applied_to_amt := NULL; -- 5132302
72893 l_entered_amt_idx := NULL; -- 4262811
72894 l_accted_amt_idx := NULL; -- 4262811
72895 l_acc_rev_flag := NULL; -- 4262811
72896 l_accrual_line_num := NULL; -- 4262811
72897 l_tmp_amt := NULL; -- 4262811
72898 --
72899
72900 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
72901 l_balance_type_code <> 'B' THEN
72902 IF NVL(p_source_2,'
72903 ') = 'INV'
72904 THEN
72905
72906 --
72907 XLA_AE_LINES_PKG.SetNewLine;
72908
72909 p_balance_type_code := l_balance_type_code;
72910 -- set the flag so later we will know whether the gain loss line needs to be created
72911
72912 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
72913 p_actual_flag :='A';
72914 END IF;
72915
72916 --
72917 -- bulk performance
72918 --
72919 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72920 p_header_num => 0); -- 4262811
72921 --
72922 -- set accounting line options
72923 --
72924 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72925 p_natural_side_code => 'D'
72929 , p_switch_side_flag => 'Y'
72926 , p_gain_or_loss_flag => 'N'
72927 , p_gl_transfer_mode_code => 'D'
72928 , p_acct_entry_type_code => 'A'
72930 , p_merge_duplicate_code => 'W'
72931 );
72932 --
72933 l_acc_rev_natural_side_code := 'C'; -- 4262811
72934 --
72935 --
72936 -- set accounting line type info
72937 --
72938 xla_ae_lines_pkg.SetAcctLineType
72939 (p_component_type => l_component_type
72940 ,p_event_type_code => l_event_type_code
72941 ,p_line_definition_owner_code => l_line_definition_owner_code
72942 ,p_line_definition_code => l_line_definition_code
72943 ,p_accounting_line_code => l_component_code
72944 ,p_accounting_line_type_code => l_component_type_code
72945 ,p_accounting_line_appl_id => l_component_appl_id
72946 ,p_amb_context_code => l_amb_context_code
72947 ,p_entity_code => l_entity_code
72948 ,p_event_class_code => l_event_class_code);
72949 --
72950 -- set accounting class
72951 --
72952 xla_ae_lines_pkg.SetAcctClass(
72953 p_accounting_class_code => 'INVENTORY_VALUATION'
72954 , p_ae_header_id => l_ae_header_id
72955 );
72956
72957 --
72958 -- set rounding class
72959 --
72960 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72961 'INVENTORY_VALUATION';
72962
72963 --
72964 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72965 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72966 --
72967 -- bulk performance
72968 --
72969 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72970
72971 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72972 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72973
72974 -- 4955764
72975 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72976 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72977
72978 -- 4458381 Public Sector Enh
72979
72980 --
72981 -- set accounting attributes for the line type
72982 --
72983 l_entered_amt_idx := 3;
72984 l_accted_amt_idx := 8;
72985 l_bflow_applied_to_amt_idx := NULL; -- 5132302
72986 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
72987 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
72988 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
72989 l_rec_acct_attrs.array_char_value(2) := p_source_6;
72990 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
72991 l_rec_acct_attrs.array_num_value(3) := p_source_3;
72992 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
72993 l_rec_acct_attrs.array_char_value(4) := p_source_7;
72994 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
72995 l_rec_acct_attrs.array_date_value(5) := p_source_8;
72996 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
72997 l_rec_acct_attrs.array_num_value(6) := p_source_9;
72998 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
72999 l_rec_acct_attrs.array_char_value(7) := p_source_10;
73000 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73001 l_rec_acct_attrs.array_num_value(8) := p_source_11;
73002
73003 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73004 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73005
73006 ---------------------------------------------------------------------------------------------------------------
73007 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73008 ---------------------------------------------------------------------------------------------------------------
73009 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73010
73011 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73012 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73013
73014 IF xla_accounting_cache_pkg.GetValueChar
73015 (p_source_code => 'LEDGER_CATEGORY_CODE'
73016 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73017 AND l_bflow_method_code = 'PRIOR_ENTRY'
73018 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73019 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73020 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73021 )
73022 THEN
73023 xla_ae_lines_pkg.BflowUpgEntry
73024 (p_business_method_code => l_bflow_method_code
73025 ,p_business_class_code => l_bflow_class_code
73026 ,p_balance_type => l_balance_type_code);
73027 ELSE
73028 NULL;
73029 -- No business flow processing for business flow method of NONE.
73030 END IF;
73031
73032 --
73033 -- call analytical criteria
73034 --
73035
73036 --
73037 -- call description
73041 -- call ADRs
73038 --
73039 -- No description or it is inherited.
73040 --
73042 -- Bug 4922099
73043 --
73044 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73045 (NVL(l_actual_upg_option, 'N') = 'O') OR
73046 (NVL(l_enc_upg_option, 'N') = 'O')
73047 )
73048 THEN
73049 NULL;
73050 --
73051 --
73052
73053 l_ccid := AcctDerRule_17(
73054 p_application_id => p_application_id
73055 , p_ae_header_id => l_ae_header_id
73056 , p_source_1 => p_source_1
73057 , p_source_2 => p_source_2
73058 , x_transaction_coa_id => l_adr_transaction_coa_id
73059 , x_accounting_coa_id => l_adr_accounting_coa_id
73060 , x_value_type_code => l_adr_value_type_code
73061 , p_side => 'NA'
73062 );
73063
73064 xla_ae_lines_pkg.set_ccid(
73065 p_code_combination_id => l_ccid
73066 , p_value_type_code => l_adr_value_type_code
73067 , p_transaction_coa_id => l_adr_transaction_coa_id
73068 , p_accounting_coa_id => l_adr_accounting_coa_id
73069 , p_adr_code => 'INV'
73070 , p_adr_type_code => 'S'
73071 , p_component_type => l_component_type
73072 , p_component_code => l_component_code
73073 , p_component_type_code => l_component_type_code
73074 , p_component_appl_id => l_component_appl_id
73075 , p_amb_context_code => l_amb_context_code
73076 , p_side => 'NA'
73077 );
73078
73079
73080 --
73081 --
73082 END IF;
73083 --
73084 -- Bug 4922099
73085 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73086 (NVL(l_enc_upg_option, 'N') = 'O')
73087 ) AND
73088 (l_bflow_method_code = 'PRIOR_ENTRY')
73089 )
73090 THEN
73091 IF
73092 --
73093 1 = 2
73094 --
73095 THEN
73096 xla_accounting_err_pkg.build_message
73097 (p_appli_s_name => 'XLA'
73098 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73099 ,p_token_1 => 'LINE_NUMBER'
73100 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
73101 ,p_token_2 => 'LINE_TYPE_NAME'
73102 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
73103 l_component_type
73104 ,l_component_code
73105 ,l_component_type_code
73106 ,l_component_appl_id
73107 ,l_amb_context_code
73108 ,l_entity_code
73109 ,l_event_class_code
73110 )
73111 ,p_token_3 => 'OWNER'
73112 ,p_value_3 => xla_lookups_pkg.get_meaning(
73113 p_lookup_type => 'XLA_OWNER_TYPE'
73114 ,p_lookup_code => l_component_type_code
73115 )
73116 ,p_token_4 => 'PRODUCT_NAME'
73117 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73118 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73119 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73120 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73121 ,p_ae_header_id => NULL
73122 );
73123
73124 IF (C_LEVEL_ERROR>= g_log_level) THEN
73125 trace
73126 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73127 ,p_level => C_LEVEL_ERROR
73128 ,p_module => l_log_module);
73129 END IF;
73130 END IF;
73131 END IF;
73132 --
73133 --
73134 ------------------------------------------------------------------------------------------------
73135 -- 4219869 Business Flow
73136 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73137 -- Prior Entry. Currently, the following code is always generated.
73138 ------------------------------------------------------------------------------------------------
73139 XLA_AE_LINES_PKG.ValidateCurrentLine;
73140
73141 ------------------------------------------------------------------------------------
73142 -- 4219869 Business Flow
73146
73143 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73144 ------------------------------------------------------------------------------------
73145 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73147 ----------------------------------------------------------------------------------
73148 -- 4219869 Business Flow
73149 -- Update journal entry status -- Need to generate this within IF <condition>
73150 ----------------------------------------------------------------------------------
73151 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73152 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73153 ,p_balance_type_code => l_balance_type_code
73154 );
73155
73156 -------------------------------------------------------------------------------------------
73157 -- 4262811 - Generate the Accrual Reversal lines
73158 -------------------------------------------------------------------------------------------
73159 BEGIN
73160 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73161 (g_array_event(p_event_id).array_value_num('header_index'));
73162 IF l_acc_rev_flag IS NULL THEN
73163 l_acc_rev_flag := 'N';
73164 END IF;
73165 EXCEPTION
73166 WHEN OTHERS THEN
73167 l_acc_rev_flag := 'N';
73168 END;
73169 --
73170 IF (l_acc_rev_flag = 'Y') THEN
73171
73172 -- 4645092 ------------------------------------------------------------------------------
73173 -- To allow MPA report to determine if it should generate report process
73174 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73175 ------------------------------------------------------------------------------------------
73176
73177 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73178 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73179 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
73180 -- call ADRs
73181 -- Bug 4922099
73182 --
73183 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73184 (NVL(l_actual_upg_option, 'N') = 'O') OR
73185 (NVL(l_enc_upg_option, 'N') = 'O')
73186 )
73187 THEN
73188 NULL;
73189 --
73190 --
73191
73192 l_ccid := AcctDerRule_17(
73193 p_application_id => p_application_id
73194 , p_ae_header_id => l_ae_header_id
73195 , p_source_1 => p_source_1
73196 , p_source_2 => p_source_2
73197 , x_transaction_coa_id => l_adr_transaction_coa_id
73198 , x_accounting_coa_id => l_adr_accounting_coa_id
73199 , x_value_type_code => l_adr_value_type_code
73200 , p_side => 'NA'
73201 );
73202
73203 xla_ae_lines_pkg.set_ccid(
73204 p_code_combination_id => l_ccid
73205 , p_value_type_code => l_adr_value_type_code
73206 , p_transaction_coa_id => l_adr_transaction_coa_id
73207 , p_accounting_coa_id => l_adr_accounting_coa_id
73208 , p_adr_code => 'INV'
73209 , p_adr_type_code => 'S'
73210 , p_component_type => l_component_type
73211 , p_component_code => l_component_code
73212 , p_component_type_code => l_component_type_code
73213 , p_component_appl_id => l_component_appl_id
73214 , p_amb_context_code => l_amb_context_code
73215 , p_side => 'NA'
73216 );
73217
73218
73219 --
73220 --
73221 END IF;
73222
73223 --
73224 -- Update the line information that should be overwritten
73225 --
73226 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73227 p_header_num => 1);
73228 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
73229
73230 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73231
73232 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
73233 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73234 END IF;
73235
73236 --
73237 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73238 --
73239 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73240 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
73241 ELSE
73242 ---------------------------------------------------------------------------------------------------
73243 -- 4262811a Switch Sign
73244 ---------------------------------------------------------------------------------------------------
73245 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
73246 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73247 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73248 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73249 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73253
73250 -- 5132302
73251 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73252 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73254 END IF;
73255
73256 -- 4955764
73257 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73258 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73259
73260
73261 XLA_AE_LINES_PKG.ValidateCurrentLine;
73262 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73263
73264 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73265 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73266 ,p_balance_type_code => l_balance_type_code);
73267
73268 END IF;
73269
73270 -----------------------------------------------------------------------------------------
73271 -- 4262811 Multiperiod Accounting
73272 -----------------------------------------------------------------------------------------
73273 -- No MPA option is assigned.
73274
73275
73276 END IF;
73277 END IF;
73278 --
73279
73280 --
73281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73282 trace
73283 (p_msg => 'END of AcctLineType_164'
73284 ,p_level => C_LEVEL_PROCEDURE
73285 ,p_module => l_log_module);
73286 END IF;
73287 --
73288 EXCEPTION
73289 WHEN xla_exceptions_pkg.application_exception THEN
73290 RAISE;
73291 WHEN OTHERS THEN
73292 xla_exceptions_pkg.raise_message
73293 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_164');
73294 END AcctLineType_164;
73295 --
73296
73297 ---------------------------------------
73298 --
73299 -- PRIVATE FUNCTION
73300 -- AcctLineType_165
73301 --
73302 ---------------------------------------
73303 PROCEDURE AcctLineType_165 (
73304 p_application_id IN NUMBER
73305 ,p_event_id IN NUMBER
73306 ,p_calculate_acctd_flag IN VARCHAR2
73307 ,p_calculate_g_l_flag IN VARCHAR2
73308 ,p_actual_flag IN OUT VARCHAR2
73309 ,p_balance_type_code OUT VARCHAR2
73310 ,p_gain_or_loss_ref OUT VARCHAR2
73311
73312 --Transaction Account
73313 , p_source_1 IN NUMBER
73314 --Journal Line Type
73315 , p_source_2 IN VARCHAR2
73316 --Entered Amount
73317 , p_source_3 IN NUMBER
73318 --First Distribution Identifier
73319 , p_source_5 IN NUMBER
73320 --Distribution Type
73321 , p_source_6 IN VARCHAR2
73322 --Currency Code
73323 , p_source_7 IN VARCHAR2
73324 --Currency Conversion Date
73325 , p_source_8 IN DATE
73326 --Currency Conversion Rate
73327 , p_source_9 IN NUMBER
73328 --Currency Conversion Type
73329 , p_source_10 IN VARCHAR2
73330 --Accounted Amount
73331 , p_source_11 IN NUMBER
73332 )
73333 IS
73334
73335 l_component_type VARCHAR2(80);
73336 l_component_code VARCHAR2(30);
73337 l_component_type_code VARCHAR2(1);
73338 l_component_appl_id INTEGER;
73339 l_amb_context_code VARCHAR2(30);
73340 l_entity_code VARCHAR2(30);
73341 l_event_class_code VARCHAR2(30);
73342 l_ae_header_id NUMBER;
73343 l_event_type_code VARCHAR2(30);
73344 l_line_definition_code VARCHAR2(30);
73345 l_line_definition_owner_code VARCHAR2(1);
73346 --
73347 -- adr variables
73348 l_segment VARCHAR2(30);
73349 l_ccid NUMBER;
73350 l_adr_transaction_coa_id NUMBER;
73351 l_adr_accounting_coa_id NUMBER;
73352 l_adr_flexfield_segment_code VARCHAR2(30);
73353 l_adr_flex_value_set_id NUMBER;
73354 l_adr_value_type_code VARCHAR2(30);
73355 l_adr_value_combination_id NUMBER;
73356 l_adr_value_segment_code VARCHAR2(30);
73357
73358 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
73359 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
73360 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
73361 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
73362
73363 -- 4262811 Variables ------------------------------------------------------------------------------------------
73364 l_entered_amt_idx NUMBER;
73365 l_accted_amt_idx NUMBER;
73366 l_acc_rev_flag VARCHAR2(1);
73367 l_accrual_line_num NUMBER;
73368 l_tmp_amt NUMBER;
73369 l_acc_rev_natural_side_code VARCHAR2(1);
73370
73371 l_num_entries NUMBER;
73372 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
73373 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
73374 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
73375 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
73376 l_recog_line_1 NUMBER;
73377 l_recog_line_2 NUMBER;
73378
73379 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
73380 l_bflow_applied_to_amt NUMBER; -- 5132302
73381 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
73382
73386 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
73383 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
73384
73385 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
73387
73388 ---------------------------------------------------------------------------------------------------------------
73389
73390
73391 --
73392 -- bulk performance
73393 --
73394 l_balance_type_code VARCHAR2(1);
73395 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
73396 l_log_module VARCHAR2(240);
73397
73398 --
73399 -- Upgrade strategy
73400 --
73401 l_actual_upg_option VARCHAR2(1);
73402 l_enc_upg_option VARCHAR2(1);
73403
73404 --
73405 BEGIN
73406 --
73407 IF g_log_enabled THEN
73408 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_165';
73409 END IF;
73410 --
73411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73412
73413 trace
73414 (p_msg => 'BEGIN of AcctLineType_165'
73415 ,p_level => C_LEVEL_PROCEDURE
73416 ,p_module => l_log_module);
73417
73418 END IF;
73419 --
73420 l_component_type := 'AMB_JLT';
73421 l_component_code := 'INV';
73422 l_component_type_code := 'S';
73423 l_component_appl_id := 555;
73424 l_amb_context_code := 'DEFAULT';
73425 l_entity_code := 'INVENTORY';
73426 l_event_class_code := 'LOG_INTERCOMPANY';
73427 l_event_type_code := 'LOG_IC_RCPT_RETURN';
73428 l_line_definition_owner_code := 'S';
73429 l_line_definition_code := 'LOG_IC_RCPT_RETURN';
73430 --
73431 l_balance_type_code := 'A';
73432 l_segment := NULL;
73433 l_ccid := NULL;
73434 l_adr_transaction_coa_id := NULL;
73435 l_adr_accounting_coa_id := NULL;
73436 l_adr_flexfield_segment_code := NULL;
73437 l_adr_flex_value_set_id := NULL;
73438 l_adr_value_type_code := NULL;
73439 l_adr_value_combination_id := NULL;
73440 l_adr_value_segment_code := NULL;
73441
73442 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
73443 l_bflow_class_code := ''; -- 4219869 Business Flow
73444 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
73445 l_budgetary_control_flag := 'N';
73446
73447 l_bflow_applied_to_amt_idx := NULL; -- 5132302
73448 l_bflow_applied_to_amt := NULL; -- 5132302
73449 l_entered_amt_idx := NULL; -- 4262811
73450 l_accted_amt_idx := NULL; -- 4262811
73451 l_acc_rev_flag := NULL; -- 4262811
73452 l_accrual_line_num := NULL; -- 4262811
73453 l_tmp_amt := NULL; -- 4262811
73454 --
73455
73456 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73457 l_balance_type_code <> 'B' THEN
73458 IF NVL(p_source_2,'
73459 ') = 'INV'
73460 THEN
73461
73462 --
73463 XLA_AE_LINES_PKG.SetNewLine;
73464
73465 p_balance_type_code := l_balance_type_code;
73466 -- set the flag so later we will know whether the gain loss line needs to be created
73467
73468 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73469 p_actual_flag :='A';
73470 END IF;
73471
73472 --
73473 -- bulk performance
73474 --
73475 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73476 p_header_num => 0); -- 4262811
73477 --
73478 -- set accounting line options
73479 --
73480 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73481 p_natural_side_code => 'D'
73482 , p_gain_or_loss_flag => 'N'
73483 , p_gl_transfer_mode_code => 'D'
73484 , p_acct_entry_type_code => 'A'
73485 , p_switch_side_flag => 'Y'
73486 , p_merge_duplicate_code => 'W'
73487 );
73488 --
73489 l_acc_rev_natural_side_code := 'C'; -- 4262811
73490 --
73491 --
73492 -- set accounting line type info
73493 --
73494 xla_ae_lines_pkg.SetAcctLineType
73495 (p_component_type => l_component_type
73496 ,p_event_type_code => l_event_type_code
73497 ,p_line_definition_owner_code => l_line_definition_owner_code
73498 ,p_line_definition_code => l_line_definition_code
73499 ,p_accounting_line_code => l_component_code
73500 ,p_accounting_line_type_code => l_component_type_code
73501 ,p_accounting_line_appl_id => l_component_appl_id
73502 ,p_amb_context_code => l_amb_context_code
73503 ,p_entity_code => l_entity_code
73504 ,p_event_class_code => l_event_class_code);
73505 --
73506 -- set accounting class
73507 --
73508 xla_ae_lines_pkg.SetAcctClass(
73509 p_accounting_class_code => 'INVENTORY_VALUATION'
73510 , p_ae_header_id => l_ae_header_id
73511 );
73512
73513 --
73514 -- set rounding class
73515 --
73516 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73517 'INVENTORY_VALUATION';
73518
73519 --
73523 -- bulk performance
73520 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73521 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73522 --
73524 --
73525 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73526
73527 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73528 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73529
73530 -- 4955764
73531 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73532 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73533
73534 -- 4458381 Public Sector Enh
73535
73536 --
73537 -- set accounting attributes for the line type
73538 --
73539 l_entered_amt_idx := 3;
73540 l_accted_amt_idx := 8;
73541 l_bflow_applied_to_amt_idx := NULL; -- 5132302
73542 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73543 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
73544 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
73545 l_rec_acct_attrs.array_char_value(2) := p_source_6;
73546 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
73547 l_rec_acct_attrs.array_num_value(3) := p_source_3;
73548 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
73549 l_rec_acct_attrs.array_char_value(4) := p_source_7;
73550 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
73551 l_rec_acct_attrs.array_date_value(5) := p_source_8;
73552 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
73553 l_rec_acct_attrs.array_num_value(6) := p_source_9;
73554 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
73555 l_rec_acct_attrs.array_char_value(7) := p_source_10;
73556 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
73557 l_rec_acct_attrs.array_num_value(8) := p_source_11;
73558
73559 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73560 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73561
73562 ---------------------------------------------------------------------------------------------------------------
73563 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73564 ---------------------------------------------------------------------------------------------------------------
73565 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73566
73567 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73568 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73569
73570 IF xla_accounting_cache_pkg.GetValueChar
73571 (p_source_code => 'LEDGER_CATEGORY_CODE'
73572 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73573 AND l_bflow_method_code = 'PRIOR_ENTRY'
73574 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73575 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73576 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73577 )
73578 THEN
73579 xla_ae_lines_pkg.BflowUpgEntry
73580 (p_business_method_code => l_bflow_method_code
73581 ,p_business_class_code => l_bflow_class_code
73582 ,p_balance_type => l_balance_type_code);
73583 ELSE
73584 NULL;
73585 -- No business flow processing for business flow method of NONE.
73586 END IF;
73587
73588 --
73589 -- call analytical criteria
73590 --
73591
73592 --
73593 -- call description
73594 --
73595 -- No description or it is inherited.
73596 --
73597 -- call ADRs
73598 -- Bug 4922099
73599 --
73600 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73601 (NVL(l_actual_upg_option, 'N') = 'O') OR
73602 (NVL(l_enc_upg_option, 'N') = 'O')
73603 )
73604 THEN
73605 NULL;
73606 --
73607 --
73608
73609 l_ccid := AcctDerRule_17(
73610 p_application_id => p_application_id
73611 , p_ae_header_id => l_ae_header_id
73612 , p_source_1 => p_source_1
73613 , p_source_2 => p_source_2
73614 , x_transaction_coa_id => l_adr_transaction_coa_id
73615 , x_accounting_coa_id => l_adr_accounting_coa_id
73616 , x_value_type_code => l_adr_value_type_code
73617 , p_side => 'NA'
73618 );
73619
73620 xla_ae_lines_pkg.set_ccid(
73621 p_code_combination_id => l_ccid
73622 , p_value_type_code => l_adr_value_type_code
73623 , p_transaction_coa_id => l_adr_transaction_coa_id
73624 , p_accounting_coa_id => l_adr_accounting_coa_id
73625 , p_adr_code => 'INV'
73626 , p_adr_type_code => 'S'
73627 , p_component_type => l_component_type
73628 , p_component_code => l_component_code
73629 , p_component_type_code => l_component_type_code
73630 , p_component_appl_id => l_component_appl_id
73631 , p_amb_context_code => l_amb_context_code
73635
73632 , p_side => 'NA'
73633 );
73634
73636 --
73637 --
73638 END IF;
73639 --
73640 -- Bug 4922099
73641 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73642 (NVL(l_enc_upg_option, 'N') = 'O')
73643 ) AND
73644 (l_bflow_method_code = 'PRIOR_ENTRY')
73645 )
73646 THEN
73647 IF
73648 --
73649 1 = 2
73650 --
73651 THEN
73652 xla_accounting_err_pkg.build_message
73653 (p_appli_s_name => 'XLA'
73654 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73655 ,p_token_1 => 'LINE_NUMBER'
73656 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
73657 ,p_token_2 => 'LINE_TYPE_NAME'
73658 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
73659 l_component_type
73660 ,l_component_code
73661 ,l_component_type_code
73662 ,l_component_appl_id
73663 ,l_amb_context_code
73664 ,l_entity_code
73665 ,l_event_class_code
73666 )
73667 ,p_token_3 => 'OWNER'
73668 ,p_value_3 => xla_lookups_pkg.get_meaning(
73669 p_lookup_type => 'XLA_OWNER_TYPE'
73670 ,p_lookup_code => l_component_type_code
73671 )
73672 ,p_token_4 => 'PRODUCT_NAME'
73673 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73674 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73675 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73676 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73677 ,p_ae_header_id => NULL
73678 );
73679
73680 IF (C_LEVEL_ERROR>= g_log_level) THEN
73681 trace
73682 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73683 ,p_level => C_LEVEL_ERROR
73684 ,p_module => l_log_module);
73685 END IF;
73686 END IF;
73687 END IF;
73688 --
73689 --
73690 ------------------------------------------------------------------------------------------------
73691 -- 4219869 Business Flow
73692 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73693 -- Prior Entry. Currently, the following code is always generated.
73694 ------------------------------------------------------------------------------------------------
73695 XLA_AE_LINES_PKG.ValidateCurrentLine;
73696
73697 ------------------------------------------------------------------------------------
73698 -- 4219869 Business Flow
73699 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73700 ------------------------------------------------------------------------------------
73701 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73702
73703 ----------------------------------------------------------------------------------
73704 -- 4219869 Business Flow
73705 -- Update journal entry status -- Need to generate this within IF <condition>
73706 ----------------------------------------------------------------------------------
73707 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73708 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73709 ,p_balance_type_code => l_balance_type_code
73710 );
73711
73712 -------------------------------------------------------------------------------------------
73713 -- 4262811 - Generate the Accrual Reversal lines
73714 -------------------------------------------------------------------------------------------
73715 BEGIN
73716 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73717 (g_array_event(p_event_id).array_value_num('header_index'));
73718 IF l_acc_rev_flag IS NULL THEN
73719 l_acc_rev_flag := 'N';
73720 END IF;
73721 EXCEPTION
73722 WHEN OTHERS THEN
73723 l_acc_rev_flag := 'N';
73724 END;
73725 --
73726 IF (l_acc_rev_flag = 'Y') THEN
73727
73728 -- 4645092 ------------------------------------------------------------------------------
73729 -- To allow MPA report to determine if it should generate report process
73733 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73730 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73731 ------------------------------------------------------------------------------------------
73732
73734 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73735 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
73736 -- call ADRs
73737 -- Bug 4922099
73738 --
73739 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73740 (NVL(l_actual_upg_option, 'N') = 'O') OR
73741 (NVL(l_enc_upg_option, 'N') = 'O')
73742 )
73743 THEN
73744 NULL;
73745 --
73746 --
73747
73748 l_ccid := AcctDerRule_17(
73749 p_application_id => p_application_id
73750 , p_ae_header_id => l_ae_header_id
73751 , p_source_1 => p_source_1
73752 , p_source_2 => p_source_2
73753 , x_transaction_coa_id => l_adr_transaction_coa_id
73754 , x_accounting_coa_id => l_adr_accounting_coa_id
73755 , x_value_type_code => l_adr_value_type_code
73756 , p_side => 'NA'
73757 );
73758
73759 xla_ae_lines_pkg.set_ccid(
73760 p_code_combination_id => l_ccid
73761 , p_value_type_code => l_adr_value_type_code
73762 , p_transaction_coa_id => l_adr_transaction_coa_id
73763 , p_accounting_coa_id => l_adr_accounting_coa_id
73764 , p_adr_code => 'INV'
73765 , p_adr_type_code => 'S'
73766 , p_component_type => l_component_type
73767 , p_component_code => l_component_code
73768 , p_component_type_code => l_component_type_code
73769 , p_component_appl_id => l_component_appl_id
73770 , p_amb_context_code => l_amb_context_code
73771 , p_side => 'NA'
73772 );
73773
73774
73775 --
73776 --
73777 END IF;
73778
73779 --
73780 -- Update the line information that should be overwritten
73781 --
73782 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73783 p_header_num => 1);
73784 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
73785
73786 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73787
73788 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
73789 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73790 END IF;
73791
73792 --
73793 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73794 --
73795 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73796 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
73797 ELSE
73798 ---------------------------------------------------------------------------------------------------
73799 -- 4262811a Switch Sign
73800 ---------------------------------------------------------------------------------------------------
73801 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
73802 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73803 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73804 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73805 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73806 -- 5132302
73807 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73808 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73809
73810 END IF;
73811
73812 -- 4955764
73813 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73814 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73815
73816
73817 XLA_AE_LINES_PKG.ValidateCurrentLine;
73818 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73819
73820 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73821 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73822 ,p_balance_type_code => l_balance_type_code);
73823
73824 END IF;
73825
73826 -----------------------------------------------------------------------------------------
73827 -- 4262811 Multiperiod Accounting
73828 -----------------------------------------------------------------------------------------
73829 -- No MPA option is assigned.
73830
73831
73832 END IF;
73833 END IF;
73834 --
73835
73836 --
73837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73838 trace
73839 (p_msg => 'END of AcctLineType_165'
73840 ,p_level => C_LEVEL_PROCEDURE
73841 ,p_module => l_log_module);
73842 END IF;
73843 --
73844 EXCEPTION
73845 WHEN xla_exceptions_pkg.application_exception THEN
73846 RAISE;
73847 WHEN OTHERS THEN
73851 --
73848 xla_exceptions_pkg.raise_message
73849 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_165');
73850 END AcctLineType_165;
73852
73853 ---------------------------------------
73854 --
73855 -- PRIVATE FUNCTION
73856 -- AcctLineType_166
73857 --
73858 ---------------------------------------
73859 PROCEDURE AcctLineType_166 (
73860 p_application_id IN NUMBER
73861 ,p_event_id IN NUMBER
73862 ,p_calculate_acctd_flag IN VARCHAR2
73863 ,p_calculate_g_l_flag IN VARCHAR2
73864 ,p_actual_flag IN OUT VARCHAR2
73865 ,p_balance_type_code OUT VARCHAR2
73866 ,p_gain_or_loss_ref OUT VARCHAR2
73867
73868 --Transaction Account
73869 , p_source_1 IN NUMBER
73870 --Journal Line Type
73871 , p_source_2 IN VARCHAR2
73872 --Entered Amount
73873 , p_source_3 IN NUMBER
73874 --First Distribution Identifier
73875 , p_source_5 IN NUMBER
73876 --Distribution Type
73877 , p_source_6 IN VARCHAR2
73878 --Currency Code
73879 , p_source_7 IN VARCHAR2
73880 --Currency Conversion Date
73881 , p_source_8 IN DATE
73882 --Currency Conversion Rate
73883 , p_source_9 IN NUMBER
73884 --Currency Conversion Type
73885 , p_source_10 IN VARCHAR2
73886 --Accounted Amount
73887 , p_source_11 IN NUMBER
73888 )
73889 IS
73890
73891 l_component_type VARCHAR2(80);
73892 l_component_code VARCHAR2(30);
73893 l_component_type_code VARCHAR2(1);
73894 l_component_appl_id INTEGER;
73895 l_amb_context_code VARCHAR2(30);
73896 l_entity_code VARCHAR2(30);
73897 l_event_class_code VARCHAR2(30);
73898 l_ae_header_id NUMBER;
73899 l_event_type_code VARCHAR2(30);
73900 l_line_definition_code VARCHAR2(30);
73901 l_line_definition_owner_code VARCHAR2(1);
73902 --
73903 -- adr variables
73904 l_segment VARCHAR2(30);
73905 l_ccid NUMBER;
73906 l_adr_transaction_coa_id NUMBER;
73907 l_adr_accounting_coa_id NUMBER;
73908 l_adr_flexfield_segment_code VARCHAR2(30);
73909 l_adr_flex_value_set_id NUMBER;
73910 l_adr_value_type_code VARCHAR2(30);
73911 l_adr_value_combination_id NUMBER;
73912 l_adr_value_segment_code VARCHAR2(30);
73913
73914 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
73915 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
73916 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
73917 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
73918
73919 -- 4262811 Variables ------------------------------------------------------------------------------------------
73920 l_entered_amt_idx NUMBER;
73921 l_accted_amt_idx NUMBER;
73922 l_acc_rev_flag VARCHAR2(1);
73923 l_accrual_line_num NUMBER;
73924 l_tmp_amt NUMBER;
73925 l_acc_rev_natural_side_code VARCHAR2(1);
73926
73927 l_num_entries NUMBER;
73928 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
73929 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
73930 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
73931 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
73932 l_recog_line_1 NUMBER;
73933 l_recog_line_2 NUMBER;
73934
73935 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
73936 l_bflow_applied_to_amt NUMBER; -- 5132302
73937 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
73938
73939 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
73940
73941 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
73942 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
73943
73944 ---------------------------------------------------------------------------------------------------------------
73945
73946
73947 --
73948 -- bulk performance
73949 --
73950 l_balance_type_code VARCHAR2(1);
73951 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
73952 l_log_module VARCHAR2(240);
73953
73954 --
73955 -- Upgrade strategy
73956 --
73957 l_actual_upg_option VARCHAR2(1);
73958 l_enc_upg_option VARCHAR2(1);
73959
73960 --
73961 BEGIN
73962 --
73963 IF g_log_enabled THEN
73964 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_166';
73965 END IF;
73966 --
73967 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73968
73969 trace
73970 (p_msg => 'BEGIN of AcctLineType_166'
73971 ,p_level => C_LEVEL_PROCEDURE
73972 ,p_module => l_log_module);
73973
73974 END IF;
73975 --
73976 l_component_type := 'AMB_JLT';
73977 l_component_code := 'INV';
73978 l_component_type_code := 'S';
73979 l_component_appl_id := 555;
73980 l_amb_context_code := 'DEFAULT';
73981 l_entity_code := 'ORDERMANAGEMENT';
73982 l_event_class_code := 'RMA';
73983 l_event_type_code := 'RMA_ALL';
73984 l_line_definition_owner_code := 'S';
73985 l_line_definition_code := 'RMA';
73986 --
73990 l_adr_transaction_coa_id := NULL;
73987 l_balance_type_code := 'A';
73988 l_segment := NULL;
73989 l_ccid := NULL;
73991 l_adr_accounting_coa_id := NULL;
73992 l_adr_flexfield_segment_code := NULL;
73993 l_adr_flex_value_set_id := NULL;
73994 l_adr_value_type_code := NULL;
73995 l_adr_value_combination_id := NULL;
73996 l_adr_value_segment_code := NULL;
73997
73998 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
73999 l_bflow_class_code := ''; -- 4219869 Business Flow
74000 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
74001 l_budgetary_control_flag := 'N';
74002
74003 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74004 l_bflow_applied_to_amt := NULL; -- 5132302
74005 l_entered_amt_idx := NULL; -- 4262811
74006 l_accted_amt_idx := NULL; -- 4262811
74007 l_acc_rev_flag := NULL; -- 4262811
74008 l_accrual_line_num := NULL; -- 4262811
74009 l_tmp_amt := NULL; -- 4262811
74010 --
74011
74012 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74013 l_balance_type_code <> 'B' THEN
74014 IF NVL(p_source_2,'
74015 ') = 'INV'
74016 THEN
74017
74018 --
74019 XLA_AE_LINES_PKG.SetNewLine;
74020
74021 p_balance_type_code := l_balance_type_code;
74022 -- set the flag so later we will know whether the gain loss line needs to be created
74023
74024 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74025 p_actual_flag :='A';
74026 END IF;
74027
74028 --
74029 -- bulk performance
74030 --
74031 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74032 p_header_num => 0); -- 4262811
74033 --
74034 -- set accounting line options
74035 --
74036 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74037 p_natural_side_code => 'D'
74038 , p_gain_or_loss_flag => 'N'
74039 , p_gl_transfer_mode_code => 'D'
74040 , p_acct_entry_type_code => 'A'
74041 , p_switch_side_flag => 'Y'
74042 , p_merge_duplicate_code => 'W'
74043 );
74044 --
74045 l_acc_rev_natural_side_code := 'C'; -- 4262811
74046 --
74047 --
74048 -- set accounting line type info
74049 --
74050 xla_ae_lines_pkg.SetAcctLineType
74051 (p_component_type => l_component_type
74052 ,p_event_type_code => l_event_type_code
74053 ,p_line_definition_owner_code => l_line_definition_owner_code
74054 ,p_line_definition_code => l_line_definition_code
74055 ,p_accounting_line_code => l_component_code
74056 ,p_accounting_line_type_code => l_component_type_code
74057 ,p_accounting_line_appl_id => l_component_appl_id
74058 ,p_amb_context_code => l_amb_context_code
74059 ,p_entity_code => l_entity_code
74060 ,p_event_class_code => l_event_class_code);
74061 --
74062 -- set accounting class
74063 --
74064 xla_ae_lines_pkg.SetAcctClass(
74065 p_accounting_class_code => 'INVENTORY_VALUATION'
74066 , p_ae_header_id => l_ae_header_id
74067 );
74068
74069 --
74070 -- set rounding class
74071 --
74072 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74073 'INVENTORY_VALUATION';
74074
74075 --
74076 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74077 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74078 --
74079 -- bulk performance
74080 --
74081 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74082
74083 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74084 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74085
74086 -- 4955764
74087 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74088 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74089
74090 -- 4458381 Public Sector Enh
74091
74092 --
74093 -- set accounting attributes for the line type
74094 --
74095 l_entered_amt_idx := 3;
74096 l_accted_amt_idx := 8;
74097 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74098 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74099 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
74100 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74101 l_rec_acct_attrs.array_char_value(2) := p_source_6;
74102 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74103 l_rec_acct_attrs.array_num_value(3) := p_source_3;
74104 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74105 l_rec_acct_attrs.array_char_value(4) := p_source_7;
74106 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74107 l_rec_acct_attrs.array_date_value(5) := p_source_8;
74111 l_rec_acct_attrs.array_char_value(7) := p_source_10;
74108 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74109 l_rec_acct_attrs.array_num_value(6) := p_source_9;
74110 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74112 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74113 l_rec_acct_attrs.array_num_value(8) := p_source_11;
74114
74115 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74116 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74117
74118 ---------------------------------------------------------------------------------------------------------------
74119 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74120 ---------------------------------------------------------------------------------------------------------------
74121 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74122
74123 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74124 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74125
74126 IF xla_accounting_cache_pkg.GetValueChar
74127 (p_source_code => 'LEDGER_CATEGORY_CODE'
74128 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74129 AND l_bflow_method_code = 'PRIOR_ENTRY'
74130 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74131 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74132 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74133 )
74134 THEN
74135 xla_ae_lines_pkg.BflowUpgEntry
74136 (p_business_method_code => l_bflow_method_code
74137 ,p_business_class_code => l_bflow_class_code
74138 ,p_balance_type => l_balance_type_code);
74139 ELSE
74140 NULL;
74141 -- No business flow processing for business flow method of NONE.
74142 END IF;
74143
74144 --
74145 -- call analytical criteria
74146 --
74147
74148 --
74149 -- call description
74150 --
74151 -- No description or it is inherited.
74152 --
74153 -- call ADRs
74154 -- Bug 4922099
74155 --
74156 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74157 (NVL(l_actual_upg_option, 'N') = 'O') OR
74158 (NVL(l_enc_upg_option, 'N') = 'O')
74159 )
74160 THEN
74161 NULL;
74162 --
74163 --
74164
74165 l_ccid := AcctDerRule_17(
74166 p_application_id => p_application_id
74167 , p_ae_header_id => l_ae_header_id
74168 , p_source_1 => p_source_1
74169 , p_source_2 => p_source_2
74170 , x_transaction_coa_id => l_adr_transaction_coa_id
74171 , x_accounting_coa_id => l_adr_accounting_coa_id
74172 , x_value_type_code => l_adr_value_type_code
74173 , p_side => 'NA'
74174 );
74175
74176 xla_ae_lines_pkg.set_ccid(
74177 p_code_combination_id => l_ccid
74178 , p_value_type_code => l_adr_value_type_code
74179 , p_transaction_coa_id => l_adr_transaction_coa_id
74180 , p_accounting_coa_id => l_adr_accounting_coa_id
74181 , p_adr_code => 'INV'
74182 , p_adr_type_code => 'S'
74183 , p_component_type => l_component_type
74184 , p_component_code => l_component_code
74185 , p_component_type_code => l_component_type_code
74186 , p_component_appl_id => l_component_appl_id
74187 , p_amb_context_code => l_amb_context_code
74188 , p_side => 'NA'
74189 );
74190
74191
74192 --
74193 --
74194 END IF;
74195 --
74196 -- Bug 4922099
74197 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74198 (NVL(l_enc_upg_option, 'N') = 'O')
74199 ) AND
74200 (l_bflow_method_code = 'PRIOR_ENTRY')
74201 )
74202 THEN
74203 IF
74204 --
74205 1 = 2
74206 --
74207 THEN
74208 xla_accounting_err_pkg.build_message
74209 (p_appli_s_name => 'XLA'
74210 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74211 ,p_token_1 => 'LINE_NUMBER'
74212 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
74213 ,p_token_2 => 'LINE_TYPE_NAME'
74214 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
74215 l_component_type
74216 ,l_component_code
74217 ,l_component_type_code
74218 ,l_component_appl_id
74219 ,l_amb_context_code
74220 ,l_entity_code
74224 ,p_value_3 => xla_lookups_pkg.get_meaning(
74221 ,l_event_class_code
74222 )
74223 ,p_token_3 => 'OWNER'
74225 p_lookup_type => 'XLA_OWNER_TYPE'
74226 ,p_lookup_code => l_component_type_code
74227 )
74228 ,p_token_4 => 'PRODUCT_NAME'
74229 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74230 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74231 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74232 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74233 ,p_ae_header_id => NULL
74234 );
74235
74236 IF (C_LEVEL_ERROR>= g_log_level) THEN
74237 trace
74238 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74239 ,p_level => C_LEVEL_ERROR
74240 ,p_module => l_log_module);
74241 END IF;
74242 END IF;
74243 END IF;
74244 --
74245 --
74246 ------------------------------------------------------------------------------------------------
74247 -- 4219869 Business Flow
74248 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74249 -- Prior Entry. Currently, the following code is always generated.
74250 ------------------------------------------------------------------------------------------------
74251 XLA_AE_LINES_PKG.ValidateCurrentLine;
74252
74253 ------------------------------------------------------------------------------------
74254 -- 4219869 Business Flow
74255 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74256 ------------------------------------------------------------------------------------
74257 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74258
74259 ----------------------------------------------------------------------------------
74260 -- 4219869 Business Flow
74261 -- Update journal entry status -- Need to generate this within IF <condition>
74262 ----------------------------------------------------------------------------------
74263 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74264 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74265 ,p_balance_type_code => l_balance_type_code
74266 );
74267
74268 -------------------------------------------------------------------------------------------
74269 -- 4262811 - Generate the Accrual Reversal lines
74270 -------------------------------------------------------------------------------------------
74271 BEGIN
74272 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74273 (g_array_event(p_event_id).array_value_num('header_index'));
74274 IF l_acc_rev_flag IS NULL THEN
74275 l_acc_rev_flag := 'N';
74276 END IF;
74277 EXCEPTION
74278 WHEN OTHERS THEN
74279 l_acc_rev_flag := 'N';
74280 END;
74281 --
74282 IF (l_acc_rev_flag = 'Y') THEN
74283
74284 -- 4645092 ------------------------------------------------------------------------------
74285 -- To allow MPA report to determine if it should generate report process
74286 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74287 ------------------------------------------------------------------------------------------
74288
74289 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74290 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74291 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
74292 -- call ADRs
74293 -- Bug 4922099
74294 --
74295 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74296 (NVL(l_actual_upg_option, 'N') = 'O') OR
74297 (NVL(l_enc_upg_option, 'N') = 'O')
74298 )
74299 THEN
74300 NULL;
74301 --
74302 --
74303
74304 l_ccid := AcctDerRule_17(
74305 p_application_id => p_application_id
74306 , p_ae_header_id => l_ae_header_id
74307 , p_source_1 => p_source_1
74308 , p_source_2 => p_source_2
74309 , x_transaction_coa_id => l_adr_transaction_coa_id
74310 , x_accounting_coa_id => l_adr_accounting_coa_id
74311 , x_value_type_code => l_adr_value_type_code
74312 , p_side => 'NA'
74313 );
74314
74315 xla_ae_lines_pkg.set_ccid(
74316 p_code_combination_id => l_ccid
74317 , p_value_type_code => l_adr_value_type_code
74318 , p_transaction_coa_id => l_adr_transaction_coa_id
74319 , p_accounting_coa_id => l_adr_accounting_coa_id
74320 , p_adr_code => 'INV'
74321 , p_adr_type_code => 'S'
74325 , p_component_appl_id => l_component_appl_id
74322 , p_component_type => l_component_type
74323 , p_component_code => l_component_code
74324 , p_component_type_code => l_component_type_code
74326 , p_amb_context_code => l_amb_context_code
74327 , p_side => 'NA'
74328 );
74329
74330
74331 --
74332 --
74333 END IF;
74334
74335 --
74336 -- Update the line information that should be overwritten
74337 --
74338 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74339 p_header_num => 1);
74340 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
74341
74342 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74343
74344 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
74345 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74346 END IF;
74347
74348 --
74349 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74350 --
74351 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74352 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
74353 ELSE
74354 ---------------------------------------------------------------------------------------------------
74355 -- 4262811a Switch Sign
74356 ---------------------------------------------------------------------------------------------------
74357 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
74358 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74359 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74360 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74361 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74362 -- 5132302
74363 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74364 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74365
74366 END IF;
74367
74368 -- 4955764
74369 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74370 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74371
74372
74373 XLA_AE_LINES_PKG.ValidateCurrentLine;
74374 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74375
74376 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74377 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74378 ,p_balance_type_code => l_balance_type_code);
74379
74380 END IF;
74381
74382 -----------------------------------------------------------------------------------------
74383 -- 4262811 Multiperiod Accounting
74384 -----------------------------------------------------------------------------------------
74385 -- No MPA option is assigned.
74386
74387
74388 END IF;
74389 END IF;
74390 --
74391
74392 --
74393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74394 trace
74395 (p_msg => 'END of AcctLineType_166'
74396 ,p_level => C_LEVEL_PROCEDURE
74397 ,p_module => l_log_module);
74398 END IF;
74399 --
74400 EXCEPTION
74401 WHEN xla_exceptions_pkg.application_exception THEN
74402 RAISE;
74403 WHEN OTHERS THEN
74404 xla_exceptions_pkg.raise_message
74405 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_166');
74406 END AcctLineType_166;
74407 --
74408
74409 ---------------------------------------
74410 --
74411 -- PRIVATE FUNCTION
74412 -- AcctLineType_167
74413 --
74414 ---------------------------------------
74415 PROCEDURE AcctLineType_167 (
74416 p_application_id IN NUMBER
74417 ,p_event_id IN NUMBER
74418 ,p_calculate_acctd_flag IN VARCHAR2
74419 ,p_calculate_g_l_flag IN VARCHAR2
74420 ,p_actual_flag IN OUT VARCHAR2
74421 ,p_balance_type_code OUT VARCHAR2
74422 ,p_gain_or_loss_ref OUT VARCHAR2
74423
74424 --Transaction Account
74425 , p_source_1 IN NUMBER
74426 --Journal Line Type
74427 , p_source_2 IN VARCHAR2
74428 --Entered Amount
74429 , p_source_3 IN NUMBER
74430 --First Distribution Identifier
74431 , p_source_5 IN NUMBER
74432 --Distribution Type
74433 , p_source_6 IN VARCHAR2
74434 --Currency Code
74435 , p_source_7 IN VARCHAR2
74436 --Currency Conversion Date
74437 , p_source_8 IN DATE
74438 --Currency Conversion Rate
74439 , p_source_9 IN NUMBER
74440 --Currency Conversion Type
74441 , p_source_10 IN VARCHAR2
74442 --Accounted Amount
74443 , p_source_11 IN NUMBER
74444 )
74445 IS
74446
74447 l_component_type VARCHAR2(80);
74448 l_component_code VARCHAR2(30);
74449 l_component_type_code VARCHAR2(1);
74450 l_component_appl_id INTEGER;
74454 l_ae_header_id NUMBER;
74451 l_amb_context_code VARCHAR2(30);
74452 l_entity_code VARCHAR2(30);
74453 l_event_class_code VARCHAR2(30);
74455 l_event_type_code VARCHAR2(30);
74456 l_line_definition_code VARCHAR2(30);
74457 l_line_definition_owner_code VARCHAR2(1);
74458 --
74459 -- adr variables
74460 l_segment VARCHAR2(30);
74461 l_ccid NUMBER;
74462 l_adr_transaction_coa_id NUMBER;
74463 l_adr_accounting_coa_id NUMBER;
74464 l_adr_flexfield_segment_code VARCHAR2(30);
74465 l_adr_flex_value_set_id NUMBER;
74466 l_adr_value_type_code VARCHAR2(30);
74467 l_adr_value_combination_id NUMBER;
74468 l_adr_value_segment_code VARCHAR2(30);
74469
74470 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
74471 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
74472 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
74473 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
74474
74475 -- 4262811 Variables ------------------------------------------------------------------------------------------
74476 l_entered_amt_idx NUMBER;
74477 l_accted_amt_idx NUMBER;
74478 l_acc_rev_flag VARCHAR2(1);
74479 l_accrual_line_num NUMBER;
74480 l_tmp_amt NUMBER;
74481 l_acc_rev_natural_side_code VARCHAR2(1);
74482
74483 l_num_entries NUMBER;
74484 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
74485 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
74486 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
74487 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
74488 l_recog_line_1 NUMBER;
74489 l_recog_line_2 NUMBER;
74490
74491 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
74492 l_bflow_applied_to_amt NUMBER; -- 5132302
74493 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
74494
74495 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74496
74497 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
74498 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
74499
74500 ---------------------------------------------------------------------------------------------------------------
74501
74502
74503 --
74504 -- bulk performance
74505 --
74506 l_balance_type_code VARCHAR2(1);
74507 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
74508 l_log_module VARCHAR2(240);
74509
74510 --
74511 -- Upgrade strategy
74512 --
74513 l_actual_upg_option VARCHAR2(1);
74514 l_enc_upg_option VARCHAR2(1);
74515
74516 --
74517 BEGIN
74518 --
74519 IF g_log_enabled THEN
74520 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_167';
74521 END IF;
74522 --
74523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74524
74525 trace
74526 (p_msg => 'BEGIN of AcctLineType_167'
74527 ,p_level => C_LEVEL_PROCEDURE
74528 ,p_module => l_log_module);
74529
74530 END IF;
74531 --
74532 l_component_type := 'AMB_JLT';
74533 l_component_code := 'INV';
74534 l_component_type_code := 'S';
74535 l_component_appl_id := 555;
74536 l_amb_context_code := 'DEFAULT';
74537 l_entity_code := 'INVENTORY';
74538 l_event_class_code := 'INT_ORDER_TO_EXP';
74539 l_event_type_code := 'INT_ORDER_ISSUE';
74540 l_line_definition_owner_code := 'S';
74541 l_line_definition_code := 'INT_ORDER_ISSUE';
74542 --
74543 l_balance_type_code := 'A';
74544 l_segment := NULL;
74545 l_ccid := NULL;
74546 l_adr_transaction_coa_id := NULL;
74547 l_adr_accounting_coa_id := NULL;
74548 l_adr_flexfield_segment_code := NULL;
74549 l_adr_flex_value_set_id := NULL;
74550 l_adr_value_type_code := NULL;
74551 l_adr_value_combination_id := NULL;
74552 l_adr_value_segment_code := NULL;
74553
74554 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
74555 l_bflow_class_code := ''; -- 4219869 Business Flow
74556 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
74557 l_budgetary_control_flag := 'N';
74558
74559 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74560 l_bflow_applied_to_amt := NULL; -- 5132302
74561 l_entered_amt_idx := NULL; -- 4262811
74562 l_accted_amt_idx := NULL; -- 4262811
74563 l_acc_rev_flag := NULL; -- 4262811
74564 l_accrual_line_num := NULL; -- 4262811
74565 l_tmp_amt := NULL; -- 4262811
74566 --
74567
74568 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74569 l_balance_type_code <> 'B' THEN
74570 IF NVL(p_source_2,'
74571 ') = 'INV'
74572 THEN
74573
74574 --
74575 XLA_AE_LINES_PKG.SetNewLine;
74576
74577 p_balance_type_code := l_balance_type_code;
74578 -- set the flag so later we will know whether the gain loss line needs to be created
74582 END IF;
74579
74580 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74581 p_actual_flag :='A';
74583
74584 --
74585 -- bulk performance
74586 --
74587 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74588 p_header_num => 0); -- 4262811
74589 --
74590 -- set accounting line options
74591 --
74592 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74593 p_natural_side_code => 'D'
74594 , p_gain_or_loss_flag => 'N'
74595 , p_gl_transfer_mode_code => 'D'
74596 , p_acct_entry_type_code => 'A'
74597 , p_switch_side_flag => 'Y'
74598 , p_merge_duplicate_code => 'W'
74599 );
74600 --
74601 l_acc_rev_natural_side_code := 'C'; -- 4262811
74602 --
74603 --
74604 -- set accounting line type info
74605 --
74606 xla_ae_lines_pkg.SetAcctLineType
74607 (p_component_type => l_component_type
74608 ,p_event_type_code => l_event_type_code
74609 ,p_line_definition_owner_code => l_line_definition_owner_code
74610 ,p_line_definition_code => l_line_definition_code
74611 ,p_accounting_line_code => l_component_code
74612 ,p_accounting_line_type_code => l_component_type_code
74613 ,p_accounting_line_appl_id => l_component_appl_id
74614 ,p_amb_context_code => l_amb_context_code
74615 ,p_entity_code => l_entity_code
74616 ,p_event_class_code => l_event_class_code);
74617 --
74618 -- set accounting class
74619 --
74620 xla_ae_lines_pkg.SetAcctClass(
74621 p_accounting_class_code => 'INVENTORY_VALUATION'
74622 , p_ae_header_id => l_ae_header_id
74623 );
74624
74625 --
74626 -- set rounding class
74627 --
74628 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74629 'INVENTORY_VALUATION';
74630
74631 --
74632 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74633 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74634 --
74635 -- bulk performance
74636 --
74637 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74638
74639 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74640 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74641
74642 -- 4955764
74643 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74644 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74645
74646 -- 4458381 Public Sector Enh
74647
74648 --
74649 -- set accounting attributes for the line type
74650 --
74651 l_entered_amt_idx := 3;
74652 l_accted_amt_idx := 8;
74653 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74654 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74655 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
74656 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74657 l_rec_acct_attrs.array_char_value(2) := p_source_6;
74658 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74659 l_rec_acct_attrs.array_num_value(3) := p_source_3;
74660 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74661 l_rec_acct_attrs.array_char_value(4) := p_source_7;
74662 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74663 l_rec_acct_attrs.array_date_value(5) := p_source_8;
74664 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74665 l_rec_acct_attrs.array_num_value(6) := p_source_9;
74666 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74667 l_rec_acct_attrs.array_char_value(7) := p_source_10;
74668 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74669 l_rec_acct_attrs.array_num_value(8) := p_source_11;
74670
74671 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74672 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74673
74674 ---------------------------------------------------------------------------------------------------------------
74675 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74676 ---------------------------------------------------------------------------------------------------------------
74677 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74678
74679 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74680 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74681
74682 IF xla_accounting_cache_pkg.GetValueChar
74683 (p_source_code => 'LEDGER_CATEGORY_CODE'
74684 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74685 AND l_bflow_method_code = 'PRIOR_ENTRY'
74686 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74687 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74688 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74689 )
74693 ,p_business_class_code => l_bflow_class_code
74690 THEN
74691 xla_ae_lines_pkg.BflowUpgEntry
74692 (p_business_method_code => l_bflow_method_code
74694 ,p_balance_type => l_balance_type_code);
74695 ELSE
74696 NULL;
74697 -- No business flow processing for business flow method of NONE.
74698 END IF;
74699
74700 --
74701 -- call analytical criteria
74702 --
74703
74704 --
74705 -- call description
74706 --
74707 -- No description or it is inherited.
74708 --
74709 -- call ADRs
74710 -- Bug 4922099
74711 --
74712 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74713 (NVL(l_actual_upg_option, 'N') = 'O') OR
74714 (NVL(l_enc_upg_option, 'N') = 'O')
74715 )
74716 THEN
74717 NULL;
74718 --
74719 --
74720
74721 l_ccid := AcctDerRule_17(
74722 p_application_id => p_application_id
74723 , p_ae_header_id => l_ae_header_id
74724 , p_source_1 => p_source_1
74725 , p_source_2 => p_source_2
74726 , x_transaction_coa_id => l_adr_transaction_coa_id
74727 , x_accounting_coa_id => l_adr_accounting_coa_id
74728 , x_value_type_code => l_adr_value_type_code
74729 , p_side => 'NA'
74730 );
74731
74732 xla_ae_lines_pkg.set_ccid(
74733 p_code_combination_id => l_ccid
74734 , p_value_type_code => l_adr_value_type_code
74735 , p_transaction_coa_id => l_adr_transaction_coa_id
74736 , p_accounting_coa_id => l_adr_accounting_coa_id
74737 , p_adr_code => 'INV'
74738 , p_adr_type_code => 'S'
74739 , p_component_type => l_component_type
74740 , p_component_code => l_component_code
74741 , p_component_type_code => l_component_type_code
74742 , p_component_appl_id => l_component_appl_id
74743 , p_amb_context_code => l_amb_context_code
74744 , p_side => 'NA'
74745 );
74746
74747
74748 --
74749 --
74750 END IF;
74751 --
74752 -- Bug 4922099
74753 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74754 (NVL(l_enc_upg_option, 'N') = 'O')
74755 ) AND
74756 (l_bflow_method_code = 'PRIOR_ENTRY')
74757 )
74758 THEN
74759 IF
74760 --
74761 1 = 2
74762 --
74763 THEN
74764 xla_accounting_err_pkg.build_message
74765 (p_appli_s_name => 'XLA'
74766 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74767 ,p_token_1 => 'LINE_NUMBER'
74768 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
74769 ,p_token_2 => 'LINE_TYPE_NAME'
74770 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
74771 l_component_type
74772 ,l_component_code
74773 ,l_component_type_code
74774 ,l_component_appl_id
74775 ,l_amb_context_code
74776 ,l_entity_code
74777 ,l_event_class_code
74778 )
74779 ,p_token_3 => 'OWNER'
74780 ,p_value_3 => xla_lookups_pkg.get_meaning(
74781 p_lookup_type => 'XLA_OWNER_TYPE'
74782 ,p_lookup_code => l_component_type_code
74783 )
74784 ,p_token_4 => 'PRODUCT_NAME'
74785 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74786 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74787 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74788 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74789 ,p_ae_header_id => NULL
74790 );
74791
74792 IF (C_LEVEL_ERROR>= g_log_level) THEN
74793 trace
74794 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74795 ,p_level => C_LEVEL_ERROR
74796 ,p_module => l_log_module);
74797 END IF;
74798 END IF;
74799 END IF;
74800 --
74801 --
74802 ------------------------------------------------------------------------------------------------
74806 ------------------------------------------------------------------------------------------------
74803 -- 4219869 Business Flow
74804 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74805 -- Prior Entry. Currently, the following code is always generated.
74807 XLA_AE_LINES_PKG.ValidateCurrentLine;
74808
74809 ------------------------------------------------------------------------------------
74810 -- 4219869 Business Flow
74811 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74812 ------------------------------------------------------------------------------------
74813 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74814
74815 ----------------------------------------------------------------------------------
74816 -- 4219869 Business Flow
74817 -- Update journal entry status -- Need to generate this within IF <condition>
74818 ----------------------------------------------------------------------------------
74819 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74820 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74821 ,p_balance_type_code => l_balance_type_code
74822 );
74823
74824 -------------------------------------------------------------------------------------------
74825 -- 4262811 - Generate the Accrual Reversal lines
74826 -------------------------------------------------------------------------------------------
74827 BEGIN
74828 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74829 (g_array_event(p_event_id).array_value_num('header_index'));
74830 IF l_acc_rev_flag IS NULL THEN
74831 l_acc_rev_flag := 'N';
74832 END IF;
74833 EXCEPTION
74834 WHEN OTHERS THEN
74835 l_acc_rev_flag := 'N';
74836 END;
74837 --
74838 IF (l_acc_rev_flag = 'Y') THEN
74839
74840 -- 4645092 ------------------------------------------------------------------------------
74841 -- To allow MPA report to determine if it should generate report process
74842 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74843 ------------------------------------------------------------------------------------------
74844
74845 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74846 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74847 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
74848 -- call ADRs
74849 -- Bug 4922099
74850 --
74851 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74852 (NVL(l_actual_upg_option, 'N') = 'O') OR
74853 (NVL(l_enc_upg_option, 'N') = 'O')
74854 )
74855 THEN
74856 NULL;
74857 --
74858 --
74859
74860 l_ccid := AcctDerRule_17(
74861 p_application_id => p_application_id
74862 , p_ae_header_id => l_ae_header_id
74863 , p_source_1 => p_source_1
74864 , p_source_2 => p_source_2
74865 , x_transaction_coa_id => l_adr_transaction_coa_id
74866 , x_accounting_coa_id => l_adr_accounting_coa_id
74867 , x_value_type_code => l_adr_value_type_code
74868 , p_side => 'NA'
74869 );
74870
74871 xla_ae_lines_pkg.set_ccid(
74872 p_code_combination_id => l_ccid
74873 , p_value_type_code => l_adr_value_type_code
74874 , p_transaction_coa_id => l_adr_transaction_coa_id
74875 , p_accounting_coa_id => l_adr_accounting_coa_id
74876 , p_adr_code => 'INV'
74877 , p_adr_type_code => 'S'
74878 , p_component_type => l_component_type
74879 , p_component_code => l_component_code
74880 , p_component_type_code => l_component_type_code
74881 , p_component_appl_id => l_component_appl_id
74882 , p_amb_context_code => l_amb_context_code
74883 , p_side => 'NA'
74884 );
74885
74886
74887 --
74888 --
74889 END IF;
74890
74891 --
74892 -- Update the line information that should be overwritten
74893 --
74894 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74895 p_header_num => 1);
74896 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
74897
74898 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74899
74900 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
74901 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74902 END IF;
74903
74904 --
74905 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74906 --
74907 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74908 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
74909 ELSE
74910 ---------------------------------------------------------------------------------------------------
74911 -- 4262811a Switch Sign
74912 ---------------------------------------------------------------------------------------------------
74916 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74913 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
74914 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74915 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74917 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74918 -- 5132302
74919 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74920 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74921
74922 END IF;
74923
74924 -- 4955764
74925 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74926 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74927
74928
74929 XLA_AE_LINES_PKG.ValidateCurrentLine;
74930 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74931
74932 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74933 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74934 ,p_balance_type_code => l_balance_type_code);
74935
74936 END IF;
74937
74938 -----------------------------------------------------------------------------------------
74939 -- 4262811 Multiperiod Accounting
74940 -----------------------------------------------------------------------------------------
74941 -- No MPA option is assigned.
74942
74943
74944 END IF;
74945 END IF;
74946 --
74947
74948 --
74949 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74950 trace
74951 (p_msg => 'END of AcctLineType_167'
74952 ,p_level => C_LEVEL_PROCEDURE
74953 ,p_module => l_log_module);
74954 END IF;
74955 --
74956 EXCEPTION
74957 WHEN xla_exceptions_pkg.application_exception THEN
74958 RAISE;
74959 WHEN OTHERS THEN
74960 xla_exceptions_pkg.raise_message
74961 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_167');
74962 END AcctLineType_167;
74963 --
74964
74965 ---------------------------------------
74966 --
74967 -- PRIVATE FUNCTION
74968 -- AcctLineType_168
74969 --
74970 ---------------------------------------
74971 PROCEDURE AcctLineType_168 (
74972 p_application_id IN NUMBER
74973 ,p_event_id IN NUMBER
74974 ,p_calculate_acctd_flag IN VARCHAR2
74975 ,p_calculate_g_l_flag IN VARCHAR2
74976 ,p_actual_flag IN OUT VARCHAR2
74977 ,p_balance_type_code OUT VARCHAR2
74978 ,p_gain_or_loss_ref OUT VARCHAR2
74979
74980 --Transaction Account
74981 , p_source_1 IN NUMBER
74982 --Journal Line Type
74983 , p_source_2 IN VARCHAR2
74984 --Entered Amount
74985 , p_source_3 IN NUMBER
74986 --First Distribution Identifier
74987 , p_source_5 IN NUMBER
74988 --Distribution Type
74989 , p_source_6 IN VARCHAR2
74990 --Currency Code
74991 , p_source_7 IN VARCHAR2
74992 --Currency Conversion Date
74993 , p_source_8 IN DATE
74994 --Currency Conversion Rate
74995 , p_source_9 IN NUMBER
74996 --Currency Conversion Type
74997 , p_source_10 IN VARCHAR2
74998 --Accounted Amount
74999 , p_source_11 IN NUMBER
75000 )
75001 IS
75002
75003 l_component_type VARCHAR2(80);
75004 l_component_code VARCHAR2(30);
75005 l_component_type_code VARCHAR2(1);
75006 l_component_appl_id INTEGER;
75007 l_amb_context_code VARCHAR2(30);
75008 l_entity_code VARCHAR2(30);
75009 l_event_class_code VARCHAR2(30);
75010 l_ae_header_id NUMBER;
75011 l_event_type_code VARCHAR2(30);
75012 l_line_definition_code VARCHAR2(30);
75013 l_line_definition_owner_code VARCHAR2(1);
75014 --
75015 -- adr variables
75016 l_segment VARCHAR2(30);
75017 l_ccid NUMBER;
75018 l_adr_transaction_coa_id NUMBER;
75019 l_adr_accounting_coa_id NUMBER;
75020 l_adr_flexfield_segment_code VARCHAR2(30);
75021 l_adr_flex_value_set_id NUMBER;
75022 l_adr_value_type_code VARCHAR2(30);
75023 l_adr_value_combination_id NUMBER;
75024 l_adr_value_segment_code VARCHAR2(30);
75025
75026 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
75027 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
75028 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
75029 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
75030
75031 -- 4262811 Variables ------------------------------------------------------------------------------------------
75032 l_entered_amt_idx NUMBER;
75033 l_accted_amt_idx NUMBER;
75034 l_acc_rev_flag VARCHAR2(1);
75035 l_accrual_line_num NUMBER;
75036 l_tmp_amt NUMBER;
75037 l_acc_rev_natural_side_code VARCHAR2(1);
75038
75039 l_num_entries NUMBER;
75040 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
75041 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
75042 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
75046
75043 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
75044 l_recog_line_1 NUMBER;
75045 l_recog_line_2 NUMBER;
75047 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
75048 l_bflow_applied_to_amt NUMBER; -- 5132302
75049 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
75050
75051 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75052
75053 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
75054 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
75055
75056 ---------------------------------------------------------------------------------------------------------------
75057
75058
75059 --
75060 -- bulk performance
75061 --
75062 l_balance_type_code VARCHAR2(1);
75063 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
75064 l_log_module VARCHAR2(240);
75065
75066 --
75067 -- Upgrade strategy
75068 --
75069 l_actual_upg_option VARCHAR2(1);
75070 l_enc_upg_option VARCHAR2(1);
75071
75072 --
75073 BEGIN
75074 --
75075 IF g_log_enabled THEN
75076 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_168';
75077 END IF;
75078 --
75079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75080
75081 trace
75082 (p_msg => 'BEGIN of AcctLineType_168'
75083 ,p_level => C_LEVEL_PROCEDURE
75084 ,p_module => l_log_module);
75085
75086 END IF;
75087 --
75088 l_component_type := 'AMB_JLT';
75089 l_component_code := 'INV';
75090 l_component_type_code := 'S';
75091 l_component_appl_id := 555;
75092 l_amb_context_code := 'DEFAULT';
75093 l_entity_code := 'PURCHASING';
75094 l_event_class_code := 'PAYABLES_INVOICE';
75095 l_event_type_code := 'INVOICE_ERV_ADJ';
75096 l_line_definition_owner_code := 'S';
75097 l_line_definition_code := 'INVOICE_ERV_ADJ';
75098 --
75099 l_balance_type_code := 'A';
75100 l_segment := NULL;
75101 l_ccid := NULL;
75102 l_adr_transaction_coa_id := NULL;
75103 l_adr_accounting_coa_id := NULL;
75104 l_adr_flexfield_segment_code := NULL;
75105 l_adr_flex_value_set_id := NULL;
75106 l_adr_value_type_code := NULL;
75107 l_adr_value_combination_id := NULL;
75108 l_adr_value_segment_code := NULL;
75109
75110 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
75111 l_bflow_class_code := ''; -- 4219869 Business Flow
75112 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
75113 l_budgetary_control_flag := 'N';
75114
75115 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75116 l_bflow_applied_to_amt := NULL; -- 5132302
75117 l_entered_amt_idx := NULL; -- 4262811
75118 l_accted_amt_idx := NULL; -- 4262811
75119 l_acc_rev_flag := NULL; -- 4262811
75120 l_accrual_line_num := NULL; -- 4262811
75121 l_tmp_amt := NULL; -- 4262811
75122 --
75123
75124 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75125 l_balance_type_code <> 'B' THEN
75126 IF NVL(p_source_2,'
75127 ') = 'INV'
75128 THEN
75129
75130 --
75131 XLA_AE_LINES_PKG.SetNewLine;
75132
75133 p_balance_type_code := l_balance_type_code;
75134 -- set the flag so later we will know whether the gain loss line needs to be created
75135
75136 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75137 p_actual_flag :='A';
75138 END IF;
75139
75140 --
75141 -- bulk performance
75142 --
75143 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75144 p_header_num => 0); -- 4262811
75145 --
75146 -- set accounting line options
75147 --
75148 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75149 p_natural_side_code => 'D'
75150 , p_gain_or_loss_flag => 'N'
75151 , p_gl_transfer_mode_code => 'D'
75152 , p_acct_entry_type_code => 'A'
75153 , p_switch_side_flag => 'Y'
75154 , p_merge_duplicate_code => 'W'
75155 );
75156 --
75157 l_acc_rev_natural_side_code := 'C'; -- 4262811
75158 --
75159 --
75160 -- set accounting line type info
75161 --
75162 xla_ae_lines_pkg.SetAcctLineType
75163 (p_component_type => l_component_type
75164 ,p_event_type_code => l_event_type_code
75165 ,p_line_definition_owner_code => l_line_definition_owner_code
75166 ,p_line_definition_code => l_line_definition_code
75167 ,p_accounting_line_code => l_component_code
75168 ,p_accounting_line_type_code => l_component_type_code
75169 ,p_accounting_line_appl_id => l_component_appl_id
75170 ,p_amb_context_code => l_amb_context_code
75171 ,p_entity_code => l_entity_code
75172 ,p_event_class_code => l_event_class_code);
75173 --
75174 -- set accounting class
75175 --
75179 );
75176 xla_ae_lines_pkg.SetAcctClass(
75177 p_accounting_class_code => 'INVENTORY_VALUATION'
75178 , p_ae_header_id => l_ae_header_id
75180
75181 --
75182 -- set rounding class
75183 --
75184 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75185 'INVENTORY_VALUATION';
75186
75187 --
75188 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75189 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75190 --
75191 -- bulk performance
75192 --
75193 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75194
75195 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75196 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75197
75198 -- 4955764
75199 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75200 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75201
75202 -- 4458381 Public Sector Enh
75203
75204 --
75205 -- set accounting attributes for the line type
75206 --
75207 l_entered_amt_idx := 3;
75208 l_accted_amt_idx := 8;
75209 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75210 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75211 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
75212 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75213 l_rec_acct_attrs.array_char_value(2) := p_source_6;
75214 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75215 l_rec_acct_attrs.array_num_value(3) := p_source_3;
75216 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75217 l_rec_acct_attrs.array_char_value(4) := p_source_7;
75218 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75219 l_rec_acct_attrs.array_date_value(5) := p_source_8;
75220 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75221 l_rec_acct_attrs.array_num_value(6) := p_source_9;
75222 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75223 l_rec_acct_attrs.array_char_value(7) := p_source_10;
75224 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75225 l_rec_acct_attrs.array_num_value(8) := p_source_11;
75226
75227 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75228 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75229
75230 ---------------------------------------------------------------------------------------------------------------
75231 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75232 ---------------------------------------------------------------------------------------------------------------
75233 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75234
75235 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75236 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75237
75238 IF xla_accounting_cache_pkg.GetValueChar
75239 (p_source_code => 'LEDGER_CATEGORY_CODE'
75240 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75241 AND l_bflow_method_code = 'PRIOR_ENTRY'
75242 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75243 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75244 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75245 )
75246 THEN
75247 xla_ae_lines_pkg.BflowUpgEntry
75248 (p_business_method_code => l_bflow_method_code
75249 ,p_business_class_code => l_bflow_class_code
75250 ,p_balance_type => l_balance_type_code);
75251 ELSE
75252 NULL;
75253 -- No business flow processing for business flow method of NONE.
75254 END IF;
75255
75256 --
75257 -- call analytical criteria
75258 --
75259
75260 --
75261 -- call description
75262 --
75263 -- No description or it is inherited.
75264 --
75265 -- call ADRs
75266 -- Bug 4922099
75267 --
75268 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75269 (NVL(l_actual_upg_option, 'N') = 'O') OR
75270 (NVL(l_enc_upg_option, 'N') = 'O')
75271 )
75272 THEN
75273 NULL;
75274 --
75275 --
75276
75277 l_ccid := AcctDerRule_17(
75278 p_application_id => p_application_id
75279 , p_ae_header_id => l_ae_header_id
75280 , p_source_1 => p_source_1
75281 , p_source_2 => p_source_2
75282 , x_transaction_coa_id => l_adr_transaction_coa_id
75283 , x_accounting_coa_id => l_adr_accounting_coa_id
75284 , x_value_type_code => l_adr_value_type_code
75285 , p_side => 'NA'
75286 );
75287
75288 xla_ae_lines_pkg.set_ccid(
75289 p_code_combination_id => l_ccid
75290 , p_value_type_code => l_adr_value_type_code
75291 , p_transaction_coa_id => l_adr_transaction_coa_id
75295 , p_component_type => l_component_type
75292 , p_accounting_coa_id => l_adr_accounting_coa_id
75293 , p_adr_code => 'INV'
75294 , p_adr_type_code => 'S'
75296 , p_component_code => l_component_code
75297 , p_component_type_code => l_component_type_code
75298 , p_component_appl_id => l_component_appl_id
75299 , p_amb_context_code => l_amb_context_code
75300 , p_side => 'NA'
75301 );
75302
75303
75304 --
75305 --
75306 END IF;
75307 --
75308 -- Bug 4922099
75309 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75310 (NVL(l_enc_upg_option, 'N') = 'O')
75311 ) AND
75312 (l_bflow_method_code = 'PRIOR_ENTRY')
75313 )
75314 THEN
75315 IF
75316 --
75317 1 = 2
75318 --
75319 THEN
75320 xla_accounting_err_pkg.build_message
75321 (p_appli_s_name => 'XLA'
75322 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75323 ,p_token_1 => 'LINE_NUMBER'
75324 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
75325 ,p_token_2 => 'LINE_TYPE_NAME'
75326 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
75327 l_component_type
75328 ,l_component_code
75329 ,l_component_type_code
75330 ,l_component_appl_id
75331 ,l_amb_context_code
75332 ,l_entity_code
75333 ,l_event_class_code
75334 )
75335 ,p_token_3 => 'OWNER'
75336 ,p_value_3 => xla_lookups_pkg.get_meaning(
75337 p_lookup_type => 'XLA_OWNER_TYPE'
75338 ,p_lookup_code => l_component_type_code
75339 )
75340 ,p_token_4 => 'PRODUCT_NAME'
75341 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75342 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75343 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75344 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75345 ,p_ae_header_id => NULL
75346 );
75347
75348 IF (C_LEVEL_ERROR>= g_log_level) THEN
75349 trace
75350 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75351 ,p_level => C_LEVEL_ERROR
75352 ,p_module => l_log_module);
75353 END IF;
75354 END IF;
75355 END IF;
75356 --
75357 --
75358 ------------------------------------------------------------------------------------------------
75359 -- 4219869 Business Flow
75360 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75361 -- Prior Entry. Currently, the following code is always generated.
75362 ------------------------------------------------------------------------------------------------
75363 XLA_AE_LINES_PKG.ValidateCurrentLine;
75364
75365 ------------------------------------------------------------------------------------
75366 -- 4219869 Business Flow
75367 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75368 ------------------------------------------------------------------------------------
75369 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75370
75371 ----------------------------------------------------------------------------------
75372 -- 4219869 Business Flow
75373 -- Update journal entry status -- Need to generate this within IF <condition>
75374 ----------------------------------------------------------------------------------
75375 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75376 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75377 ,p_balance_type_code => l_balance_type_code
75378 );
75379
75380 -------------------------------------------------------------------------------------------
75381 -- 4262811 - Generate the Accrual Reversal lines
75382 -------------------------------------------------------------------------------------------
75383 BEGIN
75384 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75385 (g_array_event(p_event_id).array_value_num('header_index'));
75389 EXCEPTION
75386 IF l_acc_rev_flag IS NULL THEN
75387 l_acc_rev_flag := 'N';
75388 END IF;
75390 WHEN OTHERS THEN
75391 l_acc_rev_flag := 'N';
75392 END;
75393 --
75394 IF (l_acc_rev_flag = 'Y') THEN
75395
75396 -- 4645092 ------------------------------------------------------------------------------
75397 -- To allow MPA report to determine if it should generate report process
75398 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75399 ------------------------------------------------------------------------------------------
75400
75401 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75402 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75403 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
75404 -- call ADRs
75405 -- Bug 4922099
75406 --
75407 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75408 (NVL(l_actual_upg_option, 'N') = 'O') OR
75409 (NVL(l_enc_upg_option, 'N') = 'O')
75410 )
75411 THEN
75412 NULL;
75413 --
75414 --
75415
75416 l_ccid := AcctDerRule_17(
75417 p_application_id => p_application_id
75418 , p_ae_header_id => l_ae_header_id
75419 , p_source_1 => p_source_1
75420 , p_source_2 => p_source_2
75421 , x_transaction_coa_id => l_adr_transaction_coa_id
75422 , x_accounting_coa_id => l_adr_accounting_coa_id
75423 , x_value_type_code => l_adr_value_type_code
75424 , p_side => 'NA'
75425 );
75426
75427 xla_ae_lines_pkg.set_ccid(
75428 p_code_combination_id => l_ccid
75429 , p_value_type_code => l_adr_value_type_code
75430 , p_transaction_coa_id => l_adr_transaction_coa_id
75431 , p_accounting_coa_id => l_adr_accounting_coa_id
75432 , p_adr_code => 'INV'
75433 , p_adr_type_code => 'S'
75434 , p_component_type => l_component_type
75435 , p_component_code => l_component_code
75436 , p_component_type_code => l_component_type_code
75437 , p_component_appl_id => l_component_appl_id
75438 , p_amb_context_code => l_amb_context_code
75439 , p_side => 'NA'
75440 );
75441
75442
75443 --
75444 --
75445 END IF;
75446
75447 --
75448 -- Update the line information that should be overwritten
75449 --
75450 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75451 p_header_num => 1);
75452 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
75453
75454 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75455
75456 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
75457 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75458 END IF;
75459
75460 --
75461 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75462 --
75463 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75464 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
75465 ELSE
75466 ---------------------------------------------------------------------------------------------------
75467 -- 4262811a Switch Sign
75468 ---------------------------------------------------------------------------------------------------
75469 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
75470 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75471 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75472 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75473 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75474 -- 5132302
75475 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75476 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75477
75478 END IF;
75479
75480 -- 4955764
75481 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75482 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75483
75484
75485 XLA_AE_LINES_PKG.ValidateCurrentLine;
75486 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75487
75488 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75489 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75490 ,p_balance_type_code => l_balance_type_code);
75491
75492 END IF;
75493
75494 -----------------------------------------------------------------------------------------
75495 -- 4262811 Multiperiod Accounting
75496 -----------------------------------------------------------------------------------------
75497 -- No MPA option is assigned.
75498
75499
75500 END IF;
75501 END IF;
75502 --
75503
75507 (p_msg => 'END of AcctLineType_168'
75504 --
75505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75506 trace
75508 ,p_level => C_LEVEL_PROCEDURE
75509 ,p_module => l_log_module);
75510 END IF;
75511 --
75512 EXCEPTION
75513 WHEN xla_exceptions_pkg.application_exception THEN
75514 RAISE;
75515 WHEN OTHERS THEN
75516 xla_exceptions_pkg.raise_message
75517 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_168');
75518 END AcctLineType_168;
75519 --
75520
75521 ---------------------------------------
75522 --
75523 -- PRIVATE FUNCTION
75524 -- AcctLineType_169
75525 --
75526 ---------------------------------------
75527 PROCEDURE AcctLineType_169 (
75528 p_application_id IN NUMBER
75529 ,p_event_id IN NUMBER
75530 ,p_calculate_acctd_flag IN VARCHAR2
75531 ,p_calculate_g_l_flag IN VARCHAR2
75532 ,p_actual_flag IN OUT VARCHAR2
75533 ,p_balance_type_code OUT VARCHAR2
75534 ,p_gain_or_loss_ref OUT VARCHAR2
75535
75536 --Transaction Account
75537 , p_source_1 IN NUMBER
75538 --Journal Line Type
75539 , p_source_2 IN VARCHAR2
75540 --Entered Amount
75541 , p_source_3 IN NUMBER
75542 --Line Number
75543 , p_source_4 IN NUMBER
75544 --First Distribution Identifier
75545 , p_source_5 IN NUMBER
75546 --Distribution Type
75547 , p_source_6 IN VARCHAR2
75548 --Currency Code
75549 , p_source_7 IN VARCHAR2
75550 --Currency Conversion Date
75551 , p_source_8 IN DATE
75552 --Currency Conversion Rate
75553 , p_source_9 IN NUMBER
75554 --Currency Conversion Type
75555 , p_source_10 IN VARCHAR2
75556 --Accounted Amount
75557 , p_source_11 IN NUMBER
75558 )
75559 IS
75560
75561 l_component_type VARCHAR2(80);
75562 l_component_code VARCHAR2(30);
75563 l_component_type_code VARCHAR2(1);
75564 l_component_appl_id INTEGER;
75565 l_amb_context_code VARCHAR2(30);
75566 l_entity_code VARCHAR2(30);
75567 l_event_class_code VARCHAR2(30);
75568 l_ae_header_id NUMBER;
75569 l_event_type_code VARCHAR2(30);
75570 l_line_definition_code VARCHAR2(30);
75571 l_line_definition_owner_code VARCHAR2(1);
75572 --
75573 -- adr variables
75574 l_segment VARCHAR2(30);
75575 l_ccid NUMBER;
75576 l_adr_transaction_coa_id NUMBER;
75577 l_adr_accounting_coa_id NUMBER;
75578 l_adr_flexfield_segment_code VARCHAR2(30);
75579 l_adr_flex_value_set_id NUMBER;
75580 l_adr_value_type_code VARCHAR2(30);
75581 l_adr_value_combination_id NUMBER;
75582 l_adr_value_segment_code VARCHAR2(30);
75583
75584 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
75585 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
75586 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
75587 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
75588
75589 -- 4262811 Variables ------------------------------------------------------------------------------------------
75590 l_entered_amt_idx NUMBER;
75591 l_accted_amt_idx NUMBER;
75592 l_acc_rev_flag VARCHAR2(1);
75593 l_accrual_line_num NUMBER;
75594 l_tmp_amt NUMBER;
75595 l_acc_rev_natural_side_code VARCHAR2(1);
75596
75597 l_num_entries NUMBER;
75598 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
75599 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
75600 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
75601 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
75602 l_recog_line_1 NUMBER;
75603 l_recog_line_2 NUMBER;
75604
75605 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
75606 l_bflow_applied_to_amt NUMBER; -- 5132302
75607 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
75608
75609 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75610
75611 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
75612 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
75613
75614 ---------------------------------------------------------------------------------------------------------------
75615
75616
75617 --
75618 -- bulk performance
75619 --
75620 l_balance_type_code VARCHAR2(1);
75621 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
75622 l_log_module VARCHAR2(240);
75623
75624 --
75625 -- Upgrade strategy
75626 --
75627 l_actual_upg_option VARCHAR2(1);
75628 l_enc_upg_option VARCHAR2(1);
75629
75630 --
75631 BEGIN
75632 --
75633 IF g_log_enabled THEN
75634 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_169';
75635 END IF;
75636 --
75637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75638
75639 trace
75640 (p_msg => 'BEGIN of AcctLineType_169'
75641 ,p_level => C_LEVEL_PROCEDURE
75642 ,p_module => l_log_module);
75646 l_component_type := 'AMB_JLT';
75643
75644 END IF;
75645 --
75647 l_component_code := 'INV_SUB_FROM';
75648 l_component_type_code := 'S';
75649 l_component_appl_id := 555;
75650 l_amb_context_code := 'DEFAULT';
75651 l_entity_code := 'INVENTORY';
75652 l_event_class_code := 'SUBINV_XFER';
75653 l_event_type_code := 'SUBINV_XFER_ALL';
75654 l_line_definition_owner_code := 'S';
75655 l_line_definition_code := 'SUBINV_XFER';
75656 --
75657 l_balance_type_code := 'A';
75658 l_segment := NULL;
75659 l_ccid := NULL;
75660 l_adr_transaction_coa_id := NULL;
75661 l_adr_accounting_coa_id := NULL;
75662 l_adr_flexfield_segment_code := NULL;
75663 l_adr_flex_value_set_id := NULL;
75664 l_adr_value_type_code := NULL;
75665 l_adr_value_combination_id := NULL;
75666 l_adr_value_segment_code := NULL;
75667
75668 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
75669 l_bflow_class_code := ''; -- 4219869 Business Flow
75670 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
75671 l_budgetary_control_flag := 'N';
75672
75673 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75674 l_bflow_applied_to_amt := NULL; -- 5132302
75675 l_entered_amt_idx := NULL; -- 4262811
75676 l_accted_amt_idx := NULL; -- 4262811
75677 l_acc_rev_flag := NULL; -- 4262811
75678 l_accrual_line_num := NULL; -- 4262811
75679 l_tmp_amt := NULL; -- 4262811
75680 --
75681
75682 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75683 l_balance_type_code <> 'B' THEN
75684 IF (NVL(p_source_2,'
75685 ') = 'INV' AND
75686 p_source_3 < 0) OR
75687 (NVL(p_source_2,'
75688 ') = 'INV' AND
75689 NVL(p_source_3,9E125) = 0 AND
75690 NVL(p_source_4,9E125) = 1)
75691 THEN
75692
75693 --
75694 XLA_AE_LINES_PKG.SetNewLine;
75695
75696 p_balance_type_code := l_balance_type_code;
75697 -- set the flag so later we will know whether the gain loss line needs to be created
75698
75699 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75700 p_actual_flag :='A';
75701 END IF;
75702
75703 --
75704 -- bulk performance
75705 --
75706 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75707 p_header_num => 0); -- 4262811
75708 --
75709 -- set accounting line options
75710 --
75711 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75712 p_natural_side_code => 'D'
75713 , p_gain_or_loss_flag => 'N'
75714 , p_gl_transfer_mode_code => 'D'
75715 , p_acct_entry_type_code => 'A'
75716 , p_switch_side_flag => 'Y'
75717 , p_merge_duplicate_code => 'W'
75718 );
75719 --
75720 l_acc_rev_natural_side_code := 'C'; -- 4262811
75721 --
75722 --
75723 -- set accounting line type info
75724 --
75725 xla_ae_lines_pkg.SetAcctLineType
75726 (p_component_type => l_component_type
75727 ,p_event_type_code => l_event_type_code
75728 ,p_line_definition_owner_code => l_line_definition_owner_code
75729 ,p_line_definition_code => l_line_definition_code
75730 ,p_accounting_line_code => l_component_code
75731 ,p_accounting_line_type_code => l_component_type_code
75732 ,p_accounting_line_appl_id => l_component_appl_id
75733 ,p_amb_context_code => l_amb_context_code
75734 ,p_entity_code => l_entity_code
75735 ,p_event_class_code => l_event_class_code);
75736 --
75737 -- set accounting class
75738 --
75739 xla_ae_lines_pkg.SetAcctClass(
75740 p_accounting_class_code => 'XFR'
75741 , p_ae_header_id => l_ae_header_id
75742 );
75743
75744 --
75745 -- set rounding class
75746 --
75747 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75748 'XFR';
75749
75750 --
75751 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75752 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75753 --
75754 -- bulk performance
75755 --
75756 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75757
75758 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75759 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75760
75761 -- 4955764
75762 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75763 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75764
75765 -- 4458381 Public Sector Enh
75766
75767 --
75768 -- set accounting attributes for the line type
75769 --
75770 l_entered_amt_idx := 3;
75771 l_accted_amt_idx := 8;
75772 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75776 l_rec_acct_attrs.array_char_value(2) := p_source_6;
75773 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75774 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
75775 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75777 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75778 l_rec_acct_attrs.array_num_value(3) := p_source_3;
75779 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75780 l_rec_acct_attrs.array_char_value(4) := p_source_7;
75781 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75782 l_rec_acct_attrs.array_date_value(5) := p_source_8;
75783 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75784 l_rec_acct_attrs.array_num_value(6) := p_source_9;
75785 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75786 l_rec_acct_attrs.array_char_value(7) := p_source_10;
75787 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75788 l_rec_acct_attrs.array_num_value(8) := p_source_11;
75789
75790 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75791 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75792
75793 ---------------------------------------------------------------------------------------------------------------
75794 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75795 ---------------------------------------------------------------------------------------------------------------
75796 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75797
75798 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75799 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75800
75801 IF xla_accounting_cache_pkg.GetValueChar
75802 (p_source_code => 'LEDGER_CATEGORY_CODE'
75803 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75804 AND l_bflow_method_code = 'PRIOR_ENTRY'
75805 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75806 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75807 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75808 )
75809 THEN
75810 xla_ae_lines_pkg.BflowUpgEntry
75811 (p_business_method_code => l_bflow_method_code
75812 ,p_business_class_code => l_bflow_class_code
75813 ,p_balance_type => l_balance_type_code);
75814 ELSE
75815 NULL;
75816 -- No business flow processing for business flow method of NONE.
75817 END IF;
75818
75819 --
75820 -- call analytical criteria
75821 --
75822
75823 --
75824 -- call description
75825 --
75826 -- No description or it is inherited.
75827 --
75828 -- call ADRs
75829 -- Bug 4922099
75830 --
75831 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75832 (NVL(l_actual_upg_option, 'N') = 'O') OR
75833 (NVL(l_enc_upg_option, 'N') = 'O')
75834 )
75835 THEN
75836 NULL;
75837 --
75838 --
75839
75840 l_ccid := AcctDerRule_18(
75841 p_application_id => p_application_id
75842 , p_ae_header_id => l_ae_header_id
75843 , p_source_1 => p_source_1
75844 , p_source_2 => p_source_2
75845 , p_source_3 => p_source_3
75846 , p_source_4 => p_source_4
75847 , x_transaction_coa_id => l_adr_transaction_coa_id
75848 , x_accounting_coa_id => l_adr_accounting_coa_id
75849 , x_value_type_code => l_adr_value_type_code
75850 , p_side => 'NA'
75851 );
75852
75853 xla_ae_lines_pkg.set_ccid(
75854 p_code_combination_id => l_ccid
75855 , p_value_type_code => l_adr_value_type_code
75856 , p_transaction_coa_id => l_adr_transaction_coa_id
75857 , p_accounting_coa_id => l_adr_accounting_coa_id
75858 , p_adr_code => 'INV_SUB_FROM'
75859 , p_adr_type_code => 'S'
75860 , p_component_type => l_component_type
75861 , p_component_code => l_component_code
75862 , p_component_type_code => l_component_type_code
75863 , p_component_appl_id => l_component_appl_id
75864 , p_amb_context_code => l_amb_context_code
75865 , p_side => 'NA'
75866 );
75867
75868
75869 --
75870 --
75871 END IF;
75872 --
75873 -- Bug 4922099
75874 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75875 (NVL(l_enc_upg_option, 'N') = 'O')
75876 ) AND
75877 (l_bflow_method_code = 'PRIOR_ENTRY')
75878 )
75879 THEN
75880 IF
75881 --
75882 1 = 2
75883 --
75884 THEN
75885 xla_accounting_err_pkg.build_message
75886 (p_appli_s_name => 'XLA'
75887 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75888 ,p_token_1 => 'LINE_NUMBER'
75889 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
75893 ,l_component_code
75890 ,p_token_2 => 'LINE_TYPE_NAME'
75891 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
75892 l_component_type
75894 ,l_component_type_code
75895 ,l_component_appl_id
75896 ,l_amb_context_code
75897 ,l_entity_code
75898 ,l_event_class_code
75899 )
75900 ,p_token_3 => 'OWNER'
75901 ,p_value_3 => xla_lookups_pkg.get_meaning(
75902 p_lookup_type => 'XLA_OWNER_TYPE'
75903 ,p_lookup_code => l_component_type_code
75904 )
75905 ,p_token_4 => 'PRODUCT_NAME'
75906 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75907 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75908 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75909 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75910 ,p_ae_header_id => NULL
75911 );
75912
75913 IF (C_LEVEL_ERROR>= g_log_level) THEN
75914 trace
75915 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75916 ,p_level => C_LEVEL_ERROR
75917 ,p_module => l_log_module);
75918 END IF;
75919 END IF;
75920 END IF;
75921 --
75922 --
75923 ------------------------------------------------------------------------------------------------
75924 -- 4219869 Business Flow
75925 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75926 -- Prior Entry. Currently, the following code is always generated.
75927 ------------------------------------------------------------------------------------------------
75928 XLA_AE_LINES_PKG.ValidateCurrentLine;
75929
75930 ------------------------------------------------------------------------------------
75931 -- 4219869 Business Flow
75932 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75933 ------------------------------------------------------------------------------------
75934 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75935
75936 ----------------------------------------------------------------------------------
75937 -- 4219869 Business Flow
75938 -- Update journal entry status -- Need to generate this within IF <condition>
75939 ----------------------------------------------------------------------------------
75940 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75941 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75942 ,p_balance_type_code => l_balance_type_code
75943 );
75944
75945 -------------------------------------------------------------------------------------------
75946 -- 4262811 - Generate the Accrual Reversal lines
75947 -------------------------------------------------------------------------------------------
75948 BEGIN
75949 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75950 (g_array_event(p_event_id).array_value_num('header_index'));
75951 IF l_acc_rev_flag IS NULL THEN
75952 l_acc_rev_flag := 'N';
75953 END IF;
75954 EXCEPTION
75955 WHEN OTHERS THEN
75956 l_acc_rev_flag := 'N';
75957 END;
75958 --
75959 IF (l_acc_rev_flag = 'Y') THEN
75960
75961 -- 4645092 ------------------------------------------------------------------------------
75962 -- To allow MPA report to determine if it should generate report process
75963 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75964 ------------------------------------------------------------------------------------------
75965
75966 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75967 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75968 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
75969 -- call ADRs
75970 -- Bug 4922099
75971 --
75972 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75973 (NVL(l_actual_upg_option, 'N') = 'O') OR
75974 (NVL(l_enc_upg_option, 'N') = 'O')
75975 )
75976 THEN
75977 NULL;
75978 --
75979 --
75980
75981 l_ccid := AcctDerRule_18(
75982 p_application_id => p_application_id
75983 , p_ae_header_id => l_ae_header_id
75984 , p_source_1 => p_source_1
75988 , x_transaction_coa_id => l_adr_transaction_coa_id
75985 , p_source_2 => p_source_2
75986 , p_source_3 => p_source_3
75987 , p_source_4 => p_source_4
75989 , x_accounting_coa_id => l_adr_accounting_coa_id
75990 , x_value_type_code => l_adr_value_type_code
75991 , p_side => 'NA'
75992 );
75993
75994 xla_ae_lines_pkg.set_ccid(
75995 p_code_combination_id => l_ccid
75996 , p_value_type_code => l_adr_value_type_code
75997 , p_transaction_coa_id => l_adr_transaction_coa_id
75998 , p_accounting_coa_id => l_adr_accounting_coa_id
75999 , p_adr_code => 'INV_SUB_FROM'
76000 , p_adr_type_code => 'S'
76001 , p_component_type => l_component_type
76002 , p_component_code => l_component_code
76003 , p_component_type_code => l_component_type_code
76004 , p_component_appl_id => l_component_appl_id
76005 , p_amb_context_code => l_amb_context_code
76006 , p_side => 'NA'
76007 );
76008
76009
76010 --
76011 --
76012 END IF;
76013
76014 --
76015 -- Update the line information that should be overwritten
76016 --
76017 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76018 p_header_num => 1);
76019 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
76020
76021 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76022
76023 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
76024 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76025 END IF;
76026
76027 --
76028 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76029 --
76030 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76031 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
76032 ELSE
76033 ---------------------------------------------------------------------------------------------------
76034 -- 4262811a Switch Sign
76035 ---------------------------------------------------------------------------------------------------
76036 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
76037 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76038 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76039 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76040 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76041 -- 5132302
76042 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76043 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76044
76045 END IF;
76046
76047 -- 4955764
76048 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76049 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76050
76051
76052 XLA_AE_LINES_PKG.ValidateCurrentLine;
76053 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76054
76055 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76056 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76057 ,p_balance_type_code => l_balance_type_code);
76058
76059 END IF;
76060
76061 -----------------------------------------------------------------------------------------
76062 -- 4262811 Multiperiod Accounting
76063 -----------------------------------------------------------------------------------------
76064 -- No MPA option is assigned.
76065
76066
76067 END IF;
76068 END IF;
76069 --
76070
76071 --
76072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76073 trace
76074 (p_msg => 'END of AcctLineType_169'
76075 ,p_level => C_LEVEL_PROCEDURE
76076 ,p_module => l_log_module);
76077 END IF;
76078 --
76079 EXCEPTION
76080 WHEN xla_exceptions_pkg.application_exception THEN
76081 RAISE;
76082 WHEN OTHERS THEN
76083 xla_exceptions_pkg.raise_message
76084 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_169');
76085 END AcctLineType_169;
76086 --
76087
76088 ---------------------------------------
76089 --
76090 -- PRIVATE FUNCTION
76091 -- AcctLineType_170
76092 --
76093 ---------------------------------------
76094 PROCEDURE AcctLineType_170 (
76095 p_application_id IN NUMBER
76096 ,p_event_id IN NUMBER
76097 ,p_calculate_acctd_flag IN VARCHAR2
76098 ,p_calculate_g_l_flag IN VARCHAR2
76099 ,p_actual_flag IN OUT VARCHAR2
76100 ,p_balance_type_code OUT VARCHAR2
76101 ,p_gain_or_loss_ref OUT VARCHAR2
76102
76103 --Transaction Account
76104 , p_source_1 IN NUMBER
76105 --Journal Line Type
76106 , p_source_2 IN VARCHAR2
76110 , p_source_4 IN NUMBER
76107 --Entered Amount
76108 , p_source_3 IN NUMBER
76109 --Line Number
76111 --First Distribution Identifier
76112 , p_source_5 IN NUMBER
76113 --Distribution Type
76114 , p_source_6 IN VARCHAR2
76115 --Currency Code
76116 , p_source_7 IN VARCHAR2
76117 --Currency Conversion Date
76118 , p_source_8 IN DATE
76119 --Currency Conversion Rate
76120 , p_source_9 IN NUMBER
76121 --Currency Conversion Type
76122 , p_source_10 IN VARCHAR2
76123 --Accounted Amount
76124 , p_source_11 IN NUMBER
76125 )
76126 IS
76127
76128 l_component_type VARCHAR2(80);
76129 l_component_code VARCHAR2(30);
76130 l_component_type_code VARCHAR2(1);
76131 l_component_appl_id INTEGER;
76132 l_amb_context_code VARCHAR2(30);
76133 l_entity_code VARCHAR2(30);
76134 l_event_class_code VARCHAR2(30);
76135 l_ae_header_id NUMBER;
76136 l_event_type_code VARCHAR2(30);
76137 l_line_definition_code VARCHAR2(30);
76138 l_line_definition_owner_code VARCHAR2(1);
76139 --
76140 -- adr variables
76141 l_segment VARCHAR2(30);
76142 l_ccid NUMBER;
76143 l_adr_transaction_coa_id NUMBER;
76144 l_adr_accounting_coa_id NUMBER;
76145 l_adr_flexfield_segment_code VARCHAR2(30);
76146 l_adr_flex_value_set_id NUMBER;
76147 l_adr_value_type_code VARCHAR2(30);
76148 l_adr_value_combination_id NUMBER;
76149 l_adr_value_segment_code VARCHAR2(30);
76150
76151 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
76152 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
76153 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
76154 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
76155
76156 -- 4262811 Variables ------------------------------------------------------------------------------------------
76157 l_entered_amt_idx NUMBER;
76158 l_accted_amt_idx NUMBER;
76159 l_acc_rev_flag VARCHAR2(1);
76160 l_accrual_line_num NUMBER;
76161 l_tmp_amt NUMBER;
76162 l_acc_rev_natural_side_code VARCHAR2(1);
76163
76164 l_num_entries NUMBER;
76165 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
76166 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
76167 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
76168 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
76169 l_recog_line_1 NUMBER;
76170 l_recog_line_2 NUMBER;
76171
76172 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
76173 l_bflow_applied_to_amt NUMBER; -- 5132302
76174 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
76175
76176 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76177
76178 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
76179 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
76180
76181 ---------------------------------------------------------------------------------------------------------------
76182
76183
76184 --
76185 -- bulk performance
76186 --
76187 l_balance_type_code VARCHAR2(1);
76188 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
76189 l_log_module VARCHAR2(240);
76190
76191 --
76192 -- Upgrade strategy
76193 --
76194 l_actual_upg_option VARCHAR2(1);
76195 l_enc_upg_option VARCHAR2(1);
76196
76197 --
76198 BEGIN
76199 --
76200 IF g_log_enabled THEN
76201 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_170';
76202 END IF;
76203 --
76204 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76205
76206 trace
76207 (p_msg => 'BEGIN of AcctLineType_170'
76208 ,p_level => C_LEVEL_PROCEDURE
76209 ,p_module => l_log_module);
76210
76211 END IF;
76212 --
76213 l_component_type := 'AMB_JLT';
76214 l_component_code := 'INV_SUB_TO';
76215 l_component_type_code := 'S';
76216 l_component_appl_id := 555;
76217 l_amb_context_code := 'DEFAULT';
76218 l_entity_code := 'INVENTORY';
76219 l_event_class_code := 'SUBINV_XFER';
76220 l_event_type_code := 'SUBINV_XFER_ALL';
76221 l_line_definition_owner_code := 'S';
76222 l_line_definition_code := 'SUBINV_XFER';
76223 --
76224 l_balance_type_code := 'A';
76225 l_segment := NULL;
76226 l_ccid := NULL;
76227 l_adr_transaction_coa_id := NULL;
76228 l_adr_accounting_coa_id := NULL;
76229 l_adr_flexfield_segment_code := NULL;
76230 l_adr_flex_value_set_id := NULL;
76231 l_adr_value_type_code := NULL;
76232 l_adr_value_combination_id := NULL;
76233 l_adr_value_segment_code := NULL;
76234
76235 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
76236 l_bflow_class_code := ''; -- 4219869 Business Flow
76237 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
76238 l_budgetary_control_flag := 'N';
76239
76243 l_accted_amt_idx := NULL; -- 4262811
76240 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76241 l_bflow_applied_to_amt := NULL; -- 5132302
76242 l_entered_amt_idx := NULL; -- 4262811
76244 l_acc_rev_flag := NULL; -- 4262811
76245 l_accrual_line_num := NULL; -- 4262811
76246 l_tmp_amt := NULL; -- 4262811
76247 --
76248
76249 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76250 l_balance_type_code <> 'B' THEN
76251 IF (NVL(p_source_2,'
76252 ') = 'INV' AND
76253 p_source_3 > 0) OR
76254 (NVL(p_source_2,'
76255 ') = 'INV' AND
76256 NVL(p_source_3,9E125) = 0 AND
76257 NVL(p_source_4,9E125) = 2)
76258 THEN
76259
76260 --
76261 XLA_AE_LINES_PKG.SetNewLine;
76262
76263 p_balance_type_code := l_balance_type_code;
76264 -- set the flag so later we will know whether the gain loss line needs to be created
76265
76266 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76267 p_actual_flag :='A';
76268 END IF;
76269
76270 --
76271 -- bulk performance
76272 --
76273 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76274 p_header_num => 0); -- 4262811
76275 --
76276 -- set accounting line options
76277 --
76278 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76279 p_natural_side_code => 'D'
76280 , p_gain_or_loss_flag => 'N'
76281 , p_gl_transfer_mode_code => 'D'
76282 , p_acct_entry_type_code => 'A'
76283 , p_switch_side_flag => 'Y'
76284 , p_merge_duplicate_code => 'W'
76285 );
76286 --
76287 l_acc_rev_natural_side_code := 'C'; -- 4262811
76288 --
76289 --
76290 -- set accounting line type info
76291 --
76292 xla_ae_lines_pkg.SetAcctLineType
76293 (p_component_type => l_component_type
76294 ,p_event_type_code => l_event_type_code
76295 ,p_line_definition_owner_code => l_line_definition_owner_code
76296 ,p_line_definition_code => l_line_definition_code
76297 ,p_accounting_line_code => l_component_code
76298 ,p_accounting_line_type_code => l_component_type_code
76299 ,p_accounting_line_appl_id => l_component_appl_id
76300 ,p_amb_context_code => l_amb_context_code
76301 ,p_entity_code => l_entity_code
76302 ,p_event_class_code => l_event_class_code);
76303 --
76304 -- set accounting class
76305 --
76306 xla_ae_lines_pkg.SetAcctClass(
76307 p_accounting_class_code => 'XFR'
76308 , p_ae_header_id => l_ae_header_id
76309 );
76310
76311 --
76312 -- set rounding class
76313 --
76314 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76315 'XFR';
76316
76317 --
76318 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76319 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76320 --
76321 -- bulk performance
76322 --
76323 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76324
76325 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76326 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76327
76328 -- 4955764
76329 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76330 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76331
76332 -- 4458381 Public Sector Enh
76333
76334 --
76335 -- set accounting attributes for the line type
76336 --
76337 l_entered_amt_idx := 3;
76338 l_accted_amt_idx := 8;
76339 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76340 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
76341 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
76342 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
76343 l_rec_acct_attrs.array_char_value(2) := p_source_6;
76344 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
76345 l_rec_acct_attrs.array_num_value(3) := p_source_3;
76346 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
76347 l_rec_acct_attrs.array_char_value(4) := p_source_7;
76348 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
76349 l_rec_acct_attrs.array_date_value(5) := p_source_8;
76350 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
76351 l_rec_acct_attrs.array_num_value(6) := p_source_9;
76352 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
76353 l_rec_acct_attrs.array_char_value(7) := p_source_10;
76354 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
76355 l_rec_acct_attrs.array_num_value(8) := p_source_11;
76356
76357 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
76358 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
76359
76363 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
76360 ---------------------------------------------------------------------------------------------------------------
76361 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
76362 ---------------------------------------------------------------------------------------------------------------
76364
76365 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76366 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76367
76368 IF xla_accounting_cache_pkg.GetValueChar
76369 (p_source_code => 'LEDGER_CATEGORY_CODE'
76370 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
76371 AND l_bflow_method_code = 'PRIOR_ENTRY'
76372 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
76373 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
76374 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
76375 )
76376 THEN
76377 xla_ae_lines_pkg.BflowUpgEntry
76378 (p_business_method_code => l_bflow_method_code
76379 ,p_business_class_code => l_bflow_class_code
76380 ,p_balance_type => l_balance_type_code);
76381 ELSE
76382 NULL;
76383 -- No business flow processing for business flow method of NONE.
76384 END IF;
76385
76386 --
76387 -- call analytical criteria
76388 --
76389
76390 --
76391 -- call description
76392 --
76393 -- No description or it is inherited.
76394 --
76395 -- call ADRs
76396 -- Bug 4922099
76397 --
76398 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76399 (NVL(l_actual_upg_option, 'N') = 'O') OR
76400 (NVL(l_enc_upg_option, 'N') = 'O')
76401 )
76402 THEN
76403 NULL;
76404 --
76405 --
76406
76407 l_ccid := AcctDerRule_19(
76408 p_application_id => p_application_id
76409 , p_ae_header_id => l_ae_header_id
76410 , p_source_1 => p_source_1
76411 , p_source_2 => p_source_2
76412 , p_source_3 => p_source_3
76413 , p_source_4 => p_source_4
76414 , x_transaction_coa_id => l_adr_transaction_coa_id
76415 , x_accounting_coa_id => l_adr_accounting_coa_id
76416 , x_value_type_code => l_adr_value_type_code
76417 , p_side => 'NA'
76418 );
76419
76420 xla_ae_lines_pkg.set_ccid(
76421 p_code_combination_id => l_ccid
76422 , p_value_type_code => l_adr_value_type_code
76423 , p_transaction_coa_id => l_adr_transaction_coa_id
76424 , p_accounting_coa_id => l_adr_accounting_coa_id
76425 , p_adr_code => 'INV_SUB_TO'
76426 , p_adr_type_code => 'S'
76427 , p_component_type => l_component_type
76428 , p_component_code => l_component_code
76429 , p_component_type_code => l_component_type_code
76430 , p_component_appl_id => l_component_appl_id
76431 , p_amb_context_code => l_amb_context_code
76432 , p_side => 'NA'
76433 );
76434
76435
76436 --
76437 --
76438 END IF;
76439 --
76440 -- Bug 4922099
76441 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
76442 (NVL(l_enc_upg_option, 'N') = 'O')
76443 ) AND
76444 (l_bflow_method_code = 'PRIOR_ENTRY')
76445 )
76446 THEN
76447 IF
76448 --
76449 1 = 2
76450 --
76451 THEN
76452 xla_accounting_err_pkg.build_message
76453 (p_appli_s_name => 'XLA'
76454 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76455 ,p_token_1 => 'LINE_NUMBER'
76456 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
76457 ,p_token_2 => 'LINE_TYPE_NAME'
76458 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
76459 l_component_type
76460 ,l_component_code
76461 ,l_component_type_code
76462 ,l_component_appl_id
76463 ,l_amb_context_code
76464 ,l_entity_code
76465 ,l_event_class_code
76466 )
76467 ,p_token_3 => 'OWNER'
76468 ,p_value_3 => xla_lookups_pkg.get_meaning(
76469 p_lookup_type => 'XLA_OWNER_TYPE'
76473 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76470 ,p_lookup_code => l_component_type_code
76471 )
76472 ,p_token_4 => 'PRODUCT_NAME'
76474 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76475 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76476 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76477 ,p_ae_header_id => NULL
76478 );
76479
76480 IF (C_LEVEL_ERROR>= g_log_level) THEN
76481 trace
76482 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76483 ,p_level => C_LEVEL_ERROR
76484 ,p_module => l_log_module);
76485 END IF;
76486 END IF;
76487 END IF;
76488 --
76489 --
76490 ------------------------------------------------------------------------------------------------
76491 -- 4219869 Business Flow
76492 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76493 -- Prior Entry. Currently, the following code is always generated.
76494 ------------------------------------------------------------------------------------------------
76495 XLA_AE_LINES_PKG.ValidateCurrentLine;
76496
76497 ------------------------------------------------------------------------------------
76498 -- 4219869 Business Flow
76499 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76500 ------------------------------------------------------------------------------------
76501 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76502
76503 ----------------------------------------------------------------------------------
76504 -- 4219869 Business Flow
76505 -- Update journal entry status -- Need to generate this within IF <condition>
76506 ----------------------------------------------------------------------------------
76507 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76508 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76509 ,p_balance_type_code => l_balance_type_code
76510 );
76511
76512 -------------------------------------------------------------------------------------------
76513 -- 4262811 - Generate the Accrual Reversal lines
76514 -------------------------------------------------------------------------------------------
76515 BEGIN
76516 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76517 (g_array_event(p_event_id).array_value_num('header_index'));
76518 IF l_acc_rev_flag IS NULL THEN
76519 l_acc_rev_flag := 'N';
76520 END IF;
76521 EXCEPTION
76522 WHEN OTHERS THEN
76523 l_acc_rev_flag := 'N';
76524 END;
76525 --
76526 IF (l_acc_rev_flag = 'Y') THEN
76527
76528 -- 4645092 ------------------------------------------------------------------------------
76529 -- To allow MPA report to determine if it should generate report process
76530 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76531 ------------------------------------------------------------------------------------------
76532
76533 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76534 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76535 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
76536 -- call ADRs
76537 -- Bug 4922099
76538 --
76539 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76540 (NVL(l_actual_upg_option, 'N') = 'O') OR
76541 (NVL(l_enc_upg_option, 'N') = 'O')
76542 )
76543 THEN
76544 NULL;
76545 --
76546 --
76547
76548 l_ccid := AcctDerRule_19(
76549 p_application_id => p_application_id
76550 , p_ae_header_id => l_ae_header_id
76551 , p_source_1 => p_source_1
76552 , p_source_2 => p_source_2
76553 , p_source_3 => p_source_3
76554 , p_source_4 => p_source_4
76555 , x_transaction_coa_id => l_adr_transaction_coa_id
76556 , x_accounting_coa_id => l_adr_accounting_coa_id
76557 , x_value_type_code => l_adr_value_type_code
76558 , p_side => 'NA'
76559 );
76560
76561 xla_ae_lines_pkg.set_ccid(
76562 p_code_combination_id => l_ccid
76563 , p_value_type_code => l_adr_value_type_code
76564 , p_transaction_coa_id => l_adr_transaction_coa_id
76565 , p_accounting_coa_id => l_adr_accounting_coa_id
76566 , p_adr_code => 'INV_SUB_TO'
76567 , p_adr_type_code => 'S'
76568 , p_component_type => l_component_type
76569 , p_component_code => l_component_code
76570 , p_component_type_code => l_component_type_code
76571 , p_component_appl_id => l_component_appl_id
76572 , p_amb_context_code => l_amb_context_code
76573 , p_side => 'NA'
76574 );
76575
76576
76577 --
76578 --
76579 END IF;
76580
76581 --
76585 p_header_num => 1);
76582 -- Update the line information that should be overwritten
76583 --
76584 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76586 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
76587
76588 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76589
76590 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
76591 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76592 END IF;
76593
76594 --
76595 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76596 --
76597 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76598 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
76599 ELSE
76600 ---------------------------------------------------------------------------------------------------
76601 -- 4262811a Switch Sign
76602 ---------------------------------------------------------------------------------------------------
76603 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
76604 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76605 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76606 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76607 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76608 -- 5132302
76609 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76610 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76611
76612 END IF;
76613
76614 -- 4955764
76615 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76616 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76617
76618
76619 XLA_AE_LINES_PKG.ValidateCurrentLine;
76620 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76621
76622 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76623 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76624 ,p_balance_type_code => l_balance_type_code);
76625
76626 END IF;
76627
76628 -----------------------------------------------------------------------------------------
76629 -- 4262811 Multiperiod Accounting
76630 -----------------------------------------------------------------------------------------
76631 -- No MPA option is assigned.
76632
76633
76634 END IF;
76635 END IF;
76636 --
76637
76638 --
76639 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76640 trace
76641 (p_msg => 'END of AcctLineType_170'
76642 ,p_level => C_LEVEL_PROCEDURE
76643 ,p_module => l_log_module);
76644 END IF;
76645 --
76646 EXCEPTION
76647 WHEN xla_exceptions_pkg.application_exception THEN
76648 RAISE;
76649 WHEN OTHERS THEN
76650 xla_exceptions_pkg.raise_message
76651 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_170');
76652 END AcctLineType_170;
76653 --
76654
76655 ---------------------------------------
76656 --
76657 -- PRIVATE FUNCTION
76658 -- AcctLineType_171
76659 --
76660 ---------------------------------------
76661 PROCEDURE AcctLineType_171 (
76662 p_application_id IN NUMBER
76663 ,p_event_id IN NUMBER
76664 ,p_calculate_acctd_flag IN VARCHAR2
76665 ,p_calculate_g_l_flag IN VARCHAR2
76666 ,p_actual_flag IN OUT VARCHAR2
76667 ,p_balance_type_code OUT VARCHAR2
76668 ,p_gain_or_loss_ref OUT VARCHAR2
76669
76670 --Transaction Account
76671 , p_source_1 IN NUMBER
76672 --Journal Line Type
76673 , p_source_2 IN VARCHAR2
76674 --Entered Amount
76675 , p_source_3 IN NUMBER
76676 --First Distribution Identifier
76677 , p_source_5 IN NUMBER
76678 --Distribution Type
76679 , p_source_6 IN VARCHAR2
76680 --Currency Code
76681 , p_source_7 IN VARCHAR2
76682 --Currency Conversion Date
76683 , p_source_8 IN DATE
76684 --Currency Conversion Rate
76685 , p_source_9 IN NUMBER
76686 --Currency Conversion Type
76687 , p_source_10 IN VARCHAR2
76688 --Accounted Amount
76689 , p_source_11 IN NUMBER
76690 )
76691 IS
76692
76693 l_component_type VARCHAR2(80);
76694 l_component_code VARCHAR2(30);
76695 l_component_type_code VARCHAR2(1);
76696 l_component_appl_id INTEGER;
76697 l_amb_context_code VARCHAR2(30);
76698 l_entity_code VARCHAR2(30);
76699 l_event_class_code VARCHAR2(30);
76700 l_ae_header_id NUMBER;
76701 l_event_type_code VARCHAR2(30);
76702 l_line_definition_code VARCHAR2(30);
76703 l_line_definition_owner_code VARCHAR2(1);
76704 --
76705 -- adr variables
76706 l_segment VARCHAR2(30);
76710 l_adr_flexfield_segment_code VARCHAR2(30);
76707 l_ccid NUMBER;
76708 l_adr_transaction_coa_id NUMBER;
76709 l_adr_accounting_coa_id NUMBER;
76711 l_adr_flex_value_set_id NUMBER;
76712 l_adr_value_type_code VARCHAR2(30);
76713 l_adr_value_combination_id NUMBER;
76714 l_adr_value_segment_code VARCHAR2(30);
76715
76716 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
76717 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
76718 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
76719 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
76720
76721 -- 4262811 Variables ------------------------------------------------------------------------------------------
76722 l_entered_amt_idx NUMBER;
76723 l_accted_amt_idx NUMBER;
76724 l_acc_rev_flag VARCHAR2(1);
76725 l_accrual_line_num NUMBER;
76726 l_tmp_amt NUMBER;
76727 l_acc_rev_natural_side_code VARCHAR2(1);
76728
76729 l_num_entries NUMBER;
76730 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
76731 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
76732 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
76733 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
76734 l_recog_line_1 NUMBER;
76735 l_recog_line_2 NUMBER;
76736
76737 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
76738 l_bflow_applied_to_amt NUMBER; -- 5132302
76739 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
76740
76741 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76742
76743 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
76744 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
76745
76746 ---------------------------------------------------------------------------------------------------------------
76747
76748
76749 --
76750 -- bulk performance
76751 --
76752 l_balance_type_code VARCHAR2(1);
76753 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
76754 l_log_module VARCHAR2(240);
76755
76756 --
76757 -- Upgrade strategy
76758 --
76759 l_actual_upg_option VARCHAR2(1);
76760 l_enc_upg_option VARCHAR2(1);
76761
76762 --
76763 BEGIN
76764 --
76765 IF g_log_enabled THEN
76766 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_171';
76767 END IF;
76768 --
76769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76770
76771 trace
76772 (p_msg => 'BEGIN of AcctLineType_171'
76773 ,p_level => C_LEVEL_PROCEDURE
76774 ,p_module => l_log_module);
76775
76776 END IF;
76777 --
76778 l_component_type := 'AMB_JLT';
76779 l_component_code := 'IOP';
76780 l_component_type_code := 'S';
76781 l_component_appl_id := 555;
76782 l_amb_context_code := 'DEFAULT';
76783 l_entity_code := 'INVENTORY';
76784 l_event_class_code := 'DIR_INTERORG_RCPT';
76785 l_event_type_code := 'DIR_INTERORG_RCPT_TP';
76786 l_line_definition_owner_code := 'S';
76787 l_line_definition_code := 'DIRECT_XFER_RECV_TP';
76788 --
76789 l_balance_type_code := 'A';
76790 l_segment := NULL;
76791 l_ccid := NULL;
76792 l_adr_transaction_coa_id := NULL;
76793 l_adr_accounting_coa_id := NULL;
76794 l_adr_flexfield_segment_code := NULL;
76795 l_adr_flex_value_set_id := NULL;
76796 l_adr_value_type_code := NULL;
76797 l_adr_value_combination_id := NULL;
76798 l_adr_value_segment_code := NULL;
76799
76800 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
76801 l_bflow_class_code := ''; -- 4219869 Business Flow
76802 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
76803 l_budgetary_control_flag := 'N';
76804
76805 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76806 l_bflow_applied_to_amt := NULL; -- 5132302
76807 l_entered_amt_idx := NULL; -- 4262811
76808 l_accted_amt_idx := NULL; -- 4262811
76809 l_acc_rev_flag := NULL; -- 4262811
76810 l_accrual_line_num := NULL; -- 4262811
76811 l_tmp_amt := NULL; -- 4262811
76812 --
76813
76814 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76815 l_balance_type_code <> 'B' THEN
76816 IF NVL(p_source_2,'
76817 ') = 'IOP'
76818 THEN
76819
76820 --
76821 XLA_AE_LINES_PKG.SetNewLine;
76822
76823 p_balance_type_code := l_balance_type_code;
76824 -- set the flag so later we will know whether the gain loss line needs to be created
76825
76826 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76827 p_actual_flag :='A';
76828 END IF;
76829
76830 --
76831 -- bulk performance
76832 --
76833 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76834 p_header_num => 0); -- 4262811
76838 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76835 --
76836 -- set accounting line options
76837 --
76839 p_natural_side_code => 'D'
76840 , p_gain_or_loss_flag => 'N'
76841 , p_gl_transfer_mode_code => 'D'
76842 , p_acct_entry_type_code => 'A'
76843 , p_switch_side_flag => 'Y'
76844 , p_merge_duplicate_code => 'W'
76845 );
76846 --
76847 l_acc_rev_natural_side_code := 'C'; -- 4262811
76848 --
76849 --
76850 -- set accounting line type info
76851 --
76852 xla_ae_lines_pkg.SetAcctLineType
76853 (p_component_type => l_component_type
76854 ,p_event_type_code => l_event_type_code
76855 ,p_line_definition_owner_code => l_line_definition_owner_code
76856 ,p_line_definition_code => l_line_definition_code
76857 ,p_accounting_line_code => l_component_code
76858 ,p_accounting_line_type_code => l_component_type_code
76859 ,p_accounting_line_appl_id => l_component_appl_id
76860 ,p_amb_context_code => l_amb_context_code
76861 ,p_entity_code => l_entity_code
76862 ,p_event_class_code => l_event_class_code);
76863 --
76864 -- set accounting class
76865 --
76866 xla_ae_lines_pkg.SetAcctClass(
76867 p_accounting_class_code => 'INTERORG_PAYABLES'
76868 , p_ae_header_id => l_ae_header_id
76869 );
76870
76871 --
76872 -- set rounding class
76873 --
76874 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76875 'INTERORG_PAYABLES';
76876
76877 --
76878 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76879 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76880 --
76881 -- bulk performance
76882 --
76883 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76884
76885 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76886 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76887
76888 -- 4955764
76889 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76890 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76891
76892 -- 4458381 Public Sector Enh
76893
76894 --
76895 -- set accounting attributes for the line type
76896 --
76897 l_entered_amt_idx := 3;
76898 l_accted_amt_idx := 8;
76899 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76900 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
76901 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
76902 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
76903 l_rec_acct_attrs.array_char_value(2) := p_source_6;
76904 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
76905 l_rec_acct_attrs.array_num_value(3) := p_source_3;
76906 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
76907 l_rec_acct_attrs.array_char_value(4) := p_source_7;
76908 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
76909 l_rec_acct_attrs.array_date_value(5) := p_source_8;
76910 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
76911 l_rec_acct_attrs.array_num_value(6) := p_source_9;
76912 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
76913 l_rec_acct_attrs.array_char_value(7) := p_source_10;
76914 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
76915 l_rec_acct_attrs.array_num_value(8) := p_source_11;
76916
76917 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
76918 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
76919
76920 ---------------------------------------------------------------------------------------------------------------
76921 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
76922 ---------------------------------------------------------------------------------------------------------------
76923 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
76924
76925 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76926 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
76927
76928 IF xla_accounting_cache_pkg.GetValueChar
76929 (p_source_code => 'LEDGER_CATEGORY_CODE'
76930 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
76931 AND l_bflow_method_code = 'PRIOR_ENTRY'
76932 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
76933 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
76934 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
76935 )
76936 THEN
76937 xla_ae_lines_pkg.BflowUpgEntry
76938 (p_business_method_code => l_bflow_method_code
76939 ,p_business_class_code => l_bflow_class_code
76940 ,p_balance_type => l_balance_type_code);
76941 ELSE
76945
76942 NULL;
76943 -- No business flow processing for business flow method of NONE.
76944 END IF;
76946 --
76947 -- call analytical criteria
76948 --
76949
76950 --
76951 -- call description
76952 --
76953 -- No description or it is inherited.
76954 --
76955 -- call ADRs
76956 -- Bug 4922099
76957 --
76958 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76959 (NVL(l_actual_upg_option, 'N') = 'O') OR
76960 (NVL(l_enc_upg_option, 'N') = 'O')
76961 )
76962 THEN
76963 NULL;
76964 --
76965 --
76966
76967 l_ccid := AcctDerRule_20(
76968 p_application_id => p_application_id
76969 , p_ae_header_id => l_ae_header_id
76970 , p_source_1 => p_source_1
76971 , p_source_2 => p_source_2
76972 , x_transaction_coa_id => l_adr_transaction_coa_id
76973 , x_accounting_coa_id => l_adr_accounting_coa_id
76974 , x_value_type_code => l_adr_value_type_code
76975 , p_side => 'NA'
76976 );
76977
76978 xla_ae_lines_pkg.set_ccid(
76979 p_code_combination_id => l_ccid
76980 , p_value_type_code => l_adr_value_type_code
76981 , p_transaction_coa_id => l_adr_transaction_coa_id
76982 , p_accounting_coa_id => l_adr_accounting_coa_id
76983 , p_adr_code => 'IOP'
76984 , p_adr_type_code => 'S'
76985 , p_component_type => l_component_type
76986 , p_component_code => l_component_code
76987 , p_component_type_code => l_component_type_code
76988 , p_component_appl_id => l_component_appl_id
76989 , p_amb_context_code => l_amb_context_code
76990 , p_side => 'NA'
76991 );
76992
76993
76994 --
76995 --
76996 END IF;
76997 --
76998 -- Bug 4922099
76999 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77000 (NVL(l_enc_upg_option, 'N') = 'O')
77001 ) AND
77002 (l_bflow_method_code = 'PRIOR_ENTRY')
77003 )
77004 THEN
77005 IF
77006 --
77007 1 = 2
77008 --
77009 THEN
77010 xla_accounting_err_pkg.build_message
77011 (p_appli_s_name => 'XLA'
77012 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77013 ,p_token_1 => 'LINE_NUMBER'
77014 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
77015 ,p_token_2 => 'LINE_TYPE_NAME'
77016 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
77017 l_component_type
77018 ,l_component_code
77019 ,l_component_type_code
77020 ,l_component_appl_id
77021 ,l_amb_context_code
77022 ,l_entity_code
77023 ,l_event_class_code
77024 )
77025 ,p_token_3 => 'OWNER'
77026 ,p_value_3 => xla_lookups_pkg.get_meaning(
77027 p_lookup_type => 'XLA_OWNER_TYPE'
77028 ,p_lookup_code => l_component_type_code
77029 )
77030 ,p_token_4 => 'PRODUCT_NAME'
77031 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77032 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77033 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77034 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77035 ,p_ae_header_id => NULL
77036 );
77037
77038 IF (C_LEVEL_ERROR>= g_log_level) THEN
77039 trace
77040 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77041 ,p_level => C_LEVEL_ERROR
77042 ,p_module => l_log_module);
77043 END IF;
77044 END IF;
77045 END IF;
77046 --
77047 --
77048 ------------------------------------------------------------------------------------------------
77049 -- 4219869 Business Flow
77050 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77051 -- Prior Entry. Currently, the following code is always generated.
77052 ------------------------------------------------------------------------------------------------
77053 XLA_AE_LINES_PKG.ValidateCurrentLine;
77057 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77054
77055 ------------------------------------------------------------------------------------
77056 -- 4219869 Business Flow
77058 ------------------------------------------------------------------------------------
77059 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77060
77061 ----------------------------------------------------------------------------------
77062 -- 4219869 Business Flow
77063 -- Update journal entry status -- Need to generate this within IF <condition>
77064 ----------------------------------------------------------------------------------
77065 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77066 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77067 ,p_balance_type_code => l_balance_type_code
77068 );
77069
77070 -------------------------------------------------------------------------------------------
77071 -- 4262811 - Generate the Accrual Reversal lines
77072 -------------------------------------------------------------------------------------------
77073 BEGIN
77074 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77075 (g_array_event(p_event_id).array_value_num('header_index'));
77076 IF l_acc_rev_flag IS NULL THEN
77077 l_acc_rev_flag := 'N';
77078 END IF;
77079 EXCEPTION
77080 WHEN OTHERS THEN
77081 l_acc_rev_flag := 'N';
77082 END;
77083 --
77084 IF (l_acc_rev_flag = 'Y') THEN
77085
77086 -- 4645092 ------------------------------------------------------------------------------
77087 -- To allow MPA report to determine if it should generate report process
77088 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77089 ------------------------------------------------------------------------------------------
77090
77091 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77092 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77093 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
77094 -- call ADRs
77095 -- Bug 4922099
77096 --
77097 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77098 (NVL(l_actual_upg_option, 'N') = 'O') OR
77099 (NVL(l_enc_upg_option, 'N') = 'O')
77100 )
77101 THEN
77102 NULL;
77103 --
77104 --
77105
77106 l_ccid := AcctDerRule_20(
77107 p_application_id => p_application_id
77108 , p_ae_header_id => l_ae_header_id
77109 , p_source_1 => p_source_1
77110 , p_source_2 => p_source_2
77111 , x_transaction_coa_id => l_adr_transaction_coa_id
77112 , x_accounting_coa_id => l_adr_accounting_coa_id
77113 , x_value_type_code => l_adr_value_type_code
77114 , p_side => 'NA'
77115 );
77116
77117 xla_ae_lines_pkg.set_ccid(
77118 p_code_combination_id => l_ccid
77119 , p_value_type_code => l_adr_value_type_code
77120 , p_transaction_coa_id => l_adr_transaction_coa_id
77121 , p_accounting_coa_id => l_adr_accounting_coa_id
77122 , p_adr_code => 'IOP'
77123 , p_adr_type_code => 'S'
77124 , p_component_type => l_component_type
77125 , p_component_code => l_component_code
77126 , p_component_type_code => l_component_type_code
77127 , p_component_appl_id => l_component_appl_id
77128 , p_amb_context_code => l_amb_context_code
77129 , p_side => 'NA'
77130 );
77131
77132
77133 --
77134 --
77135 END IF;
77136
77137 --
77138 -- Update the line information that should be overwritten
77139 --
77140 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77141 p_header_num => 1);
77142 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
77143
77144 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77145
77146 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
77147 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77148 END IF;
77149
77150 --
77151 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77152 --
77153 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77154 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
77155 ELSE
77156 ---------------------------------------------------------------------------------------------------
77157 -- 4262811a Switch Sign
77158 ---------------------------------------------------------------------------------------------------
77159 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
77160 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77161 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77162 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77166 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77163 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77164 -- 5132302
77165 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77167
77168 END IF;
77169
77170 -- 4955764
77171 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77172 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77173
77174
77175 XLA_AE_LINES_PKG.ValidateCurrentLine;
77176 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77177
77178 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77179 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77180 ,p_balance_type_code => l_balance_type_code);
77181
77182 END IF;
77183
77184 -----------------------------------------------------------------------------------------
77185 -- 4262811 Multiperiod Accounting
77186 -----------------------------------------------------------------------------------------
77187 -- No MPA option is assigned.
77188
77189
77190 END IF;
77191 END IF;
77192 --
77193
77194 --
77195 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77196 trace
77197 (p_msg => 'END of AcctLineType_171'
77198 ,p_level => C_LEVEL_PROCEDURE
77199 ,p_module => l_log_module);
77200 END IF;
77201 --
77202 EXCEPTION
77203 WHEN xla_exceptions_pkg.application_exception THEN
77204 RAISE;
77205 WHEN OTHERS THEN
77206 xla_exceptions_pkg.raise_message
77207 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_171');
77208 END AcctLineType_171;
77209 --
77210
77211 ---------------------------------------
77212 --
77213 -- PRIVATE FUNCTION
77214 -- AcctLineType_172
77215 --
77216 ---------------------------------------
77217 PROCEDURE AcctLineType_172 (
77218 p_application_id IN NUMBER
77219 ,p_event_id IN NUMBER
77220 ,p_calculate_acctd_flag IN VARCHAR2
77221 ,p_calculate_g_l_flag IN VARCHAR2
77222 ,p_actual_flag IN OUT VARCHAR2
77223 ,p_balance_type_code OUT VARCHAR2
77224 ,p_gain_or_loss_ref OUT VARCHAR2
77225
77226 --Transaction Account
77227 , p_source_1 IN NUMBER
77228 --Journal Line Type
77229 , p_source_2 IN VARCHAR2
77230 --Entered Amount
77231 , p_source_3 IN NUMBER
77232 --First Distribution Identifier
77233 , p_source_5 IN NUMBER
77234 --Distribution Type
77235 , p_source_6 IN VARCHAR2
77236 --Currency Code
77237 , p_source_7 IN VARCHAR2
77238 --Currency Conversion Date
77239 , p_source_8 IN DATE
77240 --Currency Conversion Rate
77241 , p_source_9 IN NUMBER
77242 --Currency Conversion Type
77243 , p_source_10 IN VARCHAR2
77244 --Accounted Amount
77245 , p_source_11 IN NUMBER
77246 )
77247 IS
77248
77249 l_component_type VARCHAR2(80);
77250 l_component_code VARCHAR2(30);
77251 l_component_type_code VARCHAR2(1);
77252 l_component_appl_id INTEGER;
77253 l_amb_context_code VARCHAR2(30);
77254 l_entity_code VARCHAR2(30);
77255 l_event_class_code VARCHAR2(30);
77256 l_ae_header_id NUMBER;
77257 l_event_type_code VARCHAR2(30);
77258 l_line_definition_code VARCHAR2(30);
77259 l_line_definition_owner_code VARCHAR2(1);
77260 --
77261 -- adr variables
77262 l_segment VARCHAR2(30);
77263 l_ccid NUMBER;
77264 l_adr_transaction_coa_id NUMBER;
77265 l_adr_accounting_coa_id NUMBER;
77266 l_adr_flexfield_segment_code VARCHAR2(30);
77267 l_adr_flex_value_set_id NUMBER;
77268 l_adr_value_type_code VARCHAR2(30);
77269 l_adr_value_combination_id NUMBER;
77270 l_adr_value_segment_code VARCHAR2(30);
77271
77272 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
77273 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
77274 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
77275 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
77276
77277 -- 4262811 Variables ------------------------------------------------------------------------------------------
77278 l_entered_amt_idx NUMBER;
77279 l_accted_amt_idx NUMBER;
77280 l_acc_rev_flag VARCHAR2(1);
77281 l_accrual_line_num NUMBER;
77282 l_tmp_amt NUMBER;
77283 l_acc_rev_natural_side_code VARCHAR2(1);
77284
77285 l_num_entries NUMBER;
77286 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
77287 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
77288 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
77289 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
77290 l_recog_line_1 NUMBER;
77291 l_recog_line_2 NUMBER;
77292
77293 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
77294 l_bflow_applied_to_amt NUMBER; -- 5132302
77298
77295 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
77296
77297 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77299 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
77300 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
77301
77302 ---------------------------------------------------------------------------------------------------------------
77303
77304
77305 --
77306 -- bulk performance
77307 --
77308 l_balance_type_code VARCHAR2(1);
77309 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
77310 l_log_module VARCHAR2(240);
77311
77312 --
77313 -- Upgrade strategy
77314 --
77315 l_actual_upg_option VARCHAR2(1);
77316 l_enc_upg_option VARCHAR2(1);
77317
77318 --
77319 BEGIN
77320 --
77321 IF g_log_enabled THEN
77322 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_172';
77323 END IF;
77324 --
77325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77326
77327 trace
77328 (p_msg => 'BEGIN of AcctLineType_172'
77329 ,p_level => C_LEVEL_PROCEDURE
77330 ,p_module => l_log_module);
77331
77332 END IF;
77333 --
77334 l_component_type := 'AMB_JLT';
77335 l_component_code := 'IOP';
77336 l_component_type_code := 'S';
77337 l_component_appl_id := 555;
77338 l_amb_context_code := 'DEFAULT';
77339 l_entity_code := 'INVENTORY';
77340 l_event_class_code := 'INT_ORDER_TO_EXP';
77341 l_event_type_code := 'EXP_REQ_RCPT';
77342 l_line_definition_owner_code := 'S';
77343 l_line_definition_code := 'EXP_REQ_RCPT';
77344 --
77345 l_balance_type_code := 'A';
77346 l_segment := NULL;
77347 l_ccid := NULL;
77348 l_adr_transaction_coa_id := NULL;
77349 l_adr_accounting_coa_id := NULL;
77350 l_adr_flexfield_segment_code := NULL;
77351 l_adr_flex_value_set_id := NULL;
77352 l_adr_value_type_code := NULL;
77353 l_adr_value_combination_id := NULL;
77354 l_adr_value_segment_code := NULL;
77355
77356 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
77357 l_bflow_class_code := ''; -- 4219869 Business Flow
77358 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
77359 l_budgetary_control_flag := 'N';
77360
77361 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77362 l_bflow_applied_to_amt := NULL; -- 5132302
77363 l_entered_amt_idx := NULL; -- 4262811
77364 l_accted_amt_idx := NULL; -- 4262811
77365 l_acc_rev_flag := NULL; -- 4262811
77366 l_accrual_line_num := NULL; -- 4262811
77367 l_tmp_amt := NULL; -- 4262811
77368 --
77369
77370 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77371 l_balance_type_code <> 'B' THEN
77372 IF NVL(p_source_2,'
77373 ') = 'IOP'
77374 THEN
77375
77376 --
77377 XLA_AE_LINES_PKG.SetNewLine;
77378
77379 p_balance_type_code := l_balance_type_code;
77380 -- set the flag so later we will know whether the gain loss line needs to be created
77381
77382 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77383 p_actual_flag :='A';
77384 END IF;
77385
77386 --
77387 -- bulk performance
77388 --
77389 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77390 p_header_num => 0); -- 4262811
77391 --
77392 -- set accounting line options
77393 --
77394 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77395 p_natural_side_code => 'D'
77396 , p_gain_or_loss_flag => 'N'
77397 , p_gl_transfer_mode_code => 'D'
77398 , p_acct_entry_type_code => 'A'
77399 , p_switch_side_flag => 'Y'
77400 , p_merge_duplicate_code => 'W'
77401 );
77402 --
77403 l_acc_rev_natural_side_code := 'C'; -- 4262811
77404 --
77405 --
77406 -- set accounting line type info
77407 --
77408 xla_ae_lines_pkg.SetAcctLineType
77409 (p_component_type => l_component_type
77410 ,p_event_type_code => l_event_type_code
77411 ,p_line_definition_owner_code => l_line_definition_owner_code
77412 ,p_line_definition_code => l_line_definition_code
77413 ,p_accounting_line_code => l_component_code
77414 ,p_accounting_line_type_code => l_component_type_code
77415 ,p_accounting_line_appl_id => l_component_appl_id
77416 ,p_amb_context_code => l_amb_context_code
77417 ,p_entity_code => l_entity_code
77418 ,p_event_class_code => l_event_class_code);
77419 --
77420 -- set accounting class
77421 --
77422 xla_ae_lines_pkg.SetAcctClass(
77423 p_accounting_class_code => 'INTERORG_PAYABLES'
77424 , p_ae_header_id => l_ae_header_id
77425 );
77426
77427 --
77428 -- set rounding class
77429 --
77433 --
77430 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77431 'INTERORG_PAYABLES';
77432
77434 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77435 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77436 --
77437 -- bulk performance
77438 --
77439 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77440
77441 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77442 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77443
77444 -- 4955764
77445 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77446 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77447
77448 -- 4458381 Public Sector Enh
77449
77450 --
77451 -- set accounting attributes for the line type
77452 --
77453 l_entered_amt_idx := 3;
77454 l_accted_amt_idx := 8;
77455 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77456 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77457 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
77458 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77459 l_rec_acct_attrs.array_char_value(2) := p_source_6;
77460 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77461 l_rec_acct_attrs.array_num_value(3) := p_source_3;
77462 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77463 l_rec_acct_attrs.array_char_value(4) := p_source_7;
77464 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77465 l_rec_acct_attrs.array_date_value(5) := p_source_8;
77466 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77467 l_rec_acct_attrs.array_num_value(6) := p_source_9;
77468 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77469 l_rec_acct_attrs.array_char_value(7) := p_source_10;
77470 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77471 l_rec_acct_attrs.array_num_value(8) := p_source_11;
77472
77473 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77474 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77475
77476 ---------------------------------------------------------------------------------------------------------------
77477 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77478 ---------------------------------------------------------------------------------------------------------------
77479 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77480
77481 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77482 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77483
77484 IF xla_accounting_cache_pkg.GetValueChar
77485 (p_source_code => 'LEDGER_CATEGORY_CODE'
77486 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77487 AND l_bflow_method_code = 'PRIOR_ENTRY'
77488 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77489 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77490 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77491 )
77492 THEN
77493 xla_ae_lines_pkg.BflowUpgEntry
77494 (p_business_method_code => l_bflow_method_code
77495 ,p_business_class_code => l_bflow_class_code
77496 ,p_balance_type => l_balance_type_code);
77497 ELSE
77498 NULL;
77499 -- No business flow processing for business flow method of NONE.
77500 END IF;
77501
77502 --
77503 -- call analytical criteria
77504 --
77505
77506 --
77507 -- call description
77508 --
77509 -- No description or it is inherited.
77510 --
77511 -- call ADRs
77512 -- Bug 4922099
77513 --
77514 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77515 (NVL(l_actual_upg_option, 'N') = 'O') OR
77516 (NVL(l_enc_upg_option, 'N') = 'O')
77517 )
77518 THEN
77519 NULL;
77520 --
77521 --
77522
77523 l_ccid := AcctDerRule_20(
77524 p_application_id => p_application_id
77525 , p_ae_header_id => l_ae_header_id
77526 , p_source_1 => p_source_1
77527 , p_source_2 => p_source_2
77528 , x_transaction_coa_id => l_adr_transaction_coa_id
77529 , x_accounting_coa_id => l_adr_accounting_coa_id
77530 , x_value_type_code => l_adr_value_type_code
77531 , p_side => 'NA'
77532 );
77533
77534 xla_ae_lines_pkg.set_ccid(
77535 p_code_combination_id => l_ccid
77536 , p_value_type_code => l_adr_value_type_code
77537 , p_transaction_coa_id => l_adr_transaction_coa_id
77538 , p_accounting_coa_id => l_adr_accounting_coa_id
77539 , p_adr_code => 'IOP'
77540 , p_adr_type_code => 'S'
77541 , p_component_type => l_component_type
77542 , p_component_code => l_component_code
77546 , p_side => 'NA'
77543 , p_component_type_code => l_component_type_code
77544 , p_component_appl_id => l_component_appl_id
77545 , p_amb_context_code => l_amb_context_code
77547 );
77548
77549
77550 --
77551 --
77552 END IF;
77553 --
77554 -- Bug 4922099
77555 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77556 (NVL(l_enc_upg_option, 'N') = 'O')
77557 ) AND
77558 (l_bflow_method_code = 'PRIOR_ENTRY')
77559 )
77560 THEN
77561 IF
77562 --
77563 1 = 2
77564 --
77565 THEN
77566 xla_accounting_err_pkg.build_message
77567 (p_appli_s_name => 'XLA'
77568 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77569 ,p_token_1 => 'LINE_NUMBER'
77570 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
77571 ,p_token_2 => 'LINE_TYPE_NAME'
77572 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
77573 l_component_type
77574 ,l_component_code
77575 ,l_component_type_code
77576 ,l_component_appl_id
77577 ,l_amb_context_code
77578 ,l_entity_code
77579 ,l_event_class_code
77580 )
77581 ,p_token_3 => 'OWNER'
77582 ,p_value_3 => xla_lookups_pkg.get_meaning(
77583 p_lookup_type => 'XLA_OWNER_TYPE'
77584 ,p_lookup_code => l_component_type_code
77585 )
77586 ,p_token_4 => 'PRODUCT_NAME'
77587 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77588 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77589 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77590 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77591 ,p_ae_header_id => NULL
77592 );
77593
77594 IF (C_LEVEL_ERROR>= g_log_level) THEN
77595 trace
77596 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77597 ,p_level => C_LEVEL_ERROR
77598 ,p_module => l_log_module);
77599 END IF;
77600 END IF;
77601 END IF;
77602 --
77603 --
77604 ------------------------------------------------------------------------------------------------
77605 -- 4219869 Business Flow
77606 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77607 -- Prior Entry. Currently, the following code is always generated.
77608 ------------------------------------------------------------------------------------------------
77609 XLA_AE_LINES_PKG.ValidateCurrentLine;
77610
77611 ------------------------------------------------------------------------------------
77612 -- 4219869 Business Flow
77613 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77614 ------------------------------------------------------------------------------------
77615 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77616
77617 ----------------------------------------------------------------------------------
77618 -- 4219869 Business Flow
77619 -- Update journal entry status -- Need to generate this within IF <condition>
77620 ----------------------------------------------------------------------------------
77621 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77622 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77623 ,p_balance_type_code => l_balance_type_code
77624 );
77625
77626 -------------------------------------------------------------------------------------------
77627 -- 4262811 - Generate the Accrual Reversal lines
77628 -------------------------------------------------------------------------------------------
77629 BEGIN
77630 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77631 (g_array_event(p_event_id).array_value_num('header_index'));
77632 IF l_acc_rev_flag IS NULL THEN
77633 l_acc_rev_flag := 'N';
77634 END IF;
77635 EXCEPTION
77636 WHEN OTHERS THEN
77637 l_acc_rev_flag := 'N';
77638 END;
77639 --
77640 IF (l_acc_rev_flag = 'Y') THEN
77641
77642 -- 4645092 ------------------------------------------------------------------------------
77646
77643 -- To allow MPA report to determine if it should generate report process
77644 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77645 ------------------------------------------------------------------------------------------
77647 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77648 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77649 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
77650 -- call ADRs
77651 -- Bug 4922099
77652 --
77653 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77654 (NVL(l_actual_upg_option, 'N') = 'O') OR
77655 (NVL(l_enc_upg_option, 'N') = 'O')
77656 )
77657 THEN
77658 NULL;
77659 --
77660 --
77661
77662 l_ccid := AcctDerRule_20(
77663 p_application_id => p_application_id
77664 , p_ae_header_id => l_ae_header_id
77665 , p_source_1 => p_source_1
77666 , p_source_2 => p_source_2
77667 , x_transaction_coa_id => l_adr_transaction_coa_id
77668 , x_accounting_coa_id => l_adr_accounting_coa_id
77669 , x_value_type_code => l_adr_value_type_code
77670 , p_side => 'NA'
77671 );
77672
77673 xla_ae_lines_pkg.set_ccid(
77674 p_code_combination_id => l_ccid
77675 , p_value_type_code => l_adr_value_type_code
77676 , p_transaction_coa_id => l_adr_transaction_coa_id
77677 , p_accounting_coa_id => l_adr_accounting_coa_id
77678 , p_adr_code => 'IOP'
77679 , p_adr_type_code => 'S'
77680 , p_component_type => l_component_type
77681 , p_component_code => l_component_code
77682 , p_component_type_code => l_component_type_code
77683 , p_component_appl_id => l_component_appl_id
77684 , p_amb_context_code => l_amb_context_code
77685 , p_side => 'NA'
77686 );
77687
77688
77689 --
77690 --
77691 END IF;
77692
77693 --
77694 -- Update the line information that should be overwritten
77695 --
77696 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77697 p_header_num => 1);
77698 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
77699
77700 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77701
77702 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
77703 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77704 END IF;
77705
77706 --
77707 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77708 --
77709 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77710 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
77711 ELSE
77712 ---------------------------------------------------------------------------------------------------
77713 -- 4262811a Switch Sign
77714 ---------------------------------------------------------------------------------------------------
77715 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
77716 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77717 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77718 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77719 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77720 -- 5132302
77721 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77722 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77723
77724 END IF;
77725
77726 -- 4955764
77727 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77728 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77729
77730
77731 XLA_AE_LINES_PKG.ValidateCurrentLine;
77732 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77733
77734 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77735 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77736 ,p_balance_type_code => l_balance_type_code);
77737
77738 END IF;
77739
77740 -----------------------------------------------------------------------------------------
77741 -- 4262811 Multiperiod Accounting
77742 -----------------------------------------------------------------------------------------
77743 -- No MPA option is assigned.
77744
77745
77746 END IF;
77747 END IF;
77748 --
77749
77750 --
77751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77752 trace
77753 (p_msg => 'END of AcctLineType_172'
77754 ,p_level => C_LEVEL_PROCEDURE
77755 ,p_module => l_log_module);
77756 END IF;
77757 --
77758 EXCEPTION
77759 WHEN xla_exceptions_pkg.application_exception THEN
77760 RAISE;
77764 END AcctLineType_172;
77761 WHEN OTHERS THEN
77762 xla_exceptions_pkg.raise_message
77763 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_172');
77765 --
77766
77767 ---------------------------------------
77768 --
77769 -- PRIVATE FUNCTION
77770 -- AcctLineType_173
77771 --
77772 ---------------------------------------
77773 PROCEDURE AcctLineType_173 (
77774 p_application_id IN NUMBER
77775 ,p_event_id IN NUMBER
77776 ,p_calculate_acctd_flag IN VARCHAR2
77777 ,p_calculate_g_l_flag IN VARCHAR2
77778 ,p_actual_flag IN OUT VARCHAR2
77779 ,p_balance_type_code OUT VARCHAR2
77780 ,p_gain_or_loss_ref OUT VARCHAR2
77781
77782 --Transaction Account
77783 , p_source_1 IN NUMBER
77784 --Journal Line Type
77785 , p_source_2 IN VARCHAR2
77786 --Entered Amount
77787 , p_source_3 IN NUMBER
77788 --First Distribution Identifier
77789 , p_source_5 IN NUMBER
77790 --Distribution Type
77791 , p_source_6 IN VARCHAR2
77792 --Currency Code
77793 , p_source_7 IN VARCHAR2
77794 --Currency Conversion Date
77795 , p_source_8 IN DATE
77796 --Currency Conversion Rate
77797 , p_source_9 IN NUMBER
77798 --Currency Conversion Type
77799 , p_source_10 IN VARCHAR2
77800 --Accounted Amount
77801 , p_source_11 IN NUMBER
77802 )
77803 IS
77804
77805 l_component_type VARCHAR2(80);
77806 l_component_code VARCHAR2(30);
77807 l_component_type_code VARCHAR2(1);
77808 l_component_appl_id INTEGER;
77809 l_amb_context_code VARCHAR2(30);
77810 l_entity_code VARCHAR2(30);
77811 l_event_class_code VARCHAR2(30);
77812 l_ae_header_id NUMBER;
77813 l_event_type_code VARCHAR2(30);
77814 l_line_definition_code VARCHAR2(30);
77815 l_line_definition_owner_code VARCHAR2(1);
77816 --
77817 -- adr variables
77818 l_segment VARCHAR2(30);
77819 l_ccid NUMBER;
77820 l_adr_transaction_coa_id NUMBER;
77821 l_adr_accounting_coa_id NUMBER;
77822 l_adr_flexfield_segment_code VARCHAR2(30);
77823 l_adr_flex_value_set_id NUMBER;
77824 l_adr_value_type_code VARCHAR2(30);
77825 l_adr_value_combination_id NUMBER;
77826 l_adr_value_segment_code VARCHAR2(30);
77827
77828 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
77829 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
77830 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
77831 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
77832
77833 -- 4262811 Variables ------------------------------------------------------------------------------------------
77834 l_entered_amt_idx NUMBER;
77835 l_accted_amt_idx NUMBER;
77836 l_acc_rev_flag VARCHAR2(1);
77837 l_accrual_line_num NUMBER;
77838 l_tmp_amt NUMBER;
77839 l_acc_rev_natural_side_code VARCHAR2(1);
77840
77841 l_num_entries NUMBER;
77842 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
77843 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
77844 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
77845 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
77846 l_recog_line_1 NUMBER;
77847 l_recog_line_2 NUMBER;
77848
77849 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
77850 l_bflow_applied_to_amt NUMBER; -- 5132302
77851 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
77852
77853 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77854
77855 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
77856 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
77857
77858 ---------------------------------------------------------------------------------------------------------------
77859
77860
77861 --
77862 -- bulk performance
77863 --
77864 l_balance_type_code VARCHAR2(1);
77865 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
77866 l_log_module VARCHAR2(240);
77867
77868 --
77869 -- Upgrade strategy
77870 --
77871 l_actual_upg_option VARCHAR2(1);
77872 l_enc_upg_option VARCHAR2(1);
77873
77874 --
77875 BEGIN
77876 --
77877 IF g_log_enabled THEN
77878 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_173';
77879 END IF;
77880 --
77881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77882
77883 trace
77884 (p_msg => 'BEGIN of AcctLineType_173'
77885 ,p_level => C_LEVEL_PROCEDURE
77886 ,p_module => l_log_module);
77887
77888 END IF;
77889 --
77890 l_component_type := 'AMB_JLT';
77891 l_component_code := 'IOP';
77892 l_component_type_code := 'S';
77893 l_component_appl_id := 555;
77894 l_amb_context_code := 'DEFAULT';
77895 l_entity_code := 'INVENTORY';
77899 l_line_definition_code := 'EXP_REQ_RCPT_TP';
77896 l_event_class_code := 'INT_ORDER_TO_EXP';
77897 l_event_type_code := 'EXP_REQ_RCPT_TP';
77898 l_line_definition_owner_code := 'S';
77900 --
77901 l_balance_type_code := 'A';
77902 l_segment := NULL;
77903 l_ccid := NULL;
77904 l_adr_transaction_coa_id := NULL;
77905 l_adr_accounting_coa_id := NULL;
77906 l_adr_flexfield_segment_code := NULL;
77907 l_adr_flex_value_set_id := NULL;
77908 l_adr_value_type_code := NULL;
77909 l_adr_value_combination_id := NULL;
77910 l_adr_value_segment_code := NULL;
77911
77912 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
77913 l_bflow_class_code := ''; -- 4219869 Business Flow
77914 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
77915 l_budgetary_control_flag := 'N';
77916
77917 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77918 l_bflow_applied_to_amt := NULL; -- 5132302
77919 l_entered_amt_idx := NULL; -- 4262811
77920 l_accted_amt_idx := NULL; -- 4262811
77921 l_acc_rev_flag := NULL; -- 4262811
77922 l_accrual_line_num := NULL; -- 4262811
77923 l_tmp_amt := NULL; -- 4262811
77924 --
77925
77926 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77927 l_balance_type_code <> 'B' THEN
77928 IF NVL(p_source_2,'
77929 ') = 'IOP'
77930 THEN
77931
77932 --
77933 XLA_AE_LINES_PKG.SetNewLine;
77934
77935 p_balance_type_code := l_balance_type_code;
77936 -- set the flag so later we will know whether the gain loss line needs to be created
77937
77938 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77939 p_actual_flag :='A';
77940 END IF;
77941
77942 --
77943 -- bulk performance
77944 --
77945 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77946 p_header_num => 0); -- 4262811
77947 --
77948 -- set accounting line options
77949 --
77950 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77951 p_natural_side_code => 'D'
77952 , p_gain_or_loss_flag => 'N'
77953 , p_gl_transfer_mode_code => 'D'
77954 , p_acct_entry_type_code => 'A'
77955 , p_switch_side_flag => 'Y'
77956 , p_merge_duplicate_code => 'W'
77957 );
77958 --
77959 l_acc_rev_natural_side_code := 'C'; -- 4262811
77960 --
77961 --
77962 -- set accounting line type info
77963 --
77964 xla_ae_lines_pkg.SetAcctLineType
77965 (p_component_type => l_component_type
77966 ,p_event_type_code => l_event_type_code
77967 ,p_line_definition_owner_code => l_line_definition_owner_code
77968 ,p_line_definition_code => l_line_definition_code
77969 ,p_accounting_line_code => l_component_code
77970 ,p_accounting_line_type_code => l_component_type_code
77971 ,p_accounting_line_appl_id => l_component_appl_id
77972 ,p_amb_context_code => l_amb_context_code
77973 ,p_entity_code => l_entity_code
77974 ,p_event_class_code => l_event_class_code);
77975 --
77976 -- set accounting class
77977 --
77978 xla_ae_lines_pkg.SetAcctClass(
77979 p_accounting_class_code => 'INTERORG_PAYABLES'
77980 , p_ae_header_id => l_ae_header_id
77981 );
77982
77983 --
77984 -- set rounding class
77985 --
77986 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77987 'INTERORG_PAYABLES';
77988
77989 --
77990 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77991 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77992 --
77993 -- bulk performance
77994 --
77995 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77996
77997 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77998 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77999
78000 -- 4955764
78001 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78002 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78003
78004 -- 4458381 Public Sector Enh
78005
78006 --
78007 -- set accounting attributes for the line type
78008 --
78009 l_entered_amt_idx := 3;
78010 l_accted_amt_idx := 8;
78011 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78012 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78013 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
78014 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78015 l_rec_acct_attrs.array_char_value(2) := p_source_6;
78016 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78017 l_rec_acct_attrs.array_num_value(3) := p_source_3;
78018 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78022 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78019 l_rec_acct_attrs.array_char_value(4) := p_source_7;
78020 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78021 l_rec_acct_attrs.array_date_value(5) := p_source_8;
78023 l_rec_acct_attrs.array_num_value(6) := p_source_9;
78024 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78025 l_rec_acct_attrs.array_char_value(7) := p_source_10;
78026 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78027 l_rec_acct_attrs.array_num_value(8) := p_source_11;
78028
78029 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78030 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78031
78032 ---------------------------------------------------------------------------------------------------------------
78033 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78034 ---------------------------------------------------------------------------------------------------------------
78035 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78036
78037 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78038 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78039
78040 IF xla_accounting_cache_pkg.GetValueChar
78041 (p_source_code => 'LEDGER_CATEGORY_CODE'
78042 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78043 AND l_bflow_method_code = 'PRIOR_ENTRY'
78044 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78045 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78046 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78047 )
78048 THEN
78049 xla_ae_lines_pkg.BflowUpgEntry
78050 (p_business_method_code => l_bflow_method_code
78051 ,p_business_class_code => l_bflow_class_code
78052 ,p_balance_type => l_balance_type_code);
78053 ELSE
78054 NULL;
78055 -- No business flow processing for business flow method of NONE.
78056 END IF;
78057
78058 --
78059 -- call analytical criteria
78060 --
78061
78062 --
78063 -- call description
78064 --
78065 -- No description or it is inherited.
78066 --
78067 -- call ADRs
78068 -- Bug 4922099
78069 --
78070 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78071 (NVL(l_actual_upg_option, 'N') = 'O') OR
78072 (NVL(l_enc_upg_option, 'N') = 'O')
78073 )
78074 THEN
78075 NULL;
78076 --
78077 --
78078
78079 l_ccid := AcctDerRule_20(
78080 p_application_id => p_application_id
78081 , p_ae_header_id => l_ae_header_id
78082 , p_source_1 => p_source_1
78083 , p_source_2 => p_source_2
78084 , x_transaction_coa_id => l_adr_transaction_coa_id
78085 , x_accounting_coa_id => l_adr_accounting_coa_id
78086 , x_value_type_code => l_adr_value_type_code
78087 , p_side => 'NA'
78088 );
78089
78090 xla_ae_lines_pkg.set_ccid(
78091 p_code_combination_id => l_ccid
78092 , p_value_type_code => l_adr_value_type_code
78093 , p_transaction_coa_id => l_adr_transaction_coa_id
78094 , p_accounting_coa_id => l_adr_accounting_coa_id
78095 , p_adr_code => 'IOP'
78096 , p_adr_type_code => 'S'
78097 , p_component_type => l_component_type
78098 , p_component_code => l_component_code
78099 , p_component_type_code => l_component_type_code
78100 , p_component_appl_id => l_component_appl_id
78101 , p_amb_context_code => l_amb_context_code
78102 , p_side => 'NA'
78103 );
78104
78105
78106 --
78107 --
78108 END IF;
78109 --
78110 -- Bug 4922099
78111 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78112 (NVL(l_enc_upg_option, 'N') = 'O')
78113 ) AND
78114 (l_bflow_method_code = 'PRIOR_ENTRY')
78115 )
78116 THEN
78117 IF
78118 --
78119 1 = 2
78120 --
78121 THEN
78122 xla_accounting_err_pkg.build_message
78123 (p_appli_s_name => 'XLA'
78124 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78125 ,p_token_1 => 'LINE_NUMBER'
78126 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
78127 ,p_token_2 => 'LINE_TYPE_NAME'
78128 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
78129 l_component_type
78130 ,l_component_code
78131 ,l_component_type_code
78132 ,l_component_appl_id
78133 ,l_amb_context_code
78137 ,p_token_3 => 'OWNER'
78134 ,l_entity_code
78135 ,l_event_class_code
78136 )
78138 ,p_value_3 => xla_lookups_pkg.get_meaning(
78139 p_lookup_type => 'XLA_OWNER_TYPE'
78140 ,p_lookup_code => l_component_type_code
78141 )
78142 ,p_token_4 => 'PRODUCT_NAME'
78143 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78144 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78145 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78146 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78147 ,p_ae_header_id => NULL
78148 );
78149
78150 IF (C_LEVEL_ERROR>= g_log_level) THEN
78151 trace
78152 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78153 ,p_level => C_LEVEL_ERROR
78154 ,p_module => l_log_module);
78155 END IF;
78156 END IF;
78157 END IF;
78158 --
78159 --
78160 ------------------------------------------------------------------------------------------------
78161 -- 4219869 Business Flow
78162 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78163 -- Prior Entry. Currently, the following code is always generated.
78164 ------------------------------------------------------------------------------------------------
78165 XLA_AE_LINES_PKG.ValidateCurrentLine;
78166
78167 ------------------------------------------------------------------------------------
78168 -- 4219869 Business Flow
78169 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78170 ------------------------------------------------------------------------------------
78171 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78172
78173 ----------------------------------------------------------------------------------
78174 -- 4219869 Business Flow
78175 -- Update journal entry status -- Need to generate this within IF <condition>
78176 ----------------------------------------------------------------------------------
78177 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78178 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78179 ,p_balance_type_code => l_balance_type_code
78180 );
78181
78182 -------------------------------------------------------------------------------------------
78183 -- 4262811 - Generate the Accrual Reversal lines
78184 -------------------------------------------------------------------------------------------
78185 BEGIN
78186 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78187 (g_array_event(p_event_id).array_value_num('header_index'));
78188 IF l_acc_rev_flag IS NULL THEN
78189 l_acc_rev_flag := 'N';
78190 END IF;
78191 EXCEPTION
78192 WHEN OTHERS THEN
78193 l_acc_rev_flag := 'N';
78194 END;
78195 --
78196 IF (l_acc_rev_flag = 'Y') THEN
78197
78198 -- 4645092 ------------------------------------------------------------------------------
78199 -- To allow MPA report to determine if it should generate report process
78200 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78201 ------------------------------------------------------------------------------------------
78202
78203 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78204 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78205 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
78206 -- call ADRs
78207 -- Bug 4922099
78208 --
78209 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78210 (NVL(l_actual_upg_option, 'N') = 'O') OR
78211 (NVL(l_enc_upg_option, 'N') = 'O')
78212 )
78213 THEN
78214 NULL;
78215 --
78216 --
78217
78218 l_ccid := AcctDerRule_20(
78219 p_application_id => p_application_id
78220 , p_ae_header_id => l_ae_header_id
78221 , p_source_1 => p_source_1
78222 , p_source_2 => p_source_2
78223 , x_transaction_coa_id => l_adr_transaction_coa_id
78224 , x_accounting_coa_id => l_adr_accounting_coa_id
78225 , x_value_type_code => l_adr_value_type_code
78226 , p_side => 'NA'
78227 );
78228
78229 xla_ae_lines_pkg.set_ccid(
78230 p_code_combination_id => l_ccid
78231 , p_value_type_code => l_adr_value_type_code
78232 , p_transaction_coa_id => l_adr_transaction_coa_id
78233 , p_accounting_coa_id => l_adr_accounting_coa_id
78234 , p_adr_code => 'IOP'
78235 , p_adr_type_code => 'S'
78239 , p_component_appl_id => l_component_appl_id
78236 , p_component_type => l_component_type
78237 , p_component_code => l_component_code
78238 , p_component_type_code => l_component_type_code
78240 , p_amb_context_code => l_amb_context_code
78241 , p_side => 'NA'
78242 );
78243
78244
78245 --
78246 --
78247 END IF;
78248
78249 --
78250 -- Update the line information that should be overwritten
78251 --
78252 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78253 p_header_num => 1);
78254 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
78255
78256 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78257
78258 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
78259 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78260 END IF;
78261
78262 --
78263 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78264 --
78265 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78266 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
78267 ELSE
78268 ---------------------------------------------------------------------------------------------------
78269 -- 4262811a Switch Sign
78270 ---------------------------------------------------------------------------------------------------
78271 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
78272 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78273 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78274 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78275 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78276 -- 5132302
78277 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78278 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78279
78280 END IF;
78281
78282 -- 4955764
78283 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78284 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78285
78286
78287 XLA_AE_LINES_PKG.ValidateCurrentLine;
78288 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78289
78290 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78291 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78292 ,p_balance_type_code => l_balance_type_code);
78293
78294 END IF;
78295
78296 -----------------------------------------------------------------------------------------
78297 -- 4262811 Multiperiod Accounting
78298 -----------------------------------------------------------------------------------------
78299 -- No MPA option is assigned.
78300
78301
78302 END IF;
78303 END IF;
78304 --
78305
78306 --
78307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78308 trace
78309 (p_msg => 'END of AcctLineType_173'
78310 ,p_level => C_LEVEL_PROCEDURE
78311 ,p_module => l_log_module);
78312 END IF;
78313 --
78314 EXCEPTION
78315 WHEN xla_exceptions_pkg.application_exception THEN
78316 RAISE;
78317 WHEN OTHERS THEN
78318 xla_exceptions_pkg.raise_message
78319 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_173');
78320 END AcctLineType_173;
78321 --
78322
78323 ---------------------------------------
78324 --
78325 -- PRIVATE FUNCTION
78326 -- AcctLineType_174
78327 --
78328 ---------------------------------------
78329 PROCEDURE AcctLineType_174 (
78330 p_application_id IN NUMBER
78331 ,p_event_id IN NUMBER
78332 ,p_calculate_acctd_flag IN VARCHAR2
78333 ,p_calculate_g_l_flag IN VARCHAR2
78334 ,p_actual_flag IN OUT VARCHAR2
78335 ,p_balance_type_code OUT VARCHAR2
78336 ,p_gain_or_loss_ref OUT VARCHAR2
78337
78338 --Transaction Account
78339 , p_source_1 IN NUMBER
78340 --Journal Line Type
78341 , p_source_2 IN VARCHAR2
78342 --Entered Amount
78343 , p_source_3 IN NUMBER
78344 --First Distribution Identifier
78345 , p_source_5 IN NUMBER
78346 --Distribution Type
78347 , p_source_6 IN VARCHAR2
78348 --Currency Code
78349 , p_source_7 IN VARCHAR2
78350 --Currency Conversion Date
78351 , p_source_8 IN DATE
78352 --Currency Conversion Rate
78353 , p_source_9 IN NUMBER
78354 --Currency Conversion Type
78355 , p_source_10 IN VARCHAR2
78356 --Accounted Amount
78357 , p_source_11 IN NUMBER
78358 )
78359 IS
78360
78361 l_component_type VARCHAR2(80);
78362 l_component_code VARCHAR2(30);
78366 l_entity_code VARCHAR2(30);
78363 l_component_type_code VARCHAR2(1);
78364 l_component_appl_id INTEGER;
78365 l_amb_context_code VARCHAR2(30);
78367 l_event_class_code VARCHAR2(30);
78368 l_ae_header_id NUMBER;
78369 l_event_type_code VARCHAR2(30);
78370 l_line_definition_code VARCHAR2(30);
78371 l_line_definition_owner_code VARCHAR2(1);
78372 --
78373 -- adr variables
78374 l_segment VARCHAR2(30);
78375 l_ccid NUMBER;
78376 l_adr_transaction_coa_id NUMBER;
78377 l_adr_accounting_coa_id NUMBER;
78378 l_adr_flexfield_segment_code VARCHAR2(30);
78379 l_adr_flex_value_set_id NUMBER;
78380 l_adr_value_type_code VARCHAR2(30);
78381 l_adr_value_combination_id NUMBER;
78382 l_adr_value_segment_code VARCHAR2(30);
78383
78384 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
78385 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
78386 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
78387 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
78388
78389 -- 4262811 Variables ------------------------------------------------------------------------------------------
78390 l_entered_amt_idx NUMBER;
78391 l_accted_amt_idx NUMBER;
78392 l_acc_rev_flag VARCHAR2(1);
78393 l_accrual_line_num NUMBER;
78394 l_tmp_amt NUMBER;
78395 l_acc_rev_natural_side_code VARCHAR2(1);
78396
78397 l_num_entries NUMBER;
78398 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
78399 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
78400 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
78401 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
78402 l_recog_line_1 NUMBER;
78403 l_recog_line_2 NUMBER;
78404
78405 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
78406 l_bflow_applied_to_amt NUMBER; -- 5132302
78407 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
78408
78409 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78410
78411 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
78412 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
78413
78414 ---------------------------------------------------------------------------------------------------------------
78415
78416
78417 --
78418 -- bulk performance
78419 --
78420 l_balance_type_code VARCHAR2(1);
78421 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
78422 l_log_module VARCHAR2(240);
78423
78424 --
78425 -- Upgrade strategy
78426 --
78427 l_actual_upg_option VARCHAR2(1);
78428 l_enc_upg_option VARCHAR2(1);
78429
78430 --
78431 BEGIN
78432 --
78433 IF g_log_enabled THEN
78434 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_174';
78435 END IF;
78436 --
78437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78438
78439 trace
78440 (p_msg => 'BEGIN of AcctLineType_174'
78441 ,p_level => C_LEVEL_PROCEDURE
78442 ,p_module => l_log_module);
78443
78444 END IF;
78445 --
78446 l_component_type := 'AMB_JLT';
78447 l_component_code := 'IOP';
78448 l_component_type_code := 'S';
78449 l_component_appl_id := 555;
78450 l_amb_context_code := 'DEFAULT';
78451 l_entity_code := 'INVENTORY';
78452 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
78453 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
78454 l_line_definition_owner_code := 'S';
78455 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
78456 --
78457 l_balance_type_code := 'A';
78458 l_segment := NULL;
78459 l_ccid := NULL;
78460 l_adr_transaction_coa_id := NULL;
78461 l_adr_accounting_coa_id := NULL;
78462 l_adr_flexfield_segment_code := NULL;
78463 l_adr_flex_value_set_id := NULL;
78464 l_adr_value_type_code := NULL;
78465 l_adr_value_combination_id := NULL;
78466 l_adr_value_segment_code := NULL;
78467
78468 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
78469 l_bflow_class_code := ''; -- 4219869 Business Flow
78470 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
78471 l_budgetary_control_flag := 'N';
78472
78473 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78474 l_bflow_applied_to_amt := NULL; -- 5132302
78475 l_entered_amt_idx := NULL; -- 4262811
78476 l_accted_amt_idx := NULL; -- 4262811
78477 l_acc_rev_flag := NULL; -- 4262811
78478 l_accrual_line_num := NULL; -- 4262811
78479 l_tmp_amt := NULL; -- 4262811
78480 --
78481
78482 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78483 l_balance_type_code <> 'B' THEN
78484 IF NVL(p_source_2,'
78485 ') = 'IOP'
78486 THEN
78487
78491 p_balance_type_code := l_balance_type_code;
78488 --
78489 XLA_AE_LINES_PKG.SetNewLine;
78490
78492 -- set the flag so later we will know whether the gain loss line needs to be created
78493
78494 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78495 p_actual_flag :='A';
78496 END IF;
78497
78498 --
78499 -- bulk performance
78500 --
78501 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78502 p_header_num => 0); -- 4262811
78503 --
78504 -- set accounting line options
78505 --
78506 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78507 p_natural_side_code => 'D'
78508 , p_gain_or_loss_flag => 'N'
78509 , p_gl_transfer_mode_code => 'D'
78510 , p_acct_entry_type_code => 'A'
78511 , p_switch_side_flag => 'Y'
78512 , p_merge_duplicate_code => 'W'
78513 );
78514 --
78515 l_acc_rev_natural_side_code := 'C'; -- 4262811
78516 --
78517 --
78518 -- set accounting line type info
78519 --
78520 xla_ae_lines_pkg.SetAcctLineType
78521 (p_component_type => l_component_type
78522 ,p_event_type_code => l_event_type_code
78523 ,p_line_definition_owner_code => l_line_definition_owner_code
78524 ,p_line_definition_code => l_line_definition_code
78525 ,p_accounting_line_code => l_component_code
78526 ,p_accounting_line_type_code => l_component_type_code
78527 ,p_accounting_line_appl_id => l_component_appl_id
78528 ,p_amb_context_code => l_amb_context_code
78529 ,p_entity_code => l_entity_code
78530 ,p_event_class_code => l_event_class_code);
78531 --
78532 -- set accounting class
78533 --
78534 xla_ae_lines_pkg.SetAcctClass(
78535 p_accounting_class_code => 'INTERORG_PAYABLES'
78536 , p_ae_header_id => l_ae_header_id
78537 );
78538
78539 --
78540 -- set rounding class
78541 --
78542 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78543 'INTERORG_PAYABLES';
78544
78545 --
78546 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78547 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78548 --
78549 -- bulk performance
78550 --
78551 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78552
78553 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78554 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78555
78556 -- 4955764
78557 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78558 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78559
78560 -- 4458381 Public Sector Enh
78561
78562 --
78563 -- set accounting attributes for the line type
78564 --
78565 l_entered_amt_idx := 3;
78566 l_accted_amt_idx := 8;
78567 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78568 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78569 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
78570 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78571 l_rec_acct_attrs.array_char_value(2) := p_source_6;
78572 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78573 l_rec_acct_attrs.array_num_value(3) := p_source_3;
78574 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78575 l_rec_acct_attrs.array_char_value(4) := p_source_7;
78576 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78577 l_rec_acct_attrs.array_date_value(5) := p_source_8;
78578 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78579 l_rec_acct_attrs.array_num_value(6) := p_source_9;
78580 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78581 l_rec_acct_attrs.array_char_value(7) := p_source_10;
78582 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78583 l_rec_acct_attrs.array_num_value(8) := p_source_11;
78584
78585 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78586 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78587
78588 ---------------------------------------------------------------------------------------------------------------
78589 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78590 ---------------------------------------------------------------------------------------------------------------
78591 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78592
78593 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78594 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78595
78596 IF xla_accounting_cache_pkg.GetValueChar
78597 (p_source_code => 'LEDGER_CATEGORY_CODE'
78598 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78599 AND l_bflow_method_code = 'PRIOR_ENTRY'
78603 )
78600 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78601 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78602 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78604 THEN
78605 xla_ae_lines_pkg.BflowUpgEntry
78606 (p_business_method_code => l_bflow_method_code
78607 ,p_business_class_code => l_bflow_class_code
78608 ,p_balance_type => l_balance_type_code);
78609 ELSE
78610 NULL;
78611 -- No business flow processing for business flow method of NONE.
78612 END IF;
78613
78614 --
78615 -- call analytical criteria
78616 --
78617
78618 --
78619 -- call description
78620 --
78621 -- No description or it is inherited.
78622 --
78623 -- call ADRs
78624 -- Bug 4922099
78625 --
78626 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78627 (NVL(l_actual_upg_option, 'N') = 'O') OR
78628 (NVL(l_enc_upg_option, 'N') = 'O')
78629 )
78630 THEN
78631 NULL;
78632 --
78633 --
78634
78635 l_ccid := AcctDerRule_20(
78636 p_application_id => p_application_id
78637 , p_ae_header_id => l_ae_header_id
78638 , p_source_1 => p_source_1
78639 , p_source_2 => p_source_2
78640 , x_transaction_coa_id => l_adr_transaction_coa_id
78641 , x_accounting_coa_id => l_adr_accounting_coa_id
78642 , x_value_type_code => l_adr_value_type_code
78643 , p_side => 'NA'
78644 );
78645
78646 xla_ae_lines_pkg.set_ccid(
78647 p_code_combination_id => l_ccid
78648 , p_value_type_code => l_adr_value_type_code
78649 , p_transaction_coa_id => l_adr_transaction_coa_id
78650 , p_accounting_coa_id => l_adr_accounting_coa_id
78651 , p_adr_code => 'IOP'
78652 , p_adr_type_code => 'S'
78653 , p_component_type => l_component_type
78654 , p_component_code => l_component_code
78655 , p_component_type_code => l_component_type_code
78656 , p_component_appl_id => l_component_appl_id
78657 , p_amb_context_code => l_amb_context_code
78658 , p_side => 'NA'
78659 );
78660
78661
78662 --
78663 --
78664 END IF;
78665 --
78666 -- Bug 4922099
78667 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78668 (NVL(l_enc_upg_option, 'N') = 'O')
78669 ) AND
78670 (l_bflow_method_code = 'PRIOR_ENTRY')
78671 )
78672 THEN
78673 IF
78674 --
78675 1 = 2
78676 --
78677 THEN
78678 xla_accounting_err_pkg.build_message
78679 (p_appli_s_name => 'XLA'
78680 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78681 ,p_token_1 => 'LINE_NUMBER'
78682 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
78683 ,p_token_2 => 'LINE_TYPE_NAME'
78684 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
78685 l_component_type
78686 ,l_component_code
78687 ,l_component_type_code
78688 ,l_component_appl_id
78689 ,l_amb_context_code
78690 ,l_entity_code
78691 ,l_event_class_code
78692 )
78693 ,p_token_3 => 'OWNER'
78694 ,p_value_3 => xla_lookups_pkg.get_meaning(
78695 p_lookup_type => 'XLA_OWNER_TYPE'
78696 ,p_lookup_code => l_component_type_code
78697 )
78698 ,p_token_4 => 'PRODUCT_NAME'
78699 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78700 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78701 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78702 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78703 ,p_ae_header_id => NULL
78704 );
78705
78706 IF (C_LEVEL_ERROR>= g_log_level) THEN
78707 trace
78708 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78709 ,p_level => C_LEVEL_ERROR
78710 ,p_module => l_log_module);
78711 END IF;
78712 END IF;
78716 ------------------------------------------------------------------------------------------------
78713 END IF;
78714 --
78715 --
78717 -- 4219869 Business Flow
78718 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78719 -- Prior Entry. Currently, the following code is always generated.
78720 ------------------------------------------------------------------------------------------------
78721 XLA_AE_LINES_PKG.ValidateCurrentLine;
78722
78723 ------------------------------------------------------------------------------------
78724 -- 4219869 Business Flow
78725 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78726 ------------------------------------------------------------------------------------
78727 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78728
78729 ----------------------------------------------------------------------------------
78730 -- 4219869 Business Flow
78731 -- Update journal entry status -- Need to generate this within IF <condition>
78732 ----------------------------------------------------------------------------------
78733 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78734 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78735 ,p_balance_type_code => l_balance_type_code
78736 );
78737
78738 -------------------------------------------------------------------------------------------
78739 -- 4262811 - Generate the Accrual Reversal lines
78740 -------------------------------------------------------------------------------------------
78741 BEGIN
78742 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78743 (g_array_event(p_event_id).array_value_num('header_index'));
78744 IF l_acc_rev_flag IS NULL THEN
78745 l_acc_rev_flag := 'N';
78746 END IF;
78747 EXCEPTION
78748 WHEN OTHERS THEN
78749 l_acc_rev_flag := 'N';
78750 END;
78751 --
78752 IF (l_acc_rev_flag = 'Y') THEN
78753
78754 -- 4645092 ------------------------------------------------------------------------------
78755 -- To allow MPA report to determine if it should generate report process
78756 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78757 ------------------------------------------------------------------------------------------
78758
78759 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78760 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78761 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
78762 -- call ADRs
78763 -- Bug 4922099
78764 --
78765 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78766 (NVL(l_actual_upg_option, 'N') = 'O') OR
78767 (NVL(l_enc_upg_option, 'N') = 'O')
78768 )
78769 THEN
78770 NULL;
78771 --
78772 --
78773
78774 l_ccid := AcctDerRule_20(
78775 p_application_id => p_application_id
78776 , p_ae_header_id => l_ae_header_id
78777 , p_source_1 => p_source_1
78778 , p_source_2 => p_source_2
78779 , x_transaction_coa_id => l_adr_transaction_coa_id
78780 , x_accounting_coa_id => l_adr_accounting_coa_id
78781 , x_value_type_code => l_adr_value_type_code
78782 , p_side => 'NA'
78783 );
78784
78785 xla_ae_lines_pkg.set_ccid(
78786 p_code_combination_id => l_ccid
78787 , p_value_type_code => l_adr_value_type_code
78788 , p_transaction_coa_id => l_adr_transaction_coa_id
78789 , p_accounting_coa_id => l_adr_accounting_coa_id
78790 , p_adr_code => 'IOP'
78791 , p_adr_type_code => 'S'
78792 , p_component_type => l_component_type
78793 , p_component_code => l_component_code
78794 , p_component_type_code => l_component_type_code
78795 , p_component_appl_id => l_component_appl_id
78796 , p_amb_context_code => l_amb_context_code
78797 , p_side => 'NA'
78798 );
78799
78800
78801 --
78802 --
78803 END IF;
78804
78805 --
78806 -- Update the line information that should be overwritten
78807 --
78808 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78809 p_header_num => 1);
78810 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
78811
78812 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78813
78814 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
78815 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78816 END IF;
78817
78818 --
78819 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78820 --
78821 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78822 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
78823 ELSE
78824 ---------------------------------------------------------------------------------------------------
78825 -- 4262811a Switch Sign
78829 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78826 ---------------------------------------------------------------------------------------------------
78827 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
78828 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78830 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78831 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78832 -- 5132302
78833 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78834 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78835
78836 END IF;
78837
78838 -- 4955764
78839 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78840 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78841
78842
78843 XLA_AE_LINES_PKG.ValidateCurrentLine;
78844 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78845
78846 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78847 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78848 ,p_balance_type_code => l_balance_type_code);
78849
78850 END IF;
78851
78852 -----------------------------------------------------------------------------------------
78853 -- 4262811 Multiperiod Accounting
78854 -----------------------------------------------------------------------------------------
78855 -- No MPA option is assigned.
78856
78857
78858 END IF;
78859 END IF;
78860 --
78861
78862 --
78863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78864 trace
78865 (p_msg => 'END of AcctLineType_174'
78866 ,p_level => C_LEVEL_PROCEDURE
78867 ,p_module => l_log_module);
78868 END IF;
78869 --
78870 EXCEPTION
78871 WHEN xla_exceptions_pkg.application_exception THEN
78872 RAISE;
78873 WHEN OTHERS THEN
78874 xla_exceptions_pkg.raise_message
78875 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_174');
78876 END AcctLineType_174;
78877 --
78878
78879 ---------------------------------------
78880 --
78881 -- PRIVATE FUNCTION
78882 -- AcctLineType_175
78883 --
78884 ---------------------------------------
78885 PROCEDURE AcctLineType_175 (
78886 p_application_id IN NUMBER
78887 ,p_event_id IN NUMBER
78888 ,p_calculate_acctd_flag IN VARCHAR2
78889 ,p_calculate_g_l_flag IN VARCHAR2
78890 ,p_actual_flag IN OUT VARCHAR2
78891 ,p_balance_type_code OUT VARCHAR2
78892 ,p_gain_or_loss_ref OUT VARCHAR2
78893
78894 --Transaction Account
78895 , p_source_1 IN NUMBER
78896 --Journal Line Type
78897 , p_source_2 IN VARCHAR2
78898 --Entered Amount
78899 , p_source_3 IN NUMBER
78900 --First Distribution Identifier
78901 , p_source_5 IN NUMBER
78902 --Distribution Type
78903 , p_source_6 IN VARCHAR2
78904 --Currency Code
78905 , p_source_7 IN VARCHAR2
78906 --Currency Conversion Date
78907 , p_source_8 IN DATE
78908 --Currency Conversion Rate
78909 , p_source_9 IN NUMBER
78910 --Currency Conversion Type
78911 , p_source_10 IN VARCHAR2
78912 --Accounted Amount
78913 , p_source_11 IN NUMBER
78914 )
78915 IS
78916
78917 l_component_type VARCHAR2(80);
78918 l_component_code VARCHAR2(30);
78919 l_component_type_code VARCHAR2(1);
78920 l_component_appl_id INTEGER;
78921 l_amb_context_code VARCHAR2(30);
78922 l_entity_code VARCHAR2(30);
78923 l_event_class_code VARCHAR2(30);
78924 l_ae_header_id NUMBER;
78925 l_event_type_code VARCHAR2(30);
78926 l_line_definition_code VARCHAR2(30);
78927 l_line_definition_owner_code VARCHAR2(1);
78928 --
78929 -- adr variables
78930 l_segment VARCHAR2(30);
78931 l_ccid NUMBER;
78932 l_adr_transaction_coa_id NUMBER;
78933 l_adr_accounting_coa_id NUMBER;
78934 l_adr_flexfield_segment_code VARCHAR2(30);
78935 l_adr_flex_value_set_id NUMBER;
78936 l_adr_value_type_code VARCHAR2(30);
78937 l_adr_value_combination_id NUMBER;
78938 l_adr_value_segment_code VARCHAR2(30);
78939
78940 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
78941 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
78942 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
78943 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
78944
78945 -- 4262811 Variables ------------------------------------------------------------------------------------------
78946 l_entered_amt_idx NUMBER;
78947 l_accted_amt_idx NUMBER;
78948 l_acc_rev_flag VARCHAR2(1);
78949 l_accrual_line_num NUMBER;
78950 l_tmp_amt NUMBER;
78951 l_acc_rev_natural_side_code VARCHAR2(1);
78952
78953 l_num_entries NUMBER;
78957 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
78954 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
78955 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
78956 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
78958 l_recog_line_1 NUMBER;
78959 l_recog_line_2 NUMBER;
78960
78961 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
78962 l_bflow_applied_to_amt NUMBER; -- 5132302
78963 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
78964
78965 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78966
78967 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
78968 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
78969
78970 ---------------------------------------------------------------------------------------------------------------
78971
78972
78973 --
78974 -- bulk performance
78975 --
78976 l_balance_type_code VARCHAR2(1);
78977 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
78978 l_log_module VARCHAR2(240);
78979
78980 --
78981 -- Upgrade strategy
78982 --
78983 l_actual_upg_option VARCHAR2(1);
78984 l_enc_upg_option VARCHAR2(1);
78985
78986 --
78987 BEGIN
78988 --
78989 IF g_log_enabled THEN
78990 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_175';
78991 END IF;
78992 --
78993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78994
78995 trace
78996 (p_msg => 'BEGIN of AcctLineType_175'
78997 ,p_level => C_LEVEL_PROCEDURE
78998 ,p_module => l_log_module);
78999
79000 END IF;
79001 --
79002 l_component_type := 'AMB_JLT';
79003 l_component_code := 'IOP';
79004 l_component_type_code := 'S';
79005 l_component_appl_id := 555;
79006 l_amb_context_code := 'DEFAULT';
79007 l_entity_code := 'INVENTORY';
79008 l_event_class_code := 'DIR_INTERORG_RCPT';
79009 l_event_type_code := 'DIR_INTERORG_RCPT';
79010 l_line_definition_owner_code := 'S';
79011 l_line_definition_code := 'DIRECT_XFER_RECV';
79012 --
79013 l_balance_type_code := 'A';
79014 l_segment := NULL;
79015 l_ccid := NULL;
79016 l_adr_transaction_coa_id := NULL;
79017 l_adr_accounting_coa_id := NULL;
79018 l_adr_flexfield_segment_code := NULL;
79019 l_adr_flex_value_set_id := NULL;
79020 l_adr_value_type_code := NULL;
79021 l_adr_value_combination_id := NULL;
79022 l_adr_value_segment_code := NULL;
79023
79024 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
79025 l_bflow_class_code := ''; -- 4219869 Business Flow
79026 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
79027 l_budgetary_control_flag := 'N';
79028
79029 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79030 l_bflow_applied_to_amt := NULL; -- 5132302
79031 l_entered_amt_idx := NULL; -- 4262811
79032 l_accted_amt_idx := NULL; -- 4262811
79033 l_acc_rev_flag := NULL; -- 4262811
79034 l_accrual_line_num := NULL; -- 4262811
79035 l_tmp_amt := NULL; -- 4262811
79036 --
79037
79038 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79039 l_balance_type_code <> 'B' THEN
79040 IF NVL(p_source_2,'
79041 ') = 'IOP'
79042 THEN
79043
79044 --
79045 XLA_AE_LINES_PKG.SetNewLine;
79046
79047 p_balance_type_code := l_balance_type_code;
79048 -- set the flag so later we will know whether the gain loss line needs to be created
79049
79050 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79051 p_actual_flag :='A';
79052 END IF;
79053
79054 --
79055 -- bulk performance
79056 --
79057 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79058 p_header_num => 0); -- 4262811
79059 --
79060 -- set accounting line options
79061 --
79062 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79063 p_natural_side_code => 'D'
79064 , p_gain_or_loss_flag => 'N'
79065 , p_gl_transfer_mode_code => 'D'
79066 , p_acct_entry_type_code => 'A'
79067 , p_switch_side_flag => 'Y'
79068 , p_merge_duplicate_code => 'W'
79069 );
79070 --
79071 l_acc_rev_natural_side_code := 'C'; -- 4262811
79072 --
79073 --
79074 -- set accounting line type info
79075 --
79076 xla_ae_lines_pkg.SetAcctLineType
79077 (p_component_type => l_component_type
79078 ,p_event_type_code => l_event_type_code
79079 ,p_line_definition_owner_code => l_line_definition_owner_code
79080 ,p_line_definition_code => l_line_definition_code
79081 ,p_accounting_line_code => l_component_code
79082 ,p_accounting_line_type_code => l_component_type_code
79083 ,p_accounting_line_appl_id => l_component_appl_id
79087 --
79084 ,p_amb_context_code => l_amb_context_code
79085 ,p_entity_code => l_entity_code
79086 ,p_event_class_code => l_event_class_code);
79088 -- set accounting class
79089 --
79090 xla_ae_lines_pkg.SetAcctClass(
79091 p_accounting_class_code => 'INTERORG_PAYABLES'
79092 , p_ae_header_id => l_ae_header_id
79093 );
79094
79095 --
79096 -- set rounding class
79097 --
79098 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79099 'INTERORG_PAYABLES';
79100
79101 --
79102 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79103 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79104 --
79105 -- bulk performance
79106 --
79107 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79108
79109 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79110 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79111
79112 -- 4955764
79113 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79114 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79115
79116 -- 4458381 Public Sector Enh
79117
79118 --
79119 -- set accounting attributes for the line type
79120 --
79121 l_entered_amt_idx := 3;
79122 l_accted_amt_idx := 8;
79123 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79124 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79125 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
79126 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79127 l_rec_acct_attrs.array_char_value(2) := p_source_6;
79128 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79129 l_rec_acct_attrs.array_num_value(3) := p_source_3;
79130 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79131 l_rec_acct_attrs.array_char_value(4) := p_source_7;
79132 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79133 l_rec_acct_attrs.array_date_value(5) := p_source_8;
79134 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79135 l_rec_acct_attrs.array_num_value(6) := p_source_9;
79136 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79137 l_rec_acct_attrs.array_char_value(7) := p_source_10;
79138 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79139 l_rec_acct_attrs.array_num_value(8) := p_source_11;
79140
79141 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79142 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79143
79144 ---------------------------------------------------------------------------------------------------------------
79145 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79146 ---------------------------------------------------------------------------------------------------------------
79147 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79148
79149 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79150 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79151
79152 IF xla_accounting_cache_pkg.GetValueChar
79153 (p_source_code => 'LEDGER_CATEGORY_CODE'
79154 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79155 AND l_bflow_method_code = 'PRIOR_ENTRY'
79156 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79157 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79158 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79159 )
79160 THEN
79161 xla_ae_lines_pkg.BflowUpgEntry
79162 (p_business_method_code => l_bflow_method_code
79163 ,p_business_class_code => l_bflow_class_code
79164 ,p_balance_type => l_balance_type_code);
79165 ELSE
79166 NULL;
79167 -- No business flow processing for business flow method of NONE.
79168 END IF;
79169
79170 --
79171 -- call analytical criteria
79172 --
79173
79174 --
79175 -- call description
79176 --
79177 -- No description or it is inherited.
79178 --
79179 -- call ADRs
79180 -- Bug 4922099
79181 --
79182 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79183 (NVL(l_actual_upg_option, 'N') = 'O') OR
79184 (NVL(l_enc_upg_option, 'N') = 'O')
79185 )
79186 THEN
79187 NULL;
79188 --
79189 --
79190
79191 l_ccid := AcctDerRule_20(
79192 p_application_id => p_application_id
79193 , p_ae_header_id => l_ae_header_id
79194 , p_source_1 => p_source_1
79195 , p_source_2 => p_source_2
79196 , x_transaction_coa_id => l_adr_transaction_coa_id
79197 , x_accounting_coa_id => l_adr_accounting_coa_id
79198 , x_value_type_code => l_adr_value_type_code
79199 , p_side => 'NA'
79200 );
79201
79202 xla_ae_lines_pkg.set_ccid(
79206 , p_accounting_coa_id => l_adr_accounting_coa_id
79203 p_code_combination_id => l_ccid
79204 , p_value_type_code => l_adr_value_type_code
79205 , p_transaction_coa_id => l_adr_transaction_coa_id
79207 , p_adr_code => 'IOP'
79208 , p_adr_type_code => 'S'
79209 , p_component_type => l_component_type
79210 , p_component_code => l_component_code
79211 , p_component_type_code => l_component_type_code
79212 , p_component_appl_id => l_component_appl_id
79213 , p_amb_context_code => l_amb_context_code
79214 , p_side => 'NA'
79215 );
79216
79217
79218 --
79219 --
79220 END IF;
79221 --
79222 -- Bug 4922099
79223 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79224 (NVL(l_enc_upg_option, 'N') = 'O')
79225 ) AND
79226 (l_bflow_method_code = 'PRIOR_ENTRY')
79227 )
79228 THEN
79229 IF
79230 --
79231 1 = 2
79232 --
79233 THEN
79234 xla_accounting_err_pkg.build_message
79235 (p_appli_s_name => 'XLA'
79236 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79237 ,p_token_1 => 'LINE_NUMBER'
79238 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
79239 ,p_token_2 => 'LINE_TYPE_NAME'
79240 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
79241 l_component_type
79242 ,l_component_code
79243 ,l_component_type_code
79244 ,l_component_appl_id
79245 ,l_amb_context_code
79246 ,l_entity_code
79247 ,l_event_class_code
79248 )
79249 ,p_token_3 => 'OWNER'
79250 ,p_value_3 => xla_lookups_pkg.get_meaning(
79251 p_lookup_type => 'XLA_OWNER_TYPE'
79252 ,p_lookup_code => l_component_type_code
79253 )
79254 ,p_token_4 => 'PRODUCT_NAME'
79255 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79256 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79257 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79258 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79259 ,p_ae_header_id => NULL
79260 );
79261
79262 IF (C_LEVEL_ERROR>= g_log_level) THEN
79263 trace
79264 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79265 ,p_level => C_LEVEL_ERROR
79266 ,p_module => l_log_module);
79267 END IF;
79268 END IF;
79269 END IF;
79270 --
79271 --
79272 ------------------------------------------------------------------------------------------------
79273 -- 4219869 Business Flow
79274 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
79275 -- Prior Entry. Currently, the following code is always generated.
79276 ------------------------------------------------------------------------------------------------
79277 XLA_AE_LINES_PKG.ValidateCurrentLine;
79278
79279 ------------------------------------------------------------------------------------
79280 -- 4219869 Business Flow
79281 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
79282 ------------------------------------------------------------------------------------
79283 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79284
79285 ----------------------------------------------------------------------------------
79286 -- 4219869 Business Flow
79287 -- Update journal entry status -- Need to generate this within IF <condition>
79288 ----------------------------------------------------------------------------------
79289 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79290 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
79291 ,p_balance_type_code => l_balance_type_code
79292 );
79293
79294 -------------------------------------------------------------------------------------------
79295 -- 4262811 - Generate the Accrual Reversal lines
79296 -------------------------------------------------------------------------------------------
79297 BEGIN
79301 l_acc_rev_flag := 'N';
79298 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
79299 (g_array_event(p_event_id).array_value_num('header_index'));
79300 IF l_acc_rev_flag IS NULL THEN
79302 END IF;
79303 EXCEPTION
79304 WHEN OTHERS THEN
79305 l_acc_rev_flag := 'N';
79306 END;
79307 --
79308 IF (l_acc_rev_flag = 'Y') THEN
79309
79310 -- 4645092 ------------------------------------------------------------------------------
79311 -- To allow MPA report to determine if it should generate report process
79312 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
79313 ------------------------------------------------------------------------------------------
79314
79315 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
79316 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
79317 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
79318 -- call ADRs
79319 -- Bug 4922099
79320 --
79321 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79322 (NVL(l_actual_upg_option, 'N') = 'O') OR
79323 (NVL(l_enc_upg_option, 'N') = 'O')
79324 )
79325 THEN
79326 NULL;
79327 --
79328 --
79329
79330 l_ccid := AcctDerRule_20(
79331 p_application_id => p_application_id
79332 , p_ae_header_id => l_ae_header_id
79333 , p_source_1 => p_source_1
79334 , p_source_2 => p_source_2
79335 , x_transaction_coa_id => l_adr_transaction_coa_id
79336 , x_accounting_coa_id => l_adr_accounting_coa_id
79337 , x_value_type_code => l_adr_value_type_code
79338 , p_side => 'NA'
79339 );
79340
79341 xla_ae_lines_pkg.set_ccid(
79342 p_code_combination_id => l_ccid
79343 , p_value_type_code => l_adr_value_type_code
79344 , p_transaction_coa_id => l_adr_transaction_coa_id
79345 , p_accounting_coa_id => l_adr_accounting_coa_id
79346 , p_adr_code => 'IOP'
79347 , p_adr_type_code => 'S'
79348 , p_component_type => l_component_type
79349 , p_component_code => l_component_code
79350 , p_component_type_code => l_component_type_code
79351 , p_component_appl_id => l_component_appl_id
79352 , p_amb_context_code => l_amb_context_code
79353 , p_side => 'NA'
79354 );
79355
79356
79357 --
79358 --
79359 END IF;
79360
79361 --
79362 -- Update the line information that should be overwritten
79363 --
79364 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
79365 p_header_num => 1);
79366 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
79367
79368 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
79369
79370 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
79371 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
79372 END IF;
79373
79374 --
79375 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79376 --
79377 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79378 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
79379 ELSE
79380 ---------------------------------------------------------------------------------------------------
79381 -- 4262811a Switch Sign
79382 ---------------------------------------------------------------------------------------------------
79383 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
79384 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79385 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79386 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79387 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79388 -- 5132302
79389 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79390 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79391
79392 END IF;
79393
79394 -- 4955764
79395 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79396 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79397
79398
79399 XLA_AE_LINES_PKG.ValidateCurrentLine;
79400 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79401
79402 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79403 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79404 ,p_balance_type_code => l_balance_type_code);
79405
79406 END IF;
79407
79411 -- No MPA option is assigned.
79408 -----------------------------------------------------------------------------------------
79409 -- 4262811 Multiperiod Accounting
79410 -----------------------------------------------------------------------------------------
79412
79413
79414 END IF;
79415 END IF;
79416 --
79417
79418 --
79419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79420 trace
79421 (p_msg => 'END of AcctLineType_175'
79422 ,p_level => C_LEVEL_PROCEDURE
79423 ,p_module => l_log_module);
79424 END IF;
79425 --
79426 EXCEPTION
79427 WHEN xla_exceptions_pkg.application_exception THEN
79428 RAISE;
79429 WHEN OTHERS THEN
79430 xla_exceptions_pkg.raise_message
79431 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_175');
79432 END AcctLineType_175;
79433 --
79434
79435 ---------------------------------------
79436 --
79437 -- PRIVATE FUNCTION
79438 -- AcctLineType_176
79439 --
79440 ---------------------------------------
79441 PROCEDURE AcctLineType_176 (
79442 p_application_id IN NUMBER
79443 ,p_event_id IN NUMBER
79444 ,p_calculate_acctd_flag IN VARCHAR2
79445 ,p_calculate_g_l_flag IN VARCHAR2
79446 ,p_actual_flag IN OUT VARCHAR2
79447 ,p_balance_type_code OUT VARCHAR2
79448 ,p_gain_or_loss_ref OUT VARCHAR2
79449
79450 --Transaction Account
79451 , p_source_1 IN NUMBER
79452 --Journal Line Type
79453 , p_source_2 IN VARCHAR2
79454 --Entered Amount
79455 , p_source_3 IN NUMBER
79456 --First Distribution Identifier
79457 , p_source_5 IN NUMBER
79458 --Distribution Type
79459 , p_source_6 IN VARCHAR2
79460 --Currency Code
79461 , p_source_7 IN VARCHAR2
79462 --Currency Conversion Date
79463 , p_source_8 IN DATE
79464 --Currency Conversion Rate
79465 , p_source_9 IN NUMBER
79466 --Currency Conversion Type
79467 , p_source_10 IN VARCHAR2
79468 --Accounted Amount
79469 , p_source_11 IN NUMBER
79470 )
79471 IS
79472
79473 l_component_type VARCHAR2(80);
79474 l_component_code VARCHAR2(30);
79475 l_component_type_code VARCHAR2(1);
79476 l_component_appl_id INTEGER;
79477 l_amb_context_code VARCHAR2(30);
79478 l_entity_code VARCHAR2(30);
79479 l_event_class_code VARCHAR2(30);
79480 l_ae_header_id NUMBER;
79481 l_event_type_code VARCHAR2(30);
79482 l_line_definition_code VARCHAR2(30);
79483 l_line_definition_owner_code VARCHAR2(1);
79484 --
79485 -- adr variables
79486 l_segment VARCHAR2(30);
79487 l_ccid NUMBER;
79488 l_adr_transaction_coa_id NUMBER;
79489 l_adr_accounting_coa_id NUMBER;
79490 l_adr_flexfield_segment_code VARCHAR2(30);
79491 l_adr_flex_value_set_id NUMBER;
79492 l_adr_value_type_code VARCHAR2(30);
79493 l_adr_value_combination_id NUMBER;
79494 l_adr_value_segment_code VARCHAR2(30);
79495
79496 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
79497 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
79498 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
79499 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
79500
79501 -- 4262811 Variables ------------------------------------------------------------------------------------------
79502 l_entered_amt_idx NUMBER;
79503 l_accted_amt_idx NUMBER;
79504 l_acc_rev_flag VARCHAR2(1);
79505 l_accrual_line_num NUMBER;
79506 l_tmp_amt NUMBER;
79507 l_acc_rev_natural_side_code VARCHAR2(1);
79508
79509 l_num_entries NUMBER;
79510 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
79511 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
79512 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
79513 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
79514 l_recog_line_1 NUMBER;
79515 l_recog_line_2 NUMBER;
79516
79517 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
79518 l_bflow_applied_to_amt NUMBER; -- 5132302
79519 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
79520
79521 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79522
79523 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
79524 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
79525
79526 ---------------------------------------------------------------------------------------------------------------
79527
79528
79529 --
79530 -- bulk performance
79531 --
79532 l_balance_type_code VARCHAR2(1);
79533 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
79534 l_log_module VARCHAR2(240);
79535
79536 --
79537 -- Upgrade strategy
79538 --
79539 l_actual_upg_option VARCHAR2(1);
79540 l_enc_upg_option VARCHAR2(1);
79541
79542 --
79543 BEGIN
79544 --
79548 --
79545 IF g_log_enabled THEN
79546 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_176';
79547 END IF;
79549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79550
79551 trace
79552 (p_msg => 'BEGIN of AcctLineType_176'
79553 ,p_level => C_LEVEL_PROCEDURE
79554 ,p_module => l_log_module);
79555
79556 END IF;
79557 --
79558 l_component_type := 'AMB_JLT';
79559 l_component_code := 'IOP';
79560 l_component_type_code := 'S';
79561 l_component_appl_id := 555;
79562 l_amb_context_code := 'DEFAULT';
79563 l_entity_code := 'INVENTORY';
79564 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
79565 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
79566 l_line_definition_owner_code := 'S';
79567 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
79568 --
79569 l_balance_type_code := 'A';
79570 l_segment := NULL;
79571 l_ccid := NULL;
79572 l_adr_transaction_coa_id := NULL;
79573 l_adr_accounting_coa_id := NULL;
79574 l_adr_flexfield_segment_code := NULL;
79575 l_adr_flex_value_set_id := NULL;
79576 l_adr_value_type_code := NULL;
79577 l_adr_value_combination_id := NULL;
79578 l_adr_value_segment_code := NULL;
79579
79580 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
79581 l_bflow_class_code := ''; -- 4219869 Business Flow
79582 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
79583 l_budgetary_control_flag := 'N';
79584
79585 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79586 l_bflow_applied_to_amt := NULL; -- 5132302
79587 l_entered_amt_idx := NULL; -- 4262811
79588 l_accted_amt_idx := NULL; -- 4262811
79589 l_acc_rev_flag := NULL; -- 4262811
79590 l_accrual_line_num := NULL; -- 4262811
79591 l_tmp_amt := NULL; -- 4262811
79592 --
79593
79594 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79595 l_balance_type_code <> 'B' THEN
79596 IF NVL(p_source_2,'
79597 ') = 'IOP'
79598 THEN
79599
79600 --
79601 XLA_AE_LINES_PKG.SetNewLine;
79602
79603 p_balance_type_code := l_balance_type_code;
79604 -- set the flag so later we will know whether the gain loss line needs to be created
79605
79606 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79607 p_actual_flag :='A';
79608 END IF;
79609
79610 --
79611 -- bulk performance
79612 --
79613 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79614 p_header_num => 0); -- 4262811
79615 --
79616 -- set accounting line options
79617 --
79618 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79619 p_natural_side_code => 'D'
79620 , p_gain_or_loss_flag => 'N'
79621 , p_gl_transfer_mode_code => 'D'
79622 , p_acct_entry_type_code => 'A'
79623 , p_switch_side_flag => 'Y'
79624 , p_merge_duplicate_code => 'W'
79625 );
79626 --
79627 l_acc_rev_natural_side_code := 'C'; -- 4262811
79628 --
79629 --
79630 -- set accounting line type info
79631 --
79632 xla_ae_lines_pkg.SetAcctLineType
79633 (p_component_type => l_component_type
79634 ,p_event_type_code => l_event_type_code
79635 ,p_line_definition_owner_code => l_line_definition_owner_code
79636 ,p_line_definition_code => l_line_definition_code
79637 ,p_accounting_line_code => l_component_code
79638 ,p_accounting_line_type_code => l_component_type_code
79639 ,p_accounting_line_appl_id => l_component_appl_id
79640 ,p_amb_context_code => l_amb_context_code
79641 ,p_entity_code => l_entity_code
79642 ,p_event_class_code => l_event_class_code);
79643 --
79644 -- set accounting class
79645 --
79646 xla_ae_lines_pkg.SetAcctClass(
79647 p_accounting_class_code => 'INTERORG_PAYABLES'
79648 , p_ae_header_id => l_ae_header_id
79649 );
79650
79651 --
79652 -- set rounding class
79653 --
79654 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79655 'INTERORG_PAYABLES';
79656
79657 --
79658 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79659 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79660 --
79661 -- bulk performance
79662 --
79663 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79664
79665 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79666 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79667
79668 -- 4955764
79669 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79670 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79671
79672 -- 4458381 Public Sector Enh
79673
79674 --
79675 -- set accounting attributes for the line type
79676 --
79680 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79677 l_entered_amt_idx := 3;
79678 l_accted_amt_idx := 8;
79679 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79681 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
79682 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79683 l_rec_acct_attrs.array_char_value(2) := p_source_6;
79684 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79685 l_rec_acct_attrs.array_num_value(3) := p_source_3;
79686 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79687 l_rec_acct_attrs.array_char_value(4) := p_source_7;
79688 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79689 l_rec_acct_attrs.array_date_value(5) := p_source_8;
79690 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79691 l_rec_acct_attrs.array_num_value(6) := p_source_9;
79692 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79693 l_rec_acct_attrs.array_char_value(7) := p_source_10;
79694 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79695 l_rec_acct_attrs.array_num_value(8) := p_source_11;
79696
79697 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
79698 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
79699
79700 ---------------------------------------------------------------------------------------------------------------
79701 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
79702 ---------------------------------------------------------------------------------------------------------------
79703 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
79704
79705 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79706 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
79707
79708 IF xla_accounting_cache_pkg.GetValueChar
79709 (p_source_code => 'LEDGER_CATEGORY_CODE'
79710 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
79711 AND l_bflow_method_code = 'PRIOR_ENTRY'
79712 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
79713 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
79714 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
79715 )
79716 THEN
79717 xla_ae_lines_pkg.BflowUpgEntry
79718 (p_business_method_code => l_bflow_method_code
79719 ,p_business_class_code => l_bflow_class_code
79720 ,p_balance_type => l_balance_type_code);
79721 ELSE
79722 NULL;
79723 -- No business flow processing for business flow method of NONE.
79724 END IF;
79725
79726 --
79727 -- call analytical criteria
79728 --
79729
79730 --
79731 -- call description
79732 --
79733 -- No description or it is inherited.
79734 --
79735 -- call ADRs
79736 -- Bug 4922099
79737 --
79738 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79739 (NVL(l_actual_upg_option, 'N') = 'O') OR
79740 (NVL(l_enc_upg_option, 'N') = 'O')
79741 )
79742 THEN
79743 NULL;
79744 --
79745 --
79746
79747 l_ccid := AcctDerRule_20(
79748 p_application_id => p_application_id
79749 , p_ae_header_id => l_ae_header_id
79750 , p_source_1 => p_source_1
79751 , p_source_2 => p_source_2
79752 , x_transaction_coa_id => l_adr_transaction_coa_id
79753 , x_accounting_coa_id => l_adr_accounting_coa_id
79754 , x_value_type_code => l_adr_value_type_code
79755 , p_side => 'NA'
79756 );
79757
79758 xla_ae_lines_pkg.set_ccid(
79759 p_code_combination_id => l_ccid
79760 , p_value_type_code => l_adr_value_type_code
79761 , p_transaction_coa_id => l_adr_transaction_coa_id
79762 , p_accounting_coa_id => l_adr_accounting_coa_id
79763 , p_adr_code => 'IOP'
79764 , p_adr_type_code => 'S'
79765 , p_component_type => l_component_type
79766 , p_component_code => l_component_code
79767 , p_component_type_code => l_component_type_code
79768 , p_component_appl_id => l_component_appl_id
79769 , p_amb_context_code => l_amb_context_code
79770 , p_side => 'NA'
79771 );
79772
79773
79774 --
79775 --
79776 END IF;
79777 --
79778 -- Bug 4922099
79779 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
79780 (NVL(l_enc_upg_option, 'N') = 'O')
79781 ) AND
79782 (l_bflow_method_code = 'PRIOR_ENTRY')
79783 )
79784 THEN
79785 IF
79786 --
79787 1 = 2
79788 --
79789 THEN
79790 xla_accounting_err_pkg.build_message
79791 (p_appli_s_name => 'XLA'
79792 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79793 ,p_token_1 => 'LINE_NUMBER'
79794 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
79798 ,l_component_code
79795 ,p_token_2 => 'LINE_TYPE_NAME'
79796 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
79797 l_component_type
79799 ,l_component_type_code
79800 ,l_component_appl_id
79801 ,l_amb_context_code
79802 ,l_entity_code
79803 ,l_event_class_code
79804 )
79805 ,p_token_3 => 'OWNER'
79806 ,p_value_3 => xla_lookups_pkg.get_meaning(
79807 p_lookup_type => 'XLA_OWNER_TYPE'
79808 ,p_lookup_code => l_component_type_code
79809 )
79810 ,p_token_4 => 'PRODUCT_NAME'
79811 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
79812 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
79813 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
79814 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
79815 ,p_ae_header_id => NULL
79816 );
79817
79818 IF (C_LEVEL_ERROR>= g_log_level) THEN
79819 trace
79820 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
79821 ,p_level => C_LEVEL_ERROR
79822 ,p_module => l_log_module);
79823 END IF;
79824 END IF;
79825 END IF;
79826 --
79827 --
79828 ------------------------------------------------------------------------------------------------
79829 -- 4219869 Business Flow
79830 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
79831 -- Prior Entry. Currently, the following code is always generated.
79832 ------------------------------------------------------------------------------------------------
79833 XLA_AE_LINES_PKG.ValidateCurrentLine;
79834
79835 ------------------------------------------------------------------------------------
79836 -- 4219869 Business Flow
79837 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
79838 ------------------------------------------------------------------------------------
79839 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79840
79841 ----------------------------------------------------------------------------------
79842 -- 4219869 Business Flow
79843 -- Update journal entry status -- Need to generate this within IF <condition>
79844 ----------------------------------------------------------------------------------
79845 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79846 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
79847 ,p_balance_type_code => l_balance_type_code
79848 );
79849
79850 -------------------------------------------------------------------------------------------
79851 -- 4262811 - Generate the Accrual Reversal lines
79852 -------------------------------------------------------------------------------------------
79853 BEGIN
79854 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
79855 (g_array_event(p_event_id).array_value_num('header_index'));
79856 IF l_acc_rev_flag IS NULL THEN
79857 l_acc_rev_flag := 'N';
79858 END IF;
79859 EXCEPTION
79860 WHEN OTHERS THEN
79861 l_acc_rev_flag := 'N';
79862 END;
79863 --
79864 IF (l_acc_rev_flag = 'Y') THEN
79865
79866 -- 4645092 ------------------------------------------------------------------------------
79867 -- To allow MPA report to determine if it should generate report process
79868 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
79869 ------------------------------------------------------------------------------------------
79870
79871 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
79872 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
79873 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
79874 -- call ADRs
79875 -- Bug 4922099
79876 --
79877 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
79878 (NVL(l_actual_upg_option, 'N') = 'O') OR
79879 (NVL(l_enc_upg_option, 'N') = 'O')
79880 )
79881 THEN
79882 NULL;
79883 --
79884 --
79885
79886 l_ccid := AcctDerRule_20(
79887 p_application_id => p_application_id
79888 , p_ae_header_id => l_ae_header_id
79889 , p_source_1 => p_source_1
79893 , x_value_type_code => l_adr_value_type_code
79890 , p_source_2 => p_source_2
79891 , x_transaction_coa_id => l_adr_transaction_coa_id
79892 , x_accounting_coa_id => l_adr_accounting_coa_id
79894 , p_side => 'NA'
79895 );
79896
79897 xla_ae_lines_pkg.set_ccid(
79898 p_code_combination_id => l_ccid
79899 , p_value_type_code => l_adr_value_type_code
79900 , p_transaction_coa_id => l_adr_transaction_coa_id
79901 , p_accounting_coa_id => l_adr_accounting_coa_id
79902 , p_adr_code => 'IOP'
79903 , p_adr_type_code => 'S'
79904 , p_component_type => l_component_type
79905 , p_component_code => l_component_code
79906 , p_component_type_code => l_component_type_code
79907 , p_component_appl_id => l_component_appl_id
79908 , p_amb_context_code => l_amb_context_code
79909 , p_side => 'NA'
79910 );
79911
79912
79913 --
79914 --
79915 END IF;
79916
79917 --
79918 -- Update the line information that should be overwritten
79919 --
79920 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
79921 p_header_num => 1);
79922 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
79923
79924 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
79925
79926 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
79927 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
79928 END IF;
79929
79930 --
79931 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79932 --
79933 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79934 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
79935 ELSE
79936 ---------------------------------------------------------------------------------------------------
79937 -- 4262811a Switch Sign
79938 ---------------------------------------------------------------------------------------------------
79939 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
79940 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79941 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79942 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79943 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79944 -- 5132302
79945 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79946 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79947
79948 END IF;
79949
79950 -- 4955764
79951 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79952 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79953
79954
79955 XLA_AE_LINES_PKG.ValidateCurrentLine;
79956 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79957
79958 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79959 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79960 ,p_balance_type_code => l_balance_type_code);
79961
79962 END IF;
79963
79964 -----------------------------------------------------------------------------------------
79965 -- 4262811 Multiperiod Accounting
79966 -----------------------------------------------------------------------------------------
79967 -- No MPA option is assigned.
79968
79969
79970 END IF;
79971 END IF;
79972 --
79973
79974 --
79975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79976 trace
79977 (p_msg => 'END of AcctLineType_176'
79978 ,p_level => C_LEVEL_PROCEDURE
79979 ,p_module => l_log_module);
79980 END IF;
79981 --
79982 EXCEPTION
79983 WHEN xla_exceptions_pkg.application_exception THEN
79984 RAISE;
79985 WHEN OTHERS THEN
79986 xla_exceptions_pkg.raise_message
79987 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_176');
79988 END AcctLineType_176;
79989 --
79990
79991 ---------------------------------------
79992 --
79993 -- PRIVATE FUNCTION
79994 -- AcctLineType_177
79995 --
79996 ---------------------------------------
79997 PROCEDURE AcctLineType_177 (
79998 p_application_id IN NUMBER
79999 ,p_event_id IN NUMBER
80000 ,p_calculate_acctd_flag IN VARCHAR2
80001 ,p_calculate_g_l_flag IN VARCHAR2
80002 ,p_actual_flag IN OUT VARCHAR2
80003 ,p_balance_type_code OUT VARCHAR2
80004 ,p_gain_or_loss_ref OUT VARCHAR2
80005
80006 --Transaction Account
80007 , p_source_1 IN NUMBER
80008 --Journal Line Type
80009 , p_source_2 IN VARCHAR2
80010 --Entered Amount
80014 --Distribution Type
80011 , p_source_3 IN NUMBER
80012 --First Distribution Identifier
80013 , p_source_5 IN NUMBER
80015 , p_source_6 IN VARCHAR2
80016 --Currency Code
80017 , p_source_7 IN VARCHAR2
80018 --Currency Conversion Date
80019 , p_source_8 IN DATE
80020 --Currency Conversion Rate
80021 , p_source_9 IN NUMBER
80022 --Currency Conversion Type
80023 , p_source_10 IN VARCHAR2
80024 --Accounted Amount
80025 , p_source_11 IN NUMBER
80026 )
80027 IS
80028
80029 l_component_type VARCHAR2(80);
80030 l_component_code VARCHAR2(30);
80031 l_component_type_code VARCHAR2(1);
80032 l_component_appl_id INTEGER;
80033 l_amb_context_code VARCHAR2(30);
80034 l_entity_code VARCHAR2(30);
80035 l_event_class_code VARCHAR2(30);
80036 l_ae_header_id NUMBER;
80037 l_event_type_code VARCHAR2(30);
80038 l_line_definition_code VARCHAR2(30);
80039 l_line_definition_owner_code VARCHAR2(1);
80040 --
80041 -- adr variables
80042 l_segment VARCHAR2(30);
80043 l_ccid NUMBER;
80044 l_adr_transaction_coa_id NUMBER;
80045 l_adr_accounting_coa_id NUMBER;
80046 l_adr_flexfield_segment_code VARCHAR2(30);
80047 l_adr_flex_value_set_id NUMBER;
80048 l_adr_value_type_code VARCHAR2(30);
80049 l_adr_value_combination_id NUMBER;
80050 l_adr_value_segment_code VARCHAR2(30);
80051
80052 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
80053 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
80054 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
80055 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
80056
80057 -- 4262811 Variables ------------------------------------------------------------------------------------------
80058 l_entered_amt_idx NUMBER;
80059 l_accted_amt_idx NUMBER;
80060 l_acc_rev_flag VARCHAR2(1);
80061 l_accrual_line_num NUMBER;
80062 l_tmp_amt NUMBER;
80063 l_acc_rev_natural_side_code VARCHAR2(1);
80064
80065 l_num_entries NUMBER;
80066 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
80067 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
80068 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
80069 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
80070 l_recog_line_1 NUMBER;
80071 l_recog_line_2 NUMBER;
80072
80073 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
80074 l_bflow_applied_to_amt NUMBER; -- 5132302
80075 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
80076
80077 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80078
80079 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
80080 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
80081
80082 ---------------------------------------------------------------------------------------------------------------
80083
80084
80085 --
80086 -- bulk performance
80087 --
80088 l_balance_type_code VARCHAR2(1);
80089 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
80090 l_log_module VARCHAR2(240);
80091
80092 --
80093 -- Upgrade strategy
80094 --
80095 l_actual_upg_option VARCHAR2(1);
80096 l_enc_upg_option VARCHAR2(1);
80097
80098 --
80099 BEGIN
80100 --
80101 IF g_log_enabled THEN
80102 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_177';
80103 END IF;
80104 --
80105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80106
80107 trace
80108 (p_msg => 'BEGIN of AcctLineType_177'
80109 ,p_level => C_LEVEL_PROCEDURE
80110 ,p_module => l_log_module);
80111
80112 END IF;
80113 --
80114 l_component_type := 'AMB_JLT';
80115 l_component_code := 'IOP';
80116 l_component_type_code := 'S';
80117 l_component_appl_id := 555;
80118 l_amb_context_code := 'DEFAULT';
80119 l_entity_code := 'INVENTORY';
80120 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
80121 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
80122 l_line_definition_owner_code := 'S';
80123 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
80124 --
80125 l_balance_type_code := 'A';
80126 l_segment := NULL;
80127 l_ccid := NULL;
80128 l_adr_transaction_coa_id := NULL;
80129 l_adr_accounting_coa_id := NULL;
80130 l_adr_flexfield_segment_code := NULL;
80131 l_adr_flex_value_set_id := NULL;
80132 l_adr_value_type_code := NULL;
80133 l_adr_value_combination_id := NULL;
80134 l_adr_value_segment_code := NULL;
80135
80136 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
80137 l_bflow_class_code := ''; -- 4219869 Business Flow
80138 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
80139 l_budgetary_control_flag := 'N';
80140
80141 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80145 l_acc_rev_flag := NULL; -- 4262811
80142 l_bflow_applied_to_amt := NULL; -- 5132302
80143 l_entered_amt_idx := NULL; -- 4262811
80144 l_accted_amt_idx := NULL; -- 4262811
80146 l_accrual_line_num := NULL; -- 4262811
80147 l_tmp_amt := NULL; -- 4262811
80148 --
80149
80150 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80151 l_balance_type_code <> 'B' THEN
80152 IF NVL(p_source_2,'
80153 ') = 'IOP'
80154 THEN
80155
80156 --
80157 XLA_AE_LINES_PKG.SetNewLine;
80158
80159 p_balance_type_code := l_balance_type_code;
80160 -- set the flag so later we will know whether the gain loss line needs to be created
80161
80162 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80163 p_actual_flag :='A';
80164 END IF;
80165
80166 --
80167 -- bulk performance
80168 --
80169 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80170 p_header_num => 0); -- 4262811
80171 --
80172 -- set accounting line options
80173 --
80174 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80175 p_natural_side_code => 'D'
80176 , p_gain_or_loss_flag => 'N'
80177 , p_gl_transfer_mode_code => 'D'
80178 , p_acct_entry_type_code => 'A'
80179 , p_switch_side_flag => 'Y'
80180 , p_merge_duplicate_code => 'W'
80181 );
80182 --
80183 l_acc_rev_natural_side_code := 'C'; -- 4262811
80184 --
80185 --
80186 -- set accounting line type info
80187 --
80188 xla_ae_lines_pkg.SetAcctLineType
80189 (p_component_type => l_component_type
80190 ,p_event_type_code => l_event_type_code
80191 ,p_line_definition_owner_code => l_line_definition_owner_code
80192 ,p_line_definition_code => l_line_definition_code
80193 ,p_accounting_line_code => l_component_code
80194 ,p_accounting_line_type_code => l_component_type_code
80195 ,p_accounting_line_appl_id => l_component_appl_id
80196 ,p_amb_context_code => l_amb_context_code
80197 ,p_entity_code => l_entity_code
80198 ,p_event_class_code => l_event_class_code);
80199 --
80200 -- set accounting class
80201 --
80202 xla_ae_lines_pkg.SetAcctClass(
80203 p_accounting_class_code => 'INTERORG_PAYABLES'
80204 , p_ae_header_id => l_ae_header_id
80205 );
80206
80207 --
80208 -- set rounding class
80209 --
80210 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80211 'INTERORG_PAYABLES';
80212
80213 --
80214 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80215 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80216 --
80217 -- bulk performance
80218 --
80219 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80220
80221 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80222 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80223
80224 -- 4955764
80225 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80226 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80227
80228 -- 4458381 Public Sector Enh
80229
80230 --
80231 -- set accounting attributes for the line type
80232 --
80233 l_entered_amt_idx := 3;
80234 l_accted_amt_idx := 8;
80235 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80236 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80237 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
80238 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80239 l_rec_acct_attrs.array_char_value(2) := p_source_6;
80240 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80241 l_rec_acct_attrs.array_num_value(3) := p_source_3;
80242 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80243 l_rec_acct_attrs.array_char_value(4) := p_source_7;
80244 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80245 l_rec_acct_attrs.array_date_value(5) := p_source_8;
80246 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80247 l_rec_acct_attrs.array_num_value(6) := p_source_9;
80248 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80249 l_rec_acct_attrs.array_char_value(7) := p_source_10;
80250 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80251 l_rec_acct_attrs.array_num_value(8) := p_source_11;
80252
80253 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80254 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80255
80256 ---------------------------------------------------------------------------------------------------------------
80257 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80258 ---------------------------------------------------------------------------------------------------------------
80262 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80259 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80260
80261 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80263
80264 IF xla_accounting_cache_pkg.GetValueChar
80265 (p_source_code => 'LEDGER_CATEGORY_CODE'
80266 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80267 AND l_bflow_method_code = 'PRIOR_ENTRY'
80268 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80269 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80270 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80271 )
80272 THEN
80273 xla_ae_lines_pkg.BflowUpgEntry
80274 (p_business_method_code => l_bflow_method_code
80275 ,p_business_class_code => l_bflow_class_code
80276 ,p_balance_type => l_balance_type_code);
80277 ELSE
80278 NULL;
80279 -- No business flow processing for business flow method of NONE.
80280 END IF;
80281
80282 --
80283 -- call analytical criteria
80284 --
80285
80286 --
80287 -- call description
80288 --
80289 -- No description or it is inherited.
80290 --
80291 -- call ADRs
80292 -- Bug 4922099
80293 --
80294 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80295 (NVL(l_actual_upg_option, 'N') = 'O') OR
80296 (NVL(l_enc_upg_option, 'N') = 'O')
80297 )
80298 THEN
80299 NULL;
80300 --
80301 --
80302
80303 l_ccid := AcctDerRule_20(
80304 p_application_id => p_application_id
80305 , p_ae_header_id => l_ae_header_id
80306 , p_source_1 => p_source_1
80307 , p_source_2 => p_source_2
80308 , x_transaction_coa_id => l_adr_transaction_coa_id
80309 , x_accounting_coa_id => l_adr_accounting_coa_id
80310 , x_value_type_code => l_adr_value_type_code
80311 , p_side => 'NA'
80312 );
80313
80314 xla_ae_lines_pkg.set_ccid(
80315 p_code_combination_id => l_ccid
80316 , p_value_type_code => l_adr_value_type_code
80317 , p_transaction_coa_id => l_adr_transaction_coa_id
80318 , p_accounting_coa_id => l_adr_accounting_coa_id
80319 , p_adr_code => 'IOP'
80320 , p_adr_type_code => 'S'
80321 , p_component_type => l_component_type
80322 , p_component_code => l_component_code
80323 , p_component_type_code => l_component_type_code
80324 , p_component_appl_id => l_component_appl_id
80325 , p_amb_context_code => l_amb_context_code
80326 , p_side => 'NA'
80327 );
80328
80329
80330 --
80331 --
80332 END IF;
80333 --
80334 -- Bug 4922099
80335 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80336 (NVL(l_enc_upg_option, 'N') = 'O')
80337 ) AND
80338 (l_bflow_method_code = 'PRIOR_ENTRY')
80339 )
80340 THEN
80341 IF
80342 --
80343 1 = 2
80344 --
80345 THEN
80346 xla_accounting_err_pkg.build_message
80347 (p_appli_s_name => 'XLA'
80348 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80349 ,p_token_1 => 'LINE_NUMBER'
80350 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
80351 ,p_token_2 => 'LINE_TYPE_NAME'
80352 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
80353 l_component_type
80354 ,l_component_code
80355 ,l_component_type_code
80356 ,l_component_appl_id
80357 ,l_amb_context_code
80358 ,l_entity_code
80359 ,l_event_class_code
80360 )
80361 ,p_token_3 => 'OWNER'
80362 ,p_value_3 => xla_lookups_pkg.get_meaning(
80363 p_lookup_type => 'XLA_OWNER_TYPE'
80364 ,p_lookup_code => l_component_type_code
80365 )
80366 ,p_token_4 => 'PRODUCT_NAME'
80367 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80368 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80372 );
80369 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80370 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80371 ,p_ae_header_id => NULL
80373
80374 IF (C_LEVEL_ERROR>= g_log_level) THEN
80375 trace
80376 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80377 ,p_level => C_LEVEL_ERROR
80378 ,p_module => l_log_module);
80379 END IF;
80380 END IF;
80381 END IF;
80382 --
80383 --
80384 ------------------------------------------------------------------------------------------------
80385 -- 4219869 Business Flow
80386 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80387 -- Prior Entry. Currently, the following code is always generated.
80388 ------------------------------------------------------------------------------------------------
80389 XLA_AE_LINES_PKG.ValidateCurrentLine;
80390
80391 ------------------------------------------------------------------------------------
80392 -- 4219869 Business Flow
80393 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80394 ------------------------------------------------------------------------------------
80395 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80396
80397 ----------------------------------------------------------------------------------
80398 -- 4219869 Business Flow
80399 -- Update journal entry status -- Need to generate this within IF <condition>
80400 ----------------------------------------------------------------------------------
80401 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80402 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80403 ,p_balance_type_code => l_balance_type_code
80404 );
80405
80406 -------------------------------------------------------------------------------------------
80407 -- 4262811 - Generate the Accrual Reversal lines
80408 -------------------------------------------------------------------------------------------
80409 BEGIN
80410 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80411 (g_array_event(p_event_id).array_value_num('header_index'));
80412 IF l_acc_rev_flag IS NULL THEN
80413 l_acc_rev_flag := 'N';
80414 END IF;
80415 EXCEPTION
80416 WHEN OTHERS THEN
80417 l_acc_rev_flag := 'N';
80418 END;
80419 --
80420 IF (l_acc_rev_flag = 'Y') THEN
80421
80422 -- 4645092 ------------------------------------------------------------------------------
80423 -- To allow MPA report to determine if it should generate report process
80424 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80425 ------------------------------------------------------------------------------------------
80426
80427 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80428 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80429 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
80430 -- call ADRs
80431 -- Bug 4922099
80432 --
80433 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80434 (NVL(l_actual_upg_option, 'N') = 'O') OR
80435 (NVL(l_enc_upg_option, 'N') = 'O')
80436 )
80437 THEN
80438 NULL;
80439 --
80440 --
80441
80442 l_ccid := AcctDerRule_20(
80443 p_application_id => p_application_id
80444 , p_ae_header_id => l_ae_header_id
80445 , p_source_1 => p_source_1
80446 , p_source_2 => p_source_2
80447 , x_transaction_coa_id => l_adr_transaction_coa_id
80448 , x_accounting_coa_id => l_adr_accounting_coa_id
80449 , x_value_type_code => l_adr_value_type_code
80450 , p_side => 'NA'
80451 );
80452
80453 xla_ae_lines_pkg.set_ccid(
80454 p_code_combination_id => l_ccid
80455 , p_value_type_code => l_adr_value_type_code
80456 , p_transaction_coa_id => l_adr_transaction_coa_id
80457 , p_accounting_coa_id => l_adr_accounting_coa_id
80458 , p_adr_code => 'IOP'
80459 , p_adr_type_code => 'S'
80460 , p_component_type => l_component_type
80461 , p_component_code => l_component_code
80462 , p_component_type_code => l_component_type_code
80463 , p_component_appl_id => l_component_appl_id
80464 , p_amb_context_code => l_amb_context_code
80465 , p_side => 'NA'
80466 );
80467
80468
80469 --
80470 --
80471 END IF;
80472
80473 --
80474 -- Update the line information that should be overwritten
80475 --
80476 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80477 p_header_num => 1);
80478 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
80479
80480 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80481
80485
80482 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
80483 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80484 END IF;
80486 --
80487 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80488 --
80489 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80490 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
80491 ELSE
80492 ---------------------------------------------------------------------------------------------------
80493 -- 4262811a Switch Sign
80494 ---------------------------------------------------------------------------------------------------
80495 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
80496 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80497 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80498 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80499 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80500 -- 5132302
80501 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80502 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80503
80504 END IF;
80505
80506 -- 4955764
80507 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80508 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80509
80510
80511 XLA_AE_LINES_PKG.ValidateCurrentLine;
80512 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80513
80514 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80515 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80516 ,p_balance_type_code => l_balance_type_code);
80517
80518 END IF;
80519
80520 -----------------------------------------------------------------------------------------
80521 -- 4262811 Multiperiod Accounting
80522 -----------------------------------------------------------------------------------------
80523 -- No MPA option is assigned.
80524
80525
80526 END IF;
80527 END IF;
80528 --
80529
80530 --
80531 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80532 trace
80533 (p_msg => 'END of AcctLineType_177'
80534 ,p_level => C_LEVEL_PROCEDURE
80535 ,p_module => l_log_module);
80536 END IF;
80537 --
80538 EXCEPTION
80539 WHEN xla_exceptions_pkg.application_exception THEN
80540 RAISE;
80541 WHEN OTHERS THEN
80542 xla_exceptions_pkg.raise_message
80543 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_177');
80544 END AcctLineType_177;
80545 --
80546
80547 ---------------------------------------
80548 --
80549 -- PRIVATE FUNCTION
80550 -- AcctLineType_178
80551 --
80552 ---------------------------------------
80553 PROCEDURE AcctLineType_178 (
80554 p_application_id IN NUMBER
80555 ,p_event_id IN NUMBER
80556 ,p_calculate_acctd_flag IN VARCHAR2
80557 ,p_calculate_g_l_flag IN VARCHAR2
80558 ,p_actual_flag IN OUT VARCHAR2
80559 ,p_balance_type_code OUT VARCHAR2
80560 ,p_gain_or_loss_ref OUT VARCHAR2
80561
80562 --Transaction Account
80563 , p_source_1 IN NUMBER
80564 --Journal Line Type
80565 , p_source_2 IN VARCHAR2
80566 --Entered Amount
80567 , p_source_3 IN NUMBER
80568 --First Distribution Identifier
80569 , p_source_5 IN NUMBER
80570 --Distribution Type
80571 , p_source_6 IN VARCHAR2
80572 --Currency Code
80573 , p_source_7 IN VARCHAR2
80574 --Currency Conversion Date
80575 , p_source_8 IN DATE
80576 --Currency Conversion Rate
80577 , p_source_9 IN NUMBER
80578 --Currency Conversion Type
80579 , p_source_10 IN VARCHAR2
80580 --Accounted Amount
80581 , p_source_11 IN NUMBER
80582 )
80583 IS
80584
80585 l_component_type VARCHAR2(80);
80586 l_component_code VARCHAR2(30);
80587 l_component_type_code VARCHAR2(1);
80588 l_component_appl_id INTEGER;
80589 l_amb_context_code VARCHAR2(30);
80590 l_entity_code VARCHAR2(30);
80591 l_event_class_code VARCHAR2(30);
80592 l_ae_header_id NUMBER;
80593 l_event_type_code VARCHAR2(30);
80594 l_line_definition_code VARCHAR2(30);
80595 l_line_definition_owner_code VARCHAR2(1);
80596 --
80597 -- adr variables
80598 l_segment VARCHAR2(30);
80599 l_ccid NUMBER;
80600 l_adr_transaction_coa_id NUMBER;
80601 l_adr_accounting_coa_id NUMBER;
80602 l_adr_flexfield_segment_code VARCHAR2(30);
80603 l_adr_flex_value_set_id NUMBER;
80604 l_adr_value_type_code VARCHAR2(30);
80605 l_adr_value_combination_id NUMBER;
80606 l_adr_value_segment_code VARCHAR2(30);
80607
80611 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
80608 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
80609 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
80610 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
80612
80613 -- 4262811 Variables ------------------------------------------------------------------------------------------
80614 l_entered_amt_idx NUMBER;
80615 l_accted_amt_idx NUMBER;
80616 l_acc_rev_flag VARCHAR2(1);
80617 l_accrual_line_num NUMBER;
80618 l_tmp_amt NUMBER;
80619 l_acc_rev_natural_side_code VARCHAR2(1);
80620
80621 l_num_entries NUMBER;
80622 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
80623 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
80624 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
80625 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
80626 l_recog_line_1 NUMBER;
80627 l_recog_line_2 NUMBER;
80628
80629 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
80630 l_bflow_applied_to_amt NUMBER; -- 5132302
80631 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
80632
80633 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80634
80635 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
80636 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
80637
80638 ---------------------------------------------------------------------------------------------------------------
80639
80640
80641 --
80642 -- bulk performance
80643 --
80644 l_balance_type_code VARCHAR2(1);
80645 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
80646 l_log_module VARCHAR2(240);
80647
80648 --
80649 -- Upgrade strategy
80650 --
80651 l_actual_upg_option VARCHAR2(1);
80652 l_enc_upg_option VARCHAR2(1);
80653
80654 --
80655 BEGIN
80656 --
80657 IF g_log_enabled THEN
80658 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_178';
80659 END IF;
80660 --
80661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80662
80663 trace
80664 (p_msg => 'BEGIN of AcctLineType_178'
80665 ,p_level => C_LEVEL_PROCEDURE
80666 ,p_module => l_log_module);
80667
80668 END IF;
80669 --
80670 l_component_type := 'AMB_JLT';
80671 l_component_code := 'IOP';
80672 l_component_type_code := 'S';
80673 l_component_appl_id := 555;
80674 l_amb_context_code := 'DEFAULT';
80675 l_entity_code := 'INVENTORY';
80676 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
80677 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
80678 l_line_definition_owner_code := 'S';
80679 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
80680 --
80681 l_balance_type_code := 'A';
80682 l_segment := NULL;
80683 l_ccid := NULL;
80684 l_adr_transaction_coa_id := NULL;
80685 l_adr_accounting_coa_id := NULL;
80686 l_adr_flexfield_segment_code := NULL;
80687 l_adr_flex_value_set_id := NULL;
80688 l_adr_value_type_code := NULL;
80689 l_adr_value_combination_id := NULL;
80690 l_adr_value_segment_code := NULL;
80691
80692 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
80693 l_bflow_class_code := ''; -- 4219869 Business Flow
80694 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
80695 l_budgetary_control_flag := 'N';
80696
80697 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80698 l_bflow_applied_to_amt := NULL; -- 5132302
80699 l_entered_amt_idx := NULL; -- 4262811
80700 l_accted_amt_idx := NULL; -- 4262811
80701 l_acc_rev_flag := NULL; -- 4262811
80702 l_accrual_line_num := NULL; -- 4262811
80703 l_tmp_amt := NULL; -- 4262811
80704 --
80705
80706 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80707 l_balance_type_code <> 'B' THEN
80708 IF NVL(p_source_2,'
80709 ') = 'IOP'
80710 THEN
80711
80712 --
80713 XLA_AE_LINES_PKG.SetNewLine;
80714
80715 p_balance_type_code := l_balance_type_code;
80716 -- set the flag so later we will know whether the gain loss line needs to be created
80717
80718 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80719 p_actual_flag :='A';
80720 END IF;
80721
80722 --
80723 -- bulk performance
80724 --
80725 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80726 p_header_num => 0); -- 4262811
80727 --
80728 -- set accounting line options
80729 --
80730 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80731 p_natural_side_code => 'D'
80732 , p_gain_or_loss_flag => 'N'
80733 , p_gl_transfer_mode_code => 'D'
80734 , p_acct_entry_type_code => 'A'
80735 , p_switch_side_flag => 'Y'
80736 , p_merge_duplicate_code => 'W'
80737 );
80738 --
80742 -- set accounting line type info
80739 l_acc_rev_natural_side_code := 'C'; -- 4262811
80740 --
80741 --
80743 --
80744 xla_ae_lines_pkg.SetAcctLineType
80745 (p_component_type => l_component_type
80746 ,p_event_type_code => l_event_type_code
80747 ,p_line_definition_owner_code => l_line_definition_owner_code
80748 ,p_line_definition_code => l_line_definition_code
80749 ,p_accounting_line_code => l_component_code
80750 ,p_accounting_line_type_code => l_component_type_code
80751 ,p_accounting_line_appl_id => l_component_appl_id
80752 ,p_amb_context_code => l_amb_context_code
80753 ,p_entity_code => l_entity_code
80754 ,p_event_class_code => l_event_class_code);
80755 --
80756 -- set accounting class
80757 --
80758 xla_ae_lines_pkg.SetAcctClass(
80759 p_accounting_class_code => 'INTERORG_PAYABLES'
80760 , p_ae_header_id => l_ae_header_id
80761 );
80762
80763 --
80764 -- set rounding class
80765 --
80766 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80767 'INTERORG_PAYABLES';
80768
80769 --
80770 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80771 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80772 --
80773 -- bulk performance
80774 --
80775 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80776
80777 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80778 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80779
80780 -- 4955764
80781 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80782 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80783
80784 -- 4458381 Public Sector Enh
80785
80786 --
80787 -- set accounting attributes for the line type
80788 --
80789 l_entered_amt_idx := 3;
80790 l_accted_amt_idx := 8;
80791 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80792 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
80793 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
80794 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
80795 l_rec_acct_attrs.array_char_value(2) := p_source_6;
80796 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
80797 l_rec_acct_attrs.array_num_value(3) := p_source_3;
80798 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
80799 l_rec_acct_attrs.array_char_value(4) := p_source_7;
80800 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
80801 l_rec_acct_attrs.array_date_value(5) := p_source_8;
80802 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
80803 l_rec_acct_attrs.array_num_value(6) := p_source_9;
80804 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
80805 l_rec_acct_attrs.array_char_value(7) := p_source_10;
80806 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
80807 l_rec_acct_attrs.array_num_value(8) := p_source_11;
80808
80809 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80810 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80811
80812 ---------------------------------------------------------------------------------------------------------------
80813 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80814 ---------------------------------------------------------------------------------------------------------------
80815 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80816
80817 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80818 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80819
80820 IF xla_accounting_cache_pkg.GetValueChar
80821 (p_source_code => 'LEDGER_CATEGORY_CODE'
80822 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80823 AND l_bflow_method_code = 'PRIOR_ENTRY'
80824 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80825 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80826 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80827 )
80828 THEN
80829 xla_ae_lines_pkg.BflowUpgEntry
80830 (p_business_method_code => l_bflow_method_code
80831 ,p_business_class_code => l_bflow_class_code
80832 ,p_balance_type => l_balance_type_code);
80833 ELSE
80834 NULL;
80835 -- No business flow processing for business flow method of NONE.
80836 END IF;
80837
80838 --
80839 -- call analytical criteria
80840 --
80841
80842 --
80843 -- call description
80844 --
80845 -- No description or it is inherited.
80846 --
80847 -- call ADRs
80848 -- Bug 4922099
80849 --
80850 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80851 (NVL(l_actual_upg_option, 'N') = 'O') OR
80855 NULL;
80852 (NVL(l_enc_upg_option, 'N') = 'O')
80853 )
80854 THEN
80856 --
80857 --
80858
80859 l_ccid := AcctDerRule_20(
80860 p_application_id => p_application_id
80861 , p_ae_header_id => l_ae_header_id
80862 , p_source_1 => p_source_1
80863 , p_source_2 => p_source_2
80864 , x_transaction_coa_id => l_adr_transaction_coa_id
80865 , x_accounting_coa_id => l_adr_accounting_coa_id
80866 , x_value_type_code => l_adr_value_type_code
80867 , p_side => 'NA'
80868 );
80869
80870 xla_ae_lines_pkg.set_ccid(
80871 p_code_combination_id => l_ccid
80872 , p_value_type_code => l_adr_value_type_code
80873 , p_transaction_coa_id => l_adr_transaction_coa_id
80874 , p_accounting_coa_id => l_adr_accounting_coa_id
80875 , p_adr_code => 'IOP'
80876 , p_adr_type_code => 'S'
80877 , p_component_type => l_component_type
80878 , p_component_code => l_component_code
80879 , p_component_type_code => l_component_type_code
80880 , p_component_appl_id => l_component_appl_id
80881 , p_amb_context_code => l_amb_context_code
80882 , p_side => 'NA'
80883 );
80884
80885
80886 --
80887 --
80888 END IF;
80889 --
80890 -- Bug 4922099
80891 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80892 (NVL(l_enc_upg_option, 'N') = 'O')
80893 ) AND
80894 (l_bflow_method_code = 'PRIOR_ENTRY')
80895 )
80896 THEN
80897 IF
80898 --
80899 1 = 2
80900 --
80901 THEN
80902 xla_accounting_err_pkg.build_message
80903 (p_appli_s_name => 'XLA'
80904 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80905 ,p_token_1 => 'LINE_NUMBER'
80906 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
80907 ,p_token_2 => 'LINE_TYPE_NAME'
80908 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
80909 l_component_type
80910 ,l_component_code
80911 ,l_component_type_code
80912 ,l_component_appl_id
80913 ,l_amb_context_code
80914 ,l_entity_code
80915 ,l_event_class_code
80916 )
80917 ,p_token_3 => 'OWNER'
80918 ,p_value_3 => xla_lookups_pkg.get_meaning(
80919 p_lookup_type => 'XLA_OWNER_TYPE'
80920 ,p_lookup_code => l_component_type_code
80921 )
80922 ,p_token_4 => 'PRODUCT_NAME'
80923 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80924 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80925 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80926 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80927 ,p_ae_header_id => NULL
80928 );
80929
80930 IF (C_LEVEL_ERROR>= g_log_level) THEN
80931 trace
80932 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80933 ,p_level => C_LEVEL_ERROR
80934 ,p_module => l_log_module);
80935 END IF;
80936 END IF;
80937 END IF;
80938 --
80939 --
80940 ------------------------------------------------------------------------------------------------
80941 -- 4219869 Business Flow
80942 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80943 -- Prior Entry. Currently, the following code is always generated.
80944 ------------------------------------------------------------------------------------------------
80945 XLA_AE_LINES_PKG.ValidateCurrentLine;
80946
80947 ------------------------------------------------------------------------------------
80948 -- 4219869 Business Flow
80949 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80950 ------------------------------------------------------------------------------------
80951 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80952
80956 ----------------------------------------------------------------------------------
80953 ----------------------------------------------------------------------------------
80954 -- 4219869 Business Flow
80955 -- Update journal entry status -- Need to generate this within IF <condition>
80957 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80958 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80959 ,p_balance_type_code => l_balance_type_code
80960 );
80961
80962 -------------------------------------------------------------------------------------------
80963 -- 4262811 - Generate the Accrual Reversal lines
80964 -------------------------------------------------------------------------------------------
80965 BEGIN
80966 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80967 (g_array_event(p_event_id).array_value_num('header_index'));
80968 IF l_acc_rev_flag IS NULL THEN
80969 l_acc_rev_flag := 'N';
80970 END IF;
80971 EXCEPTION
80972 WHEN OTHERS THEN
80973 l_acc_rev_flag := 'N';
80974 END;
80975 --
80976 IF (l_acc_rev_flag = 'Y') THEN
80977
80978 -- 4645092 ------------------------------------------------------------------------------
80979 -- To allow MPA report to determine if it should generate report process
80980 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80981 ------------------------------------------------------------------------------------------
80982
80983 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80984 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80985 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
80986 -- call ADRs
80987 -- Bug 4922099
80988 --
80989 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80990 (NVL(l_actual_upg_option, 'N') = 'O') OR
80991 (NVL(l_enc_upg_option, 'N') = 'O')
80992 )
80993 THEN
80994 NULL;
80995 --
80996 --
80997
80998 l_ccid := AcctDerRule_20(
80999 p_application_id => p_application_id
81000 , p_ae_header_id => l_ae_header_id
81001 , p_source_1 => p_source_1
81002 , p_source_2 => p_source_2
81003 , x_transaction_coa_id => l_adr_transaction_coa_id
81004 , x_accounting_coa_id => l_adr_accounting_coa_id
81005 , x_value_type_code => l_adr_value_type_code
81006 , p_side => 'NA'
81007 );
81008
81009 xla_ae_lines_pkg.set_ccid(
81010 p_code_combination_id => l_ccid
81011 , p_value_type_code => l_adr_value_type_code
81012 , p_transaction_coa_id => l_adr_transaction_coa_id
81013 , p_accounting_coa_id => l_adr_accounting_coa_id
81014 , p_adr_code => 'IOP'
81015 , p_adr_type_code => 'S'
81016 , p_component_type => l_component_type
81017 , p_component_code => l_component_code
81018 , p_component_type_code => l_component_type_code
81019 , p_component_appl_id => l_component_appl_id
81020 , p_amb_context_code => l_amb_context_code
81021 , p_side => 'NA'
81022 );
81023
81024
81025 --
81026 --
81027 END IF;
81028
81029 --
81030 -- Update the line information that should be overwritten
81031 --
81032 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81033 p_header_num => 1);
81034 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
81035
81036 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81037
81038 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
81039 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81040 END IF;
81041
81042 --
81043 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81044 --
81045 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81046 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
81047 ELSE
81048 ---------------------------------------------------------------------------------------------------
81049 -- 4262811a Switch Sign
81050 ---------------------------------------------------------------------------------------------------
81051 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
81052 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81053 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81054 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81055 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81056 -- 5132302
81057 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81058 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81062 -- 4955764
81059
81060 END IF;
81061
81063 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81064 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81065
81066
81067 XLA_AE_LINES_PKG.ValidateCurrentLine;
81068 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81069
81070 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81071 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81072 ,p_balance_type_code => l_balance_type_code);
81073
81074 END IF;
81075
81076 -----------------------------------------------------------------------------------------
81077 -- 4262811 Multiperiod Accounting
81078 -----------------------------------------------------------------------------------------
81079 -- No MPA option is assigned.
81080
81081
81082 END IF;
81083 END IF;
81084 --
81085
81086 --
81087 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81088 trace
81089 (p_msg => 'END of AcctLineType_178'
81090 ,p_level => C_LEVEL_PROCEDURE
81091 ,p_module => l_log_module);
81092 END IF;
81093 --
81094 EXCEPTION
81095 WHEN xla_exceptions_pkg.application_exception THEN
81096 RAISE;
81097 WHEN OTHERS THEN
81098 xla_exceptions_pkg.raise_message
81099 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_178');
81100 END AcctLineType_178;
81101 --
81102
81103 ---------------------------------------
81104 --
81105 -- PRIVATE FUNCTION
81106 -- AcctLineType_179
81107 --
81108 ---------------------------------------
81109 PROCEDURE AcctLineType_179 (
81110 p_application_id IN NUMBER
81111 ,p_event_id IN NUMBER
81112 ,p_calculate_acctd_flag IN VARCHAR2
81113 ,p_calculate_g_l_flag IN VARCHAR2
81114 ,p_actual_flag IN OUT VARCHAR2
81115 ,p_balance_type_code OUT VARCHAR2
81116 ,p_gain_or_loss_ref OUT VARCHAR2
81117
81118 --Transaction Account
81119 , p_source_1 IN NUMBER
81120 --Journal Line Type
81121 , p_source_2 IN VARCHAR2
81122 --Entered Amount
81123 , p_source_3 IN NUMBER
81124 --First Distribution Identifier
81125 , p_source_5 IN NUMBER
81126 --Distribution Type
81127 , p_source_6 IN VARCHAR2
81128 --Currency Code
81129 , p_source_7 IN VARCHAR2
81130 --Currency Conversion Date
81131 , p_source_8 IN DATE
81132 --Currency Conversion Rate
81133 , p_source_9 IN NUMBER
81134 --Currency Conversion Type
81135 , p_source_10 IN VARCHAR2
81136 --Accounted Amount
81137 , p_source_11 IN NUMBER
81138 )
81139 IS
81140
81141 l_component_type VARCHAR2(80);
81142 l_component_code VARCHAR2(30);
81143 l_component_type_code VARCHAR2(1);
81144 l_component_appl_id INTEGER;
81145 l_amb_context_code VARCHAR2(30);
81146 l_entity_code VARCHAR2(30);
81147 l_event_class_code VARCHAR2(30);
81148 l_ae_header_id NUMBER;
81149 l_event_type_code VARCHAR2(30);
81150 l_line_definition_code VARCHAR2(30);
81151 l_line_definition_owner_code VARCHAR2(1);
81152 --
81153 -- adr variables
81154 l_segment VARCHAR2(30);
81155 l_ccid NUMBER;
81156 l_adr_transaction_coa_id NUMBER;
81157 l_adr_accounting_coa_id NUMBER;
81158 l_adr_flexfield_segment_code VARCHAR2(30);
81159 l_adr_flex_value_set_id NUMBER;
81160 l_adr_value_type_code VARCHAR2(30);
81161 l_adr_value_combination_id NUMBER;
81162 l_adr_value_segment_code VARCHAR2(30);
81163
81164 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
81165 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
81166 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
81167 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
81168
81169 -- 4262811 Variables ------------------------------------------------------------------------------------------
81170 l_entered_amt_idx NUMBER;
81171 l_accted_amt_idx NUMBER;
81172 l_acc_rev_flag VARCHAR2(1);
81173 l_accrual_line_num NUMBER;
81174 l_tmp_amt NUMBER;
81175 l_acc_rev_natural_side_code VARCHAR2(1);
81176
81177 l_num_entries NUMBER;
81178 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
81179 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
81180 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
81181 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
81182 l_recog_line_1 NUMBER;
81183 l_recog_line_2 NUMBER;
81184
81185 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
81186 l_bflow_applied_to_amt NUMBER; -- 5132302
81187 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
81188
81189 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81190
81191 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
81192 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
81193
81197 --
81194 ---------------------------------------------------------------------------------------------------------------
81195
81196
81198 -- bulk performance
81199 --
81200 l_balance_type_code VARCHAR2(1);
81201 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
81202 l_log_module VARCHAR2(240);
81203
81204 --
81205 -- Upgrade strategy
81206 --
81207 l_actual_upg_option VARCHAR2(1);
81208 l_enc_upg_option VARCHAR2(1);
81209
81210 --
81211 BEGIN
81212 --
81213 IF g_log_enabled THEN
81214 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_179';
81215 END IF;
81216 --
81217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81218
81219 trace
81220 (p_msg => 'BEGIN of AcctLineType_179'
81221 ,p_level => C_LEVEL_PROCEDURE
81222 ,p_module => l_log_module);
81223
81224 END IF;
81225 --
81226 l_component_type := 'AMB_JLT';
81227 l_component_code := 'IOPR';
81228 l_component_type_code := 'S';
81229 l_component_appl_id := 555;
81230 l_amb_context_code := 'DEFAULT';
81231 l_entity_code := 'INVENTORY';
81232 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
81233 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_TP';
81234 l_line_definition_owner_code := 'S';
81235 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_TP';
81236 --
81237 l_balance_type_code := 'A';
81238 l_segment := NULL;
81239 l_ccid := NULL;
81240 l_adr_transaction_coa_id := NULL;
81241 l_adr_accounting_coa_id := NULL;
81242 l_adr_flexfield_segment_code := NULL;
81243 l_adr_flex_value_set_id := NULL;
81244 l_adr_value_type_code := NULL;
81245 l_adr_value_combination_id := NULL;
81246 l_adr_value_segment_code := NULL;
81247
81248 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
81249 l_bflow_class_code := ''; -- 4219869 Business Flow
81250 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
81251 l_budgetary_control_flag := 'N';
81252
81253 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81254 l_bflow_applied_to_amt := NULL; -- 5132302
81255 l_entered_amt_idx := NULL; -- 4262811
81256 l_accted_amt_idx := NULL; -- 4262811
81257 l_acc_rev_flag := NULL; -- 4262811
81258 l_accrual_line_num := NULL; -- 4262811
81259 l_tmp_amt := NULL; -- 4262811
81260 --
81261
81262 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81263 l_balance_type_code <> 'B' THEN
81264 IF NVL(p_source_2,'
81265 ') = 'IOPR'
81266 THEN
81267
81268 --
81269 XLA_AE_LINES_PKG.SetNewLine;
81270
81271 p_balance_type_code := l_balance_type_code;
81272 -- set the flag so later we will know whether the gain loss line needs to be created
81273
81274 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81275 p_actual_flag :='A';
81276 END IF;
81277
81278 --
81279 -- bulk performance
81280 --
81281 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81282 p_header_num => 0); -- 4262811
81283 --
81284 -- set accounting line options
81285 --
81286 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81287 p_natural_side_code => 'D'
81288 , p_gain_or_loss_flag => 'N'
81289 , p_gl_transfer_mode_code => 'D'
81290 , p_acct_entry_type_code => 'A'
81291 , p_switch_side_flag => 'Y'
81292 , p_merge_duplicate_code => 'W'
81293 );
81294 --
81295 l_acc_rev_natural_side_code := 'C'; -- 4262811
81296 --
81297 --
81298 -- set accounting line type info
81299 --
81300 xla_ae_lines_pkg.SetAcctLineType
81301 (p_component_type => l_component_type
81302 ,p_event_type_code => l_event_type_code
81303 ,p_line_definition_owner_code => l_line_definition_owner_code
81304 ,p_line_definition_code => l_line_definition_code
81305 ,p_accounting_line_code => l_component_code
81306 ,p_accounting_line_type_code => l_component_type_code
81307 ,p_accounting_line_appl_id => l_component_appl_id
81308 ,p_amb_context_code => l_amb_context_code
81309 ,p_entity_code => l_entity_code
81310 ,p_event_class_code => l_event_class_code);
81311 --
81312 -- set accounting class
81313 --
81314 xla_ae_lines_pkg.SetAcctClass(
81315 p_accounting_class_code => 'INTERORG_PROFIT'
81316 , p_ae_header_id => l_ae_header_id
81317 );
81318
81319 --
81320 -- set rounding class
81321 --
81322 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81323 'INTERORG_PROFIT';
81324
81325 --
81326 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81327 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81328 --
81329 -- bulk performance
81330 --
81334 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81331 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81332
81333 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81335
81336 -- 4955764
81337 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81338 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81339
81340 -- 4458381 Public Sector Enh
81341
81342 --
81343 -- set accounting attributes for the line type
81344 --
81345 l_entered_amt_idx := 3;
81346 l_accted_amt_idx := 8;
81347 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81348 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81349 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
81350 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81351 l_rec_acct_attrs.array_char_value(2) := p_source_6;
81352 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81353 l_rec_acct_attrs.array_num_value(3) := p_source_3;
81354 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81355 l_rec_acct_attrs.array_char_value(4) := p_source_7;
81356 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81357 l_rec_acct_attrs.array_date_value(5) := p_source_8;
81358 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81359 l_rec_acct_attrs.array_num_value(6) := p_source_9;
81360 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81361 l_rec_acct_attrs.array_char_value(7) := p_source_10;
81362 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81363 l_rec_acct_attrs.array_num_value(8) := p_source_11;
81364
81365 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81366 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81367
81368 ---------------------------------------------------------------------------------------------------------------
81369 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81370 ---------------------------------------------------------------------------------------------------------------
81371 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81372
81373 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81374 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81375
81376 IF xla_accounting_cache_pkg.GetValueChar
81377 (p_source_code => 'LEDGER_CATEGORY_CODE'
81378 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81379 AND l_bflow_method_code = 'PRIOR_ENTRY'
81380 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81381 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81382 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81383 )
81384 THEN
81385 xla_ae_lines_pkg.BflowUpgEntry
81386 (p_business_method_code => l_bflow_method_code
81387 ,p_business_class_code => l_bflow_class_code
81388 ,p_balance_type => l_balance_type_code);
81389 ELSE
81390 NULL;
81391 -- No business flow processing for business flow method of NONE.
81392 END IF;
81393
81394 --
81395 -- call analytical criteria
81396 --
81397
81398 --
81399 -- call description
81400 --
81401 -- No description or it is inherited.
81402 --
81403 -- call ADRs
81404 -- Bug 4922099
81405 --
81406 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81407 (NVL(l_actual_upg_option, 'N') = 'O') OR
81408 (NVL(l_enc_upg_option, 'N') = 'O')
81409 )
81410 THEN
81411 NULL;
81412 --
81413 --
81414
81415 l_ccid := AcctDerRule_21(
81416 p_application_id => p_application_id
81417 , p_ae_header_id => l_ae_header_id
81418 , p_source_1 => p_source_1
81419 , p_source_2 => p_source_2
81420 , x_transaction_coa_id => l_adr_transaction_coa_id
81421 , x_accounting_coa_id => l_adr_accounting_coa_id
81422 , x_value_type_code => l_adr_value_type_code
81423 , p_side => 'NA'
81424 );
81425
81426 xla_ae_lines_pkg.set_ccid(
81427 p_code_combination_id => l_ccid
81428 , p_value_type_code => l_adr_value_type_code
81429 , p_transaction_coa_id => l_adr_transaction_coa_id
81430 , p_accounting_coa_id => l_adr_accounting_coa_id
81431 , p_adr_code => 'IOPR'
81432 , p_adr_type_code => 'S'
81433 , p_component_type => l_component_type
81434 , p_component_code => l_component_code
81435 , p_component_type_code => l_component_type_code
81436 , p_component_appl_id => l_component_appl_id
81437 , p_amb_context_code => l_amb_context_code
81438 , p_side => 'NA'
81439 );
81440
81441
81442 --
81443 --
81444 END IF;
81445 --
81446 -- Bug 4922099
81447 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81448 (NVL(l_enc_upg_option, 'N') = 'O')
81452 THEN
81449 ) AND
81450 (l_bflow_method_code = 'PRIOR_ENTRY')
81451 )
81453 IF
81454 --
81455 1 = 2
81456 --
81457 THEN
81458 xla_accounting_err_pkg.build_message
81459 (p_appli_s_name => 'XLA'
81460 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81461 ,p_token_1 => 'LINE_NUMBER'
81462 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
81463 ,p_token_2 => 'LINE_TYPE_NAME'
81464 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
81465 l_component_type
81466 ,l_component_code
81467 ,l_component_type_code
81468 ,l_component_appl_id
81469 ,l_amb_context_code
81470 ,l_entity_code
81471 ,l_event_class_code
81472 )
81473 ,p_token_3 => 'OWNER'
81474 ,p_value_3 => xla_lookups_pkg.get_meaning(
81475 p_lookup_type => 'XLA_OWNER_TYPE'
81476 ,p_lookup_code => l_component_type_code
81477 )
81478 ,p_token_4 => 'PRODUCT_NAME'
81479 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81480 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81481 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81482 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81483 ,p_ae_header_id => NULL
81484 );
81485
81486 IF (C_LEVEL_ERROR>= g_log_level) THEN
81487 trace
81488 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81489 ,p_level => C_LEVEL_ERROR
81490 ,p_module => l_log_module);
81491 END IF;
81492 END IF;
81493 END IF;
81494 --
81495 --
81496 ------------------------------------------------------------------------------------------------
81497 -- 4219869 Business Flow
81498 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81499 -- Prior Entry. Currently, the following code is always generated.
81500 ------------------------------------------------------------------------------------------------
81501 XLA_AE_LINES_PKG.ValidateCurrentLine;
81502
81503 ------------------------------------------------------------------------------------
81504 -- 4219869 Business Flow
81505 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81506 ------------------------------------------------------------------------------------
81507 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81508
81509 ----------------------------------------------------------------------------------
81510 -- 4219869 Business Flow
81511 -- Update journal entry status -- Need to generate this within IF <condition>
81512 ----------------------------------------------------------------------------------
81513 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81514 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81515 ,p_balance_type_code => l_balance_type_code
81516 );
81517
81518 -------------------------------------------------------------------------------------------
81519 -- 4262811 - Generate the Accrual Reversal lines
81520 -------------------------------------------------------------------------------------------
81521 BEGIN
81522 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81523 (g_array_event(p_event_id).array_value_num('header_index'));
81524 IF l_acc_rev_flag IS NULL THEN
81525 l_acc_rev_flag := 'N';
81526 END IF;
81527 EXCEPTION
81528 WHEN OTHERS THEN
81529 l_acc_rev_flag := 'N';
81530 END;
81531 --
81532 IF (l_acc_rev_flag = 'Y') THEN
81533
81534 -- 4645092 ------------------------------------------------------------------------------
81535 -- To allow MPA report to determine if it should generate report process
81536 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81537 ------------------------------------------------------------------------------------------
81538
81539 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81540 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81544 --
81541 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
81542 -- call ADRs
81543 -- Bug 4922099
81545 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81546 (NVL(l_actual_upg_option, 'N') = 'O') OR
81547 (NVL(l_enc_upg_option, 'N') = 'O')
81548 )
81549 THEN
81550 NULL;
81551 --
81552 --
81553
81554 l_ccid := AcctDerRule_21(
81555 p_application_id => p_application_id
81556 , p_ae_header_id => l_ae_header_id
81557 , p_source_1 => p_source_1
81558 , p_source_2 => p_source_2
81559 , x_transaction_coa_id => l_adr_transaction_coa_id
81560 , x_accounting_coa_id => l_adr_accounting_coa_id
81561 , x_value_type_code => l_adr_value_type_code
81562 , p_side => 'NA'
81563 );
81564
81565 xla_ae_lines_pkg.set_ccid(
81566 p_code_combination_id => l_ccid
81567 , p_value_type_code => l_adr_value_type_code
81568 , p_transaction_coa_id => l_adr_transaction_coa_id
81569 , p_accounting_coa_id => l_adr_accounting_coa_id
81570 , p_adr_code => 'IOPR'
81571 , p_adr_type_code => 'S'
81572 , p_component_type => l_component_type
81573 , p_component_code => l_component_code
81574 , p_component_type_code => l_component_type_code
81575 , p_component_appl_id => l_component_appl_id
81576 , p_amb_context_code => l_amb_context_code
81577 , p_side => 'NA'
81578 );
81579
81580
81581 --
81582 --
81583 END IF;
81584
81585 --
81586 -- Update the line information that should be overwritten
81587 --
81588 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81589 p_header_num => 1);
81590 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
81591
81592 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81593
81594 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
81595 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81596 END IF;
81597
81598 --
81599 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81600 --
81601 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81602 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
81603 ELSE
81604 ---------------------------------------------------------------------------------------------------
81605 -- 4262811a Switch Sign
81606 ---------------------------------------------------------------------------------------------------
81607 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
81608 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81609 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81610 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81611 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81612 -- 5132302
81613 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81614 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81615
81616 END IF;
81617
81618 -- 4955764
81619 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81620 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81621
81622
81623 XLA_AE_LINES_PKG.ValidateCurrentLine;
81624 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81625
81626 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81627 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81628 ,p_balance_type_code => l_balance_type_code);
81629
81630 END IF;
81631
81632 -----------------------------------------------------------------------------------------
81633 -- 4262811 Multiperiod Accounting
81634 -----------------------------------------------------------------------------------------
81635 -- No MPA option is assigned.
81636
81637
81638 END IF;
81639 END IF;
81640 --
81641
81642 --
81643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81644 trace
81645 (p_msg => 'END of AcctLineType_179'
81646 ,p_level => C_LEVEL_PROCEDURE
81647 ,p_module => l_log_module);
81648 END IF;
81649 --
81650 EXCEPTION
81651 WHEN xla_exceptions_pkg.application_exception THEN
81652 RAISE;
81653 WHEN OTHERS THEN
81654 xla_exceptions_pkg.raise_message
81655 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_179');
81656 END AcctLineType_179;
81657 --
81658
81659 ---------------------------------------
81660 --
81661 -- PRIVATE FUNCTION
81662 -- AcctLineType_180
81663 --
81667 ,p_event_id IN NUMBER
81664 ---------------------------------------
81665 PROCEDURE AcctLineType_180 (
81666 p_application_id IN NUMBER
81668 ,p_calculate_acctd_flag IN VARCHAR2
81669 ,p_calculate_g_l_flag IN VARCHAR2
81670 ,p_actual_flag IN OUT VARCHAR2
81671 ,p_balance_type_code OUT VARCHAR2
81672 ,p_gain_or_loss_ref OUT VARCHAR2
81673
81674 --Transaction Account
81675 , p_source_1 IN NUMBER
81676 --Journal Line Type
81677 , p_source_2 IN VARCHAR2
81678 --Entered Amount
81679 , p_source_3 IN NUMBER
81680 --First Distribution Identifier
81681 , p_source_5 IN NUMBER
81682 --Distribution Type
81683 , p_source_6 IN VARCHAR2
81684 --Currency Code
81685 , p_source_7 IN VARCHAR2
81686 --Currency Conversion Date
81687 , p_source_8 IN DATE
81688 --Currency Conversion Rate
81689 , p_source_9 IN NUMBER
81690 --Currency Conversion Type
81691 , p_source_10 IN VARCHAR2
81692 --Accounted Amount
81693 , p_source_11 IN NUMBER
81694 )
81695 IS
81696
81697 l_component_type VARCHAR2(80);
81698 l_component_code VARCHAR2(30);
81699 l_component_type_code VARCHAR2(1);
81700 l_component_appl_id INTEGER;
81701 l_amb_context_code VARCHAR2(30);
81702 l_entity_code VARCHAR2(30);
81703 l_event_class_code VARCHAR2(30);
81704 l_ae_header_id NUMBER;
81705 l_event_type_code VARCHAR2(30);
81706 l_line_definition_code VARCHAR2(30);
81707 l_line_definition_owner_code VARCHAR2(1);
81708 --
81709 -- adr variables
81710 l_segment VARCHAR2(30);
81711 l_ccid NUMBER;
81712 l_adr_transaction_coa_id NUMBER;
81713 l_adr_accounting_coa_id NUMBER;
81714 l_adr_flexfield_segment_code VARCHAR2(30);
81715 l_adr_flex_value_set_id NUMBER;
81716 l_adr_value_type_code VARCHAR2(30);
81717 l_adr_value_combination_id NUMBER;
81718 l_adr_value_segment_code VARCHAR2(30);
81719
81720 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
81721 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
81722 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
81723 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
81724
81725 -- 4262811 Variables ------------------------------------------------------------------------------------------
81726 l_entered_amt_idx NUMBER;
81727 l_accted_amt_idx NUMBER;
81728 l_acc_rev_flag VARCHAR2(1);
81729 l_accrual_line_num NUMBER;
81730 l_tmp_amt NUMBER;
81731 l_acc_rev_natural_side_code VARCHAR2(1);
81732
81733 l_num_entries NUMBER;
81734 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
81735 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
81736 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
81737 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
81738 l_recog_line_1 NUMBER;
81739 l_recog_line_2 NUMBER;
81740
81741 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
81742 l_bflow_applied_to_amt NUMBER; -- 5132302
81743 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
81744
81745 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81746
81747 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
81748 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
81749
81750 ---------------------------------------------------------------------------------------------------------------
81751
81752
81753 --
81754 -- bulk performance
81755 --
81756 l_balance_type_code VARCHAR2(1);
81757 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
81758 l_log_module VARCHAR2(240);
81759
81760 --
81761 -- Upgrade strategy
81762 --
81763 l_actual_upg_option VARCHAR2(1);
81764 l_enc_upg_option VARCHAR2(1);
81765
81766 --
81767 BEGIN
81768 --
81769 IF g_log_enabled THEN
81770 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_180';
81771 END IF;
81772 --
81773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81774
81775 trace
81776 (p_msg => 'BEGIN of AcctLineType_180'
81777 ,p_level => C_LEVEL_PROCEDURE
81778 ,p_module => l_log_module);
81779
81780 END IF;
81781 --
81782 l_component_type := 'AMB_JLT';
81783 l_component_code := 'IOPR';
81784 l_component_type_code := 'S';
81785 l_component_appl_id := 555;
81786 l_amb_context_code := 'DEFAULT';
81787 l_entity_code := 'INVENTORY';
81788 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
81789 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_TP';
81790 l_line_definition_owner_code := 'S';
81791 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_TP';
81792 --
81793 l_balance_type_code := 'A';
81794 l_segment := NULL;
81795 l_ccid := NULL;
81796 l_adr_transaction_coa_id := NULL;
81797 l_adr_accounting_coa_id := NULL;
81798 l_adr_flexfield_segment_code := NULL;
81802 l_adr_value_segment_code := NULL;
81799 l_adr_flex_value_set_id := NULL;
81800 l_adr_value_type_code := NULL;
81801 l_adr_value_combination_id := NULL;
81803
81804 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
81805 l_bflow_class_code := ''; -- 4219869 Business Flow
81806 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
81807 l_budgetary_control_flag := 'N';
81808
81809 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81810 l_bflow_applied_to_amt := NULL; -- 5132302
81811 l_entered_amt_idx := NULL; -- 4262811
81812 l_accted_amt_idx := NULL; -- 4262811
81813 l_acc_rev_flag := NULL; -- 4262811
81814 l_accrual_line_num := NULL; -- 4262811
81815 l_tmp_amt := NULL; -- 4262811
81816 --
81817
81818 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81819 l_balance_type_code <> 'B' THEN
81820 IF NVL(p_source_2,'
81821 ') = 'IOPR'
81822 THEN
81823
81824 --
81825 XLA_AE_LINES_PKG.SetNewLine;
81826
81827 p_balance_type_code := l_balance_type_code;
81828 -- set the flag so later we will know whether the gain loss line needs to be created
81829
81830 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81831 p_actual_flag :='A';
81832 END IF;
81833
81834 --
81835 -- bulk performance
81836 --
81837 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81838 p_header_num => 0); -- 4262811
81839 --
81840 -- set accounting line options
81841 --
81842 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81843 p_natural_side_code => 'D'
81844 , p_gain_or_loss_flag => 'N'
81845 , p_gl_transfer_mode_code => 'D'
81846 , p_acct_entry_type_code => 'A'
81847 , p_switch_side_flag => 'Y'
81848 , p_merge_duplicate_code => 'W'
81849 );
81850 --
81851 l_acc_rev_natural_side_code := 'C'; -- 4262811
81852 --
81853 --
81854 -- set accounting line type info
81855 --
81856 xla_ae_lines_pkg.SetAcctLineType
81857 (p_component_type => l_component_type
81858 ,p_event_type_code => l_event_type_code
81859 ,p_line_definition_owner_code => l_line_definition_owner_code
81860 ,p_line_definition_code => l_line_definition_code
81861 ,p_accounting_line_code => l_component_code
81862 ,p_accounting_line_type_code => l_component_type_code
81863 ,p_accounting_line_appl_id => l_component_appl_id
81864 ,p_amb_context_code => l_amb_context_code
81865 ,p_entity_code => l_entity_code
81866 ,p_event_class_code => l_event_class_code);
81867 --
81868 -- set accounting class
81869 --
81870 xla_ae_lines_pkg.SetAcctClass(
81871 p_accounting_class_code => 'INTERORG_PROFIT'
81872 , p_ae_header_id => l_ae_header_id
81873 );
81874
81875 --
81876 -- set rounding class
81877 --
81878 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81879 'INTERORG_PROFIT';
81880
81881 --
81882 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81883 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81884 --
81885 -- bulk performance
81886 --
81887 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81888
81889 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81890 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
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('header_index'));
81895
81896 -- 4458381 Public Sector Enh
81897
81898 --
81899 -- set accounting attributes for the line type
81900 --
81901 l_entered_amt_idx := 3;
81902 l_accted_amt_idx := 8;
81903 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81904 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81905 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
81906 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81907 l_rec_acct_attrs.array_char_value(2) := p_source_6;
81908 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81909 l_rec_acct_attrs.array_num_value(3) := p_source_3;
81910 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81911 l_rec_acct_attrs.array_char_value(4) := p_source_7;
81912 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81913 l_rec_acct_attrs.array_date_value(5) := p_source_8;
81914 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81915 l_rec_acct_attrs.array_num_value(6) := p_source_9;
81916 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81917 l_rec_acct_attrs.array_char_value(7) := p_source_10;
81918 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81922 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81919 l_rec_acct_attrs.array_num_value(8) := p_source_11;
81920
81921 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81923
81924 ---------------------------------------------------------------------------------------------------------------
81925 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81926 ---------------------------------------------------------------------------------------------------------------
81927 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81928
81929 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81930 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81931
81932 IF xla_accounting_cache_pkg.GetValueChar
81933 (p_source_code => 'LEDGER_CATEGORY_CODE'
81934 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81935 AND l_bflow_method_code = 'PRIOR_ENTRY'
81936 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81937 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81938 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81939 )
81940 THEN
81941 xla_ae_lines_pkg.BflowUpgEntry
81942 (p_business_method_code => l_bflow_method_code
81943 ,p_business_class_code => l_bflow_class_code
81944 ,p_balance_type => l_balance_type_code);
81945 ELSE
81946 NULL;
81947 -- No business flow processing for business flow method of NONE.
81948 END IF;
81949
81950 --
81951 -- call analytical criteria
81952 --
81953
81954 --
81955 -- call description
81956 --
81957 -- No description or it is inherited.
81958 --
81959 -- call ADRs
81960 -- Bug 4922099
81961 --
81962 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81963 (NVL(l_actual_upg_option, 'N') = 'O') OR
81964 (NVL(l_enc_upg_option, 'N') = 'O')
81965 )
81966 THEN
81967 NULL;
81968 --
81969 --
81970
81971 l_ccid := AcctDerRule_21(
81972 p_application_id => p_application_id
81973 , p_ae_header_id => l_ae_header_id
81974 , p_source_1 => p_source_1
81975 , p_source_2 => p_source_2
81976 , x_transaction_coa_id => l_adr_transaction_coa_id
81977 , x_accounting_coa_id => l_adr_accounting_coa_id
81978 , x_value_type_code => l_adr_value_type_code
81979 , p_side => 'NA'
81980 );
81981
81982 xla_ae_lines_pkg.set_ccid(
81983 p_code_combination_id => l_ccid
81984 , p_value_type_code => l_adr_value_type_code
81985 , p_transaction_coa_id => l_adr_transaction_coa_id
81986 , p_accounting_coa_id => l_adr_accounting_coa_id
81987 , p_adr_code => 'IOPR'
81988 , p_adr_type_code => 'S'
81989 , p_component_type => l_component_type
81990 , p_component_code => l_component_code
81991 , p_component_type_code => l_component_type_code
81992 , p_component_appl_id => l_component_appl_id
81993 , p_amb_context_code => l_amb_context_code
81994 , p_side => 'NA'
81995 );
81996
81997
81998 --
81999 --
82000 END IF;
82001 --
82002 -- Bug 4922099
82003 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82004 (NVL(l_enc_upg_option, 'N') = 'O')
82005 ) AND
82006 (l_bflow_method_code = 'PRIOR_ENTRY')
82007 )
82008 THEN
82009 IF
82010 --
82011 1 = 2
82012 --
82013 THEN
82014 xla_accounting_err_pkg.build_message
82015 (p_appli_s_name => 'XLA'
82016 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82017 ,p_token_1 => 'LINE_NUMBER'
82018 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
82019 ,p_token_2 => 'LINE_TYPE_NAME'
82020 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
82021 l_component_type
82022 ,l_component_code
82023 ,l_component_type_code
82024 ,l_component_appl_id
82025 ,l_amb_context_code
82026 ,l_entity_code
82027 ,l_event_class_code
82028 )
82029 ,p_token_3 => 'OWNER'
82030 ,p_value_3 => xla_lookups_pkg.get_meaning(
82034 ,p_token_4 => 'PRODUCT_NAME'
82031 p_lookup_type => 'XLA_OWNER_TYPE'
82032 ,p_lookup_code => l_component_type_code
82033 )
82035 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82036 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82037 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82038 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82039 ,p_ae_header_id => NULL
82040 );
82041
82042 IF (C_LEVEL_ERROR>= g_log_level) THEN
82043 trace
82044 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82045 ,p_level => C_LEVEL_ERROR
82046 ,p_module => l_log_module);
82047 END IF;
82048 END IF;
82049 END IF;
82050 --
82051 --
82052 ------------------------------------------------------------------------------------------------
82053 -- 4219869 Business Flow
82054 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82055 -- Prior Entry. Currently, the following code is always generated.
82056 ------------------------------------------------------------------------------------------------
82057 XLA_AE_LINES_PKG.ValidateCurrentLine;
82058
82059 ------------------------------------------------------------------------------------
82060 -- 4219869 Business Flow
82061 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82062 ------------------------------------------------------------------------------------
82063 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82064
82065 ----------------------------------------------------------------------------------
82066 -- 4219869 Business Flow
82067 -- Update journal entry status -- Need to generate this within IF <condition>
82068 ----------------------------------------------------------------------------------
82069 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82070 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82071 ,p_balance_type_code => l_balance_type_code
82072 );
82073
82074 -------------------------------------------------------------------------------------------
82075 -- 4262811 - Generate the Accrual Reversal lines
82076 -------------------------------------------------------------------------------------------
82077 BEGIN
82078 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82079 (g_array_event(p_event_id).array_value_num('header_index'));
82080 IF l_acc_rev_flag IS NULL THEN
82081 l_acc_rev_flag := 'N';
82082 END IF;
82083 EXCEPTION
82084 WHEN OTHERS THEN
82085 l_acc_rev_flag := 'N';
82086 END;
82087 --
82088 IF (l_acc_rev_flag = 'Y') THEN
82089
82090 -- 4645092 ------------------------------------------------------------------------------
82091 -- To allow MPA report to determine if it should generate report process
82092 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82093 ------------------------------------------------------------------------------------------
82094
82095 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82096 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82097 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
82098 -- call ADRs
82099 -- Bug 4922099
82100 --
82101 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82102 (NVL(l_actual_upg_option, 'N') = 'O') OR
82103 (NVL(l_enc_upg_option, 'N') = 'O')
82104 )
82105 THEN
82106 NULL;
82107 --
82108 --
82109
82110 l_ccid := AcctDerRule_21(
82111 p_application_id => p_application_id
82112 , p_ae_header_id => l_ae_header_id
82113 , p_source_1 => p_source_1
82114 , p_source_2 => p_source_2
82115 , x_transaction_coa_id => l_adr_transaction_coa_id
82116 , x_accounting_coa_id => l_adr_accounting_coa_id
82117 , x_value_type_code => l_adr_value_type_code
82118 , p_side => 'NA'
82119 );
82120
82121 xla_ae_lines_pkg.set_ccid(
82122 p_code_combination_id => l_ccid
82123 , p_value_type_code => l_adr_value_type_code
82124 , p_transaction_coa_id => l_adr_transaction_coa_id
82125 , p_accounting_coa_id => l_adr_accounting_coa_id
82126 , p_adr_code => 'IOPR'
82127 , p_adr_type_code => 'S'
82128 , p_component_type => l_component_type
82129 , p_component_code => l_component_code
82130 , p_component_type_code => l_component_type_code
82131 , p_component_appl_id => l_component_appl_id
82132 , p_amb_context_code => l_amb_context_code
82133 , p_side => 'NA'
82134 );
82135
82136
82140
82137 --
82138 --
82139 END IF;
82141 --
82142 -- Update the line information that should be overwritten
82143 --
82144 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82145 p_header_num => 1);
82146 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
82147
82148 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82149
82150 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
82151 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82152 END IF;
82153
82154 --
82155 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82156 --
82157 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82158 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
82159 ELSE
82160 ---------------------------------------------------------------------------------------------------
82161 -- 4262811a Switch Sign
82162 ---------------------------------------------------------------------------------------------------
82163 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
82164 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82165 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82166 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82167 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82168 -- 5132302
82169 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82170 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82171
82172 END IF;
82173
82174 -- 4955764
82175 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82176 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82177
82178
82179 XLA_AE_LINES_PKG.ValidateCurrentLine;
82180 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82181
82182 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82183 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82184 ,p_balance_type_code => l_balance_type_code);
82185
82186 END IF;
82187
82188 -----------------------------------------------------------------------------------------
82189 -- 4262811 Multiperiod Accounting
82190 -----------------------------------------------------------------------------------------
82191 -- No MPA option is assigned.
82192
82193
82194 END IF;
82195 END IF;
82196 --
82197
82198 --
82199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82200 trace
82201 (p_msg => 'END of AcctLineType_180'
82202 ,p_level => C_LEVEL_PROCEDURE
82203 ,p_module => l_log_module);
82204 END IF;
82205 --
82206 EXCEPTION
82207 WHEN xla_exceptions_pkg.application_exception THEN
82208 RAISE;
82209 WHEN OTHERS THEN
82210 xla_exceptions_pkg.raise_message
82211 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_180');
82212 END AcctLineType_180;
82213 --
82214
82215 ---------------------------------------
82216 --
82217 -- PRIVATE FUNCTION
82218 -- AcctLineType_181
82219 --
82220 ---------------------------------------
82221 PROCEDURE AcctLineType_181 (
82222 p_application_id IN NUMBER
82223 ,p_event_id IN NUMBER
82224 ,p_calculate_acctd_flag IN VARCHAR2
82225 ,p_calculate_g_l_flag IN VARCHAR2
82226 ,p_actual_flag IN OUT VARCHAR2
82227 ,p_balance_type_code OUT VARCHAR2
82228 ,p_gain_or_loss_ref OUT VARCHAR2
82229
82230 --Transaction Account
82231 , p_source_1 IN NUMBER
82232 --Journal Line Type
82233 , p_source_2 IN VARCHAR2
82234 --Entered Amount
82235 , p_source_3 IN NUMBER
82236 --First Distribution Identifier
82237 , p_source_5 IN NUMBER
82238 --Distribution Type
82239 , p_source_6 IN VARCHAR2
82240 --Currency Code
82241 , p_source_7 IN VARCHAR2
82242 --Currency Conversion Date
82243 , p_source_8 IN DATE
82244 --Currency Conversion Rate
82245 , p_source_9 IN NUMBER
82246 --Currency Conversion Type
82247 , p_source_10 IN VARCHAR2
82248 --Accounted Amount
82249 , p_source_11 IN NUMBER
82250 )
82251 IS
82252
82253 l_component_type VARCHAR2(80);
82254 l_component_code VARCHAR2(30);
82255 l_component_type_code VARCHAR2(1);
82256 l_component_appl_id INTEGER;
82257 l_amb_context_code VARCHAR2(30);
82258 l_entity_code VARCHAR2(30);
82259 l_event_class_code VARCHAR2(30);
82260 l_ae_header_id NUMBER;
82261 l_event_type_code VARCHAR2(30);
82262 l_line_definition_code VARCHAR2(30);
82263 l_line_definition_owner_code VARCHAR2(1);
82264 --
82265 -- adr variables
82269 l_adr_accounting_coa_id NUMBER;
82266 l_segment VARCHAR2(30);
82267 l_ccid NUMBER;
82268 l_adr_transaction_coa_id NUMBER;
82270 l_adr_flexfield_segment_code VARCHAR2(30);
82271 l_adr_flex_value_set_id NUMBER;
82272 l_adr_value_type_code VARCHAR2(30);
82273 l_adr_value_combination_id NUMBER;
82274 l_adr_value_segment_code VARCHAR2(30);
82275
82276 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
82277 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
82278 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
82279 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
82280
82281 -- 4262811 Variables ------------------------------------------------------------------------------------------
82282 l_entered_amt_idx NUMBER;
82283 l_accted_amt_idx NUMBER;
82284 l_acc_rev_flag VARCHAR2(1);
82285 l_accrual_line_num NUMBER;
82286 l_tmp_amt NUMBER;
82287 l_acc_rev_natural_side_code VARCHAR2(1);
82288
82289 l_num_entries NUMBER;
82290 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
82291 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
82292 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
82293 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
82294 l_recog_line_1 NUMBER;
82295 l_recog_line_2 NUMBER;
82296
82297 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
82298 l_bflow_applied_to_amt NUMBER; -- 5132302
82299 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
82300
82301 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82302
82303 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
82304 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
82305
82306 ---------------------------------------------------------------------------------------------------------------
82307
82308
82309 --
82310 -- bulk performance
82311 --
82312 l_balance_type_code VARCHAR2(1);
82313 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
82314 l_log_module VARCHAR2(240);
82315
82316 --
82317 -- Upgrade strategy
82318 --
82319 l_actual_upg_option VARCHAR2(1);
82320 l_enc_upg_option VARCHAR2(1);
82321
82322 --
82323 BEGIN
82324 --
82325 IF g_log_enabled THEN
82326 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_181';
82327 END IF;
82328 --
82329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82330
82331 trace
82332 (p_msg => 'BEGIN of AcctLineType_181'
82333 ,p_level => C_LEVEL_PROCEDURE
82334 ,p_module => l_log_module);
82335
82336 END IF;
82337 --
82338 l_component_type := 'AMB_JLT';
82339 l_component_code := 'IOPR';
82340 l_component_type_code := 'S';
82341 l_component_appl_id := 555;
82342 l_amb_context_code := 'DEFAULT';
82343 l_entity_code := 'INVENTORY';
82344 l_event_class_code := 'INT_ORDER_TO_EXP';
82345 l_event_type_code := 'INT_ORDER_ISSUE_TP';
82346 l_line_definition_owner_code := 'S';
82347 l_line_definition_code := 'INT_ORDER_ISSUE_TP';
82348 --
82349 l_balance_type_code := 'A';
82350 l_segment := NULL;
82351 l_ccid := NULL;
82352 l_adr_transaction_coa_id := NULL;
82353 l_adr_accounting_coa_id := NULL;
82354 l_adr_flexfield_segment_code := NULL;
82355 l_adr_flex_value_set_id := NULL;
82356 l_adr_value_type_code := NULL;
82357 l_adr_value_combination_id := NULL;
82358 l_adr_value_segment_code := NULL;
82359
82360 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
82361 l_bflow_class_code := ''; -- 4219869 Business Flow
82362 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
82363 l_budgetary_control_flag := 'N';
82364
82365 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82366 l_bflow_applied_to_amt := NULL; -- 5132302
82367 l_entered_amt_idx := NULL; -- 4262811
82368 l_accted_amt_idx := NULL; -- 4262811
82369 l_acc_rev_flag := NULL; -- 4262811
82370 l_accrual_line_num := NULL; -- 4262811
82371 l_tmp_amt := NULL; -- 4262811
82372 --
82373
82374 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82375 l_balance_type_code <> 'B' THEN
82376 IF NVL(p_source_2,'
82377 ') = 'IOPR'
82378 THEN
82379
82380 --
82381 XLA_AE_LINES_PKG.SetNewLine;
82382
82383 p_balance_type_code := l_balance_type_code;
82384 -- set the flag so later we will know whether the gain loss line needs to be created
82385
82386 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82387 p_actual_flag :='A';
82388 END IF;
82389
82390 --
82391 -- bulk performance
82392 --
82393 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82394 p_header_num => 0); -- 4262811
82395 --
82399 p_natural_side_code => 'D'
82396 -- set accounting line options
82397 --
82398 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82400 , p_gain_or_loss_flag => 'N'
82401 , p_gl_transfer_mode_code => 'D'
82402 , p_acct_entry_type_code => 'A'
82403 , p_switch_side_flag => 'Y'
82404 , p_merge_duplicate_code => 'W'
82405 );
82406 --
82407 l_acc_rev_natural_side_code := 'C'; -- 4262811
82408 --
82409 --
82410 -- set accounting line type info
82411 --
82412 xla_ae_lines_pkg.SetAcctLineType
82413 (p_component_type => l_component_type
82414 ,p_event_type_code => l_event_type_code
82415 ,p_line_definition_owner_code => l_line_definition_owner_code
82416 ,p_line_definition_code => l_line_definition_code
82417 ,p_accounting_line_code => l_component_code
82418 ,p_accounting_line_type_code => l_component_type_code
82419 ,p_accounting_line_appl_id => l_component_appl_id
82420 ,p_amb_context_code => l_amb_context_code
82421 ,p_entity_code => l_entity_code
82422 ,p_event_class_code => l_event_class_code);
82423 --
82424 -- set accounting class
82425 --
82426 xla_ae_lines_pkg.SetAcctClass(
82427 p_accounting_class_code => 'INTERORG_PROFIT'
82428 , p_ae_header_id => l_ae_header_id
82429 );
82430
82431 --
82432 -- set rounding class
82433 --
82434 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82435 'INTERORG_PROFIT';
82436
82437 --
82438 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82439 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82440 --
82441 -- bulk performance
82442 --
82443 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82444
82445 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82446 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82447
82448 -- 4955764
82449 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82450 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82451
82452 -- 4458381 Public Sector Enh
82453
82454 --
82455 -- set accounting attributes for the line type
82456 --
82457 l_entered_amt_idx := 3;
82458 l_accted_amt_idx := 8;
82459 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82460 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82461 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
82462 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82463 l_rec_acct_attrs.array_char_value(2) := p_source_6;
82464 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82465 l_rec_acct_attrs.array_num_value(3) := p_source_3;
82466 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82467 l_rec_acct_attrs.array_char_value(4) := p_source_7;
82468 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82469 l_rec_acct_attrs.array_date_value(5) := p_source_8;
82470 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82471 l_rec_acct_attrs.array_num_value(6) := p_source_9;
82472 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82473 l_rec_acct_attrs.array_char_value(7) := p_source_10;
82474 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82475 l_rec_acct_attrs.array_num_value(8) := p_source_11;
82476
82477 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82478 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82479
82480 ---------------------------------------------------------------------------------------------------------------
82481 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82482 ---------------------------------------------------------------------------------------------------------------
82483 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82484
82485 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82486 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82487
82488 IF xla_accounting_cache_pkg.GetValueChar
82489 (p_source_code => 'LEDGER_CATEGORY_CODE'
82490 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82491 AND l_bflow_method_code = 'PRIOR_ENTRY'
82492 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82493 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82494 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82495 )
82496 THEN
82497 xla_ae_lines_pkg.BflowUpgEntry
82498 (p_business_method_code => l_bflow_method_code
82499 ,p_business_class_code => l_bflow_class_code
82500 ,p_balance_type => l_balance_type_code);
82501 ELSE
82502 NULL;
82503 -- No business flow processing for business flow method of NONE.
82507 -- call analytical criteria
82504 END IF;
82505
82506 --
82508 --
82509
82510 --
82511 -- call description
82512 --
82513 -- No description or it is inherited.
82514 --
82515 -- call ADRs
82516 -- Bug 4922099
82517 --
82518 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82519 (NVL(l_actual_upg_option, 'N') = 'O') OR
82520 (NVL(l_enc_upg_option, 'N') = 'O')
82521 )
82522 THEN
82523 NULL;
82524 --
82525 --
82526
82527 l_ccid := AcctDerRule_21(
82528 p_application_id => p_application_id
82529 , p_ae_header_id => l_ae_header_id
82530 , p_source_1 => p_source_1
82531 , p_source_2 => p_source_2
82532 , x_transaction_coa_id => l_adr_transaction_coa_id
82533 , x_accounting_coa_id => l_adr_accounting_coa_id
82534 , x_value_type_code => l_adr_value_type_code
82535 , p_side => 'NA'
82536 );
82537
82538 xla_ae_lines_pkg.set_ccid(
82539 p_code_combination_id => l_ccid
82540 , p_value_type_code => l_adr_value_type_code
82541 , p_transaction_coa_id => l_adr_transaction_coa_id
82542 , p_accounting_coa_id => l_adr_accounting_coa_id
82543 , p_adr_code => 'IOPR'
82544 , p_adr_type_code => 'S'
82545 , p_component_type => l_component_type
82546 , p_component_code => l_component_code
82547 , p_component_type_code => l_component_type_code
82548 , p_component_appl_id => l_component_appl_id
82549 , p_amb_context_code => l_amb_context_code
82550 , p_side => 'NA'
82551 );
82552
82553
82554 --
82555 --
82556 END IF;
82557 --
82558 -- Bug 4922099
82559 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82560 (NVL(l_enc_upg_option, 'N') = 'O')
82561 ) AND
82562 (l_bflow_method_code = 'PRIOR_ENTRY')
82563 )
82564 THEN
82565 IF
82566 --
82567 1 = 2
82568 --
82569 THEN
82570 xla_accounting_err_pkg.build_message
82571 (p_appli_s_name => 'XLA'
82572 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82573 ,p_token_1 => 'LINE_NUMBER'
82574 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
82575 ,p_token_2 => 'LINE_TYPE_NAME'
82576 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
82577 l_component_type
82578 ,l_component_code
82579 ,l_component_type_code
82580 ,l_component_appl_id
82581 ,l_amb_context_code
82582 ,l_entity_code
82583 ,l_event_class_code
82584 )
82585 ,p_token_3 => 'OWNER'
82586 ,p_value_3 => xla_lookups_pkg.get_meaning(
82587 p_lookup_type => 'XLA_OWNER_TYPE'
82588 ,p_lookup_code => l_component_type_code
82589 )
82590 ,p_token_4 => 'PRODUCT_NAME'
82591 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82592 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82593 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82594 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82595 ,p_ae_header_id => NULL
82596 );
82597
82598 IF (C_LEVEL_ERROR>= g_log_level) THEN
82599 trace
82600 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82601 ,p_level => C_LEVEL_ERROR
82602 ,p_module => l_log_module);
82603 END IF;
82604 END IF;
82605 END IF;
82606 --
82607 --
82608 ------------------------------------------------------------------------------------------------
82609 -- 4219869 Business Flow
82610 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82611 -- Prior Entry. Currently, the following code is always generated.
82612 ------------------------------------------------------------------------------------------------
82613 XLA_AE_LINES_PKG.ValidateCurrentLine;
82614
82618 ------------------------------------------------------------------------------------
82615 ------------------------------------------------------------------------------------
82616 -- 4219869 Business Flow
82617 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82619 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82620
82621 ----------------------------------------------------------------------------------
82622 -- 4219869 Business Flow
82623 -- Update journal entry status -- Need to generate this within IF <condition>
82624 ----------------------------------------------------------------------------------
82625 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82626 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82627 ,p_balance_type_code => l_balance_type_code
82628 );
82629
82630 -------------------------------------------------------------------------------------------
82631 -- 4262811 - Generate the Accrual Reversal lines
82632 -------------------------------------------------------------------------------------------
82633 BEGIN
82634 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82635 (g_array_event(p_event_id).array_value_num('header_index'));
82636 IF l_acc_rev_flag IS NULL THEN
82637 l_acc_rev_flag := 'N';
82638 END IF;
82639 EXCEPTION
82640 WHEN OTHERS THEN
82641 l_acc_rev_flag := 'N';
82642 END;
82643 --
82644 IF (l_acc_rev_flag = 'Y') THEN
82645
82646 -- 4645092 ------------------------------------------------------------------------------
82647 -- To allow MPA report to determine if it should generate report process
82648 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82649 ------------------------------------------------------------------------------------------
82650
82651 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82652 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82653 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
82654 -- call ADRs
82655 -- Bug 4922099
82656 --
82657 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82658 (NVL(l_actual_upg_option, 'N') = 'O') OR
82659 (NVL(l_enc_upg_option, 'N') = 'O')
82660 )
82661 THEN
82662 NULL;
82663 --
82664 --
82665
82666 l_ccid := AcctDerRule_21(
82667 p_application_id => p_application_id
82668 , p_ae_header_id => l_ae_header_id
82669 , p_source_1 => p_source_1
82670 , p_source_2 => p_source_2
82671 , x_transaction_coa_id => l_adr_transaction_coa_id
82672 , x_accounting_coa_id => l_adr_accounting_coa_id
82673 , x_value_type_code => l_adr_value_type_code
82674 , p_side => 'NA'
82675 );
82676
82677 xla_ae_lines_pkg.set_ccid(
82678 p_code_combination_id => l_ccid
82679 , p_value_type_code => l_adr_value_type_code
82680 , p_transaction_coa_id => l_adr_transaction_coa_id
82681 , p_accounting_coa_id => l_adr_accounting_coa_id
82682 , p_adr_code => 'IOPR'
82683 , p_adr_type_code => 'S'
82684 , p_component_type => l_component_type
82685 , p_component_code => l_component_code
82686 , p_component_type_code => l_component_type_code
82687 , p_component_appl_id => l_component_appl_id
82688 , p_amb_context_code => l_amb_context_code
82689 , p_side => 'NA'
82690 );
82691
82692
82693 --
82694 --
82695 END IF;
82696
82697 --
82698 -- Update the line information that should be overwritten
82699 --
82700 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82701 p_header_num => 1);
82702 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
82703
82704 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82705
82706 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
82707 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82708 END IF;
82709
82710 --
82711 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82712 --
82713 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82714 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
82715 ELSE
82716 ---------------------------------------------------------------------------------------------------
82717 -- 4262811a Switch Sign
82718 ---------------------------------------------------------------------------------------------------
82719 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
82720 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82721 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82722 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82726 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82723 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82724 -- 5132302
82725 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82727
82728 END IF;
82729
82730 -- 4955764
82731 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82732 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82733
82734
82735 XLA_AE_LINES_PKG.ValidateCurrentLine;
82736 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82737
82738 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82739 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82740 ,p_balance_type_code => l_balance_type_code);
82741
82742 END IF;
82743
82744 -----------------------------------------------------------------------------------------
82745 -- 4262811 Multiperiod Accounting
82746 -----------------------------------------------------------------------------------------
82747 -- No MPA option is assigned.
82748
82749
82750 END IF;
82751 END IF;
82752 --
82753
82754 --
82755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82756 trace
82757 (p_msg => 'END of AcctLineType_181'
82758 ,p_level => C_LEVEL_PROCEDURE
82759 ,p_module => l_log_module);
82760 END IF;
82761 --
82762 EXCEPTION
82763 WHEN xla_exceptions_pkg.application_exception THEN
82764 RAISE;
82765 WHEN OTHERS THEN
82766 xla_exceptions_pkg.raise_message
82767 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_181');
82768 END AcctLineType_181;
82769 --
82770
82771 ---------------------------------------
82772 --
82773 -- PRIVATE FUNCTION
82774 -- AcctLineType_182
82775 --
82776 ---------------------------------------
82777 PROCEDURE AcctLineType_182 (
82778 p_application_id IN NUMBER
82779 ,p_event_id IN NUMBER
82780 ,p_calculate_acctd_flag IN VARCHAR2
82781 ,p_calculate_g_l_flag IN VARCHAR2
82782 ,p_actual_flag IN OUT VARCHAR2
82783 ,p_balance_type_code OUT VARCHAR2
82784 ,p_gain_or_loss_ref OUT VARCHAR2
82785
82786 --Transaction Account
82787 , p_source_1 IN NUMBER
82788 --Journal Line Type
82789 , p_source_2 IN VARCHAR2
82790 --Entered Amount
82791 , p_source_3 IN NUMBER
82792 --First Distribution Identifier
82793 , p_source_5 IN NUMBER
82794 --Distribution Type
82795 , p_source_6 IN VARCHAR2
82796 --Currency Code
82797 , p_source_7 IN VARCHAR2
82798 --Currency Conversion Date
82799 , p_source_8 IN DATE
82800 --Currency Conversion Rate
82801 , p_source_9 IN NUMBER
82802 --Currency Conversion Type
82803 , p_source_10 IN VARCHAR2
82804 --Accounted Amount
82805 , p_source_11 IN NUMBER
82806 )
82807 IS
82808
82809 l_component_type VARCHAR2(80);
82810 l_component_code VARCHAR2(30);
82811 l_component_type_code VARCHAR2(1);
82812 l_component_appl_id INTEGER;
82813 l_amb_context_code VARCHAR2(30);
82814 l_entity_code VARCHAR2(30);
82815 l_event_class_code VARCHAR2(30);
82816 l_ae_header_id NUMBER;
82817 l_event_type_code VARCHAR2(30);
82818 l_line_definition_code VARCHAR2(30);
82819 l_line_definition_owner_code VARCHAR2(1);
82820 --
82821 -- adr variables
82822 l_segment VARCHAR2(30);
82823 l_ccid NUMBER;
82824 l_adr_transaction_coa_id NUMBER;
82825 l_adr_accounting_coa_id NUMBER;
82826 l_adr_flexfield_segment_code VARCHAR2(30);
82827 l_adr_flex_value_set_id NUMBER;
82828 l_adr_value_type_code VARCHAR2(30);
82829 l_adr_value_combination_id NUMBER;
82830 l_adr_value_segment_code VARCHAR2(30);
82831
82832 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
82833 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
82834 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
82835 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
82836
82837 -- 4262811 Variables ------------------------------------------------------------------------------------------
82838 l_entered_amt_idx NUMBER;
82839 l_accted_amt_idx NUMBER;
82840 l_acc_rev_flag VARCHAR2(1);
82841 l_accrual_line_num NUMBER;
82842 l_tmp_amt NUMBER;
82843 l_acc_rev_natural_side_code VARCHAR2(1);
82844
82845 l_num_entries NUMBER;
82846 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
82847 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
82848 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
82849 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
82850 l_recog_line_1 NUMBER;
82851 l_recog_line_2 NUMBER;
82852
82853 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
82854 l_bflow_applied_to_amt NUMBER; -- 5132302
82858
82855 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
82856
82857 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82859 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
82860 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
82861
82862 ---------------------------------------------------------------------------------------------------------------
82863
82864
82865 --
82866 -- bulk performance
82867 --
82868 l_balance_type_code VARCHAR2(1);
82869 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
82870 l_log_module VARCHAR2(240);
82871
82872 --
82873 -- Upgrade strategy
82874 --
82875 l_actual_upg_option VARCHAR2(1);
82876 l_enc_upg_option VARCHAR2(1);
82877
82878 --
82879 BEGIN
82880 --
82881 IF g_log_enabled THEN
82882 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_182';
82883 END IF;
82884 --
82885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82886
82887 trace
82888 (p_msg => 'BEGIN of AcctLineType_182'
82889 ,p_level => C_LEVEL_PROCEDURE
82890 ,p_module => l_log_module);
82891
82892 END IF;
82893 --
82894 l_component_type := 'AMB_JLT';
82895 l_component_code := 'IOPR';
82896 l_component_type_code := 'S';
82897 l_component_appl_id := 555;
82898 l_amb_context_code := 'DEFAULT';
82899 l_entity_code := 'INVENTORY';
82900 l_event_class_code := 'DIR_INTERORG_SHIP';
82901 l_event_type_code := 'DIR_INTERORG_SHIP_TP';
82902 l_line_definition_owner_code := 'S';
82903 l_line_definition_code := 'DIRECT_XFER_SHIP_TP';
82904 --
82905 l_balance_type_code := 'A';
82906 l_segment := NULL;
82907 l_ccid := NULL;
82908 l_adr_transaction_coa_id := NULL;
82909 l_adr_accounting_coa_id := NULL;
82910 l_adr_flexfield_segment_code := NULL;
82911 l_adr_flex_value_set_id := NULL;
82912 l_adr_value_type_code := NULL;
82913 l_adr_value_combination_id := NULL;
82914 l_adr_value_segment_code := NULL;
82915
82916 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
82917 l_bflow_class_code := ''; -- 4219869 Business Flow
82918 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
82919 l_budgetary_control_flag := 'N';
82920
82921 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82922 l_bflow_applied_to_amt := NULL; -- 5132302
82923 l_entered_amt_idx := NULL; -- 4262811
82924 l_accted_amt_idx := NULL; -- 4262811
82925 l_acc_rev_flag := NULL; -- 4262811
82926 l_accrual_line_num := NULL; -- 4262811
82927 l_tmp_amt := NULL; -- 4262811
82928 --
82929
82930 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82931 l_balance_type_code <> 'B' THEN
82932 IF NVL(p_source_2,'
82933 ') = 'IOPR'
82934 THEN
82935
82936 --
82937 XLA_AE_LINES_PKG.SetNewLine;
82938
82939 p_balance_type_code := l_balance_type_code;
82940 -- set the flag so later we will know whether the gain loss line needs to be created
82941
82942 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82943 p_actual_flag :='A';
82944 END IF;
82945
82946 --
82947 -- bulk performance
82948 --
82949 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82950 p_header_num => 0); -- 4262811
82951 --
82952 -- set accounting line options
82953 --
82954 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82955 p_natural_side_code => 'D'
82956 , p_gain_or_loss_flag => 'N'
82957 , p_gl_transfer_mode_code => 'D'
82958 , p_acct_entry_type_code => 'A'
82959 , p_switch_side_flag => 'Y'
82960 , p_merge_duplicate_code => 'W'
82961 );
82962 --
82963 l_acc_rev_natural_side_code := 'C'; -- 4262811
82964 --
82965 --
82966 -- set accounting line type info
82967 --
82968 xla_ae_lines_pkg.SetAcctLineType
82969 (p_component_type => l_component_type
82970 ,p_event_type_code => l_event_type_code
82971 ,p_line_definition_owner_code => l_line_definition_owner_code
82972 ,p_line_definition_code => l_line_definition_code
82973 ,p_accounting_line_code => l_component_code
82974 ,p_accounting_line_type_code => l_component_type_code
82975 ,p_accounting_line_appl_id => l_component_appl_id
82976 ,p_amb_context_code => l_amb_context_code
82977 ,p_entity_code => l_entity_code
82978 ,p_event_class_code => l_event_class_code);
82979 --
82980 -- set accounting class
82981 --
82982 xla_ae_lines_pkg.SetAcctClass(
82983 p_accounting_class_code => 'INTERORG_PROFIT'
82984 , p_ae_header_id => l_ae_header_id
82985 );
82986
82987 --
82988 -- set rounding class
82989 --
82990 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82994 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82991 'INTERORG_PROFIT';
82992
82993 --
82995 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82996 --
82997 -- bulk performance
82998 --
82999 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83000
83001 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83002 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83003
83004 -- 4955764
83005 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83006 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83007
83008 -- 4458381 Public Sector Enh
83009
83010 --
83011 -- set accounting attributes for the line type
83012 --
83013 l_entered_amt_idx := 3;
83014 l_accted_amt_idx := 8;
83015 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83016 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83017 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
83018 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83019 l_rec_acct_attrs.array_char_value(2) := p_source_6;
83020 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83021 l_rec_acct_attrs.array_num_value(3) := p_source_3;
83022 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83023 l_rec_acct_attrs.array_char_value(4) := p_source_7;
83024 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83025 l_rec_acct_attrs.array_date_value(5) := p_source_8;
83026 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83027 l_rec_acct_attrs.array_num_value(6) := p_source_9;
83028 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83029 l_rec_acct_attrs.array_char_value(7) := p_source_10;
83030 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83031 l_rec_acct_attrs.array_num_value(8) := p_source_11;
83032
83033 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83034 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83035
83036 ---------------------------------------------------------------------------------------------------------------
83037 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83038 ---------------------------------------------------------------------------------------------------------------
83039 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83040
83041 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83042 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83043
83044 IF xla_accounting_cache_pkg.GetValueChar
83045 (p_source_code => 'LEDGER_CATEGORY_CODE'
83046 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83047 AND l_bflow_method_code = 'PRIOR_ENTRY'
83048 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83049 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83050 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83051 )
83052 THEN
83053 xla_ae_lines_pkg.BflowUpgEntry
83054 (p_business_method_code => l_bflow_method_code
83055 ,p_business_class_code => l_bflow_class_code
83056 ,p_balance_type => l_balance_type_code);
83057 ELSE
83058 NULL;
83059 -- No business flow processing for business flow method of NONE.
83060 END IF;
83061
83062 --
83063 -- call analytical criteria
83064 --
83065
83066 --
83067 -- call description
83068 --
83069 -- No description or it is inherited.
83070 --
83071 -- call ADRs
83072 -- Bug 4922099
83073 --
83074 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83075 (NVL(l_actual_upg_option, 'N') = 'O') OR
83076 (NVL(l_enc_upg_option, 'N') = 'O')
83077 )
83078 THEN
83079 NULL;
83080 --
83081 --
83082
83083 l_ccid := AcctDerRule_21(
83084 p_application_id => p_application_id
83085 , p_ae_header_id => l_ae_header_id
83086 , p_source_1 => p_source_1
83087 , p_source_2 => p_source_2
83088 , x_transaction_coa_id => l_adr_transaction_coa_id
83089 , x_accounting_coa_id => l_adr_accounting_coa_id
83090 , x_value_type_code => l_adr_value_type_code
83091 , p_side => 'NA'
83092 );
83093
83094 xla_ae_lines_pkg.set_ccid(
83095 p_code_combination_id => l_ccid
83096 , p_value_type_code => l_adr_value_type_code
83097 , p_transaction_coa_id => l_adr_transaction_coa_id
83098 , p_accounting_coa_id => l_adr_accounting_coa_id
83099 , p_adr_code => 'IOPR'
83100 , p_adr_type_code => 'S'
83101 , p_component_type => l_component_type
83102 , p_component_code => l_component_code
83103 , p_component_type_code => l_component_type_code
83107 );
83104 , p_component_appl_id => l_component_appl_id
83105 , p_amb_context_code => l_amb_context_code
83106 , p_side => 'NA'
83108
83109
83110 --
83111 --
83112 END IF;
83113 --
83114 -- Bug 4922099
83115 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83116 (NVL(l_enc_upg_option, 'N') = 'O')
83117 ) AND
83118 (l_bflow_method_code = 'PRIOR_ENTRY')
83119 )
83120 THEN
83121 IF
83122 --
83123 1 = 2
83124 --
83125 THEN
83126 xla_accounting_err_pkg.build_message
83127 (p_appli_s_name => 'XLA'
83128 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83129 ,p_token_1 => 'LINE_NUMBER'
83130 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
83131 ,p_token_2 => 'LINE_TYPE_NAME'
83132 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
83133 l_component_type
83134 ,l_component_code
83135 ,l_component_type_code
83136 ,l_component_appl_id
83137 ,l_amb_context_code
83138 ,l_entity_code
83139 ,l_event_class_code
83140 )
83141 ,p_token_3 => 'OWNER'
83142 ,p_value_3 => xla_lookups_pkg.get_meaning(
83143 p_lookup_type => 'XLA_OWNER_TYPE'
83144 ,p_lookup_code => l_component_type_code
83145 )
83146 ,p_token_4 => 'PRODUCT_NAME'
83147 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83148 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83149 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83150 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83151 ,p_ae_header_id => NULL
83152 );
83153
83154 IF (C_LEVEL_ERROR>= g_log_level) THEN
83155 trace
83156 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83157 ,p_level => C_LEVEL_ERROR
83158 ,p_module => l_log_module);
83159 END IF;
83160 END IF;
83161 END IF;
83162 --
83163 --
83164 ------------------------------------------------------------------------------------------------
83165 -- 4219869 Business Flow
83166 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83167 -- Prior Entry. Currently, the following code is always generated.
83168 ------------------------------------------------------------------------------------------------
83169 XLA_AE_LINES_PKG.ValidateCurrentLine;
83170
83171 ------------------------------------------------------------------------------------
83172 -- 4219869 Business Flow
83173 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83174 ------------------------------------------------------------------------------------
83175 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83176
83177 ----------------------------------------------------------------------------------
83178 -- 4219869 Business Flow
83179 -- Update journal entry status -- Need to generate this within IF <condition>
83180 ----------------------------------------------------------------------------------
83181 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83182 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
83183 ,p_balance_type_code => l_balance_type_code
83184 );
83185
83186 -------------------------------------------------------------------------------------------
83187 -- 4262811 - Generate the Accrual Reversal lines
83188 -------------------------------------------------------------------------------------------
83189 BEGIN
83190 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
83191 (g_array_event(p_event_id).array_value_num('header_index'));
83192 IF l_acc_rev_flag IS NULL THEN
83193 l_acc_rev_flag := 'N';
83194 END IF;
83195 EXCEPTION
83196 WHEN OTHERS THEN
83197 l_acc_rev_flag := 'N';
83198 END;
83199 --
83200 IF (l_acc_rev_flag = 'Y') THEN
83201
83205 ------------------------------------------------------------------------------------------
83202 -- 4645092 ------------------------------------------------------------------------------
83203 -- To allow MPA report to determine if it should generate report process
83204 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
83206
83207 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
83208 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
83209 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
83210 -- call ADRs
83211 -- Bug 4922099
83212 --
83213 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83214 (NVL(l_actual_upg_option, 'N') = 'O') OR
83215 (NVL(l_enc_upg_option, 'N') = 'O')
83216 )
83217 THEN
83218 NULL;
83219 --
83220 --
83221
83222 l_ccid := AcctDerRule_21(
83223 p_application_id => p_application_id
83224 , p_ae_header_id => l_ae_header_id
83225 , p_source_1 => p_source_1
83226 , p_source_2 => p_source_2
83227 , x_transaction_coa_id => l_adr_transaction_coa_id
83228 , x_accounting_coa_id => l_adr_accounting_coa_id
83229 , x_value_type_code => l_adr_value_type_code
83230 , p_side => 'NA'
83231 );
83232
83233 xla_ae_lines_pkg.set_ccid(
83234 p_code_combination_id => l_ccid
83235 , p_value_type_code => l_adr_value_type_code
83236 , p_transaction_coa_id => l_adr_transaction_coa_id
83237 , p_accounting_coa_id => l_adr_accounting_coa_id
83238 , p_adr_code => 'IOPR'
83239 , p_adr_type_code => 'S'
83240 , p_component_type => l_component_type
83241 , p_component_code => l_component_code
83242 , p_component_type_code => l_component_type_code
83243 , p_component_appl_id => l_component_appl_id
83244 , p_amb_context_code => l_amb_context_code
83245 , p_side => 'NA'
83246 );
83247
83248
83249 --
83250 --
83251 END IF;
83252
83253 --
83254 -- Update the line information that should be overwritten
83255 --
83256 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
83257 p_header_num => 1);
83258 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
83259
83260 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
83261
83262 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
83263 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
83264 END IF;
83265
83266 --
83267 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
83268 --
83269 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
83270 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
83271 ELSE
83272 ---------------------------------------------------------------------------------------------------
83273 -- 4262811a Switch Sign
83274 ---------------------------------------------------------------------------------------------------
83275 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
83276 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83277 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83278 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83279 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83280 -- 5132302
83281 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
83282 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83283
83284 END IF;
83285
83286 -- 4955764
83287 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83288 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83289
83290
83291 XLA_AE_LINES_PKG.ValidateCurrentLine;
83292 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83293
83294 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83295 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83296 ,p_balance_type_code => l_balance_type_code);
83297
83298 END IF;
83299
83300 -----------------------------------------------------------------------------------------
83301 -- 4262811 Multiperiod Accounting
83302 -----------------------------------------------------------------------------------------
83303 -- No MPA option is assigned.
83304
83305
83306 END IF;
83307 END IF;
83308 --
83309
83310 --
83311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83312 trace
83313 (p_msg => 'END of AcctLineType_182'
83314 ,p_level => C_LEVEL_PROCEDURE
83315 ,p_module => l_log_module);
83316 END IF;
83317 --
83318 EXCEPTION
83322 xla_exceptions_pkg.raise_message
83319 WHEN xla_exceptions_pkg.application_exception THEN
83320 RAISE;
83321 WHEN OTHERS THEN
83323 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_182');
83324 END AcctLineType_182;
83325 --
83326
83327 ---------------------------------------
83328 --
83329 -- PRIVATE FUNCTION
83330 -- AcctLineType_183
83331 --
83332 ---------------------------------------
83333 PROCEDURE AcctLineType_183 (
83334 p_application_id IN NUMBER
83335 ,p_event_id IN NUMBER
83336 ,p_calculate_acctd_flag IN VARCHAR2
83337 ,p_calculate_g_l_flag IN VARCHAR2
83338 ,p_actual_flag IN OUT VARCHAR2
83339 ,p_balance_type_code OUT VARCHAR2
83340 ,p_gain_or_loss_ref OUT VARCHAR2
83341
83342 --Transaction Account
83343 , p_source_1 IN NUMBER
83344 --Journal Line Type
83345 , p_source_2 IN VARCHAR2
83346 --Entered Amount
83347 , p_source_3 IN NUMBER
83348 --First Distribution Identifier
83349 , p_source_5 IN NUMBER
83350 --Distribution Type
83351 , p_source_6 IN VARCHAR2
83352 --Currency Code
83353 , p_source_7 IN VARCHAR2
83354 --Currency Conversion Date
83355 , p_source_8 IN DATE
83356 --Currency Conversion Rate
83357 , p_source_9 IN NUMBER
83358 --Currency Conversion Type
83359 , p_source_10 IN VARCHAR2
83360 --Accounted Amount
83361 , p_source_11 IN NUMBER
83362 )
83363 IS
83364
83365 l_component_type VARCHAR2(80);
83366 l_component_code VARCHAR2(30);
83367 l_component_type_code VARCHAR2(1);
83368 l_component_appl_id INTEGER;
83369 l_amb_context_code VARCHAR2(30);
83370 l_entity_code VARCHAR2(30);
83371 l_event_class_code VARCHAR2(30);
83372 l_ae_header_id NUMBER;
83373 l_event_type_code VARCHAR2(30);
83374 l_line_definition_code VARCHAR2(30);
83375 l_line_definition_owner_code VARCHAR2(1);
83376 --
83377 -- adr variables
83378 l_segment VARCHAR2(30);
83379 l_ccid NUMBER;
83380 l_adr_transaction_coa_id NUMBER;
83381 l_adr_accounting_coa_id NUMBER;
83382 l_adr_flexfield_segment_code VARCHAR2(30);
83383 l_adr_flex_value_set_id NUMBER;
83384 l_adr_value_type_code VARCHAR2(30);
83385 l_adr_value_combination_id NUMBER;
83386 l_adr_value_segment_code VARCHAR2(30);
83387
83388 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
83389 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
83390 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
83391 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
83392
83393 -- 4262811 Variables ------------------------------------------------------------------------------------------
83394 l_entered_amt_idx NUMBER;
83395 l_accted_amt_idx NUMBER;
83396 l_acc_rev_flag VARCHAR2(1);
83397 l_accrual_line_num NUMBER;
83398 l_tmp_amt NUMBER;
83399 l_acc_rev_natural_side_code VARCHAR2(1);
83400
83401 l_num_entries NUMBER;
83402 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
83403 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
83404 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
83405 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
83406 l_recog_line_1 NUMBER;
83407 l_recog_line_2 NUMBER;
83408
83409 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
83410 l_bflow_applied_to_amt NUMBER; -- 5132302
83411 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
83412
83413 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83414
83415 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
83416 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
83417
83418 ---------------------------------------------------------------------------------------------------------------
83419
83420
83421 --
83422 -- bulk performance
83423 --
83424 l_balance_type_code VARCHAR2(1);
83425 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
83426 l_log_module VARCHAR2(240);
83427
83428 --
83429 -- Upgrade strategy
83430 --
83431 l_actual_upg_option VARCHAR2(1);
83432 l_enc_upg_option VARCHAR2(1);
83433
83434 --
83435 BEGIN
83436 --
83437 IF g_log_enabled THEN
83438 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_183';
83439 END IF;
83440 --
83441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83442
83443 trace
83444 (p_msg => 'BEGIN of AcctLineType_183'
83445 ,p_level => C_LEVEL_PROCEDURE
83446 ,p_module => l_log_module);
83447
83448 END IF;
83449 --
83450 l_component_type := 'AMB_JLT';
83451 l_component_code := 'IOR';
83452 l_component_type_code := 'S';
83453 l_component_appl_id := 555;
83454 l_amb_context_code := 'DEFAULT';
83455 l_entity_code := 'INVENTORY';
83459 l_line_definition_code := 'INT_ORDER_ISSUE_TP';
83456 l_event_class_code := 'INT_ORDER_TO_EXP';
83457 l_event_type_code := 'INT_ORDER_ISSUE_TP';
83458 l_line_definition_owner_code := 'S';
83460 --
83461 l_balance_type_code := 'A';
83462 l_segment := NULL;
83463 l_ccid := NULL;
83464 l_adr_transaction_coa_id := NULL;
83465 l_adr_accounting_coa_id := NULL;
83466 l_adr_flexfield_segment_code := NULL;
83467 l_adr_flex_value_set_id := NULL;
83468 l_adr_value_type_code := NULL;
83469 l_adr_value_combination_id := NULL;
83470 l_adr_value_segment_code := NULL;
83471
83472 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
83473 l_bflow_class_code := ''; -- 4219869 Business Flow
83474 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
83475 l_budgetary_control_flag := 'N';
83476
83477 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83478 l_bflow_applied_to_amt := NULL; -- 5132302
83479 l_entered_amt_idx := NULL; -- 4262811
83480 l_accted_amt_idx := NULL; -- 4262811
83481 l_acc_rev_flag := NULL; -- 4262811
83482 l_accrual_line_num := NULL; -- 4262811
83483 l_tmp_amt := NULL; -- 4262811
83484 --
83485
83486 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83487 l_balance_type_code <> 'B' THEN
83488 IF NVL(p_source_2,'
83489 ') = 'IOR'
83490 THEN
83491
83492 --
83493 XLA_AE_LINES_PKG.SetNewLine;
83494
83495 p_balance_type_code := l_balance_type_code;
83496 -- set the flag so later we will know whether the gain loss line needs to be created
83497
83498 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83499 p_actual_flag :='A';
83500 END IF;
83501
83502 --
83503 -- bulk performance
83504 --
83505 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83506 p_header_num => 0); -- 4262811
83507 --
83508 -- set accounting line options
83509 --
83510 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83511 p_natural_side_code => 'D'
83512 , p_gain_or_loss_flag => 'N'
83513 , p_gl_transfer_mode_code => 'D'
83514 , p_acct_entry_type_code => 'A'
83515 , p_switch_side_flag => 'Y'
83516 , p_merge_duplicate_code => 'W'
83517 );
83518 --
83519 l_acc_rev_natural_side_code := 'C'; -- 4262811
83520 --
83521 --
83522 -- set accounting line type info
83523 --
83524 xla_ae_lines_pkg.SetAcctLineType
83525 (p_component_type => l_component_type
83526 ,p_event_type_code => l_event_type_code
83527 ,p_line_definition_owner_code => l_line_definition_owner_code
83528 ,p_line_definition_code => l_line_definition_code
83529 ,p_accounting_line_code => l_component_code
83530 ,p_accounting_line_type_code => l_component_type_code
83531 ,p_accounting_line_appl_id => l_component_appl_id
83532 ,p_amb_context_code => l_amb_context_code
83533 ,p_entity_code => l_entity_code
83534 ,p_event_class_code => l_event_class_code);
83535 --
83536 -- set accounting class
83537 --
83538 xla_ae_lines_pkg.SetAcctClass(
83539 p_accounting_class_code => 'INTERORG_RECEIVABLES'
83540 , p_ae_header_id => l_ae_header_id
83541 );
83542
83543 --
83544 -- set rounding class
83545 --
83546 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83547 'INTERORG_RECEIVABLES';
83548
83549 --
83550 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83551 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83552 --
83553 -- bulk performance
83554 --
83555 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83556
83557 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83558 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83559
83560 -- 4955764
83561 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83562 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83563
83564 -- 4458381 Public Sector Enh
83565
83566 --
83567 -- set accounting attributes for the line type
83568 --
83569 l_entered_amt_idx := 3;
83570 l_accted_amt_idx := 8;
83571 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83572 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83573 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
83574 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83575 l_rec_acct_attrs.array_char_value(2) := p_source_6;
83576 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83577 l_rec_acct_attrs.array_num_value(3) := p_source_3;
83581 l_rec_acct_attrs.array_date_value(5) := p_source_8;
83578 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83579 l_rec_acct_attrs.array_char_value(4) := p_source_7;
83580 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83582 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83583 l_rec_acct_attrs.array_num_value(6) := p_source_9;
83584 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83585 l_rec_acct_attrs.array_char_value(7) := p_source_10;
83586 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83587 l_rec_acct_attrs.array_num_value(8) := p_source_11;
83588
83589 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
83590 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
83591
83592 ---------------------------------------------------------------------------------------------------------------
83593 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
83594 ---------------------------------------------------------------------------------------------------------------
83595 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
83596
83597 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83598 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
83599
83600 IF xla_accounting_cache_pkg.GetValueChar
83601 (p_source_code => 'LEDGER_CATEGORY_CODE'
83602 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
83603 AND l_bflow_method_code = 'PRIOR_ENTRY'
83604 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
83605 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
83606 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
83607 )
83608 THEN
83609 xla_ae_lines_pkg.BflowUpgEntry
83610 (p_business_method_code => l_bflow_method_code
83611 ,p_business_class_code => l_bflow_class_code
83612 ,p_balance_type => l_balance_type_code);
83613 ELSE
83614 NULL;
83615 -- No business flow processing for business flow method of NONE.
83616 END IF;
83617
83618 --
83619 -- call analytical criteria
83620 --
83621
83622 --
83623 -- call description
83624 --
83625 -- No description or it is inherited.
83626 --
83627 -- call ADRs
83628 -- Bug 4922099
83629 --
83630 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83631 (NVL(l_actual_upg_option, 'N') = 'O') OR
83632 (NVL(l_enc_upg_option, 'N') = 'O')
83633 )
83634 THEN
83635 NULL;
83636 --
83637 --
83638
83639 l_ccid := AcctDerRule_22(
83640 p_application_id => p_application_id
83641 , p_ae_header_id => l_ae_header_id
83642 , p_source_1 => p_source_1
83643 , p_source_2 => p_source_2
83644 , x_transaction_coa_id => l_adr_transaction_coa_id
83645 , x_accounting_coa_id => l_adr_accounting_coa_id
83646 , x_value_type_code => l_adr_value_type_code
83647 , p_side => 'NA'
83648 );
83649
83650 xla_ae_lines_pkg.set_ccid(
83651 p_code_combination_id => l_ccid
83652 , p_value_type_code => l_adr_value_type_code
83653 , p_transaction_coa_id => l_adr_transaction_coa_id
83654 , p_accounting_coa_id => l_adr_accounting_coa_id
83655 , p_adr_code => 'IOR'
83656 , p_adr_type_code => 'S'
83657 , p_component_type => l_component_type
83658 , p_component_code => l_component_code
83659 , p_component_type_code => l_component_type_code
83660 , p_component_appl_id => l_component_appl_id
83661 , p_amb_context_code => l_amb_context_code
83662 , p_side => 'NA'
83663 );
83664
83665
83666 --
83667 --
83668 END IF;
83669 --
83670 -- Bug 4922099
83671 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
83672 (NVL(l_enc_upg_option, 'N') = 'O')
83673 ) AND
83674 (l_bflow_method_code = 'PRIOR_ENTRY')
83675 )
83676 THEN
83677 IF
83678 --
83679 1 = 2
83680 --
83681 THEN
83682 xla_accounting_err_pkg.build_message
83683 (p_appli_s_name => 'XLA'
83684 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83685 ,p_token_1 => 'LINE_NUMBER'
83686 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
83687 ,p_token_2 => 'LINE_TYPE_NAME'
83688 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
83689 l_component_type
83690 ,l_component_code
83691 ,l_component_type_code
83695 ,l_event_class_code
83692 ,l_component_appl_id
83693 ,l_amb_context_code
83694 ,l_entity_code
83696 )
83697 ,p_token_3 => 'OWNER'
83698 ,p_value_3 => xla_lookups_pkg.get_meaning(
83699 p_lookup_type => 'XLA_OWNER_TYPE'
83700 ,p_lookup_code => l_component_type_code
83701 )
83702 ,p_token_4 => 'PRODUCT_NAME'
83703 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
83704 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
83705 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
83706 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
83707 ,p_ae_header_id => NULL
83708 );
83709
83710 IF (C_LEVEL_ERROR>= g_log_level) THEN
83711 trace
83712 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
83713 ,p_level => C_LEVEL_ERROR
83714 ,p_module => l_log_module);
83715 END IF;
83716 END IF;
83717 END IF;
83718 --
83719 --
83720 ------------------------------------------------------------------------------------------------
83721 -- 4219869 Business Flow
83722 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
83723 -- Prior Entry. Currently, the following code is always generated.
83724 ------------------------------------------------------------------------------------------------
83725 XLA_AE_LINES_PKG.ValidateCurrentLine;
83726
83727 ------------------------------------------------------------------------------------
83728 -- 4219869 Business Flow
83729 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
83730 ------------------------------------------------------------------------------------
83731 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83732
83733 ----------------------------------------------------------------------------------
83734 -- 4219869 Business Flow
83735 -- Update journal entry status -- Need to generate this within IF <condition>
83736 ----------------------------------------------------------------------------------
83737 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83738 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
83739 ,p_balance_type_code => l_balance_type_code
83740 );
83741
83742 -------------------------------------------------------------------------------------------
83743 -- 4262811 - Generate the Accrual Reversal lines
83744 -------------------------------------------------------------------------------------------
83745 BEGIN
83746 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
83747 (g_array_event(p_event_id).array_value_num('header_index'));
83748 IF l_acc_rev_flag IS NULL THEN
83749 l_acc_rev_flag := 'N';
83750 END IF;
83751 EXCEPTION
83752 WHEN OTHERS THEN
83753 l_acc_rev_flag := 'N';
83754 END;
83755 --
83756 IF (l_acc_rev_flag = 'Y') THEN
83757
83758 -- 4645092 ------------------------------------------------------------------------------
83759 -- To allow MPA report to determine if it should generate report process
83760 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
83761 ------------------------------------------------------------------------------------------
83762
83763 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
83764 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
83765 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
83766 -- call ADRs
83767 -- Bug 4922099
83768 --
83769 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
83770 (NVL(l_actual_upg_option, 'N') = 'O') OR
83771 (NVL(l_enc_upg_option, 'N') = 'O')
83772 )
83773 THEN
83774 NULL;
83775 --
83776 --
83777
83778 l_ccid := AcctDerRule_22(
83779 p_application_id => p_application_id
83780 , p_ae_header_id => l_ae_header_id
83781 , p_source_1 => p_source_1
83782 , p_source_2 => p_source_2
83783 , x_transaction_coa_id => l_adr_transaction_coa_id
83784 , x_accounting_coa_id => l_adr_accounting_coa_id
83785 , x_value_type_code => l_adr_value_type_code
83786 , p_side => 'NA'
83787 );
83788
83789 xla_ae_lines_pkg.set_ccid(
83790 p_code_combination_id => l_ccid
83791 , p_value_type_code => l_adr_value_type_code
83792 , p_transaction_coa_id => l_adr_transaction_coa_id
83796 , p_component_type => l_component_type
83793 , p_accounting_coa_id => l_adr_accounting_coa_id
83794 , p_adr_code => 'IOR'
83795 , p_adr_type_code => 'S'
83797 , p_component_code => l_component_code
83798 , p_component_type_code => l_component_type_code
83799 , p_component_appl_id => l_component_appl_id
83800 , p_amb_context_code => l_amb_context_code
83801 , p_side => 'NA'
83802 );
83803
83804
83805 --
83806 --
83807 END IF;
83808
83809 --
83810 -- Update the line information that should be overwritten
83811 --
83812 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
83813 p_header_num => 1);
83814 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
83815
83816 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
83817
83818 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
83819 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
83820 END IF;
83821
83822 --
83823 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
83824 --
83825 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
83826 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
83827 ELSE
83828 ---------------------------------------------------------------------------------------------------
83829 -- 4262811a Switch Sign
83830 ---------------------------------------------------------------------------------------------------
83831 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
83832 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83833 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83834 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
83835 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83836 -- 5132302
83837 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
83838 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
83839
83840 END IF;
83841
83842 -- 4955764
83843 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83844 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83845
83846
83847 XLA_AE_LINES_PKG.ValidateCurrentLine;
83848 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83849
83850 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83851 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83852 ,p_balance_type_code => l_balance_type_code);
83853
83854 END IF;
83855
83856 -----------------------------------------------------------------------------------------
83857 -- 4262811 Multiperiod Accounting
83858 -----------------------------------------------------------------------------------------
83859 -- No MPA option is assigned.
83860
83861
83862 END IF;
83863 END IF;
83864 --
83865
83866 --
83867 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83868 trace
83869 (p_msg => 'END of AcctLineType_183'
83870 ,p_level => C_LEVEL_PROCEDURE
83871 ,p_module => l_log_module);
83872 END IF;
83873 --
83874 EXCEPTION
83875 WHEN xla_exceptions_pkg.application_exception THEN
83876 RAISE;
83877 WHEN OTHERS THEN
83878 xla_exceptions_pkg.raise_message
83879 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_183');
83880 END AcctLineType_183;
83881 --
83882
83883 ---------------------------------------
83884 --
83885 -- PRIVATE FUNCTION
83886 -- AcctLineType_184
83887 --
83888 ---------------------------------------
83889 PROCEDURE AcctLineType_184 (
83890 p_application_id IN NUMBER
83891 ,p_event_id IN NUMBER
83892 ,p_calculate_acctd_flag IN VARCHAR2
83893 ,p_calculate_g_l_flag IN VARCHAR2
83894 ,p_actual_flag IN OUT VARCHAR2
83895 ,p_balance_type_code OUT VARCHAR2
83896 ,p_gain_or_loss_ref OUT VARCHAR2
83897
83898 --Transaction Account
83899 , p_source_1 IN NUMBER
83900 --Journal Line Type
83901 , p_source_2 IN VARCHAR2
83902 --Entered Amount
83903 , p_source_3 IN NUMBER
83904 --First Distribution Identifier
83905 , p_source_5 IN NUMBER
83906 --Distribution Type
83907 , p_source_6 IN VARCHAR2
83908 --Currency Code
83909 , p_source_7 IN VARCHAR2
83910 --Currency Conversion Date
83911 , p_source_8 IN DATE
83912 --Currency Conversion Rate
83913 , p_source_9 IN NUMBER
83914 --Currency Conversion Type
83915 , p_source_10 IN VARCHAR2
83916 --Accounted Amount
83917 , p_source_11 IN NUMBER
83918 )
83919 IS
83920
83924 l_component_appl_id INTEGER;
83921 l_component_type VARCHAR2(80);
83922 l_component_code VARCHAR2(30);
83923 l_component_type_code VARCHAR2(1);
83925 l_amb_context_code VARCHAR2(30);
83926 l_entity_code VARCHAR2(30);
83927 l_event_class_code VARCHAR2(30);
83928 l_ae_header_id NUMBER;
83929 l_event_type_code VARCHAR2(30);
83930 l_line_definition_code VARCHAR2(30);
83931 l_line_definition_owner_code VARCHAR2(1);
83932 --
83933 -- adr variables
83934 l_segment VARCHAR2(30);
83935 l_ccid NUMBER;
83936 l_adr_transaction_coa_id NUMBER;
83937 l_adr_accounting_coa_id NUMBER;
83938 l_adr_flexfield_segment_code VARCHAR2(30);
83939 l_adr_flex_value_set_id NUMBER;
83940 l_adr_value_type_code VARCHAR2(30);
83941 l_adr_value_combination_id NUMBER;
83942 l_adr_value_segment_code VARCHAR2(30);
83943
83944 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
83945 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
83946 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
83947 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
83948
83949 -- 4262811 Variables ------------------------------------------------------------------------------------------
83950 l_entered_amt_idx NUMBER;
83951 l_accted_amt_idx NUMBER;
83952 l_acc_rev_flag VARCHAR2(1);
83953 l_accrual_line_num NUMBER;
83954 l_tmp_amt NUMBER;
83955 l_acc_rev_natural_side_code VARCHAR2(1);
83956
83957 l_num_entries NUMBER;
83958 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
83959 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
83960 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
83961 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
83962 l_recog_line_1 NUMBER;
83963 l_recog_line_2 NUMBER;
83964
83965 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
83966 l_bflow_applied_to_amt NUMBER; -- 5132302
83967 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
83968
83969 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83970
83971 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
83972 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
83973
83974 ---------------------------------------------------------------------------------------------------------------
83975
83976
83977 --
83978 -- bulk performance
83979 --
83980 l_balance_type_code VARCHAR2(1);
83981 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
83982 l_log_module VARCHAR2(240);
83983
83984 --
83985 -- Upgrade strategy
83986 --
83987 l_actual_upg_option VARCHAR2(1);
83988 l_enc_upg_option VARCHAR2(1);
83989
83990 --
83991 BEGIN
83992 --
83993 IF g_log_enabled THEN
83994 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_184';
83995 END IF;
83996 --
83997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83998
83999 trace
84000 (p_msg => 'BEGIN of AcctLineType_184'
84001 ,p_level => C_LEVEL_PROCEDURE
84002 ,p_module => l_log_module);
84003
84004 END IF;
84005 --
84006 l_component_type := 'AMB_JLT';
84007 l_component_code := 'IOR';
84008 l_component_type_code := 'S';
84009 l_component_appl_id := 555;
84010 l_amb_context_code := 'DEFAULT';
84011 l_entity_code := 'INVENTORY';
84012 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
84013 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
84014 l_line_definition_owner_code := 'S';
84015 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
84016 --
84017 l_balance_type_code := 'A';
84018 l_segment := NULL;
84019 l_ccid := NULL;
84020 l_adr_transaction_coa_id := NULL;
84021 l_adr_accounting_coa_id := NULL;
84022 l_adr_flexfield_segment_code := NULL;
84023 l_adr_flex_value_set_id := NULL;
84024 l_adr_value_type_code := NULL;
84025 l_adr_value_combination_id := NULL;
84026 l_adr_value_segment_code := NULL;
84027
84028 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
84029 l_bflow_class_code := ''; -- 4219869 Business Flow
84030 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
84031 l_budgetary_control_flag := 'N';
84032
84033 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84034 l_bflow_applied_to_amt := NULL; -- 5132302
84035 l_entered_amt_idx := NULL; -- 4262811
84036 l_accted_amt_idx := NULL; -- 4262811
84037 l_acc_rev_flag := NULL; -- 4262811
84038 l_accrual_line_num := NULL; -- 4262811
84039 l_tmp_amt := NULL; -- 4262811
84040 --
84041
84042 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84043 l_balance_type_code <> 'B' THEN
84044 IF NVL(p_source_2,'
84045 ') = 'IOR'
84046 THEN
84050
84047
84048 --
84049 XLA_AE_LINES_PKG.SetNewLine;
84051 p_balance_type_code := l_balance_type_code;
84052 -- set the flag so later we will know whether the gain loss line needs to be created
84053
84054 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84055 p_actual_flag :='A';
84056 END IF;
84057
84058 --
84059 -- bulk performance
84060 --
84061 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84062 p_header_num => 0); -- 4262811
84063 --
84064 -- set accounting line options
84065 --
84066 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84067 p_natural_side_code => 'D'
84068 , p_gain_or_loss_flag => 'N'
84069 , p_gl_transfer_mode_code => 'D'
84070 , p_acct_entry_type_code => 'A'
84071 , p_switch_side_flag => 'Y'
84072 , p_merge_duplicate_code => 'W'
84073 );
84074 --
84075 l_acc_rev_natural_side_code := 'C'; -- 4262811
84076 --
84077 --
84078 -- set accounting line type info
84079 --
84080 xla_ae_lines_pkg.SetAcctLineType
84081 (p_component_type => l_component_type
84082 ,p_event_type_code => l_event_type_code
84083 ,p_line_definition_owner_code => l_line_definition_owner_code
84084 ,p_line_definition_code => l_line_definition_code
84085 ,p_accounting_line_code => l_component_code
84086 ,p_accounting_line_type_code => l_component_type_code
84087 ,p_accounting_line_appl_id => l_component_appl_id
84088 ,p_amb_context_code => l_amb_context_code
84089 ,p_entity_code => l_entity_code
84090 ,p_event_class_code => l_event_class_code);
84091 --
84092 -- set accounting class
84093 --
84094 xla_ae_lines_pkg.SetAcctClass(
84095 p_accounting_class_code => 'INTERORG_RECEIVABLES'
84096 , p_ae_header_id => l_ae_header_id
84097 );
84098
84099 --
84100 -- set rounding class
84101 --
84102 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84103 'INTERORG_RECEIVABLES';
84104
84105 --
84106 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84107 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84108 --
84109 -- bulk performance
84110 --
84111 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84112
84113 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84114 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84115
84116 -- 4955764
84117 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84118 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84119
84120 -- 4458381 Public Sector Enh
84121
84122 --
84123 -- set accounting attributes for the line type
84124 --
84125 l_entered_amt_idx := 3;
84126 l_accted_amt_idx := 8;
84127 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84128 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84129 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
84130 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84131 l_rec_acct_attrs.array_char_value(2) := p_source_6;
84132 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84133 l_rec_acct_attrs.array_num_value(3) := p_source_3;
84134 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84135 l_rec_acct_attrs.array_char_value(4) := p_source_7;
84136 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84137 l_rec_acct_attrs.array_date_value(5) := p_source_8;
84138 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84139 l_rec_acct_attrs.array_num_value(6) := p_source_9;
84140 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84141 l_rec_acct_attrs.array_char_value(7) := p_source_10;
84142 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84143 l_rec_acct_attrs.array_num_value(8) := p_source_11;
84144
84145 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84146 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84147
84148 ---------------------------------------------------------------------------------------------------------------
84149 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84150 ---------------------------------------------------------------------------------------------------------------
84151 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84152
84153 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84154 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84155
84156 IF xla_accounting_cache_pkg.GetValueChar
84157 (p_source_code => 'LEDGER_CATEGORY_CODE'
84161 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84158 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84159 AND l_bflow_method_code = 'PRIOR_ENTRY'
84160 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84162 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84163 )
84164 THEN
84165 xla_ae_lines_pkg.BflowUpgEntry
84166 (p_business_method_code => l_bflow_method_code
84167 ,p_business_class_code => l_bflow_class_code
84168 ,p_balance_type => l_balance_type_code);
84169 ELSE
84170 NULL;
84171 -- No business flow processing for business flow method of NONE.
84172 END IF;
84173
84174 --
84175 -- call analytical criteria
84176 --
84177
84178 --
84179 -- call description
84180 --
84181 -- No description or it is inherited.
84182 --
84183 -- call ADRs
84184 -- Bug 4922099
84185 --
84186 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84187 (NVL(l_actual_upg_option, 'N') = 'O') OR
84188 (NVL(l_enc_upg_option, 'N') = 'O')
84189 )
84190 THEN
84191 NULL;
84192 --
84193 --
84194
84195 l_ccid := AcctDerRule_22(
84196 p_application_id => p_application_id
84197 , p_ae_header_id => l_ae_header_id
84198 , p_source_1 => p_source_1
84199 , p_source_2 => p_source_2
84200 , x_transaction_coa_id => l_adr_transaction_coa_id
84201 , x_accounting_coa_id => l_adr_accounting_coa_id
84202 , x_value_type_code => l_adr_value_type_code
84203 , p_side => 'NA'
84204 );
84205
84206 xla_ae_lines_pkg.set_ccid(
84207 p_code_combination_id => l_ccid
84208 , p_value_type_code => l_adr_value_type_code
84209 , p_transaction_coa_id => l_adr_transaction_coa_id
84210 , p_accounting_coa_id => l_adr_accounting_coa_id
84211 , p_adr_code => 'IOR'
84212 , p_adr_type_code => 'S'
84213 , p_component_type => l_component_type
84214 , p_component_code => l_component_code
84215 , p_component_type_code => l_component_type_code
84216 , p_component_appl_id => l_component_appl_id
84217 , p_amb_context_code => l_amb_context_code
84218 , p_side => 'NA'
84219 );
84220
84221
84222 --
84223 --
84224 END IF;
84225 --
84226 -- Bug 4922099
84227 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
84228 (NVL(l_enc_upg_option, 'N') = 'O')
84229 ) AND
84230 (l_bflow_method_code = 'PRIOR_ENTRY')
84231 )
84232 THEN
84233 IF
84234 --
84235 1 = 2
84236 --
84237 THEN
84238 xla_accounting_err_pkg.build_message
84239 (p_appli_s_name => 'XLA'
84240 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84241 ,p_token_1 => 'LINE_NUMBER'
84242 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
84243 ,p_token_2 => 'LINE_TYPE_NAME'
84244 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
84245 l_component_type
84246 ,l_component_code
84247 ,l_component_type_code
84248 ,l_component_appl_id
84249 ,l_amb_context_code
84250 ,l_entity_code
84251 ,l_event_class_code
84252 )
84253 ,p_token_3 => 'OWNER'
84254 ,p_value_3 => xla_lookups_pkg.get_meaning(
84255 p_lookup_type => 'XLA_OWNER_TYPE'
84256 ,p_lookup_code => l_component_type_code
84257 )
84258 ,p_token_4 => 'PRODUCT_NAME'
84259 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
84260 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
84261 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
84262 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
84263 ,p_ae_header_id => NULL
84264 );
84265
84266 IF (C_LEVEL_ERROR>= g_log_level) THEN
84267 trace
84271 END IF;
84268 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84269 ,p_level => C_LEVEL_ERROR
84270 ,p_module => l_log_module);
84272 END IF;
84273 END IF;
84274 --
84275 --
84276 ------------------------------------------------------------------------------------------------
84277 -- 4219869 Business Flow
84278 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
84279 -- Prior Entry. Currently, the following code is always generated.
84280 ------------------------------------------------------------------------------------------------
84281 XLA_AE_LINES_PKG.ValidateCurrentLine;
84282
84283 ------------------------------------------------------------------------------------
84284 -- 4219869 Business Flow
84285 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
84286 ------------------------------------------------------------------------------------
84287 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84288
84289 ----------------------------------------------------------------------------------
84290 -- 4219869 Business Flow
84291 -- Update journal entry status -- Need to generate this within IF <condition>
84292 ----------------------------------------------------------------------------------
84293 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84294 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84295 ,p_balance_type_code => l_balance_type_code
84296 );
84297
84298 -------------------------------------------------------------------------------------------
84299 -- 4262811 - Generate the Accrual Reversal lines
84300 -------------------------------------------------------------------------------------------
84301 BEGIN
84302 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84303 (g_array_event(p_event_id).array_value_num('header_index'));
84304 IF l_acc_rev_flag IS NULL THEN
84305 l_acc_rev_flag := 'N';
84306 END IF;
84307 EXCEPTION
84308 WHEN OTHERS THEN
84309 l_acc_rev_flag := 'N';
84310 END;
84311 --
84312 IF (l_acc_rev_flag = 'Y') THEN
84313
84314 -- 4645092 ------------------------------------------------------------------------------
84315 -- To allow MPA report to determine if it should generate report process
84316 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84317 ------------------------------------------------------------------------------------------
84318
84319 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84320 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84321 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
84322 -- call ADRs
84323 -- Bug 4922099
84324 --
84325 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84326 (NVL(l_actual_upg_option, 'N') = 'O') OR
84327 (NVL(l_enc_upg_option, 'N') = 'O')
84328 )
84329 THEN
84330 NULL;
84331 --
84332 --
84333
84334 l_ccid := AcctDerRule_22(
84335 p_application_id => p_application_id
84336 , p_ae_header_id => l_ae_header_id
84337 , p_source_1 => p_source_1
84338 , p_source_2 => p_source_2
84339 , x_transaction_coa_id => l_adr_transaction_coa_id
84340 , x_accounting_coa_id => l_adr_accounting_coa_id
84341 , x_value_type_code => l_adr_value_type_code
84342 , p_side => 'NA'
84343 );
84344
84345 xla_ae_lines_pkg.set_ccid(
84346 p_code_combination_id => l_ccid
84347 , p_value_type_code => l_adr_value_type_code
84348 , p_transaction_coa_id => l_adr_transaction_coa_id
84349 , p_accounting_coa_id => l_adr_accounting_coa_id
84350 , p_adr_code => 'IOR'
84351 , p_adr_type_code => 'S'
84352 , p_component_type => l_component_type
84353 , p_component_code => l_component_code
84354 , p_component_type_code => l_component_type_code
84355 , p_component_appl_id => l_component_appl_id
84356 , p_amb_context_code => l_amb_context_code
84357 , p_side => 'NA'
84358 );
84359
84360
84361 --
84362 --
84363 END IF;
84364
84365 --
84366 -- Update the line information that should be overwritten
84367 --
84368 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84369 p_header_num => 1);
84370 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
84371
84372 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84373
84374 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
84375 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84376 END IF;
84377
84378 --
84379 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84380 --
84381 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84382 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
84383 ELSE
84387 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
84384 ---------------------------------------------------------------------------------------------------
84385 -- 4262811a Switch Sign
84386 ---------------------------------------------------------------------------------------------------
84388 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84389 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84390 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84391 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84392 -- 5132302
84393 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84394 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84395
84396 END IF;
84397
84398 -- 4955764
84399 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84400 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84401
84402
84403 XLA_AE_LINES_PKG.ValidateCurrentLine;
84404 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84405
84406 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84407 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84408 ,p_balance_type_code => l_balance_type_code);
84409
84410 END IF;
84411
84412 -----------------------------------------------------------------------------------------
84413 -- 4262811 Multiperiod Accounting
84414 -----------------------------------------------------------------------------------------
84415 -- No MPA option is assigned.
84416
84417
84418 END IF;
84419 END IF;
84420 --
84421
84422 --
84423 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84424 trace
84425 (p_msg => 'END of AcctLineType_184'
84426 ,p_level => C_LEVEL_PROCEDURE
84427 ,p_module => l_log_module);
84428 END IF;
84429 --
84430 EXCEPTION
84431 WHEN xla_exceptions_pkg.application_exception THEN
84432 RAISE;
84433 WHEN OTHERS THEN
84434 xla_exceptions_pkg.raise_message
84435 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_184');
84436 END AcctLineType_184;
84437 --
84438
84439 ---------------------------------------
84440 --
84441 -- PRIVATE FUNCTION
84442 -- AcctLineType_185
84443 --
84444 ---------------------------------------
84445 PROCEDURE AcctLineType_185 (
84446 p_application_id IN NUMBER
84447 ,p_event_id IN NUMBER
84448 ,p_calculate_acctd_flag IN VARCHAR2
84449 ,p_calculate_g_l_flag IN VARCHAR2
84450 ,p_actual_flag IN OUT VARCHAR2
84451 ,p_balance_type_code OUT VARCHAR2
84452 ,p_gain_or_loss_ref OUT VARCHAR2
84453
84454 --Transaction Account
84455 , p_source_1 IN NUMBER
84456 --Journal Line Type
84457 , p_source_2 IN VARCHAR2
84458 --Entered Amount
84459 , p_source_3 IN NUMBER
84460 --First Distribution Identifier
84461 , p_source_5 IN NUMBER
84462 --Distribution Type
84463 , p_source_6 IN VARCHAR2
84464 --Currency Code
84465 , p_source_7 IN VARCHAR2
84466 --Currency Conversion Date
84467 , p_source_8 IN DATE
84468 --Currency Conversion Rate
84469 , p_source_9 IN NUMBER
84470 --Currency Conversion Type
84471 , p_source_10 IN VARCHAR2
84472 --Accounted Amount
84473 , p_source_11 IN NUMBER
84474 )
84475 IS
84476
84477 l_component_type VARCHAR2(80);
84478 l_component_code VARCHAR2(30);
84479 l_component_type_code VARCHAR2(1);
84480 l_component_appl_id INTEGER;
84481 l_amb_context_code VARCHAR2(30);
84482 l_entity_code VARCHAR2(30);
84483 l_event_class_code VARCHAR2(30);
84484 l_ae_header_id NUMBER;
84485 l_event_type_code VARCHAR2(30);
84486 l_line_definition_code VARCHAR2(30);
84487 l_line_definition_owner_code VARCHAR2(1);
84488 --
84489 -- adr variables
84490 l_segment VARCHAR2(30);
84491 l_ccid NUMBER;
84492 l_adr_transaction_coa_id NUMBER;
84493 l_adr_accounting_coa_id NUMBER;
84494 l_adr_flexfield_segment_code VARCHAR2(30);
84495 l_adr_flex_value_set_id NUMBER;
84496 l_adr_value_type_code VARCHAR2(30);
84497 l_adr_value_combination_id NUMBER;
84498 l_adr_value_segment_code VARCHAR2(30);
84499
84500 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
84501 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
84502 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
84503 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
84504
84505 -- 4262811 Variables ------------------------------------------------------------------------------------------
84506 l_entered_amt_idx NUMBER;
84507 l_accted_amt_idx NUMBER;
84508 l_acc_rev_flag VARCHAR2(1);
84509 l_accrual_line_num NUMBER;
84510 l_tmp_amt NUMBER;
84514 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
84511 l_acc_rev_natural_side_code VARCHAR2(1);
84512
84513 l_num_entries NUMBER;
84515 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
84516 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
84517 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
84518 l_recog_line_1 NUMBER;
84519 l_recog_line_2 NUMBER;
84520
84521 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
84522 l_bflow_applied_to_amt NUMBER; -- 5132302
84523 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
84524
84525 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
84526
84527 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
84528 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
84529
84530 ---------------------------------------------------------------------------------------------------------------
84531
84532
84533 --
84534 -- bulk performance
84535 --
84536 l_balance_type_code VARCHAR2(1);
84537 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
84538 l_log_module VARCHAR2(240);
84539
84540 --
84541 -- Upgrade strategy
84542 --
84543 l_actual_upg_option VARCHAR2(1);
84544 l_enc_upg_option VARCHAR2(1);
84545
84546 --
84547 BEGIN
84548 --
84549 IF g_log_enabled THEN
84550 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_185';
84551 END IF;
84552 --
84553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84554
84555 trace
84556 (p_msg => 'BEGIN of AcctLineType_185'
84557 ,p_level => C_LEVEL_PROCEDURE
84558 ,p_module => l_log_module);
84559
84560 END IF;
84561 --
84562 l_component_type := 'AMB_JLT';
84563 l_component_code := 'IOR';
84564 l_component_type_code := 'S';
84565 l_component_appl_id := 555;
84566 l_amb_context_code := 'DEFAULT';
84567 l_entity_code := 'INVENTORY';
84568 l_event_class_code := 'DIR_INTERORG_SHIP';
84569 l_event_type_code := 'DIR_INTERORG_SHIP_TP';
84570 l_line_definition_owner_code := 'S';
84571 l_line_definition_code := 'DIRECT_XFER_SHIP_TP';
84572 --
84573 l_balance_type_code := 'A';
84574 l_segment := NULL;
84575 l_ccid := NULL;
84576 l_adr_transaction_coa_id := NULL;
84577 l_adr_accounting_coa_id := NULL;
84578 l_adr_flexfield_segment_code := NULL;
84579 l_adr_flex_value_set_id := NULL;
84580 l_adr_value_type_code := NULL;
84581 l_adr_value_combination_id := NULL;
84582 l_adr_value_segment_code := NULL;
84583
84584 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
84585 l_bflow_class_code := ''; -- 4219869 Business Flow
84586 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
84587 l_budgetary_control_flag := 'N';
84588
84589 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84590 l_bflow_applied_to_amt := NULL; -- 5132302
84591 l_entered_amt_idx := NULL; -- 4262811
84592 l_accted_amt_idx := NULL; -- 4262811
84593 l_acc_rev_flag := NULL; -- 4262811
84594 l_accrual_line_num := NULL; -- 4262811
84595 l_tmp_amt := NULL; -- 4262811
84596 --
84597
84598 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
84599 l_balance_type_code <> 'B' THEN
84600 IF NVL(p_source_2,'
84601 ') = 'IOR'
84602 THEN
84603
84604 --
84605 XLA_AE_LINES_PKG.SetNewLine;
84606
84607 p_balance_type_code := l_balance_type_code;
84608 -- set the flag so later we will know whether the gain loss line needs to be created
84609
84610 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84611 p_actual_flag :='A';
84612 END IF;
84613
84614 --
84615 -- bulk performance
84616 --
84617 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84618 p_header_num => 0); -- 4262811
84619 --
84620 -- set accounting line options
84621 --
84622 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84623 p_natural_side_code => 'D'
84624 , p_gain_or_loss_flag => 'N'
84625 , p_gl_transfer_mode_code => 'D'
84626 , p_acct_entry_type_code => 'A'
84627 , p_switch_side_flag => 'Y'
84628 , p_merge_duplicate_code => 'W'
84629 );
84630 --
84631 l_acc_rev_natural_side_code := 'C'; -- 4262811
84632 --
84633 --
84634 -- set accounting line type info
84635 --
84636 xla_ae_lines_pkg.SetAcctLineType
84637 (p_component_type => l_component_type
84638 ,p_event_type_code => l_event_type_code
84639 ,p_line_definition_owner_code => l_line_definition_owner_code
84640 ,p_line_definition_code => l_line_definition_code
84641 ,p_accounting_line_code => l_component_code
84645 ,p_entity_code => l_entity_code
84642 ,p_accounting_line_type_code => l_component_type_code
84643 ,p_accounting_line_appl_id => l_component_appl_id
84644 ,p_amb_context_code => l_amb_context_code
84646 ,p_event_class_code => l_event_class_code);
84647 --
84648 -- set accounting class
84649 --
84650 xla_ae_lines_pkg.SetAcctClass(
84651 p_accounting_class_code => 'INTERORG_RECEIVABLES'
84652 , p_ae_header_id => l_ae_header_id
84653 );
84654
84655 --
84656 -- set rounding class
84657 --
84658 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84659 'INTERORG_RECEIVABLES';
84660
84661 --
84662 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84663 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84664 --
84665 -- bulk performance
84666 --
84667 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84668
84669 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84670 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84671
84672 -- 4955764
84673 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84674 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84675
84676 -- 4458381 Public Sector Enh
84677
84678 --
84679 -- set accounting attributes for the line type
84680 --
84681 l_entered_amt_idx := 3;
84682 l_accted_amt_idx := 8;
84683 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84684 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84685 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
84686 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84687 l_rec_acct_attrs.array_char_value(2) := p_source_6;
84688 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84689 l_rec_acct_attrs.array_num_value(3) := p_source_3;
84690 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84691 l_rec_acct_attrs.array_char_value(4) := p_source_7;
84692 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84693 l_rec_acct_attrs.array_date_value(5) := p_source_8;
84694 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84695 l_rec_acct_attrs.array_num_value(6) := p_source_9;
84696 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84697 l_rec_acct_attrs.array_char_value(7) := p_source_10;
84698 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84699 l_rec_acct_attrs.array_num_value(8) := p_source_11;
84700
84701 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84702 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84703
84704 ---------------------------------------------------------------------------------------------------------------
84705 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84706 ---------------------------------------------------------------------------------------------------------------
84707 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84708
84709 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84710 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84711
84712 IF xla_accounting_cache_pkg.GetValueChar
84713 (p_source_code => 'LEDGER_CATEGORY_CODE'
84714 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84715 AND l_bflow_method_code = 'PRIOR_ENTRY'
84716 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84717 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84718 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84719 )
84720 THEN
84721 xla_ae_lines_pkg.BflowUpgEntry
84722 (p_business_method_code => l_bflow_method_code
84723 ,p_business_class_code => l_bflow_class_code
84724 ,p_balance_type => l_balance_type_code);
84725 ELSE
84726 NULL;
84727 -- No business flow processing for business flow method of NONE.
84728 END IF;
84729
84730 --
84731 -- call analytical criteria
84732 --
84733
84734 --
84735 -- call description
84736 --
84737 -- No description or it is inherited.
84738 --
84739 -- call ADRs
84740 -- Bug 4922099
84741 --
84742 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84743 (NVL(l_actual_upg_option, 'N') = 'O') OR
84744 (NVL(l_enc_upg_option, 'N') = 'O')
84745 )
84746 THEN
84747 NULL;
84748 --
84749 --
84750
84751 l_ccid := AcctDerRule_22(
84752 p_application_id => p_application_id
84753 , p_ae_header_id => l_ae_header_id
84754 , p_source_1 => p_source_1
84755 , p_source_2 => p_source_2
84756 , x_transaction_coa_id => l_adr_transaction_coa_id
84760 );
84757 , x_accounting_coa_id => l_adr_accounting_coa_id
84758 , x_value_type_code => l_adr_value_type_code
84759 , p_side => 'NA'
84761
84762 xla_ae_lines_pkg.set_ccid(
84763 p_code_combination_id => l_ccid
84764 , p_value_type_code => l_adr_value_type_code
84765 , p_transaction_coa_id => l_adr_transaction_coa_id
84766 , p_accounting_coa_id => l_adr_accounting_coa_id
84767 , p_adr_code => 'IOR'
84768 , p_adr_type_code => 'S'
84769 , p_component_type => l_component_type
84770 , p_component_code => l_component_code
84771 , p_component_type_code => l_component_type_code
84772 , p_component_appl_id => l_component_appl_id
84773 , p_amb_context_code => l_amb_context_code
84774 , p_side => 'NA'
84775 );
84776
84777
84778 --
84779 --
84780 END IF;
84781 --
84782 -- Bug 4922099
84783 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
84784 (NVL(l_enc_upg_option, 'N') = 'O')
84785 ) AND
84786 (l_bflow_method_code = 'PRIOR_ENTRY')
84787 )
84788 THEN
84789 IF
84790 --
84791 1 = 2
84792 --
84793 THEN
84794 xla_accounting_err_pkg.build_message
84795 (p_appli_s_name => 'XLA'
84796 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84797 ,p_token_1 => 'LINE_NUMBER'
84798 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
84799 ,p_token_2 => 'LINE_TYPE_NAME'
84800 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
84801 l_component_type
84802 ,l_component_code
84803 ,l_component_type_code
84804 ,l_component_appl_id
84805 ,l_amb_context_code
84806 ,l_entity_code
84807 ,l_event_class_code
84808 )
84809 ,p_token_3 => 'OWNER'
84810 ,p_value_3 => xla_lookups_pkg.get_meaning(
84811 p_lookup_type => 'XLA_OWNER_TYPE'
84812 ,p_lookup_code => l_component_type_code
84813 )
84814 ,p_token_4 => 'PRODUCT_NAME'
84815 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
84816 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
84817 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
84818 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
84819 ,p_ae_header_id => NULL
84820 );
84821
84822 IF (C_LEVEL_ERROR>= g_log_level) THEN
84823 trace
84824 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
84825 ,p_level => C_LEVEL_ERROR
84826 ,p_module => l_log_module);
84827 END IF;
84828 END IF;
84829 END IF;
84830 --
84831 --
84832 ------------------------------------------------------------------------------------------------
84833 -- 4219869 Business Flow
84834 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
84835 -- Prior Entry. Currently, the following code is always generated.
84836 ------------------------------------------------------------------------------------------------
84837 XLA_AE_LINES_PKG.ValidateCurrentLine;
84838
84839 ------------------------------------------------------------------------------------
84840 -- 4219869 Business Flow
84841 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
84842 ------------------------------------------------------------------------------------
84843 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84844
84845 ----------------------------------------------------------------------------------
84846 -- 4219869 Business Flow
84847 -- Update journal entry status -- Need to generate this within IF <condition>
84848 ----------------------------------------------------------------------------------
84849 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84850 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
84851 ,p_balance_type_code => l_balance_type_code
84852 );
84853
84854 -------------------------------------------------------------------------------------------
84858 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
84855 -- 4262811 - Generate the Accrual Reversal lines
84856 -------------------------------------------------------------------------------------------
84857 BEGIN
84859 (g_array_event(p_event_id).array_value_num('header_index'));
84860 IF l_acc_rev_flag IS NULL THEN
84861 l_acc_rev_flag := 'N';
84862 END IF;
84863 EXCEPTION
84864 WHEN OTHERS THEN
84865 l_acc_rev_flag := 'N';
84866 END;
84867 --
84868 IF (l_acc_rev_flag = 'Y') THEN
84869
84870 -- 4645092 ------------------------------------------------------------------------------
84871 -- To allow MPA report to determine if it should generate report process
84872 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
84873 ------------------------------------------------------------------------------------------
84874
84875 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
84876 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
84877 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
84878 -- call ADRs
84879 -- Bug 4922099
84880 --
84881 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
84882 (NVL(l_actual_upg_option, 'N') = 'O') OR
84883 (NVL(l_enc_upg_option, 'N') = 'O')
84884 )
84885 THEN
84886 NULL;
84887 --
84888 --
84889
84890 l_ccid := AcctDerRule_22(
84891 p_application_id => p_application_id
84892 , p_ae_header_id => l_ae_header_id
84893 , p_source_1 => p_source_1
84894 , p_source_2 => p_source_2
84895 , x_transaction_coa_id => l_adr_transaction_coa_id
84896 , x_accounting_coa_id => l_adr_accounting_coa_id
84897 , x_value_type_code => l_adr_value_type_code
84898 , p_side => 'NA'
84899 );
84900
84901 xla_ae_lines_pkg.set_ccid(
84902 p_code_combination_id => l_ccid
84903 , p_value_type_code => l_adr_value_type_code
84904 , p_transaction_coa_id => l_adr_transaction_coa_id
84905 , p_accounting_coa_id => l_adr_accounting_coa_id
84906 , p_adr_code => 'IOR'
84907 , p_adr_type_code => 'S'
84908 , p_component_type => l_component_type
84909 , p_component_code => l_component_code
84910 , p_component_type_code => l_component_type_code
84911 , p_component_appl_id => l_component_appl_id
84912 , p_amb_context_code => l_amb_context_code
84913 , p_side => 'NA'
84914 );
84915
84916
84917 --
84918 --
84919 END IF;
84920
84921 --
84922 -- Update the line information that should be overwritten
84923 --
84924 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
84925 p_header_num => 1);
84926 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
84927
84928 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
84929
84930 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
84931 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
84932 END IF;
84933
84934 --
84935 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
84936 --
84937 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
84938 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
84939 ELSE
84940 ---------------------------------------------------------------------------------------------------
84941 -- 4262811a Switch Sign
84942 ---------------------------------------------------------------------------------------------------
84943 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
84944 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84945 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84946 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
84947 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84948 -- 5132302
84949 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
84950 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
84951
84952 END IF;
84953
84954 -- 4955764
84955 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84956 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
84957
84958
84959 XLA_AE_LINES_PKG.ValidateCurrentLine;
84960 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
84961
84962 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
84963 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
84964 ,p_balance_type_code => l_balance_type_code);
84965
84966 END IF;
84967
84971 -- No MPA option is assigned.
84968 -----------------------------------------------------------------------------------------
84969 -- 4262811 Multiperiod Accounting
84970 -----------------------------------------------------------------------------------------
84972
84973
84974 END IF;
84975 END IF;
84976 --
84977
84978 --
84979 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84980 trace
84981 (p_msg => 'END of AcctLineType_185'
84982 ,p_level => C_LEVEL_PROCEDURE
84983 ,p_module => l_log_module);
84984 END IF;
84985 --
84986 EXCEPTION
84987 WHEN xla_exceptions_pkg.application_exception THEN
84988 RAISE;
84989 WHEN OTHERS THEN
84990 xla_exceptions_pkg.raise_message
84991 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_185');
84992 END AcctLineType_185;
84993 --
84994
84995 ---------------------------------------
84996 --
84997 -- PRIVATE FUNCTION
84998 -- AcctLineType_186
84999 --
85000 ---------------------------------------
85001 PROCEDURE AcctLineType_186 (
85002 p_application_id IN NUMBER
85003 ,p_event_id IN NUMBER
85004 ,p_calculate_acctd_flag IN VARCHAR2
85005 ,p_calculate_g_l_flag IN VARCHAR2
85006 ,p_actual_flag IN OUT VARCHAR2
85007 ,p_balance_type_code OUT VARCHAR2
85008 ,p_gain_or_loss_ref OUT VARCHAR2
85009
85010 --Transaction Account
85011 , p_source_1 IN NUMBER
85012 --Journal Line Type
85013 , p_source_2 IN VARCHAR2
85014 --Entered Amount
85015 , p_source_3 IN NUMBER
85016 --First Distribution Identifier
85017 , p_source_5 IN NUMBER
85018 --Distribution Type
85019 , p_source_6 IN VARCHAR2
85020 --Currency Code
85021 , p_source_7 IN VARCHAR2
85022 --Currency Conversion Date
85023 , p_source_8 IN DATE
85024 --Currency Conversion Rate
85025 , p_source_9 IN NUMBER
85026 --Currency Conversion Type
85027 , p_source_10 IN VARCHAR2
85028 --Accounted Amount
85029 , p_source_11 IN NUMBER
85030 )
85031 IS
85032
85033 l_component_type VARCHAR2(80);
85034 l_component_code VARCHAR2(30);
85035 l_component_type_code VARCHAR2(1);
85036 l_component_appl_id INTEGER;
85037 l_amb_context_code VARCHAR2(30);
85038 l_entity_code VARCHAR2(30);
85039 l_event_class_code VARCHAR2(30);
85040 l_ae_header_id NUMBER;
85041 l_event_type_code VARCHAR2(30);
85042 l_line_definition_code VARCHAR2(30);
85043 l_line_definition_owner_code VARCHAR2(1);
85044 --
85045 -- adr variables
85046 l_segment VARCHAR2(30);
85047 l_ccid NUMBER;
85048 l_adr_transaction_coa_id NUMBER;
85049 l_adr_accounting_coa_id NUMBER;
85050 l_adr_flexfield_segment_code VARCHAR2(30);
85051 l_adr_flex_value_set_id NUMBER;
85052 l_adr_value_type_code VARCHAR2(30);
85053 l_adr_value_combination_id NUMBER;
85054 l_adr_value_segment_code VARCHAR2(30);
85055
85056 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
85057 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
85058 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
85059 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
85060
85061 -- 4262811 Variables ------------------------------------------------------------------------------------------
85062 l_entered_amt_idx NUMBER;
85063 l_accted_amt_idx NUMBER;
85064 l_acc_rev_flag VARCHAR2(1);
85065 l_accrual_line_num NUMBER;
85066 l_tmp_amt NUMBER;
85067 l_acc_rev_natural_side_code VARCHAR2(1);
85068
85069 l_num_entries NUMBER;
85070 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
85071 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
85072 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
85073 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
85074 l_recog_line_1 NUMBER;
85075 l_recog_line_2 NUMBER;
85076
85077 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
85078 l_bflow_applied_to_amt NUMBER; -- 5132302
85079 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
85080
85081 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85082
85083 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
85084 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
85085
85086 ---------------------------------------------------------------------------------------------------------------
85087
85088
85089 --
85090 -- bulk performance
85091 --
85092 l_balance_type_code VARCHAR2(1);
85093 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
85094 l_log_module VARCHAR2(240);
85095
85096 --
85097 -- Upgrade strategy
85098 --
85099 l_actual_upg_option VARCHAR2(1);
85100 l_enc_upg_option VARCHAR2(1);
85101
85102 --
85103 BEGIN
85104 --
85105 IF g_log_enabled THEN
85109 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85106 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_186';
85107 END IF;
85108 --
85110
85111 trace
85112 (p_msg => 'BEGIN of AcctLineType_186'
85113 ,p_level => C_LEVEL_PROCEDURE
85114 ,p_module => l_log_module);
85115
85116 END IF;
85117 --
85118 l_component_type := 'AMB_JLT';
85119 l_component_code := 'IOR';
85120 l_component_type_code := 'S';
85121 l_component_appl_id := 555;
85122 l_amb_context_code := 'DEFAULT';
85123 l_entity_code := 'INVENTORY';
85124 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
85125 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_TP';
85126 l_line_definition_owner_code := 'S';
85127 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_TP';
85128 --
85129 l_balance_type_code := 'A';
85130 l_segment := NULL;
85131 l_ccid := NULL;
85132 l_adr_transaction_coa_id := NULL;
85133 l_adr_accounting_coa_id := NULL;
85134 l_adr_flexfield_segment_code := NULL;
85135 l_adr_flex_value_set_id := NULL;
85136 l_adr_value_type_code := NULL;
85137 l_adr_value_combination_id := NULL;
85138 l_adr_value_segment_code := NULL;
85139
85140 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
85141 l_bflow_class_code := ''; -- 4219869 Business Flow
85142 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
85143 l_budgetary_control_flag := 'N';
85144
85145 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85146 l_bflow_applied_to_amt := NULL; -- 5132302
85147 l_entered_amt_idx := NULL; -- 4262811
85148 l_accted_amt_idx := NULL; -- 4262811
85149 l_acc_rev_flag := NULL; -- 4262811
85150 l_accrual_line_num := NULL; -- 4262811
85151 l_tmp_amt := NULL; -- 4262811
85152 --
85153
85154 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85155 l_balance_type_code <> 'B' THEN
85156 IF NVL(p_source_2,'
85157 ') = 'IOR'
85158 THEN
85159
85160 --
85161 XLA_AE_LINES_PKG.SetNewLine;
85162
85163 p_balance_type_code := l_balance_type_code;
85164 -- set the flag so later we will know whether the gain loss line needs to be created
85165
85166 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85167 p_actual_flag :='A';
85168 END IF;
85169
85170 --
85171 -- bulk performance
85172 --
85173 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85174 p_header_num => 0); -- 4262811
85175 --
85176 -- set accounting line options
85177 --
85178 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85179 p_natural_side_code => 'D'
85180 , p_gain_or_loss_flag => 'N'
85181 , p_gl_transfer_mode_code => 'D'
85182 , p_acct_entry_type_code => 'A'
85183 , p_switch_side_flag => 'Y'
85184 , p_merge_duplicate_code => 'W'
85185 );
85186 --
85187 l_acc_rev_natural_side_code := 'C'; -- 4262811
85188 --
85189 --
85190 -- set accounting line type info
85191 --
85192 xla_ae_lines_pkg.SetAcctLineType
85193 (p_component_type => l_component_type
85194 ,p_event_type_code => l_event_type_code
85195 ,p_line_definition_owner_code => l_line_definition_owner_code
85196 ,p_line_definition_code => l_line_definition_code
85197 ,p_accounting_line_code => l_component_code
85198 ,p_accounting_line_type_code => l_component_type_code
85199 ,p_accounting_line_appl_id => l_component_appl_id
85200 ,p_amb_context_code => l_amb_context_code
85201 ,p_entity_code => l_entity_code
85202 ,p_event_class_code => l_event_class_code);
85203 --
85204 -- set accounting class
85205 --
85206 xla_ae_lines_pkg.SetAcctClass(
85207 p_accounting_class_code => 'INTERORG_RECEIVABLES'
85208 , p_ae_header_id => l_ae_header_id
85209 );
85210
85211 --
85212 -- set rounding class
85213 --
85214 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85215 'INTERORG_RECEIVABLES';
85216
85217 --
85218 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85219 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85220 --
85221 -- bulk performance
85222 --
85223 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85224
85225 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85226 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85227
85228 -- 4955764
85229 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85230 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85231
85235 -- set accounting attributes for the line type
85232 -- 4458381 Public Sector Enh
85233
85234 --
85236 --
85237 l_entered_amt_idx := 3;
85238 l_accted_amt_idx := 8;
85239 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85240 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85241 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
85242 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85243 l_rec_acct_attrs.array_char_value(2) := p_source_6;
85244 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85245 l_rec_acct_attrs.array_num_value(3) := p_source_3;
85246 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85247 l_rec_acct_attrs.array_char_value(4) := p_source_7;
85248 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85249 l_rec_acct_attrs.array_date_value(5) := p_source_8;
85250 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85251 l_rec_acct_attrs.array_num_value(6) := p_source_9;
85252 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85253 l_rec_acct_attrs.array_char_value(7) := p_source_10;
85254 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85255 l_rec_acct_attrs.array_num_value(8) := p_source_11;
85256
85257 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85258 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85259
85260 ---------------------------------------------------------------------------------------------------------------
85261 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85262 ---------------------------------------------------------------------------------------------------------------
85263 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85264
85265 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85266 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85267
85268 IF xla_accounting_cache_pkg.GetValueChar
85269 (p_source_code => 'LEDGER_CATEGORY_CODE'
85270 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85271 AND l_bflow_method_code = 'PRIOR_ENTRY'
85272 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85273 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85274 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85275 )
85276 THEN
85277 xla_ae_lines_pkg.BflowUpgEntry
85278 (p_business_method_code => l_bflow_method_code
85279 ,p_business_class_code => l_bflow_class_code
85280 ,p_balance_type => l_balance_type_code);
85281 ELSE
85282 NULL;
85283 -- No business flow processing for business flow method of NONE.
85284 END IF;
85285
85286 --
85287 -- call analytical criteria
85288 --
85289
85290 --
85291 -- call description
85292 --
85293 -- No description or it is inherited.
85294 --
85295 -- call ADRs
85296 -- Bug 4922099
85297 --
85298 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85299 (NVL(l_actual_upg_option, 'N') = 'O') OR
85300 (NVL(l_enc_upg_option, 'N') = 'O')
85301 )
85302 THEN
85303 NULL;
85304 --
85305 --
85306
85307 l_ccid := AcctDerRule_22(
85308 p_application_id => p_application_id
85309 , p_ae_header_id => l_ae_header_id
85310 , p_source_1 => p_source_1
85311 , p_source_2 => p_source_2
85312 , x_transaction_coa_id => l_adr_transaction_coa_id
85313 , x_accounting_coa_id => l_adr_accounting_coa_id
85314 , x_value_type_code => l_adr_value_type_code
85315 , p_side => 'NA'
85316 );
85317
85318 xla_ae_lines_pkg.set_ccid(
85319 p_code_combination_id => l_ccid
85320 , p_value_type_code => l_adr_value_type_code
85321 , p_transaction_coa_id => l_adr_transaction_coa_id
85322 , p_accounting_coa_id => l_adr_accounting_coa_id
85323 , p_adr_code => 'IOR'
85324 , p_adr_type_code => 'S'
85325 , p_component_type => l_component_type
85326 , p_component_code => l_component_code
85327 , p_component_type_code => l_component_type_code
85328 , p_component_appl_id => l_component_appl_id
85329 , p_amb_context_code => l_amb_context_code
85330 , p_side => 'NA'
85331 );
85332
85333
85334 --
85335 --
85336 END IF;
85337 --
85338 -- Bug 4922099
85339 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85340 (NVL(l_enc_upg_option, 'N') = 'O')
85341 ) AND
85342 (l_bflow_method_code = 'PRIOR_ENTRY')
85343 )
85344 THEN
85345 IF
85346 --
85347 1 = 2
85348 --
85349 THEN
85350 xla_accounting_err_pkg.build_message
85351 (p_appli_s_name => 'XLA'
85352 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85353 ,p_token_1 => 'LINE_NUMBER'
85357 l_component_type
85354 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
85355 ,p_token_2 => 'LINE_TYPE_NAME'
85356 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
85358 ,l_component_code
85359 ,l_component_type_code
85360 ,l_component_appl_id
85361 ,l_amb_context_code
85362 ,l_entity_code
85363 ,l_event_class_code
85364 )
85365 ,p_token_3 => 'OWNER'
85366 ,p_value_3 => xla_lookups_pkg.get_meaning(
85367 p_lookup_type => 'XLA_OWNER_TYPE'
85368 ,p_lookup_code => l_component_type_code
85369 )
85370 ,p_token_4 => 'PRODUCT_NAME'
85371 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85372 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85373 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85374 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85375 ,p_ae_header_id => NULL
85376 );
85377
85378 IF (C_LEVEL_ERROR>= g_log_level) THEN
85379 trace
85380 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85381 ,p_level => C_LEVEL_ERROR
85382 ,p_module => l_log_module);
85383 END IF;
85384 END IF;
85385 END IF;
85386 --
85387 --
85388 ------------------------------------------------------------------------------------------------
85389 -- 4219869 Business Flow
85390 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85391 -- Prior Entry. Currently, the following code is always generated.
85392 ------------------------------------------------------------------------------------------------
85393 XLA_AE_LINES_PKG.ValidateCurrentLine;
85394
85395 ------------------------------------------------------------------------------------
85396 -- 4219869 Business Flow
85397 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85398 ------------------------------------------------------------------------------------
85399 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85400
85401 ----------------------------------------------------------------------------------
85402 -- 4219869 Business Flow
85403 -- Update journal entry status -- Need to generate this within IF <condition>
85404 ----------------------------------------------------------------------------------
85405 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85406 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85407 ,p_balance_type_code => l_balance_type_code
85408 );
85409
85410 -------------------------------------------------------------------------------------------
85411 -- 4262811 - Generate the Accrual Reversal lines
85412 -------------------------------------------------------------------------------------------
85413 BEGIN
85414 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85415 (g_array_event(p_event_id).array_value_num('header_index'));
85416 IF l_acc_rev_flag IS NULL THEN
85417 l_acc_rev_flag := 'N';
85418 END IF;
85419 EXCEPTION
85420 WHEN OTHERS THEN
85421 l_acc_rev_flag := 'N';
85422 END;
85423 --
85424 IF (l_acc_rev_flag = 'Y') THEN
85425
85426 -- 4645092 ------------------------------------------------------------------------------
85427 -- To allow MPA report to determine if it should generate report process
85428 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85429 ------------------------------------------------------------------------------------------
85430
85431 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85432 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85433 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
85434 -- call ADRs
85435 -- Bug 4922099
85436 --
85437 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85438 (NVL(l_actual_upg_option, 'N') = 'O') OR
85439 (NVL(l_enc_upg_option, 'N') = 'O')
85440 )
85441 THEN
85442 NULL;
85443 --
85444 --
85445
85446 l_ccid := AcctDerRule_22(
85447 p_application_id => p_application_id
85448 , p_ae_header_id => l_ae_header_id
85452 , x_accounting_coa_id => l_adr_accounting_coa_id
85449 , p_source_1 => p_source_1
85450 , p_source_2 => p_source_2
85451 , x_transaction_coa_id => l_adr_transaction_coa_id
85453 , x_value_type_code => l_adr_value_type_code
85454 , p_side => 'NA'
85455 );
85456
85457 xla_ae_lines_pkg.set_ccid(
85458 p_code_combination_id => l_ccid
85459 , p_value_type_code => l_adr_value_type_code
85460 , p_transaction_coa_id => l_adr_transaction_coa_id
85461 , p_accounting_coa_id => l_adr_accounting_coa_id
85462 , p_adr_code => 'IOR'
85463 , p_adr_type_code => 'S'
85464 , p_component_type => l_component_type
85465 , p_component_code => l_component_code
85466 , p_component_type_code => l_component_type_code
85467 , p_component_appl_id => l_component_appl_id
85468 , p_amb_context_code => l_amb_context_code
85469 , p_side => 'NA'
85470 );
85471
85472
85473 --
85474 --
85475 END IF;
85476
85477 --
85478 -- Update the line information that should be overwritten
85479 --
85480 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85481 p_header_num => 1);
85482 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
85483
85484 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85485
85486 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
85487 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85488 END IF;
85489
85490 --
85491 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85492 --
85493 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85494 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
85495 ELSE
85496 ---------------------------------------------------------------------------------------------------
85497 -- 4262811a Switch Sign
85498 ---------------------------------------------------------------------------------------------------
85499 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
85500 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85501 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85502 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85503 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85504 -- 5132302
85505 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85506 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85507
85508 END IF;
85509
85510 -- 4955764
85511 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85512 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85513
85514
85515 XLA_AE_LINES_PKG.ValidateCurrentLine;
85516 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85517
85518 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85519 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85520 ,p_balance_type_code => l_balance_type_code);
85521
85522 END IF;
85523
85524 -----------------------------------------------------------------------------------------
85525 -- 4262811 Multiperiod Accounting
85526 -----------------------------------------------------------------------------------------
85527 -- No MPA option is assigned.
85528
85529
85530 END IF;
85531 END IF;
85532 --
85533
85534 --
85535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85536 trace
85537 (p_msg => 'END of AcctLineType_186'
85538 ,p_level => C_LEVEL_PROCEDURE
85539 ,p_module => l_log_module);
85540 END IF;
85541 --
85542 EXCEPTION
85543 WHEN xla_exceptions_pkg.application_exception THEN
85544 RAISE;
85545 WHEN OTHERS THEN
85546 xla_exceptions_pkg.raise_message
85547 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_186');
85548 END AcctLineType_186;
85549 --
85550
85551 ---------------------------------------
85552 --
85553 -- PRIVATE FUNCTION
85554 -- AcctLineType_187
85555 --
85556 ---------------------------------------
85557 PROCEDURE AcctLineType_187 (
85558 p_application_id IN NUMBER
85559 ,p_event_id IN NUMBER
85560 ,p_calculate_acctd_flag IN VARCHAR2
85561 ,p_calculate_g_l_flag IN VARCHAR2
85562 ,p_actual_flag IN OUT VARCHAR2
85563 ,p_balance_type_code OUT VARCHAR2
85564 ,p_gain_or_loss_ref OUT VARCHAR2
85565
85566 --Transaction Account
85567 , p_source_1 IN NUMBER
85568 --Journal Line Type
85569 , p_source_2 IN VARCHAR2
85570 --Entered Amount
85571 , p_source_3 IN NUMBER
85575 , p_source_6 IN VARCHAR2
85572 --First Distribution Identifier
85573 , p_source_5 IN NUMBER
85574 --Distribution Type
85576 --Currency Code
85577 , p_source_7 IN VARCHAR2
85578 --Currency Conversion Date
85579 , p_source_8 IN DATE
85580 --Currency Conversion Rate
85581 , p_source_9 IN NUMBER
85582 --Currency Conversion Type
85583 , p_source_10 IN VARCHAR2
85584 --Accounted Amount
85585 , p_source_11 IN NUMBER
85586 )
85587 IS
85588
85589 l_component_type VARCHAR2(80);
85590 l_component_code VARCHAR2(30);
85591 l_component_type_code VARCHAR2(1);
85592 l_component_appl_id INTEGER;
85593 l_amb_context_code VARCHAR2(30);
85594 l_entity_code VARCHAR2(30);
85595 l_event_class_code VARCHAR2(30);
85596 l_ae_header_id NUMBER;
85597 l_event_type_code VARCHAR2(30);
85598 l_line_definition_code VARCHAR2(30);
85599 l_line_definition_owner_code VARCHAR2(1);
85600 --
85601 -- adr variables
85602 l_segment VARCHAR2(30);
85603 l_ccid NUMBER;
85604 l_adr_transaction_coa_id NUMBER;
85605 l_adr_accounting_coa_id NUMBER;
85606 l_adr_flexfield_segment_code VARCHAR2(30);
85607 l_adr_flex_value_set_id NUMBER;
85608 l_adr_value_type_code VARCHAR2(30);
85609 l_adr_value_combination_id NUMBER;
85610 l_adr_value_segment_code VARCHAR2(30);
85611
85612 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
85613 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
85614 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
85615 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
85616
85617 -- 4262811 Variables ------------------------------------------------------------------------------------------
85618 l_entered_amt_idx NUMBER;
85619 l_accted_amt_idx NUMBER;
85620 l_acc_rev_flag VARCHAR2(1);
85621 l_accrual_line_num NUMBER;
85622 l_tmp_amt NUMBER;
85623 l_acc_rev_natural_side_code VARCHAR2(1);
85624
85625 l_num_entries NUMBER;
85626 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
85627 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
85628 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
85629 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
85630 l_recog_line_1 NUMBER;
85631 l_recog_line_2 NUMBER;
85632
85633 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
85634 l_bflow_applied_to_amt NUMBER; -- 5132302
85635 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
85636
85637 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85638
85639 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
85640 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
85641
85642 ---------------------------------------------------------------------------------------------------------------
85643
85644
85645 --
85646 -- bulk performance
85647 --
85648 l_balance_type_code VARCHAR2(1);
85649 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
85650 l_log_module VARCHAR2(240);
85651
85652 --
85653 -- Upgrade strategy
85654 --
85655 l_actual_upg_option VARCHAR2(1);
85656 l_enc_upg_option VARCHAR2(1);
85657
85658 --
85659 BEGIN
85660 --
85661 IF g_log_enabled THEN
85662 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_187';
85663 END IF;
85664 --
85665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85666
85667 trace
85668 (p_msg => 'BEGIN of AcctLineType_187'
85669 ,p_level => C_LEVEL_PROCEDURE
85670 ,p_module => l_log_module);
85671
85672 END IF;
85673 --
85674 l_component_type := 'AMB_JLT';
85675 l_component_code := 'IOR';
85676 l_component_type_code := 'S';
85677 l_component_appl_id := 555;
85678 l_amb_context_code := 'DEFAULT';
85679 l_entity_code := 'INVENTORY';
85680 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
85681 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_TP';
85682 l_line_definition_owner_code := 'S';
85683 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_TP';
85684 --
85685 l_balance_type_code := 'A';
85686 l_segment := NULL;
85687 l_ccid := NULL;
85688 l_adr_transaction_coa_id := NULL;
85689 l_adr_accounting_coa_id := NULL;
85690 l_adr_flexfield_segment_code := NULL;
85691 l_adr_flex_value_set_id := NULL;
85692 l_adr_value_type_code := NULL;
85693 l_adr_value_combination_id := NULL;
85694 l_adr_value_segment_code := NULL;
85695
85696 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
85697 l_bflow_class_code := ''; -- 4219869 Business Flow
85698 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
85699 l_budgetary_control_flag := 'N';
85700
85701 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85705 l_acc_rev_flag := NULL; -- 4262811
85702 l_bflow_applied_to_amt := NULL; -- 5132302
85703 l_entered_amt_idx := NULL; -- 4262811
85704 l_accted_amt_idx := NULL; -- 4262811
85706 l_accrual_line_num := NULL; -- 4262811
85707 l_tmp_amt := NULL; -- 4262811
85708 --
85709
85710 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85711 l_balance_type_code <> 'B' THEN
85712 IF NVL(p_source_2,'
85713 ') = 'IOR'
85714 THEN
85715
85716 --
85717 XLA_AE_LINES_PKG.SetNewLine;
85718
85719 p_balance_type_code := l_balance_type_code;
85720 -- set the flag so later we will know whether the gain loss line needs to be created
85721
85722 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85723 p_actual_flag :='A';
85724 END IF;
85725
85726 --
85727 -- bulk performance
85728 --
85729 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85730 p_header_num => 0); -- 4262811
85731 --
85732 -- set accounting line options
85733 --
85734 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85735 p_natural_side_code => 'D'
85736 , p_gain_or_loss_flag => 'N'
85737 , p_gl_transfer_mode_code => 'D'
85738 , p_acct_entry_type_code => 'A'
85739 , p_switch_side_flag => 'Y'
85740 , p_merge_duplicate_code => 'W'
85741 );
85742 --
85743 l_acc_rev_natural_side_code := 'C'; -- 4262811
85744 --
85745 --
85746 -- set accounting line type info
85747 --
85748 xla_ae_lines_pkg.SetAcctLineType
85749 (p_component_type => l_component_type
85750 ,p_event_type_code => l_event_type_code
85751 ,p_line_definition_owner_code => l_line_definition_owner_code
85752 ,p_line_definition_code => l_line_definition_code
85753 ,p_accounting_line_code => l_component_code
85754 ,p_accounting_line_type_code => l_component_type_code
85755 ,p_accounting_line_appl_id => l_component_appl_id
85756 ,p_amb_context_code => l_amb_context_code
85757 ,p_entity_code => l_entity_code
85758 ,p_event_class_code => l_event_class_code);
85759 --
85760 -- set accounting class
85761 --
85762 xla_ae_lines_pkg.SetAcctClass(
85763 p_accounting_class_code => 'INTERORG_RECEIVABLES'
85764 , p_ae_header_id => l_ae_header_id
85765 );
85766
85767 --
85768 -- set rounding class
85769 --
85770 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85771 'INTERORG_RECEIVABLES';
85772
85773 --
85774 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85775 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85776 --
85777 -- bulk performance
85778 --
85779 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85780
85781 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85782 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85783
85784 -- 4955764
85785 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85786 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85787
85788 -- 4458381 Public Sector Enh
85789
85790 --
85791 -- set accounting attributes for the line type
85792 --
85793 l_entered_amt_idx := 3;
85794 l_accted_amt_idx := 8;
85795 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85796 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85797 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
85798 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85799 l_rec_acct_attrs.array_char_value(2) := p_source_6;
85800 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85801 l_rec_acct_attrs.array_num_value(3) := p_source_3;
85802 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85803 l_rec_acct_attrs.array_char_value(4) := p_source_7;
85804 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85805 l_rec_acct_attrs.array_date_value(5) := p_source_8;
85806 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85807 l_rec_acct_attrs.array_num_value(6) := p_source_9;
85808 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85809 l_rec_acct_attrs.array_char_value(7) := p_source_10;
85810 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85811 l_rec_acct_attrs.array_num_value(8) := p_source_11;
85812
85813 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85814 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85815
85816 ---------------------------------------------------------------------------------------------------------------
85817 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85821 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85818 ---------------------------------------------------------------------------------------------------------------
85819 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85820
85822 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85823
85824 IF xla_accounting_cache_pkg.GetValueChar
85825 (p_source_code => 'LEDGER_CATEGORY_CODE'
85826 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85827 AND l_bflow_method_code = 'PRIOR_ENTRY'
85828 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85829 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85830 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85831 )
85832 THEN
85833 xla_ae_lines_pkg.BflowUpgEntry
85834 (p_business_method_code => l_bflow_method_code
85835 ,p_business_class_code => l_bflow_class_code
85836 ,p_balance_type => l_balance_type_code);
85837 ELSE
85838 NULL;
85839 -- No business flow processing for business flow method of NONE.
85840 END IF;
85841
85842 --
85843 -- call analytical criteria
85844 --
85845
85846 --
85847 -- call description
85848 --
85849 -- No description or it is inherited.
85850 --
85851 -- call ADRs
85852 -- Bug 4922099
85853 --
85854 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85855 (NVL(l_actual_upg_option, 'N') = 'O') OR
85856 (NVL(l_enc_upg_option, 'N') = 'O')
85857 )
85858 THEN
85859 NULL;
85860 --
85861 --
85862
85863 l_ccid := AcctDerRule_22(
85864 p_application_id => p_application_id
85865 , p_ae_header_id => l_ae_header_id
85866 , p_source_1 => p_source_1
85867 , p_source_2 => p_source_2
85868 , x_transaction_coa_id => l_adr_transaction_coa_id
85869 , x_accounting_coa_id => l_adr_accounting_coa_id
85870 , x_value_type_code => l_adr_value_type_code
85871 , p_side => 'NA'
85872 );
85873
85874 xla_ae_lines_pkg.set_ccid(
85875 p_code_combination_id => l_ccid
85876 , p_value_type_code => l_adr_value_type_code
85877 , p_transaction_coa_id => l_adr_transaction_coa_id
85878 , p_accounting_coa_id => l_adr_accounting_coa_id
85879 , p_adr_code => 'IOR'
85880 , p_adr_type_code => 'S'
85881 , p_component_type => l_component_type
85882 , p_component_code => l_component_code
85883 , p_component_type_code => l_component_type_code
85884 , p_component_appl_id => l_component_appl_id
85885 , p_amb_context_code => l_amb_context_code
85886 , p_side => 'NA'
85887 );
85888
85889
85890 --
85891 --
85892 END IF;
85893 --
85894 -- Bug 4922099
85895 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85896 (NVL(l_enc_upg_option, 'N') = 'O')
85897 ) AND
85898 (l_bflow_method_code = 'PRIOR_ENTRY')
85899 )
85900 THEN
85901 IF
85902 --
85903 1 = 2
85904 --
85905 THEN
85906 xla_accounting_err_pkg.build_message
85907 (p_appli_s_name => 'XLA'
85908 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85909 ,p_token_1 => 'LINE_NUMBER'
85910 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
85911 ,p_token_2 => 'LINE_TYPE_NAME'
85912 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
85913 l_component_type
85914 ,l_component_code
85915 ,l_component_type_code
85916 ,l_component_appl_id
85917 ,l_amb_context_code
85918 ,l_entity_code
85919 ,l_event_class_code
85920 )
85921 ,p_token_3 => 'OWNER'
85922 ,p_value_3 => xla_lookups_pkg.get_meaning(
85923 p_lookup_type => 'XLA_OWNER_TYPE'
85924 ,p_lookup_code => l_component_type_code
85925 )
85926 ,p_token_4 => 'PRODUCT_NAME'
85927 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85928 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85932 );
85929 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85930 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85931 ,p_ae_header_id => NULL
85933
85934 IF (C_LEVEL_ERROR>= g_log_level) THEN
85935 trace
85936 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85937 ,p_level => C_LEVEL_ERROR
85938 ,p_module => l_log_module);
85939 END IF;
85940 END IF;
85941 END IF;
85942 --
85943 --
85944 ------------------------------------------------------------------------------------------------
85945 -- 4219869 Business Flow
85946 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85947 -- Prior Entry. Currently, the following code is always generated.
85948 ------------------------------------------------------------------------------------------------
85949 XLA_AE_LINES_PKG.ValidateCurrentLine;
85950
85951 ------------------------------------------------------------------------------------
85952 -- 4219869 Business Flow
85953 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85954 ------------------------------------------------------------------------------------
85955 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85956
85957 ----------------------------------------------------------------------------------
85958 -- 4219869 Business Flow
85959 -- Update journal entry status -- Need to generate this within IF <condition>
85960 ----------------------------------------------------------------------------------
85961 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85962 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85963 ,p_balance_type_code => l_balance_type_code
85964 );
85965
85966 -------------------------------------------------------------------------------------------
85967 -- 4262811 - Generate the Accrual Reversal lines
85968 -------------------------------------------------------------------------------------------
85969 BEGIN
85970 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85971 (g_array_event(p_event_id).array_value_num('header_index'));
85972 IF l_acc_rev_flag IS NULL THEN
85973 l_acc_rev_flag := 'N';
85974 END IF;
85975 EXCEPTION
85976 WHEN OTHERS THEN
85977 l_acc_rev_flag := 'N';
85978 END;
85979 --
85980 IF (l_acc_rev_flag = 'Y') THEN
85981
85982 -- 4645092 ------------------------------------------------------------------------------
85983 -- To allow MPA report to determine if it should generate report process
85984 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85985 ------------------------------------------------------------------------------------------
85986
85987 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85988 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85989 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
85990 -- call ADRs
85991 -- Bug 4922099
85992 --
85993 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85994 (NVL(l_actual_upg_option, 'N') = 'O') OR
85995 (NVL(l_enc_upg_option, 'N') = 'O')
85996 )
85997 THEN
85998 NULL;
85999 --
86000 --
86001
86002 l_ccid := AcctDerRule_22(
86003 p_application_id => p_application_id
86004 , p_ae_header_id => l_ae_header_id
86005 , p_source_1 => p_source_1
86006 , p_source_2 => p_source_2
86007 , x_transaction_coa_id => l_adr_transaction_coa_id
86008 , x_accounting_coa_id => l_adr_accounting_coa_id
86009 , x_value_type_code => l_adr_value_type_code
86010 , p_side => 'NA'
86011 );
86012
86013 xla_ae_lines_pkg.set_ccid(
86014 p_code_combination_id => l_ccid
86015 , p_value_type_code => l_adr_value_type_code
86016 , p_transaction_coa_id => l_adr_transaction_coa_id
86017 , p_accounting_coa_id => l_adr_accounting_coa_id
86018 , p_adr_code => 'IOR'
86019 , p_adr_type_code => 'S'
86020 , p_component_type => l_component_type
86021 , p_component_code => l_component_code
86022 , p_component_type_code => l_component_type_code
86023 , p_component_appl_id => l_component_appl_id
86024 , p_amb_context_code => l_amb_context_code
86025 , p_side => 'NA'
86026 );
86027
86028
86029 --
86030 --
86031 END IF;
86032
86033 --
86034 -- Update the line information that should be overwritten
86035 --
86036 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86037 p_header_num => 1);
86038 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
86039
86040 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86041
86042 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
86046 --
86043 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86044 END IF;
86045
86047 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86048 --
86049 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86050 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
86051 ELSE
86052 ---------------------------------------------------------------------------------------------------
86053 -- 4262811a Switch Sign
86054 ---------------------------------------------------------------------------------------------------
86055 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
86056 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86057 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86058 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86059 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86060 -- 5132302
86061 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86062 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86063
86064 END IF;
86065
86066 -- 4955764
86067 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86068 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86069
86070
86071 XLA_AE_LINES_PKG.ValidateCurrentLine;
86072 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86073
86074 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86075 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86076 ,p_balance_type_code => l_balance_type_code);
86077
86078 END IF;
86079
86080 -----------------------------------------------------------------------------------------
86081 -- 4262811 Multiperiod Accounting
86082 -----------------------------------------------------------------------------------------
86083 -- No MPA option is assigned.
86084
86085
86086 END IF;
86087 END IF;
86088 --
86089
86090 --
86091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86092 trace
86093 (p_msg => 'END of AcctLineType_187'
86094 ,p_level => C_LEVEL_PROCEDURE
86095 ,p_module => l_log_module);
86096 END IF;
86097 --
86098 EXCEPTION
86099 WHEN xla_exceptions_pkg.application_exception THEN
86100 RAISE;
86101 WHEN OTHERS THEN
86102 xla_exceptions_pkg.raise_message
86103 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_187');
86104 END AcctLineType_187;
86105 --
86106
86107 ---------------------------------------
86108 --
86109 -- PRIVATE FUNCTION
86110 -- AcctLineType_188
86111 --
86112 ---------------------------------------
86113 PROCEDURE AcctLineType_188 (
86114 p_application_id IN NUMBER
86115 ,p_event_id IN NUMBER
86116 ,p_calculate_acctd_flag IN VARCHAR2
86117 ,p_calculate_g_l_flag IN VARCHAR2
86118 ,p_actual_flag IN OUT VARCHAR2
86119 ,p_balance_type_code OUT VARCHAR2
86120 ,p_gain_or_loss_ref OUT VARCHAR2
86121
86122 --Transaction Account
86123 , p_source_1 IN NUMBER
86124 --Journal Line Type
86125 , p_source_2 IN VARCHAR2
86126 --Entered Amount
86127 , p_source_3 IN NUMBER
86128 --First Distribution Identifier
86129 , p_source_5 IN NUMBER
86130 --Distribution Type
86131 , p_source_6 IN VARCHAR2
86132 --Currency Code
86133 , p_source_7 IN VARCHAR2
86134 --Currency Conversion Date
86135 , p_source_8 IN DATE
86136 --Currency Conversion Rate
86137 , p_source_9 IN NUMBER
86138 --Currency Conversion Type
86139 , p_source_10 IN VARCHAR2
86140 --Accounted Amount
86141 , p_source_11 IN NUMBER
86142 )
86143 IS
86144
86145 l_component_type VARCHAR2(80);
86146 l_component_code VARCHAR2(30);
86147 l_component_type_code VARCHAR2(1);
86148 l_component_appl_id INTEGER;
86149 l_amb_context_code VARCHAR2(30);
86150 l_entity_code VARCHAR2(30);
86151 l_event_class_code VARCHAR2(30);
86152 l_ae_header_id NUMBER;
86153 l_event_type_code VARCHAR2(30);
86154 l_line_definition_code VARCHAR2(30);
86155 l_line_definition_owner_code VARCHAR2(1);
86156 --
86157 -- adr variables
86158 l_segment VARCHAR2(30);
86159 l_ccid NUMBER;
86160 l_adr_transaction_coa_id NUMBER;
86161 l_adr_accounting_coa_id NUMBER;
86162 l_adr_flexfield_segment_code VARCHAR2(30);
86163 l_adr_flex_value_set_id NUMBER;
86164 l_adr_value_type_code VARCHAR2(30);
86165 l_adr_value_combination_id NUMBER;
86166 l_adr_value_segment_code VARCHAR2(30);
86167
86168 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
86172
86169 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
86170 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
86171 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
86173 -- 4262811 Variables ------------------------------------------------------------------------------------------
86174 l_entered_amt_idx NUMBER;
86175 l_accted_amt_idx NUMBER;
86176 l_acc_rev_flag VARCHAR2(1);
86177 l_accrual_line_num NUMBER;
86178 l_tmp_amt NUMBER;
86179 l_acc_rev_natural_side_code VARCHAR2(1);
86180
86181 l_num_entries NUMBER;
86182 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
86183 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
86184 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
86185 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
86186 l_recog_line_1 NUMBER;
86187 l_recog_line_2 NUMBER;
86188
86189 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
86190 l_bflow_applied_to_amt NUMBER; -- 5132302
86191 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
86192
86193 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86194
86195 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
86196 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
86197
86198 ---------------------------------------------------------------------------------------------------------------
86199
86200
86201 --
86202 -- bulk performance
86203 --
86204 l_balance_type_code VARCHAR2(1);
86205 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
86206 l_log_module VARCHAR2(240);
86207
86208 --
86209 -- Upgrade strategy
86210 --
86211 l_actual_upg_option VARCHAR2(1);
86212 l_enc_upg_option VARCHAR2(1);
86213
86214 --
86215 BEGIN
86216 --
86217 IF g_log_enabled THEN
86218 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_188';
86219 END IF;
86220 --
86221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86222
86223 trace
86224 (p_msg => 'BEGIN of AcctLineType_188'
86225 ,p_level => C_LEVEL_PROCEDURE
86226 ,p_module => l_log_module);
86227
86228 END IF;
86229 --
86230 l_component_type := 'AMB_JLT';
86231 l_component_code := 'IOR';
86232 l_component_type_code := 'S';
86233 l_component_appl_id := 555;
86234 l_amb_context_code := 'DEFAULT';
86235 l_entity_code := 'INVENTORY';
86236 l_event_class_code := 'INT_ORDER_TO_EXP';
86237 l_event_type_code := 'INT_ORDER_ISSUE';
86238 l_line_definition_owner_code := 'S';
86239 l_line_definition_code := 'INT_ORDER_ISSUE';
86240 --
86241 l_balance_type_code := 'A';
86242 l_segment := NULL;
86243 l_ccid := NULL;
86244 l_adr_transaction_coa_id := NULL;
86245 l_adr_accounting_coa_id := NULL;
86246 l_adr_flexfield_segment_code := NULL;
86247 l_adr_flex_value_set_id := NULL;
86248 l_adr_value_type_code := NULL;
86249 l_adr_value_combination_id := NULL;
86250 l_adr_value_segment_code := NULL;
86251
86252 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
86253 l_bflow_class_code := ''; -- 4219869 Business Flow
86254 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
86255 l_budgetary_control_flag := 'N';
86256
86257 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86258 l_bflow_applied_to_amt := NULL; -- 5132302
86259 l_entered_amt_idx := NULL; -- 4262811
86260 l_accted_amt_idx := NULL; -- 4262811
86261 l_acc_rev_flag := NULL; -- 4262811
86262 l_accrual_line_num := NULL; -- 4262811
86263 l_tmp_amt := NULL; -- 4262811
86264 --
86265
86266 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86267 l_balance_type_code <> 'B' THEN
86268 IF NVL(p_source_2,'
86269 ') = 'IOR'
86270 THEN
86271
86272 --
86273 XLA_AE_LINES_PKG.SetNewLine;
86274
86275 p_balance_type_code := l_balance_type_code;
86276 -- set the flag so later we will know whether the gain loss line needs to be created
86277
86278 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86279 p_actual_flag :='A';
86280 END IF;
86281
86282 --
86283 -- bulk performance
86284 --
86285 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86286 p_header_num => 0); -- 4262811
86287 --
86288 -- set accounting line options
86289 --
86290 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86291 p_natural_side_code => 'D'
86292 , p_gain_or_loss_flag => 'N'
86293 , p_gl_transfer_mode_code => 'D'
86294 , p_acct_entry_type_code => 'A'
86295 , p_switch_side_flag => 'Y'
86296 , p_merge_duplicate_code => 'W'
86297 );
86301 --
86298 --
86299 l_acc_rev_natural_side_code := 'C'; -- 4262811
86300 --
86302 -- set accounting line type info
86303 --
86304 xla_ae_lines_pkg.SetAcctLineType
86305 (p_component_type => l_component_type
86306 ,p_event_type_code => l_event_type_code
86307 ,p_line_definition_owner_code => l_line_definition_owner_code
86308 ,p_line_definition_code => l_line_definition_code
86309 ,p_accounting_line_code => l_component_code
86310 ,p_accounting_line_type_code => l_component_type_code
86311 ,p_accounting_line_appl_id => l_component_appl_id
86312 ,p_amb_context_code => l_amb_context_code
86313 ,p_entity_code => l_entity_code
86314 ,p_event_class_code => l_event_class_code);
86315 --
86316 -- set accounting class
86317 --
86318 xla_ae_lines_pkg.SetAcctClass(
86319 p_accounting_class_code => 'INTERORG_RECEIVABLES'
86320 , p_ae_header_id => l_ae_header_id
86321 );
86322
86323 --
86324 -- set rounding class
86325 --
86326 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86327 'INTERORG_RECEIVABLES';
86328
86329 --
86330 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86331 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86332 --
86333 -- bulk performance
86334 --
86335 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86336
86337 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86338 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86339
86340 -- 4955764
86341 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86342 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86343
86344 -- 4458381 Public Sector Enh
86345
86346 --
86347 -- set accounting attributes for the line type
86348 --
86349 l_entered_amt_idx := 3;
86350 l_accted_amt_idx := 8;
86351 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86352 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86353 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
86354 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86355 l_rec_acct_attrs.array_char_value(2) := p_source_6;
86356 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86357 l_rec_acct_attrs.array_num_value(3) := p_source_3;
86358 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86359 l_rec_acct_attrs.array_char_value(4) := p_source_7;
86360 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86361 l_rec_acct_attrs.array_date_value(5) := p_source_8;
86362 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86363 l_rec_acct_attrs.array_num_value(6) := p_source_9;
86364 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86365 l_rec_acct_attrs.array_char_value(7) := p_source_10;
86366 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86367 l_rec_acct_attrs.array_num_value(8) := p_source_11;
86368
86369 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86370 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86371
86372 ---------------------------------------------------------------------------------------------------------------
86373 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86374 ---------------------------------------------------------------------------------------------------------------
86375 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86376
86377 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86378 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86379
86380 IF xla_accounting_cache_pkg.GetValueChar
86381 (p_source_code => 'LEDGER_CATEGORY_CODE'
86382 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86383 AND l_bflow_method_code = 'PRIOR_ENTRY'
86384 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86385 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86386 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86387 )
86388 THEN
86389 xla_ae_lines_pkg.BflowUpgEntry
86390 (p_business_method_code => l_bflow_method_code
86391 ,p_business_class_code => l_bflow_class_code
86392 ,p_balance_type => l_balance_type_code);
86393 ELSE
86394 NULL;
86395 -- No business flow processing for business flow method of NONE.
86396 END IF;
86397
86398 --
86399 -- call analytical criteria
86400 --
86401
86402 --
86403 -- call description
86404 --
86405 -- No description or it is inherited.
86406 --
86407 -- call ADRs
86408 -- Bug 4922099
86409 --
86410 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86411 (NVL(l_actual_upg_option, 'N') = 'O') OR
86412 (NVL(l_enc_upg_option, 'N') = 'O')
86413 )
86414 THEN
86415 NULL;
86419 l_ccid := AcctDerRule_22(
86416 --
86417 --
86418
86420 p_application_id => p_application_id
86421 , p_ae_header_id => l_ae_header_id
86422 , p_source_1 => p_source_1
86423 , p_source_2 => p_source_2
86424 , x_transaction_coa_id => l_adr_transaction_coa_id
86425 , x_accounting_coa_id => l_adr_accounting_coa_id
86426 , x_value_type_code => l_adr_value_type_code
86427 , p_side => 'NA'
86428 );
86429
86430 xla_ae_lines_pkg.set_ccid(
86431 p_code_combination_id => l_ccid
86432 , p_value_type_code => l_adr_value_type_code
86433 , p_transaction_coa_id => l_adr_transaction_coa_id
86434 , p_accounting_coa_id => l_adr_accounting_coa_id
86435 , p_adr_code => 'IOR'
86436 , p_adr_type_code => 'S'
86437 , p_component_type => l_component_type
86438 , p_component_code => l_component_code
86439 , p_component_type_code => l_component_type_code
86440 , p_component_appl_id => l_component_appl_id
86441 , p_amb_context_code => l_amb_context_code
86442 , p_side => 'NA'
86443 );
86444
86445
86446 --
86447 --
86448 END IF;
86449 --
86450 -- Bug 4922099
86451 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86452 (NVL(l_enc_upg_option, 'N') = 'O')
86453 ) AND
86454 (l_bflow_method_code = 'PRIOR_ENTRY')
86455 )
86456 THEN
86457 IF
86458 --
86459 1 = 2
86460 --
86461 THEN
86462 xla_accounting_err_pkg.build_message
86463 (p_appli_s_name => 'XLA'
86464 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86465 ,p_token_1 => 'LINE_NUMBER'
86466 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
86467 ,p_token_2 => 'LINE_TYPE_NAME'
86468 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
86469 l_component_type
86470 ,l_component_code
86471 ,l_component_type_code
86472 ,l_component_appl_id
86473 ,l_amb_context_code
86474 ,l_entity_code
86475 ,l_event_class_code
86476 )
86477 ,p_token_3 => 'OWNER'
86478 ,p_value_3 => xla_lookups_pkg.get_meaning(
86479 p_lookup_type => 'XLA_OWNER_TYPE'
86480 ,p_lookup_code => l_component_type_code
86481 )
86482 ,p_token_4 => 'PRODUCT_NAME'
86483 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86484 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86485 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86486 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86487 ,p_ae_header_id => NULL
86488 );
86489
86490 IF (C_LEVEL_ERROR>= g_log_level) THEN
86491 trace
86492 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86493 ,p_level => C_LEVEL_ERROR
86494 ,p_module => l_log_module);
86495 END IF;
86496 END IF;
86497 END IF;
86498 --
86499 --
86500 ------------------------------------------------------------------------------------------------
86501 -- 4219869 Business Flow
86502 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86503 -- Prior Entry. Currently, the following code is always generated.
86504 ------------------------------------------------------------------------------------------------
86505 XLA_AE_LINES_PKG.ValidateCurrentLine;
86506
86507 ------------------------------------------------------------------------------------
86508 -- 4219869 Business Flow
86509 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86510 ------------------------------------------------------------------------------------
86511 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86512
86513 ----------------------------------------------------------------------------------
86514 -- 4219869 Business Flow
86515 -- Update journal entry status -- Need to generate this within IF <condition>
86519 ,p_balance_type_code => l_balance_type_code
86516 ----------------------------------------------------------------------------------
86517 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86518 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86520 );
86521
86522 -------------------------------------------------------------------------------------------
86523 -- 4262811 - Generate the Accrual Reversal lines
86524 -------------------------------------------------------------------------------------------
86525 BEGIN
86526 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86527 (g_array_event(p_event_id).array_value_num('header_index'));
86528 IF l_acc_rev_flag IS NULL THEN
86529 l_acc_rev_flag := 'N';
86530 END IF;
86531 EXCEPTION
86532 WHEN OTHERS THEN
86533 l_acc_rev_flag := 'N';
86534 END;
86535 --
86536 IF (l_acc_rev_flag = 'Y') THEN
86537
86538 -- 4645092 ------------------------------------------------------------------------------
86539 -- To allow MPA report to determine if it should generate report process
86540 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86541 ------------------------------------------------------------------------------------------
86542
86543 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86544 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86545 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
86546 -- call ADRs
86547 -- Bug 4922099
86548 --
86549 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86550 (NVL(l_actual_upg_option, 'N') = 'O') OR
86551 (NVL(l_enc_upg_option, 'N') = 'O')
86552 )
86553 THEN
86554 NULL;
86555 --
86556 --
86557
86558 l_ccid := AcctDerRule_22(
86559 p_application_id => p_application_id
86560 , p_ae_header_id => l_ae_header_id
86561 , p_source_1 => p_source_1
86562 , p_source_2 => p_source_2
86563 , x_transaction_coa_id => l_adr_transaction_coa_id
86564 , x_accounting_coa_id => l_adr_accounting_coa_id
86565 , x_value_type_code => l_adr_value_type_code
86566 , p_side => 'NA'
86567 );
86568
86569 xla_ae_lines_pkg.set_ccid(
86570 p_code_combination_id => l_ccid
86571 , p_value_type_code => l_adr_value_type_code
86572 , p_transaction_coa_id => l_adr_transaction_coa_id
86573 , p_accounting_coa_id => l_adr_accounting_coa_id
86574 , p_adr_code => 'IOR'
86575 , p_adr_type_code => 'S'
86576 , p_component_type => l_component_type
86577 , p_component_code => l_component_code
86578 , p_component_type_code => l_component_type_code
86579 , p_component_appl_id => l_component_appl_id
86580 , p_amb_context_code => l_amb_context_code
86581 , p_side => 'NA'
86582 );
86583
86584
86585 --
86586 --
86587 END IF;
86588
86589 --
86590 -- Update the line information that should be overwritten
86591 --
86592 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86593 p_header_num => 1);
86594 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
86595
86596 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86597
86598 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
86599 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86600 END IF;
86601
86602 --
86603 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86604 --
86605 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86606 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
86607 ELSE
86608 ---------------------------------------------------------------------------------------------------
86609 -- 4262811a Switch Sign
86610 ---------------------------------------------------------------------------------------------------
86611 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
86612 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86613 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86614 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86615 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86616 -- 5132302
86617 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86618 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86619
86620 END IF;
86621
86622 -- 4955764
86623 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86627 XLA_AE_LINES_PKG.ValidateCurrentLine;
86624 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86625
86626
86628 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86629
86630 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86631 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86632 ,p_balance_type_code => l_balance_type_code);
86633
86634 END IF;
86635
86636 -----------------------------------------------------------------------------------------
86637 -- 4262811 Multiperiod Accounting
86638 -----------------------------------------------------------------------------------------
86639 -- No MPA option is assigned.
86640
86641
86642 END IF;
86643 END IF;
86644 --
86645
86646 --
86647 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86648 trace
86649 (p_msg => 'END of AcctLineType_188'
86650 ,p_level => C_LEVEL_PROCEDURE
86651 ,p_module => l_log_module);
86652 END IF;
86653 --
86654 EXCEPTION
86655 WHEN xla_exceptions_pkg.application_exception THEN
86656 RAISE;
86657 WHEN OTHERS THEN
86658 xla_exceptions_pkg.raise_message
86659 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_188');
86660 END AcctLineType_188;
86661 --
86662
86663 ---------------------------------------
86664 --
86665 -- PRIVATE FUNCTION
86666 -- AcctLineType_189
86667 --
86668 ---------------------------------------
86669 PROCEDURE AcctLineType_189 (
86670 p_application_id IN NUMBER
86671 ,p_event_id IN NUMBER
86672 ,p_calculate_acctd_flag IN VARCHAR2
86673 ,p_calculate_g_l_flag IN VARCHAR2
86674 ,p_actual_flag IN OUT VARCHAR2
86675 ,p_balance_type_code OUT VARCHAR2
86676 ,p_gain_or_loss_ref OUT VARCHAR2
86677
86678 --Transaction Account
86679 , p_source_1 IN NUMBER
86680 --Journal Line Type
86681 , p_source_2 IN VARCHAR2
86682 --Entered Amount
86683 , p_source_3 IN NUMBER
86684 --First Distribution Identifier
86685 , p_source_5 IN NUMBER
86686 --Distribution Type
86687 , p_source_6 IN VARCHAR2
86688 --Currency Code
86689 , p_source_7 IN VARCHAR2
86690 --Currency Conversion Date
86691 , p_source_8 IN DATE
86692 --Currency Conversion Rate
86693 , p_source_9 IN NUMBER
86694 --Currency Conversion Type
86695 , p_source_10 IN VARCHAR2
86696 --Accounted Amount
86697 , p_source_11 IN NUMBER
86698 )
86699 IS
86700
86701 l_component_type VARCHAR2(80);
86702 l_component_code VARCHAR2(30);
86703 l_component_type_code VARCHAR2(1);
86704 l_component_appl_id INTEGER;
86705 l_amb_context_code VARCHAR2(30);
86706 l_entity_code VARCHAR2(30);
86707 l_event_class_code VARCHAR2(30);
86708 l_ae_header_id NUMBER;
86709 l_event_type_code VARCHAR2(30);
86710 l_line_definition_code VARCHAR2(30);
86711 l_line_definition_owner_code VARCHAR2(1);
86712 --
86713 -- adr variables
86714 l_segment VARCHAR2(30);
86715 l_ccid NUMBER;
86716 l_adr_transaction_coa_id NUMBER;
86717 l_adr_accounting_coa_id NUMBER;
86718 l_adr_flexfield_segment_code VARCHAR2(30);
86719 l_adr_flex_value_set_id NUMBER;
86720 l_adr_value_type_code VARCHAR2(30);
86721 l_adr_value_combination_id NUMBER;
86722 l_adr_value_segment_code VARCHAR2(30);
86723
86724 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
86725 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
86726 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
86727 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
86728
86729 -- 4262811 Variables ------------------------------------------------------------------------------------------
86730 l_entered_amt_idx NUMBER;
86731 l_accted_amt_idx NUMBER;
86732 l_acc_rev_flag VARCHAR2(1);
86733 l_accrual_line_num NUMBER;
86734 l_tmp_amt NUMBER;
86735 l_acc_rev_natural_side_code VARCHAR2(1);
86736
86737 l_num_entries NUMBER;
86738 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
86739 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
86740 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
86741 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
86742 l_recog_line_1 NUMBER;
86743 l_recog_line_2 NUMBER;
86744
86745 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
86746 l_bflow_applied_to_amt NUMBER; -- 5132302
86747 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
86748
86749 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86750
86751 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
86752 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
86753
86757 --
86754 ---------------------------------------------------------------------------------------------------------------
86755
86756
86758 -- bulk performance
86759 --
86760 l_balance_type_code VARCHAR2(1);
86761 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
86762 l_log_module VARCHAR2(240);
86763
86764 --
86765 -- Upgrade strategy
86766 --
86767 l_actual_upg_option VARCHAR2(1);
86768 l_enc_upg_option VARCHAR2(1);
86769
86770 --
86771 BEGIN
86772 --
86773 IF g_log_enabled THEN
86774 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_189';
86775 END IF;
86776 --
86777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86778
86779 trace
86780 (p_msg => 'BEGIN of AcctLineType_189'
86781 ,p_level => C_LEVEL_PROCEDURE
86782 ,p_module => l_log_module);
86783
86784 END IF;
86785 --
86786 l_component_type := 'AMB_JLT';
86787 l_component_code := 'IOR';
86788 l_component_type_code := 'S';
86789 l_component_appl_id := 555;
86790 l_amb_context_code := 'DEFAULT';
86791 l_entity_code := 'INVENTORY';
86792 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
86793 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
86794 l_line_definition_owner_code := 'S';
86795 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
86796 --
86797 l_balance_type_code := 'A';
86798 l_segment := NULL;
86799 l_ccid := NULL;
86800 l_adr_transaction_coa_id := NULL;
86801 l_adr_accounting_coa_id := NULL;
86802 l_adr_flexfield_segment_code := NULL;
86803 l_adr_flex_value_set_id := NULL;
86804 l_adr_value_type_code := NULL;
86805 l_adr_value_combination_id := NULL;
86806 l_adr_value_segment_code := NULL;
86807
86808 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
86809 l_bflow_class_code := ''; -- 4219869 Business Flow
86810 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
86811 l_budgetary_control_flag := 'N';
86812
86813 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86814 l_bflow_applied_to_amt := NULL; -- 5132302
86815 l_entered_amt_idx := NULL; -- 4262811
86816 l_accted_amt_idx := NULL; -- 4262811
86817 l_acc_rev_flag := NULL; -- 4262811
86818 l_accrual_line_num := NULL; -- 4262811
86819 l_tmp_amt := NULL; -- 4262811
86820 --
86821
86822 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86823 l_balance_type_code <> 'B' THEN
86824 IF NVL(p_source_2,'
86825 ') = 'IOR'
86826 THEN
86827
86828 --
86829 XLA_AE_LINES_PKG.SetNewLine;
86830
86831 p_balance_type_code := l_balance_type_code;
86832 -- set the flag so later we will know whether the gain loss line needs to be created
86833
86834 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86835 p_actual_flag :='A';
86836 END IF;
86837
86838 --
86839 -- bulk performance
86840 --
86841 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86842 p_header_num => 0); -- 4262811
86843 --
86844 -- set accounting line options
86845 --
86846 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86847 p_natural_side_code => 'D'
86848 , p_gain_or_loss_flag => 'N'
86849 , p_gl_transfer_mode_code => 'D'
86850 , p_acct_entry_type_code => 'A'
86851 , p_switch_side_flag => 'Y'
86852 , p_merge_duplicate_code => 'W'
86853 );
86854 --
86855 l_acc_rev_natural_side_code := 'C'; -- 4262811
86856 --
86857 --
86858 -- set accounting line type info
86859 --
86860 xla_ae_lines_pkg.SetAcctLineType
86861 (p_component_type => l_component_type
86862 ,p_event_type_code => l_event_type_code
86863 ,p_line_definition_owner_code => l_line_definition_owner_code
86864 ,p_line_definition_code => l_line_definition_code
86865 ,p_accounting_line_code => l_component_code
86866 ,p_accounting_line_type_code => l_component_type_code
86867 ,p_accounting_line_appl_id => l_component_appl_id
86868 ,p_amb_context_code => l_amb_context_code
86869 ,p_entity_code => l_entity_code
86870 ,p_event_class_code => l_event_class_code);
86871 --
86872 -- set accounting class
86873 --
86874 xla_ae_lines_pkg.SetAcctClass(
86875 p_accounting_class_code => 'INTERORG_RECEIVABLES'
86876 , p_ae_header_id => l_ae_header_id
86877 );
86878
86879 --
86880 -- set rounding class
86881 --
86882 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86883 'INTERORG_RECEIVABLES';
86884
86885 --
86886 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86887 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86888 --
86889 -- bulk performance
86890 --
86894 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86891 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86892
86893 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86895
86896 -- 4955764
86897 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86898 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86899
86900 -- 4458381 Public Sector Enh
86901
86902 --
86903 -- set accounting attributes for the line type
86904 --
86905 l_entered_amt_idx := 3;
86906 l_accted_amt_idx := 8;
86907 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86908 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86909 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
86910 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86911 l_rec_acct_attrs.array_char_value(2) := p_source_6;
86912 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86913 l_rec_acct_attrs.array_num_value(3) := p_source_3;
86914 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86915 l_rec_acct_attrs.array_char_value(4) := p_source_7;
86916 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86917 l_rec_acct_attrs.array_date_value(5) := p_source_8;
86918 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86919 l_rec_acct_attrs.array_num_value(6) := p_source_9;
86920 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86921 l_rec_acct_attrs.array_char_value(7) := p_source_10;
86922 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86923 l_rec_acct_attrs.array_num_value(8) := p_source_11;
86924
86925 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86926 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86927
86928 ---------------------------------------------------------------------------------------------------------------
86929 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86930 ---------------------------------------------------------------------------------------------------------------
86931 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86932
86933 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86934 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86935
86936 IF xla_accounting_cache_pkg.GetValueChar
86937 (p_source_code => 'LEDGER_CATEGORY_CODE'
86938 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86939 AND l_bflow_method_code = 'PRIOR_ENTRY'
86940 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86941 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86942 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86943 )
86944 THEN
86945 xla_ae_lines_pkg.BflowUpgEntry
86946 (p_business_method_code => l_bflow_method_code
86947 ,p_business_class_code => l_bflow_class_code
86948 ,p_balance_type => l_balance_type_code);
86949 ELSE
86950 NULL;
86951 -- No business flow processing for business flow method of NONE.
86952 END IF;
86953
86954 --
86955 -- call analytical criteria
86956 --
86957
86958 --
86959 -- call description
86960 --
86961 -- No description or it is inherited.
86962 --
86963 -- call ADRs
86964 -- Bug 4922099
86965 --
86966 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86967 (NVL(l_actual_upg_option, 'N') = 'O') OR
86968 (NVL(l_enc_upg_option, 'N') = 'O')
86969 )
86970 THEN
86971 NULL;
86972 --
86973 --
86974
86975 l_ccid := AcctDerRule_22(
86976 p_application_id => p_application_id
86977 , p_ae_header_id => l_ae_header_id
86978 , p_source_1 => p_source_1
86979 , p_source_2 => p_source_2
86980 , x_transaction_coa_id => l_adr_transaction_coa_id
86981 , x_accounting_coa_id => l_adr_accounting_coa_id
86982 , x_value_type_code => l_adr_value_type_code
86983 , p_side => 'NA'
86984 );
86985
86986 xla_ae_lines_pkg.set_ccid(
86987 p_code_combination_id => l_ccid
86988 , p_value_type_code => l_adr_value_type_code
86989 , p_transaction_coa_id => l_adr_transaction_coa_id
86990 , p_accounting_coa_id => l_adr_accounting_coa_id
86991 , p_adr_code => 'IOR'
86992 , p_adr_type_code => 'S'
86993 , p_component_type => l_component_type
86994 , p_component_code => l_component_code
86995 , p_component_type_code => l_component_type_code
86996 , p_component_appl_id => l_component_appl_id
86997 , p_amb_context_code => l_amb_context_code
86998 , p_side => 'NA'
86999 );
87000
87001
87002 --
87003 --
87004 END IF;
87005 --
87006 -- Bug 4922099
87007 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87008 (NVL(l_enc_upg_option, 'N') = 'O')
87009 ) AND
87013 IF
87010 (l_bflow_method_code = 'PRIOR_ENTRY')
87011 )
87012 THEN
87014 --
87015 1 = 2
87016 --
87017 THEN
87018 xla_accounting_err_pkg.build_message
87019 (p_appli_s_name => 'XLA'
87020 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87021 ,p_token_1 => 'LINE_NUMBER'
87022 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
87023 ,p_token_2 => 'LINE_TYPE_NAME'
87024 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
87025 l_component_type
87026 ,l_component_code
87027 ,l_component_type_code
87028 ,l_component_appl_id
87029 ,l_amb_context_code
87030 ,l_entity_code
87031 ,l_event_class_code
87032 )
87033 ,p_token_3 => 'OWNER'
87034 ,p_value_3 => xla_lookups_pkg.get_meaning(
87035 p_lookup_type => 'XLA_OWNER_TYPE'
87036 ,p_lookup_code => l_component_type_code
87037 )
87038 ,p_token_4 => 'PRODUCT_NAME'
87039 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87040 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87041 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87042 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87043 ,p_ae_header_id => NULL
87044 );
87045
87046 IF (C_LEVEL_ERROR>= g_log_level) THEN
87047 trace
87048 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87049 ,p_level => C_LEVEL_ERROR
87050 ,p_module => l_log_module);
87051 END IF;
87052 END IF;
87053 END IF;
87054 --
87055 --
87056 ------------------------------------------------------------------------------------------------
87057 -- 4219869 Business Flow
87058 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87059 -- Prior Entry. Currently, the following code is always generated.
87060 ------------------------------------------------------------------------------------------------
87061 XLA_AE_LINES_PKG.ValidateCurrentLine;
87062
87063 ------------------------------------------------------------------------------------
87064 -- 4219869 Business Flow
87065 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87066 ------------------------------------------------------------------------------------
87067 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87068
87069 ----------------------------------------------------------------------------------
87070 -- 4219869 Business Flow
87071 -- Update journal entry status -- Need to generate this within IF <condition>
87072 ----------------------------------------------------------------------------------
87073 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87074 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87075 ,p_balance_type_code => l_balance_type_code
87076 );
87077
87078 -------------------------------------------------------------------------------------------
87079 -- 4262811 - Generate the Accrual Reversal lines
87080 -------------------------------------------------------------------------------------------
87081 BEGIN
87082 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87083 (g_array_event(p_event_id).array_value_num('header_index'));
87084 IF l_acc_rev_flag IS NULL THEN
87085 l_acc_rev_flag := 'N';
87086 END IF;
87087 EXCEPTION
87088 WHEN OTHERS THEN
87089 l_acc_rev_flag := 'N';
87090 END;
87091 --
87092 IF (l_acc_rev_flag = 'Y') THEN
87093
87094 -- 4645092 ------------------------------------------------------------------------------
87095 -- To allow MPA report to determine if it should generate report process
87096 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87097 ------------------------------------------------------------------------------------------
87098
87099 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87100 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87104 --
87101 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
87102 -- call ADRs
87103 -- Bug 4922099
87105 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87106 (NVL(l_actual_upg_option, 'N') = 'O') OR
87107 (NVL(l_enc_upg_option, 'N') = 'O')
87108 )
87109 THEN
87110 NULL;
87111 --
87112 --
87113
87114 l_ccid := AcctDerRule_22(
87115 p_application_id => p_application_id
87116 , p_ae_header_id => l_ae_header_id
87117 , p_source_1 => p_source_1
87118 , p_source_2 => p_source_2
87119 , x_transaction_coa_id => l_adr_transaction_coa_id
87120 , x_accounting_coa_id => l_adr_accounting_coa_id
87121 , x_value_type_code => l_adr_value_type_code
87122 , p_side => 'NA'
87123 );
87124
87125 xla_ae_lines_pkg.set_ccid(
87126 p_code_combination_id => l_ccid
87127 , p_value_type_code => l_adr_value_type_code
87128 , p_transaction_coa_id => l_adr_transaction_coa_id
87129 , p_accounting_coa_id => l_adr_accounting_coa_id
87130 , p_adr_code => 'IOR'
87131 , p_adr_type_code => 'S'
87132 , p_component_type => l_component_type
87133 , p_component_code => l_component_code
87134 , p_component_type_code => l_component_type_code
87135 , p_component_appl_id => l_component_appl_id
87136 , p_amb_context_code => l_amb_context_code
87137 , p_side => 'NA'
87138 );
87139
87140
87141 --
87142 --
87143 END IF;
87144
87145 --
87146 -- Update the line information that should be overwritten
87147 --
87148 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87149 p_header_num => 1);
87150 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
87151
87152 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87153
87154 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
87155 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87156 END IF;
87157
87158 --
87159 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87160 --
87161 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87162 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
87163 ELSE
87164 ---------------------------------------------------------------------------------------------------
87165 -- 4262811a Switch Sign
87166 ---------------------------------------------------------------------------------------------------
87167 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
87168 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87169 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87170 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87171 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87172 -- 5132302
87173 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87174 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87175
87176 END IF;
87177
87178 -- 4955764
87179 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87180 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87181
87182
87183 XLA_AE_LINES_PKG.ValidateCurrentLine;
87184 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87185
87186 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87187 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87188 ,p_balance_type_code => l_balance_type_code);
87189
87190 END IF;
87191
87192 -----------------------------------------------------------------------------------------
87193 -- 4262811 Multiperiod Accounting
87194 -----------------------------------------------------------------------------------------
87195 -- No MPA option is assigned.
87196
87197
87198 END IF;
87199 END IF;
87200 --
87201
87202 --
87203 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87204 trace
87205 (p_msg => 'END of AcctLineType_189'
87206 ,p_level => C_LEVEL_PROCEDURE
87207 ,p_module => l_log_module);
87208 END IF;
87209 --
87210 EXCEPTION
87211 WHEN xla_exceptions_pkg.application_exception THEN
87212 RAISE;
87213 WHEN OTHERS THEN
87214 xla_exceptions_pkg.raise_message
87215 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_189');
87216 END AcctLineType_189;
87217 --
87218
87219 ---------------------------------------
87220 --
87221 -- PRIVATE FUNCTION
87222 -- AcctLineType_190
87226 p_application_id IN NUMBER
87223 --
87224 ---------------------------------------
87225 PROCEDURE AcctLineType_190 (
87227 ,p_event_id IN NUMBER
87228 ,p_calculate_acctd_flag IN VARCHAR2
87229 ,p_calculate_g_l_flag IN VARCHAR2
87230 ,p_actual_flag IN OUT VARCHAR2
87231 ,p_balance_type_code OUT VARCHAR2
87232 ,p_gain_or_loss_ref OUT VARCHAR2
87233
87234 --Transaction Account
87235 , p_source_1 IN NUMBER
87236 --Journal Line Type
87237 , p_source_2 IN VARCHAR2
87238 --Entered Amount
87239 , p_source_3 IN NUMBER
87240 --First Distribution Identifier
87241 , p_source_5 IN NUMBER
87242 --Distribution Type
87243 , p_source_6 IN VARCHAR2
87244 --Currency Code
87245 , p_source_7 IN VARCHAR2
87246 --Currency Conversion Date
87247 , p_source_8 IN DATE
87248 --Currency Conversion Rate
87249 , p_source_9 IN NUMBER
87250 --Currency Conversion Type
87251 , p_source_10 IN VARCHAR2
87252 --Accounted Amount
87253 , p_source_11 IN NUMBER
87254 )
87255 IS
87256
87257 l_component_type VARCHAR2(80);
87258 l_component_code VARCHAR2(30);
87259 l_component_type_code VARCHAR2(1);
87260 l_component_appl_id INTEGER;
87261 l_amb_context_code VARCHAR2(30);
87262 l_entity_code VARCHAR2(30);
87263 l_event_class_code VARCHAR2(30);
87264 l_ae_header_id NUMBER;
87265 l_event_type_code VARCHAR2(30);
87266 l_line_definition_code VARCHAR2(30);
87267 l_line_definition_owner_code VARCHAR2(1);
87268 --
87269 -- adr variables
87270 l_segment VARCHAR2(30);
87271 l_ccid NUMBER;
87272 l_adr_transaction_coa_id NUMBER;
87273 l_adr_accounting_coa_id NUMBER;
87274 l_adr_flexfield_segment_code VARCHAR2(30);
87275 l_adr_flex_value_set_id NUMBER;
87276 l_adr_value_type_code VARCHAR2(30);
87277 l_adr_value_combination_id NUMBER;
87278 l_adr_value_segment_code VARCHAR2(30);
87279
87280 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
87281 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
87282 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
87283 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
87284
87285 -- 4262811 Variables ------------------------------------------------------------------------------------------
87286 l_entered_amt_idx NUMBER;
87287 l_accted_amt_idx NUMBER;
87288 l_acc_rev_flag VARCHAR2(1);
87289 l_accrual_line_num NUMBER;
87290 l_tmp_amt NUMBER;
87291 l_acc_rev_natural_side_code VARCHAR2(1);
87292
87293 l_num_entries NUMBER;
87294 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
87295 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
87296 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
87297 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
87298 l_recog_line_1 NUMBER;
87299 l_recog_line_2 NUMBER;
87300
87301 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
87302 l_bflow_applied_to_amt NUMBER; -- 5132302
87303 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
87304
87305 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87306
87307 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
87308 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
87309
87310 ---------------------------------------------------------------------------------------------------------------
87311
87312
87313 --
87314 -- bulk performance
87315 --
87316 l_balance_type_code VARCHAR2(1);
87317 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
87318 l_log_module VARCHAR2(240);
87319
87320 --
87321 -- Upgrade strategy
87322 --
87323 l_actual_upg_option VARCHAR2(1);
87324 l_enc_upg_option VARCHAR2(1);
87325
87326 --
87327 BEGIN
87328 --
87329 IF g_log_enabled THEN
87330 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_190';
87331 END IF;
87332 --
87333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87334
87335 trace
87336 (p_msg => 'BEGIN of AcctLineType_190'
87337 ,p_level => C_LEVEL_PROCEDURE
87338 ,p_module => l_log_module);
87339
87340 END IF;
87341 --
87342 l_component_type := 'AMB_JLT';
87343 l_component_code := 'IOR';
87344 l_component_type_code := 'S';
87345 l_component_appl_id := 555;
87346 l_amb_context_code := 'DEFAULT';
87347 l_entity_code := 'INVENTORY';
87348 l_event_class_code := 'DIR_INTERORG_SHIP';
87349 l_event_type_code := 'DIR_INTERORG_SHIP';
87350 l_line_definition_owner_code := 'S';
87351 l_line_definition_code := 'DIRECT_XFER_SHIP';
87352 --
87353 l_balance_type_code := 'A';
87354 l_segment := NULL;
87355 l_ccid := NULL;
87356 l_adr_transaction_coa_id := NULL;
87360 l_adr_value_type_code := NULL;
87357 l_adr_accounting_coa_id := NULL;
87358 l_adr_flexfield_segment_code := NULL;
87359 l_adr_flex_value_set_id := NULL;
87361 l_adr_value_combination_id := NULL;
87362 l_adr_value_segment_code := NULL;
87363
87364 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
87365 l_bflow_class_code := ''; -- 4219869 Business Flow
87366 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
87367 l_budgetary_control_flag := 'N';
87368
87369 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87370 l_bflow_applied_to_amt := NULL; -- 5132302
87371 l_entered_amt_idx := NULL; -- 4262811
87372 l_accted_amt_idx := NULL; -- 4262811
87373 l_acc_rev_flag := NULL; -- 4262811
87374 l_accrual_line_num := NULL; -- 4262811
87375 l_tmp_amt := NULL; -- 4262811
87376 --
87377
87378 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87379 l_balance_type_code <> 'B' THEN
87380 IF NVL(p_source_2,'
87381 ') = 'IOR'
87382 THEN
87383
87384 --
87385 XLA_AE_LINES_PKG.SetNewLine;
87386
87387 p_balance_type_code := l_balance_type_code;
87388 -- set the flag so later we will know whether the gain loss line needs to be created
87389
87390 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87391 p_actual_flag :='A';
87392 END IF;
87393
87394 --
87395 -- bulk performance
87396 --
87397 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87398 p_header_num => 0); -- 4262811
87399 --
87400 -- set accounting line options
87401 --
87402 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87403 p_natural_side_code => 'D'
87404 , p_gain_or_loss_flag => 'N'
87405 , p_gl_transfer_mode_code => 'D'
87406 , p_acct_entry_type_code => 'A'
87407 , p_switch_side_flag => 'Y'
87408 , p_merge_duplicate_code => 'W'
87409 );
87410 --
87411 l_acc_rev_natural_side_code := 'C'; -- 4262811
87412 --
87413 --
87414 -- set accounting line type info
87415 --
87416 xla_ae_lines_pkg.SetAcctLineType
87417 (p_component_type => l_component_type
87418 ,p_event_type_code => l_event_type_code
87419 ,p_line_definition_owner_code => l_line_definition_owner_code
87420 ,p_line_definition_code => l_line_definition_code
87421 ,p_accounting_line_code => l_component_code
87422 ,p_accounting_line_type_code => l_component_type_code
87423 ,p_accounting_line_appl_id => l_component_appl_id
87424 ,p_amb_context_code => l_amb_context_code
87425 ,p_entity_code => l_entity_code
87426 ,p_event_class_code => l_event_class_code);
87427 --
87428 -- set accounting class
87429 --
87430 xla_ae_lines_pkg.SetAcctClass(
87431 p_accounting_class_code => 'INTERORG_RECEIVABLES'
87432 , p_ae_header_id => l_ae_header_id
87433 );
87434
87435 --
87436 -- set rounding class
87437 --
87438 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87439 'INTERORG_RECEIVABLES';
87440
87441 --
87442 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87443 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87444 --
87445 -- bulk performance
87446 --
87447 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87448
87449 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87450 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87451
87452 -- 4955764
87453 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87454 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87455
87456 -- 4458381 Public Sector Enh
87457
87458 --
87459 -- set accounting attributes for the line type
87460 --
87461 l_entered_amt_idx := 3;
87462 l_accted_amt_idx := 8;
87463 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87464 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87465 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
87466 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87467 l_rec_acct_attrs.array_char_value(2) := p_source_6;
87468 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87469 l_rec_acct_attrs.array_num_value(3) := p_source_3;
87470 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87471 l_rec_acct_attrs.array_char_value(4) := p_source_7;
87472 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87473 l_rec_acct_attrs.array_date_value(5) := p_source_8;
87474 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87475 l_rec_acct_attrs.array_num_value(6) := p_source_9;
87476 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87477 l_rec_acct_attrs.array_char_value(7) := p_source_10;
87478 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87482 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87479 l_rec_acct_attrs.array_num_value(8) := p_source_11;
87480
87481 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87483
87484 ---------------------------------------------------------------------------------------------------------------
87485 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87486 ---------------------------------------------------------------------------------------------------------------
87487 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87488
87489 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87490 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87491
87492 IF xla_accounting_cache_pkg.GetValueChar
87493 (p_source_code => 'LEDGER_CATEGORY_CODE'
87494 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87495 AND l_bflow_method_code = 'PRIOR_ENTRY'
87496 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87497 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87498 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87499 )
87500 THEN
87501 xla_ae_lines_pkg.BflowUpgEntry
87502 (p_business_method_code => l_bflow_method_code
87503 ,p_business_class_code => l_bflow_class_code
87504 ,p_balance_type => l_balance_type_code);
87505 ELSE
87506 NULL;
87507 -- No business flow processing for business flow method of NONE.
87508 END IF;
87509
87510 --
87511 -- call analytical criteria
87512 --
87513
87514 --
87515 -- call description
87516 --
87517 -- No description or it is inherited.
87518 --
87519 -- call ADRs
87520 -- Bug 4922099
87521 --
87522 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87523 (NVL(l_actual_upg_option, 'N') = 'O') OR
87524 (NVL(l_enc_upg_option, 'N') = 'O')
87525 )
87526 THEN
87527 NULL;
87528 --
87529 --
87530
87531 l_ccid := AcctDerRule_22(
87532 p_application_id => p_application_id
87533 , p_ae_header_id => l_ae_header_id
87534 , p_source_1 => p_source_1
87535 , p_source_2 => p_source_2
87536 , x_transaction_coa_id => l_adr_transaction_coa_id
87537 , x_accounting_coa_id => l_adr_accounting_coa_id
87538 , x_value_type_code => l_adr_value_type_code
87539 , p_side => 'NA'
87540 );
87541
87542 xla_ae_lines_pkg.set_ccid(
87543 p_code_combination_id => l_ccid
87544 , p_value_type_code => l_adr_value_type_code
87545 , p_transaction_coa_id => l_adr_transaction_coa_id
87546 , p_accounting_coa_id => l_adr_accounting_coa_id
87547 , p_adr_code => 'IOR'
87548 , p_adr_type_code => 'S'
87549 , p_component_type => l_component_type
87550 , p_component_code => l_component_code
87551 , p_component_type_code => l_component_type_code
87552 , p_component_appl_id => l_component_appl_id
87553 , p_amb_context_code => l_amb_context_code
87554 , p_side => 'NA'
87555 );
87556
87557
87558 --
87559 --
87560 END IF;
87561 --
87562 -- Bug 4922099
87563 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87564 (NVL(l_enc_upg_option, 'N') = 'O')
87565 ) AND
87566 (l_bflow_method_code = 'PRIOR_ENTRY')
87567 )
87568 THEN
87569 IF
87570 --
87571 1 = 2
87572 --
87573 THEN
87574 xla_accounting_err_pkg.build_message
87575 (p_appli_s_name => 'XLA'
87576 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87577 ,p_token_1 => 'LINE_NUMBER'
87578 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
87579 ,p_token_2 => 'LINE_TYPE_NAME'
87580 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
87581 l_component_type
87582 ,l_component_code
87583 ,l_component_type_code
87584 ,l_component_appl_id
87585 ,l_amb_context_code
87586 ,l_entity_code
87587 ,l_event_class_code
87588 )
87589 ,p_token_3 => 'OWNER'
87590 ,p_value_3 => xla_lookups_pkg.get_meaning(
87594 ,p_token_4 => 'PRODUCT_NAME'
87591 p_lookup_type => 'XLA_OWNER_TYPE'
87592 ,p_lookup_code => l_component_type_code
87593 )
87595 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87596 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87597 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87598 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87599 ,p_ae_header_id => NULL
87600 );
87601
87602 IF (C_LEVEL_ERROR>= g_log_level) THEN
87603 trace
87604 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87605 ,p_level => C_LEVEL_ERROR
87606 ,p_module => l_log_module);
87607 END IF;
87608 END IF;
87609 END IF;
87610 --
87611 --
87612 ------------------------------------------------------------------------------------------------
87613 -- 4219869 Business Flow
87614 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87615 -- Prior Entry. Currently, the following code is always generated.
87616 ------------------------------------------------------------------------------------------------
87617 XLA_AE_LINES_PKG.ValidateCurrentLine;
87618
87619 ------------------------------------------------------------------------------------
87620 -- 4219869 Business Flow
87621 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87622 ------------------------------------------------------------------------------------
87623 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87624
87625 ----------------------------------------------------------------------------------
87626 -- 4219869 Business Flow
87627 -- Update journal entry status -- Need to generate this within IF <condition>
87628 ----------------------------------------------------------------------------------
87629 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87630 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87631 ,p_balance_type_code => l_balance_type_code
87632 );
87633
87634 -------------------------------------------------------------------------------------------
87635 -- 4262811 - Generate the Accrual Reversal lines
87636 -------------------------------------------------------------------------------------------
87637 BEGIN
87638 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87639 (g_array_event(p_event_id).array_value_num('header_index'));
87640 IF l_acc_rev_flag IS NULL THEN
87641 l_acc_rev_flag := 'N';
87642 END IF;
87643 EXCEPTION
87644 WHEN OTHERS THEN
87645 l_acc_rev_flag := 'N';
87646 END;
87647 --
87648 IF (l_acc_rev_flag = 'Y') THEN
87649
87650 -- 4645092 ------------------------------------------------------------------------------
87651 -- To allow MPA report to determine if it should generate report process
87652 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87653 ------------------------------------------------------------------------------------------
87654
87655 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87656 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87657 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
87658 -- call ADRs
87659 -- Bug 4922099
87660 --
87661 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87662 (NVL(l_actual_upg_option, 'N') = 'O') OR
87663 (NVL(l_enc_upg_option, 'N') = 'O')
87664 )
87665 THEN
87666 NULL;
87667 --
87668 --
87669
87670 l_ccid := AcctDerRule_22(
87671 p_application_id => p_application_id
87672 , p_ae_header_id => l_ae_header_id
87673 , p_source_1 => p_source_1
87674 , p_source_2 => p_source_2
87675 , x_transaction_coa_id => l_adr_transaction_coa_id
87676 , x_accounting_coa_id => l_adr_accounting_coa_id
87677 , x_value_type_code => l_adr_value_type_code
87678 , p_side => 'NA'
87679 );
87680
87681 xla_ae_lines_pkg.set_ccid(
87682 p_code_combination_id => l_ccid
87683 , p_value_type_code => l_adr_value_type_code
87684 , p_transaction_coa_id => l_adr_transaction_coa_id
87685 , p_accounting_coa_id => l_adr_accounting_coa_id
87686 , p_adr_code => 'IOR'
87687 , p_adr_type_code => 'S'
87688 , p_component_type => l_component_type
87689 , p_component_code => l_component_code
87690 , p_component_type_code => l_component_type_code
87691 , p_component_appl_id => l_component_appl_id
87692 , p_amb_context_code => l_amb_context_code
87693 , p_side => 'NA'
87694 );
87698 --
87695
87696
87697 --
87699 END IF;
87700
87701 --
87702 -- Update the line information that should be overwritten
87703 --
87704 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87705 p_header_num => 1);
87706 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
87707
87708 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87709
87710 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
87711 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87712 END IF;
87713
87714 --
87715 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87716 --
87717 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87718 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
87719 ELSE
87720 ---------------------------------------------------------------------------------------------------
87721 -- 4262811a Switch Sign
87722 ---------------------------------------------------------------------------------------------------
87723 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
87724 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87725 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87726 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87727 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87728 -- 5132302
87729 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87730 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87731
87732 END IF;
87733
87734 -- 4955764
87735 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87736 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87737
87738
87739 XLA_AE_LINES_PKG.ValidateCurrentLine;
87740 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87741
87742 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87743 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87744 ,p_balance_type_code => l_balance_type_code);
87745
87746 END IF;
87747
87748 -----------------------------------------------------------------------------------------
87749 -- 4262811 Multiperiod Accounting
87750 -----------------------------------------------------------------------------------------
87751 -- No MPA option is assigned.
87752
87753
87754 END IF;
87755 END IF;
87756 --
87757
87758 --
87759 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87760 trace
87761 (p_msg => 'END of AcctLineType_190'
87762 ,p_level => C_LEVEL_PROCEDURE
87763 ,p_module => l_log_module);
87764 END IF;
87765 --
87766 EXCEPTION
87767 WHEN xla_exceptions_pkg.application_exception THEN
87768 RAISE;
87769 WHEN OTHERS THEN
87770 xla_exceptions_pkg.raise_message
87771 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_190');
87772 END AcctLineType_190;
87773 --
87774
87775 ---------------------------------------
87776 --
87777 -- PRIVATE FUNCTION
87778 -- AcctLineType_191
87779 --
87780 ---------------------------------------
87781 PROCEDURE AcctLineType_191 (
87782 p_application_id IN NUMBER
87783 ,p_event_id IN NUMBER
87784 ,p_calculate_acctd_flag IN VARCHAR2
87785 ,p_calculate_g_l_flag IN VARCHAR2
87786 ,p_actual_flag IN OUT VARCHAR2
87787 ,p_balance_type_code OUT VARCHAR2
87788 ,p_gain_or_loss_ref OUT VARCHAR2
87789
87790 --Transaction Account
87791 , p_source_1 IN NUMBER
87792 --Journal Line Type
87793 , p_source_2 IN VARCHAR2
87794 --Entered Amount
87795 , p_source_3 IN NUMBER
87796 --First Distribution Identifier
87797 , p_source_5 IN NUMBER
87798 --Distribution Type
87799 , p_source_6 IN VARCHAR2
87800 --Currency Code
87801 , p_source_7 IN VARCHAR2
87802 --Currency Conversion Date
87803 , p_source_8 IN DATE
87804 --Currency Conversion Rate
87805 , p_source_9 IN NUMBER
87806 --Currency Conversion Type
87807 , p_source_10 IN VARCHAR2
87808 --Accounted Amount
87809 , p_source_11 IN NUMBER
87810 )
87811 IS
87812
87813 l_component_type VARCHAR2(80);
87814 l_component_code VARCHAR2(30);
87815 l_component_type_code VARCHAR2(1);
87816 l_component_appl_id INTEGER;
87817 l_amb_context_code VARCHAR2(30);
87818 l_entity_code VARCHAR2(30);
87819 l_event_class_code VARCHAR2(30);
87820 l_ae_header_id NUMBER;
87821 l_event_type_code VARCHAR2(30);
87825 -- adr variables
87822 l_line_definition_code VARCHAR2(30);
87823 l_line_definition_owner_code VARCHAR2(1);
87824 --
87826 l_segment VARCHAR2(30);
87827 l_ccid NUMBER;
87828 l_adr_transaction_coa_id NUMBER;
87829 l_adr_accounting_coa_id NUMBER;
87830 l_adr_flexfield_segment_code VARCHAR2(30);
87831 l_adr_flex_value_set_id NUMBER;
87832 l_adr_value_type_code VARCHAR2(30);
87833 l_adr_value_combination_id NUMBER;
87834 l_adr_value_segment_code VARCHAR2(30);
87835
87836 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
87837 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
87838 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
87839 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
87840
87841 -- 4262811 Variables ------------------------------------------------------------------------------------------
87842 l_entered_amt_idx NUMBER;
87843 l_accted_amt_idx NUMBER;
87844 l_acc_rev_flag VARCHAR2(1);
87845 l_accrual_line_num NUMBER;
87846 l_tmp_amt NUMBER;
87847 l_acc_rev_natural_side_code VARCHAR2(1);
87848
87849 l_num_entries NUMBER;
87850 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
87851 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
87852 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
87853 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
87854 l_recog_line_1 NUMBER;
87855 l_recog_line_2 NUMBER;
87856
87857 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
87858 l_bflow_applied_to_amt NUMBER; -- 5132302
87859 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
87860
87861 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87862
87863 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
87864 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
87865
87866 ---------------------------------------------------------------------------------------------------------------
87867
87868
87869 --
87870 -- bulk performance
87871 --
87872 l_balance_type_code VARCHAR2(1);
87873 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
87874 l_log_module VARCHAR2(240);
87875
87876 --
87877 -- Upgrade strategy
87878 --
87879 l_actual_upg_option VARCHAR2(1);
87880 l_enc_upg_option VARCHAR2(1);
87881
87882 --
87883 BEGIN
87884 --
87885 IF g_log_enabled THEN
87886 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_191';
87887 END IF;
87888 --
87889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87890
87891 trace
87892 (p_msg => 'BEGIN of AcctLineType_191'
87893 ,p_level => C_LEVEL_PROCEDURE
87894 ,p_module => l_log_module);
87895
87896 END IF;
87897 --
87898 l_component_type := 'AMB_JLT';
87899 l_component_code := 'IPA';
87900 l_component_type_code := 'S';
87901 l_component_appl_id := 555;
87902 l_amb_context_code := 'DEFAULT';
87903 l_entity_code := 'PURCHASING';
87904 l_event_class_code := 'PAYABLES_INVOICE';
87905 l_event_type_code := 'INVOICE_IPV_ADJ';
87906 l_line_definition_owner_code := 'S';
87907 l_line_definition_code := 'INVOICE_IPV_ADJ';
87908 --
87909 l_balance_type_code := 'A';
87910 l_segment := NULL;
87911 l_ccid := NULL;
87912 l_adr_transaction_coa_id := NULL;
87913 l_adr_accounting_coa_id := NULL;
87914 l_adr_flexfield_segment_code := NULL;
87915 l_adr_flex_value_set_id := NULL;
87916 l_adr_value_type_code := NULL;
87917 l_adr_value_combination_id := NULL;
87918 l_adr_value_segment_code := NULL;
87919
87920 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
87921 l_bflow_class_code := ''; -- 4219869 Business Flow
87922 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
87923 l_budgetary_control_flag := 'N';
87924
87925 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87926 l_bflow_applied_to_amt := NULL; -- 5132302
87927 l_entered_amt_idx := NULL; -- 4262811
87928 l_accted_amt_idx := NULL; -- 4262811
87929 l_acc_rev_flag := NULL; -- 4262811
87930 l_accrual_line_num := NULL; -- 4262811
87931 l_tmp_amt := NULL; -- 4262811
87932 --
87933
87934 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87935 l_balance_type_code <> 'B' THEN
87936 IF NVL(p_source_2,'
87937 ') = 'IPA'
87938 THEN
87939
87940 --
87941 XLA_AE_LINES_PKG.SetNewLine;
87942
87943 p_balance_type_code := l_balance_type_code;
87944 -- set the flag so later we will know whether the gain loss line needs to be created
87945
87946 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87947 p_actual_flag :='A';
87948 END IF;
87949
87950 --
87951 -- bulk performance
87952 --
87953 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87957 --
87954 p_header_num => 0); -- 4262811
87955 --
87956 -- set accounting line options
87958 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87959 p_natural_side_code => 'D'
87960 , p_gain_or_loss_flag => 'N'
87961 , p_gl_transfer_mode_code => 'D'
87962 , p_acct_entry_type_code => 'A'
87963 , p_switch_side_flag => 'Y'
87964 , p_merge_duplicate_code => 'W'
87965 );
87966 --
87967 l_acc_rev_natural_side_code := 'C'; -- 4262811
87968 --
87969 --
87970 -- set accounting line type info
87971 --
87972 xla_ae_lines_pkg.SetAcctLineType
87973 (p_component_type => l_component_type
87974 ,p_event_type_code => l_event_type_code
87975 ,p_line_definition_owner_code => l_line_definition_owner_code
87976 ,p_line_definition_code => l_line_definition_code
87977 ,p_accounting_line_code => l_component_code
87978 ,p_accounting_line_type_code => l_component_type_code
87979 ,p_accounting_line_appl_id => l_component_appl_id
87980 ,p_amb_context_code => l_amb_context_code
87981 ,p_entity_code => l_entity_code
87982 ,p_event_class_code => l_event_class_code);
87983 --
87984 -- set accounting class
87985 --
87986 xla_ae_lines_pkg.SetAcctClass(
87987 p_accounting_class_code => 'IPV'
87988 , p_ae_header_id => l_ae_header_id
87989 );
87990
87991 --
87992 -- set rounding class
87993 --
87994 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87995 'IPV';
87996
87997 --
87998 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87999 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88000 --
88001 -- bulk performance
88002 --
88003 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88004
88005 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88006 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88007
88008 -- 4955764
88009 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88010 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88011
88012 -- 4458381 Public Sector Enh
88013
88014 --
88015 -- set accounting attributes for the line type
88016 --
88017 l_entered_amt_idx := 3;
88018 l_accted_amt_idx := 8;
88019 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88020 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88021 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
88022 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88023 l_rec_acct_attrs.array_char_value(2) := p_source_6;
88024 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88025 l_rec_acct_attrs.array_num_value(3) := p_source_3;
88026 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88027 l_rec_acct_attrs.array_char_value(4) := p_source_7;
88028 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88029 l_rec_acct_attrs.array_date_value(5) := p_source_8;
88030 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88031 l_rec_acct_attrs.array_num_value(6) := p_source_9;
88032 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88033 l_rec_acct_attrs.array_char_value(7) := p_source_10;
88034 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88035 l_rec_acct_attrs.array_num_value(8) := p_source_11;
88036
88037 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88038 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88039
88040 ---------------------------------------------------------------------------------------------------------------
88041 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88042 ---------------------------------------------------------------------------------------------------------------
88043 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88044
88045 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88046 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88047
88048 IF xla_accounting_cache_pkg.GetValueChar
88049 (p_source_code => 'LEDGER_CATEGORY_CODE'
88050 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88051 AND l_bflow_method_code = 'PRIOR_ENTRY'
88052 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88053 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88054 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88055 )
88056 THEN
88057 xla_ae_lines_pkg.BflowUpgEntry
88058 (p_business_method_code => l_bflow_method_code
88059 ,p_business_class_code => l_bflow_class_code
88060 ,p_balance_type => l_balance_type_code);
88061 ELSE
88062 NULL;
88066 --
88063 -- No business flow processing for business flow method of NONE.
88064 END IF;
88065
88067 -- call analytical criteria
88068 --
88069
88070 --
88071 -- call description
88072 --
88073 -- No description or it is inherited.
88074 --
88075 -- call ADRs
88076 -- Bug 4922099
88077 --
88078 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88079 (NVL(l_actual_upg_option, 'N') = 'O') OR
88080 (NVL(l_enc_upg_option, 'N') = 'O')
88081 )
88082 THEN
88083 NULL;
88084 --
88085 --
88086
88087 l_ccid := AcctDerRule_23(
88088 p_application_id => p_application_id
88089 , p_ae_header_id => l_ae_header_id
88090 , p_source_1 => p_source_1
88091 , p_source_2 => p_source_2
88092 , x_transaction_coa_id => l_adr_transaction_coa_id
88093 , x_accounting_coa_id => l_adr_accounting_coa_id
88094 , x_value_type_code => l_adr_value_type_code
88095 , p_side => 'NA'
88096 );
88097
88098 xla_ae_lines_pkg.set_ccid(
88099 p_code_combination_id => l_ccid
88100 , p_value_type_code => l_adr_value_type_code
88101 , p_transaction_coa_id => l_adr_transaction_coa_id
88102 , p_accounting_coa_id => l_adr_accounting_coa_id
88103 , p_adr_code => 'IPA'
88104 , p_adr_type_code => 'S'
88105 , p_component_type => l_component_type
88106 , p_component_code => l_component_code
88107 , p_component_type_code => l_component_type_code
88108 , p_component_appl_id => l_component_appl_id
88109 , p_amb_context_code => l_amb_context_code
88110 , p_side => 'NA'
88111 );
88112
88113
88114 --
88115 --
88116 END IF;
88117 --
88118 -- Bug 4922099
88119 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88120 (NVL(l_enc_upg_option, 'N') = 'O')
88121 ) AND
88122 (l_bflow_method_code = 'PRIOR_ENTRY')
88123 )
88124 THEN
88125 IF
88126 --
88127 1 = 2
88128 --
88129 THEN
88130 xla_accounting_err_pkg.build_message
88131 (p_appli_s_name => 'XLA'
88132 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88133 ,p_token_1 => 'LINE_NUMBER'
88134 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
88135 ,p_token_2 => 'LINE_TYPE_NAME'
88136 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
88137 l_component_type
88138 ,l_component_code
88139 ,l_component_type_code
88140 ,l_component_appl_id
88141 ,l_amb_context_code
88142 ,l_entity_code
88143 ,l_event_class_code
88144 )
88145 ,p_token_3 => 'OWNER'
88146 ,p_value_3 => xla_lookups_pkg.get_meaning(
88147 p_lookup_type => 'XLA_OWNER_TYPE'
88148 ,p_lookup_code => l_component_type_code
88149 )
88150 ,p_token_4 => 'PRODUCT_NAME'
88151 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88152 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88153 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88154 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88155 ,p_ae_header_id => NULL
88156 );
88157
88158 IF (C_LEVEL_ERROR>= g_log_level) THEN
88159 trace
88160 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88161 ,p_level => C_LEVEL_ERROR
88162 ,p_module => l_log_module);
88163 END IF;
88164 END IF;
88165 END IF;
88166 --
88167 --
88168 ------------------------------------------------------------------------------------------------
88169 -- 4219869 Business Flow
88170 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88171 -- Prior Entry. Currently, the following code is always generated.
88172 ------------------------------------------------------------------------------------------------
88173 XLA_AE_LINES_PKG.ValidateCurrentLine;
88177 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88174
88175 ------------------------------------------------------------------------------------
88176 -- 4219869 Business Flow
88178 ------------------------------------------------------------------------------------
88179 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88180
88181 ----------------------------------------------------------------------------------
88182 -- 4219869 Business Flow
88183 -- Update journal entry status -- Need to generate this within IF <condition>
88184 ----------------------------------------------------------------------------------
88185 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88186 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88187 ,p_balance_type_code => l_balance_type_code
88188 );
88189
88190 -------------------------------------------------------------------------------------------
88191 -- 4262811 - Generate the Accrual Reversal lines
88192 -------------------------------------------------------------------------------------------
88193 BEGIN
88194 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88195 (g_array_event(p_event_id).array_value_num('header_index'));
88196 IF l_acc_rev_flag IS NULL THEN
88197 l_acc_rev_flag := 'N';
88198 END IF;
88199 EXCEPTION
88200 WHEN OTHERS THEN
88201 l_acc_rev_flag := 'N';
88202 END;
88203 --
88204 IF (l_acc_rev_flag = 'Y') THEN
88205
88206 -- 4645092 ------------------------------------------------------------------------------
88207 -- To allow MPA report to determine if it should generate report process
88208 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88209 ------------------------------------------------------------------------------------------
88210
88211 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88212 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88213 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
88214 -- call ADRs
88215 -- Bug 4922099
88216 --
88217 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88218 (NVL(l_actual_upg_option, 'N') = 'O') OR
88219 (NVL(l_enc_upg_option, 'N') = 'O')
88220 )
88221 THEN
88222 NULL;
88223 --
88224 --
88225
88226 l_ccid := AcctDerRule_23(
88227 p_application_id => p_application_id
88228 , p_ae_header_id => l_ae_header_id
88229 , p_source_1 => p_source_1
88230 , p_source_2 => p_source_2
88231 , x_transaction_coa_id => l_adr_transaction_coa_id
88232 , x_accounting_coa_id => l_adr_accounting_coa_id
88233 , x_value_type_code => l_adr_value_type_code
88234 , p_side => 'NA'
88235 );
88236
88237 xla_ae_lines_pkg.set_ccid(
88238 p_code_combination_id => l_ccid
88239 , p_value_type_code => l_adr_value_type_code
88240 , p_transaction_coa_id => l_adr_transaction_coa_id
88241 , p_accounting_coa_id => l_adr_accounting_coa_id
88242 , p_adr_code => 'IPA'
88243 , p_adr_type_code => 'S'
88244 , p_component_type => l_component_type
88245 , p_component_code => l_component_code
88246 , p_component_type_code => l_component_type_code
88247 , p_component_appl_id => l_component_appl_id
88248 , p_amb_context_code => l_amb_context_code
88249 , p_side => 'NA'
88250 );
88251
88252
88253 --
88254 --
88255 END IF;
88256
88257 --
88258 -- Update the line information that should be overwritten
88259 --
88260 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88261 p_header_num => 1);
88262 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
88263
88264 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88265
88266 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
88267 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88268 END IF;
88269
88270 --
88271 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88272 --
88273 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88274 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
88275 ELSE
88276 ---------------------------------------------------------------------------------------------------
88277 -- 4262811a Switch Sign
88278 ---------------------------------------------------------------------------------------------------
88279 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
88280 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88281 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88282 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88286 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88283 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88284 -- 5132302
88285 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88287
88288 END IF;
88289
88290 -- 4955764
88291 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88292 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88293
88294
88295 XLA_AE_LINES_PKG.ValidateCurrentLine;
88296 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88297
88298 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88299 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88300 ,p_balance_type_code => l_balance_type_code);
88301
88302 END IF;
88303
88304 -----------------------------------------------------------------------------------------
88305 -- 4262811 Multiperiod Accounting
88306 -----------------------------------------------------------------------------------------
88307 -- No MPA option is assigned.
88308
88309
88310 END IF;
88311 END IF;
88312 --
88313
88314 --
88315 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88316 trace
88317 (p_msg => 'END of AcctLineType_191'
88318 ,p_level => C_LEVEL_PROCEDURE
88319 ,p_module => l_log_module);
88320 END IF;
88321 --
88322 EXCEPTION
88323 WHEN xla_exceptions_pkg.application_exception THEN
88324 RAISE;
88325 WHEN OTHERS THEN
88326 xla_exceptions_pkg.raise_message
88327 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_191');
88328 END AcctLineType_191;
88329 --
88330
88331 ---------------------------------------
88332 --
88333 -- PRIVATE FUNCTION
88334 -- AcctLineType_192
88335 --
88336 ---------------------------------------
88337 PROCEDURE AcctLineType_192 (
88338 p_application_id IN NUMBER
88339 ,p_event_id IN NUMBER
88340 ,p_calculate_acctd_flag IN VARCHAR2
88341 ,p_calculate_g_l_flag IN VARCHAR2
88342 ,p_actual_flag IN OUT VARCHAR2
88343 ,p_balance_type_code OUT VARCHAR2
88344 ,p_gain_or_loss_ref OUT VARCHAR2
88345
88346 --Transaction Account
88347 , p_source_1 IN NUMBER
88348 --Journal Line Type
88349 , p_source_2 IN VARCHAR2
88350 --Entered Amount
88351 , p_source_3 IN NUMBER
88352 --First Distribution Identifier
88353 , p_source_5 IN NUMBER
88354 --Distribution Type
88355 , p_source_6 IN VARCHAR2
88356 --Currency Code
88357 , p_source_7 IN VARCHAR2
88358 --Currency Conversion Date
88359 , p_source_8 IN DATE
88360 --Currency Conversion Rate
88361 , p_source_9 IN NUMBER
88362 --Currency Conversion Type
88363 , p_source_10 IN VARCHAR2
88364 --Accounted Amount
88365 , p_source_11 IN NUMBER
88366 )
88367 IS
88368
88369 l_component_type VARCHAR2(80);
88370 l_component_code VARCHAR2(30);
88371 l_component_type_code VARCHAR2(1);
88372 l_component_appl_id INTEGER;
88373 l_amb_context_code VARCHAR2(30);
88374 l_entity_code VARCHAR2(30);
88375 l_event_class_code VARCHAR2(30);
88376 l_ae_header_id NUMBER;
88377 l_event_type_code VARCHAR2(30);
88378 l_line_definition_code VARCHAR2(30);
88379 l_line_definition_owner_code VARCHAR2(1);
88380 --
88381 -- adr variables
88382 l_segment VARCHAR2(30);
88383 l_ccid NUMBER;
88384 l_adr_transaction_coa_id NUMBER;
88385 l_adr_accounting_coa_id NUMBER;
88386 l_adr_flexfield_segment_code VARCHAR2(30);
88387 l_adr_flex_value_set_id NUMBER;
88388 l_adr_value_type_code VARCHAR2(30);
88389 l_adr_value_combination_id NUMBER;
88390 l_adr_value_segment_code VARCHAR2(30);
88391
88392 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
88393 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
88394 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
88395 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
88396
88397 -- 4262811 Variables ------------------------------------------------------------------------------------------
88398 l_entered_amt_idx NUMBER;
88399 l_accted_amt_idx NUMBER;
88400 l_acc_rev_flag VARCHAR2(1);
88401 l_accrual_line_num NUMBER;
88402 l_tmp_amt NUMBER;
88403 l_acc_rev_natural_side_code VARCHAR2(1);
88404
88405 l_num_entries NUMBER;
88406 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
88407 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
88408 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
88409 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
88410 l_recog_line_1 NUMBER;
88411 l_recog_line_2 NUMBER;
88412
88413 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
88414 l_bflow_applied_to_amt NUMBER; -- 5132302
88418
88415 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
88416
88417 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88419 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
88420 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
88421
88422 ---------------------------------------------------------------------------------------------------------------
88423
88424
88425 --
88426 -- bulk performance
88427 --
88428 l_balance_type_code VARCHAR2(1);
88429 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
88430 l_log_module VARCHAR2(240);
88431
88432 --
88433 -- Upgrade strategy
88434 --
88435 l_actual_upg_option VARCHAR2(1);
88436 l_enc_upg_option VARCHAR2(1);
88437
88438 --
88439 BEGIN
88440 --
88441 IF g_log_enabled THEN
88442 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_192';
88443 END IF;
88444 --
88445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88446
88447 trace
88448 (p_msg => 'BEGIN of AcctLineType_192'
88449 ,p_level => C_LEVEL_PROCEDURE
88450 ,p_module => l_log_module);
88451
88452 END IF;
88453 --
88454 l_component_type := 'AMB_JLT';
88455 l_component_code := 'IRV';
88456 l_component_type_code := 'S';
88457 l_component_appl_id := 555;
88458 l_amb_context_code := 'DEFAULT';
88459 l_entity_code := 'REVALUATION';
88460 l_event_class_code := 'LOTCOSTADJ';
88461 l_event_type_code := 'LOTCOSTADJ';
88462 l_line_definition_owner_code := 'S';
88463 l_line_definition_code := 'LOTCOSTADJ';
88464 --
88465 l_balance_type_code := 'A';
88466 l_segment := NULL;
88467 l_ccid := NULL;
88468 l_adr_transaction_coa_id := NULL;
88469 l_adr_accounting_coa_id := NULL;
88470 l_adr_flexfield_segment_code := NULL;
88471 l_adr_flex_value_set_id := NULL;
88472 l_adr_value_type_code := NULL;
88473 l_adr_value_combination_id := NULL;
88474 l_adr_value_segment_code := NULL;
88475
88476 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
88477 l_bflow_class_code := ''; -- 4219869 Business Flow
88478 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
88479 l_budgetary_control_flag := 'N';
88480
88481 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88482 l_bflow_applied_to_amt := NULL; -- 5132302
88483 l_entered_amt_idx := NULL; -- 4262811
88484 l_accted_amt_idx := NULL; -- 4262811
88485 l_acc_rev_flag := NULL; -- 4262811
88486 l_accrual_line_num := NULL; -- 4262811
88487 l_tmp_amt := NULL; -- 4262811
88488 --
88489
88490 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88491 l_balance_type_code <> 'B' THEN
88492 IF NVL(p_source_2,'
88493 ') = 'IRV'
88494 THEN
88495
88496 --
88497 XLA_AE_LINES_PKG.SetNewLine;
88498
88499 p_balance_type_code := l_balance_type_code;
88500 -- set the flag so later we will know whether the gain loss line needs to be created
88501
88502 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88503 p_actual_flag :='A';
88504 END IF;
88505
88506 --
88507 -- bulk performance
88508 --
88509 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88510 p_header_num => 0); -- 4262811
88511 --
88512 -- set accounting line options
88513 --
88514 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88515 p_natural_side_code => 'D'
88516 , p_gain_or_loss_flag => 'N'
88517 , p_gl_transfer_mode_code => 'D'
88518 , p_acct_entry_type_code => 'A'
88519 , p_switch_side_flag => 'Y'
88520 , p_merge_duplicate_code => 'W'
88521 );
88522 --
88523 l_acc_rev_natural_side_code := 'C'; -- 4262811
88524 --
88525 --
88526 -- set accounting line type info
88527 --
88528 xla_ae_lines_pkg.SetAcctLineType
88529 (p_component_type => l_component_type
88530 ,p_event_type_code => l_event_type_code
88531 ,p_line_definition_owner_code => l_line_definition_owner_code
88532 ,p_line_definition_code => l_line_definition_code
88533 ,p_accounting_line_code => l_component_code
88534 ,p_accounting_line_type_code => l_component_type_code
88535 ,p_accounting_line_appl_id => l_component_appl_id
88536 ,p_amb_context_code => l_amb_context_code
88537 ,p_entity_code => l_entity_code
88538 ,p_event_class_code => l_event_class_code);
88539 --
88540 -- set accounting class
88541 --
88542 xla_ae_lines_pkg.SetAcctClass(
88543 p_accounting_class_code => 'IRV'
88544 , p_ae_header_id => l_ae_header_id
88545 );
88546
88547 --
88548 -- set rounding class
88549 --
88550 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88551 'IRV';
88552
88553 --
88557 -- bulk performance
88554 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88555 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88556 --
88558 --
88559 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88560
88561 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88562 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88563
88564 -- 4955764
88565 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88566 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88567
88568 -- 4458381 Public Sector Enh
88569
88570 --
88571 -- set accounting attributes for the line type
88572 --
88573 l_entered_amt_idx := 3;
88574 l_accted_amt_idx := 8;
88575 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88576 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88577 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
88578 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88579 l_rec_acct_attrs.array_char_value(2) := p_source_6;
88580 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88581 l_rec_acct_attrs.array_num_value(3) := p_source_3;
88582 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88583 l_rec_acct_attrs.array_char_value(4) := p_source_7;
88584 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88585 l_rec_acct_attrs.array_date_value(5) := p_source_8;
88586 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88587 l_rec_acct_attrs.array_num_value(6) := p_source_9;
88588 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88589 l_rec_acct_attrs.array_char_value(7) := p_source_10;
88590 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88591 l_rec_acct_attrs.array_num_value(8) := p_source_11;
88592
88593 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88594 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88595
88596 ---------------------------------------------------------------------------------------------------------------
88597 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88598 ---------------------------------------------------------------------------------------------------------------
88599 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88600
88601 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88602 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88603
88604 IF xla_accounting_cache_pkg.GetValueChar
88605 (p_source_code => 'LEDGER_CATEGORY_CODE'
88606 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88607 AND l_bflow_method_code = 'PRIOR_ENTRY'
88608 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88609 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88610 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88611 )
88612 THEN
88613 xla_ae_lines_pkg.BflowUpgEntry
88614 (p_business_method_code => l_bflow_method_code
88615 ,p_business_class_code => l_bflow_class_code
88616 ,p_balance_type => l_balance_type_code);
88617 ELSE
88618 NULL;
88619 -- No business flow processing for business flow method of NONE.
88620 END IF;
88621
88622 --
88623 -- call analytical criteria
88624 --
88625
88626 --
88627 -- call description
88628 --
88629 -- No description or it is inherited.
88630 --
88631 -- call ADRs
88632 -- Bug 4922099
88633 --
88634 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88635 (NVL(l_actual_upg_option, 'N') = 'O') OR
88636 (NVL(l_enc_upg_option, 'N') = 'O')
88637 )
88638 THEN
88639 NULL;
88640 --
88641 --
88642
88643 l_ccid := AcctDerRule_24(
88644 p_application_id => p_application_id
88645 , p_ae_header_id => l_ae_header_id
88646 , p_source_1 => p_source_1
88647 , p_source_2 => p_source_2
88648 , x_transaction_coa_id => l_adr_transaction_coa_id
88649 , x_accounting_coa_id => l_adr_accounting_coa_id
88650 , x_value_type_code => l_adr_value_type_code
88651 , p_side => 'NA'
88652 );
88653
88654 xla_ae_lines_pkg.set_ccid(
88655 p_code_combination_id => l_ccid
88656 , p_value_type_code => l_adr_value_type_code
88657 , p_transaction_coa_id => l_adr_transaction_coa_id
88658 , p_accounting_coa_id => l_adr_accounting_coa_id
88659 , p_adr_code => 'IRV'
88660 , p_adr_type_code => 'S'
88661 , p_component_type => l_component_type
88662 , p_component_code => l_component_code
88663 , p_component_type_code => l_component_type_code
88664 , p_component_appl_id => l_component_appl_id
88665 , p_amb_context_code => l_amb_context_code
88669
88666 , p_side => 'NA'
88667 );
88668
88670 --
88671 --
88672 END IF;
88673 --
88674 -- Bug 4922099
88675 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88676 (NVL(l_enc_upg_option, 'N') = 'O')
88677 ) AND
88678 (l_bflow_method_code = 'PRIOR_ENTRY')
88679 )
88680 THEN
88681 IF
88682 --
88683 1 = 2
88684 --
88685 THEN
88686 xla_accounting_err_pkg.build_message
88687 (p_appli_s_name => 'XLA'
88688 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88689 ,p_token_1 => 'LINE_NUMBER'
88690 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
88691 ,p_token_2 => 'LINE_TYPE_NAME'
88692 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
88693 l_component_type
88694 ,l_component_code
88695 ,l_component_type_code
88696 ,l_component_appl_id
88697 ,l_amb_context_code
88698 ,l_entity_code
88699 ,l_event_class_code
88700 )
88701 ,p_token_3 => 'OWNER'
88702 ,p_value_3 => xla_lookups_pkg.get_meaning(
88703 p_lookup_type => 'XLA_OWNER_TYPE'
88704 ,p_lookup_code => l_component_type_code
88705 )
88706 ,p_token_4 => 'PRODUCT_NAME'
88707 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88708 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88709 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88710 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88711 ,p_ae_header_id => NULL
88712 );
88713
88714 IF (C_LEVEL_ERROR>= g_log_level) THEN
88715 trace
88716 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88717 ,p_level => C_LEVEL_ERROR
88718 ,p_module => l_log_module);
88719 END IF;
88720 END IF;
88721 END IF;
88722 --
88723 --
88724 ------------------------------------------------------------------------------------------------
88725 -- 4219869 Business Flow
88726 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88727 -- Prior Entry. Currently, the following code is always generated.
88728 ------------------------------------------------------------------------------------------------
88729 XLA_AE_LINES_PKG.ValidateCurrentLine;
88730
88731 ------------------------------------------------------------------------------------
88732 -- 4219869 Business Flow
88733 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88734 ------------------------------------------------------------------------------------
88735 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88736
88737 ----------------------------------------------------------------------------------
88738 -- 4219869 Business Flow
88739 -- Update journal entry status -- Need to generate this within IF <condition>
88740 ----------------------------------------------------------------------------------
88741 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88742 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88743 ,p_balance_type_code => l_balance_type_code
88744 );
88745
88746 -------------------------------------------------------------------------------------------
88747 -- 4262811 - Generate the Accrual Reversal lines
88748 -------------------------------------------------------------------------------------------
88749 BEGIN
88750 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88751 (g_array_event(p_event_id).array_value_num('header_index'));
88752 IF l_acc_rev_flag IS NULL THEN
88753 l_acc_rev_flag := 'N';
88754 END IF;
88755 EXCEPTION
88756 WHEN OTHERS THEN
88757 l_acc_rev_flag := 'N';
88758 END;
88759 --
88760 IF (l_acc_rev_flag = 'Y') THEN
88761
88762 -- 4645092 ------------------------------------------------------------------------------
88763 -- To allow MPA report to determine if it should generate report process
88767 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88764 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88765 ------------------------------------------------------------------------------------------
88766
88768 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88769 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
88770 -- call ADRs
88771 -- Bug 4922099
88772 --
88773 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88774 (NVL(l_actual_upg_option, 'N') = 'O') OR
88775 (NVL(l_enc_upg_option, 'N') = 'O')
88776 )
88777 THEN
88778 NULL;
88779 --
88780 --
88781
88782 l_ccid := AcctDerRule_24(
88783 p_application_id => p_application_id
88784 , p_ae_header_id => l_ae_header_id
88785 , p_source_1 => p_source_1
88786 , p_source_2 => p_source_2
88787 , x_transaction_coa_id => l_adr_transaction_coa_id
88788 , x_accounting_coa_id => l_adr_accounting_coa_id
88789 , x_value_type_code => l_adr_value_type_code
88790 , p_side => 'NA'
88791 );
88792
88793 xla_ae_lines_pkg.set_ccid(
88794 p_code_combination_id => l_ccid
88795 , p_value_type_code => l_adr_value_type_code
88796 , p_transaction_coa_id => l_adr_transaction_coa_id
88797 , p_accounting_coa_id => l_adr_accounting_coa_id
88798 , p_adr_code => 'IRV'
88799 , p_adr_type_code => 'S'
88800 , p_component_type => l_component_type
88801 , p_component_code => l_component_code
88802 , p_component_type_code => l_component_type_code
88803 , p_component_appl_id => l_component_appl_id
88804 , p_amb_context_code => l_amb_context_code
88805 , p_side => 'NA'
88806 );
88807
88808
88809 --
88810 --
88811 END IF;
88812
88813 --
88814 -- Update the line information that should be overwritten
88815 --
88816 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88817 p_header_num => 1);
88818 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
88819
88820 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88821
88822 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
88823 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88824 END IF;
88825
88826 --
88827 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88828 --
88829 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88830 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
88831 ELSE
88832 ---------------------------------------------------------------------------------------------------
88833 -- 4262811a Switch Sign
88834 ---------------------------------------------------------------------------------------------------
88835 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
88836 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88837 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88838 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88839 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88840 -- 5132302
88841 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88842 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88843
88844 END IF;
88845
88846 -- 4955764
88847 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88848 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88849
88850
88851 XLA_AE_LINES_PKG.ValidateCurrentLine;
88852 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88853
88854 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88855 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88856 ,p_balance_type_code => l_balance_type_code);
88857
88858 END IF;
88859
88860 -----------------------------------------------------------------------------------------
88861 -- 4262811 Multiperiod Accounting
88862 -----------------------------------------------------------------------------------------
88863 -- No MPA option is assigned.
88864
88865
88866 END IF;
88867 END IF;
88868 --
88869
88870 --
88871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88872 trace
88873 (p_msg => 'END of AcctLineType_192'
88874 ,p_level => C_LEVEL_PROCEDURE
88875 ,p_module => l_log_module);
88876 END IF;
88877 --
88878 EXCEPTION
88879 WHEN xla_exceptions_pkg.application_exception THEN
88880 RAISE;
88881 WHEN OTHERS THEN
88885 --
88882 xla_exceptions_pkg.raise_message
88883 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_192');
88884 END AcctLineType_192;
88886
88887 ---------------------------------------
88888 --
88889 -- PRIVATE FUNCTION
88890 -- AcctLineType_193
88891 --
88892 ---------------------------------------
88893 PROCEDURE AcctLineType_193 (
88894 p_application_id IN NUMBER
88895 ,p_event_id IN NUMBER
88896 ,p_calculate_acctd_flag IN VARCHAR2
88897 ,p_calculate_g_l_flag IN VARCHAR2
88898 ,p_actual_flag IN OUT VARCHAR2
88899 ,p_balance_type_code OUT VARCHAR2
88900 ,p_gain_or_loss_ref OUT VARCHAR2
88901
88902 --Transaction Account
88903 , p_source_1 IN NUMBER
88904 --Journal Line Type
88905 , p_source_2 IN VARCHAR2
88906 --Entered Amount
88907 , p_source_3 IN NUMBER
88908 --First Distribution Identifier
88909 , p_source_5 IN NUMBER
88910 --Distribution Type
88911 , p_source_6 IN VARCHAR2
88912 --Currency Code
88913 , p_source_7 IN VARCHAR2
88914 --Currency Conversion Date
88915 , p_source_8 IN DATE
88916 --Currency Conversion Rate
88917 , p_source_9 IN NUMBER
88918 --Currency Conversion Type
88919 , p_source_10 IN VARCHAR2
88920 --Accounted Amount
88921 , p_source_11 IN NUMBER
88922 )
88923 IS
88924
88925 l_component_type VARCHAR2(80);
88926 l_component_code VARCHAR2(30);
88927 l_component_type_code VARCHAR2(1);
88928 l_component_appl_id INTEGER;
88929 l_amb_context_code VARCHAR2(30);
88930 l_entity_code VARCHAR2(30);
88931 l_event_class_code VARCHAR2(30);
88932 l_ae_header_id NUMBER;
88933 l_event_type_code VARCHAR2(30);
88934 l_line_definition_code VARCHAR2(30);
88935 l_line_definition_owner_code VARCHAR2(1);
88936 --
88937 -- adr variables
88938 l_segment VARCHAR2(30);
88939 l_ccid NUMBER;
88940 l_adr_transaction_coa_id NUMBER;
88941 l_adr_accounting_coa_id NUMBER;
88942 l_adr_flexfield_segment_code VARCHAR2(30);
88943 l_adr_flex_value_set_id NUMBER;
88944 l_adr_value_type_code VARCHAR2(30);
88945 l_adr_value_combination_id NUMBER;
88946 l_adr_value_segment_code VARCHAR2(30);
88947
88948 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
88949 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
88950 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
88951 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
88952
88953 -- 4262811 Variables ------------------------------------------------------------------------------------------
88954 l_entered_amt_idx NUMBER;
88955 l_accted_amt_idx NUMBER;
88956 l_acc_rev_flag VARCHAR2(1);
88957 l_accrual_line_num NUMBER;
88958 l_tmp_amt NUMBER;
88959 l_acc_rev_natural_side_code VARCHAR2(1);
88960
88961 l_num_entries NUMBER;
88962 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
88963 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
88964 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
88965 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
88966 l_recog_line_1 NUMBER;
88967 l_recog_line_2 NUMBER;
88968
88969 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
88970 l_bflow_applied_to_amt NUMBER; -- 5132302
88971 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
88972
88973 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88974
88975 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
88976 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
88977
88978 ---------------------------------------------------------------------------------------------------------------
88979
88980
88981 --
88982 -- bulk performance
88983 --
88984 l_balance_type_code VARCHAR2(1);
88985 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
88986 l_log_module VARCHAR2(240);
88987
88988 --
88989 -- Upgrade strategy
88990 --
88991 l_actual_upg_option VARCHAR2(1);
88992 l_enc_upg_option VARCHAR2(1);
88993
88994 --
88995 BEGIN
88996 --
88997 IF g_log_enabled THEN
88998 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_193';
88999 END IF;
89000 --
89001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89002
89003 trace
89004 (p_msg => 'BEGIN of AcctLineType_193'
89005 ,p_level => C_LEVEL_PROCEDURE
89006 ,p_module => l_log_module);
89007
89008 END IF;
89009 --
89010 l_component_type := 'AMB_JLT';
89011 l_component_code := 'IRV';
89012 l_component_type_code := 'S';
89013 l_component_appl_id := 555;
89014 l_amb_context_code := 'DEFAULT';
89015 l_entity_code := 'REVALUATION';
89016 l_event_class_code := 'COSTREVAL';
89017 l_event_type_code := 'COSTREVAL';
89018 l_line_definition_owner_code := 'S';
89019 l_line_definition_code := 'COSTREVAL';
89023 l_ccid := NULL;
89020 --
89021 l_balance_type_code := 'A';
89022 l_segment := NULL;
89024 l_adr_transaction_coa_id := NULL;
89025 l_adr_accounting_coa_id := NULL;
89026 l_adr_flexfield_segment_code := NULL;
89027 l_adr_flex_value_set_id := NULL;
89028 l_adr_value_type_code := NULL;
89029 l_adr_value_combination_id := NULL;
89030 l_adr_value_segment_code := NULL;
89031
89032 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
89033 l_bflow_class_code := ''; -- 4219869 Business Flow
89034 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
89035 l_budgetary_control_flag := 'N';
89036
89037 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89038 l_bflow_applied_to_amt := NULL; -- 5132302
89039 l_entered_amt_idx := NULL; -- 4262811
89040 l_accted_amt_idx := NULL; -- 4262811
89041 l_acc_rev_flag := NULL; -- 4262811
89042 l_accrual_line_num := NULL; -- 4262811
89043 l_tmp_amt := NULL; -- 4262811
89044 --
89045
89046 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89047 l_balance_type_code <> 'B' THEN
89048 IF NVL(p_source_2,'
89049 ') = 'IRV'
89050 THEN
89051
89052 --
89053 XLA_AE_LINES_PKG.SetNewLine;
89054
89055 p_balance_type_code := l_balance_type_code;
89056 -- set the flag so later we will know whether the gain loss line needs to be created
89057
89058 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89059 p_actual_flag :='A';
89060 END IF;
89061
89062 --
89063 -- bulk performance
89064 --
89065 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89066 p_header_num => 0); -- 4262811
89067 --
89068 -- set accounting line options
89069 --
89070 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89071 p_natural_side_code => 'D'
89072 , p_gain_or_loss_flag => 'N'
89073 , p_gl_transfer_mode_code => 'D'
89074 , p_acct_entry_type_code => 'A'
89075 , p_switch_side_flag => 'Y'
89076 , p_merge_duplicate_code => 'W'
89077 );
89078 --
89079 l_acc_rev_natural_side_code := 'C'; -- 4262811
89080 --
89081 --
89082 -- set accounting line type info
89083 --
89084 xla_ae_lines_pkg.SetAcctLineType
89085 (p_component_type => l_component_type
89086 ,p_event_type_code => l_event_type_code
89087 ,p_line_definition_owner_code => l_line_definition_owner_code
89088 ,p_line_definition_code => l_line_definition_code
89089 ,p_accounting_line_code => l_component_code
89090 ,p_accounting_line_type_code => l_component_type_code
89091 ,p_accounting_line_appl_id => l_component_appl_id
89092 ,p_amb_context_code => l_amb_context_code
89093 ,p_entity_code => l_entity_code
89094 ,p_event_class_code => l_event_class_code);
89095 --
89096 -- set accounting class
89097 --
89098 xla_ae_lines_pkg.SetAcctClass(
89099 p_accounting_class_code => 'IRV'
89100 , p_ae_header_id => l_ae_header_id
89101 );
89102
89103 --
89104 -- set rounding class
89105 --
89106 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89107 'IRV';
89108
89109 --
89110 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89111 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89112 --
89113 -- bulk performance
89114 --
89115 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89116
89117 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89118 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89119
89120 -- 4955764
89121 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89122 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89123
89124 -- 4458381 Public Sector Enh
89125
89126 --
89127 -- set accounting attributes for the line type
89128 --
89129 l_entered_amt_idx := 3;
89130 l_accted_amt_idx := 8;
89131 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89132 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89133 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
89134 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89135 l_rec_acct_attrs.array_char_value(2) := p_source_6;
89136 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89137 l_rec_acct_attrs.array_num_value(3) := p_source_3;
89138 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89139 l_rec_acct_attrs.array_char_value(4) := p_source_7;
89140 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89141 l_rec_acct_attrs.array_date_value(5) := p_source_8;
89142 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89146 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89143 l_rec_acct_attrs.array_num_value(6) := p_source_9;
89144 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89145 l_rec_acct_attrs.array_char_value(7) := p_source_10;
89147 l_rec_acct_attrs.array_num_value(8) := p_source_11;
89148
89149 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89150 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89151
89152 ---------------------------------------------------------------------------------------------------------------
89153 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89154 ---------------------------------------------------------------------------------------------------------------
89155 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89156
89157 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89158 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89159
89160 IF xla_accounting_cache_pkg.GetValueChar
89161 (p_source_code => 'LEDGER_CATEGORY_CODE'
89162 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89163 AND l_bflow_method_code = 'PRIOR_ENTRY'
89164 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89165 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89166 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89167 )
89168 THEN
89169 xla_ae_lines_pkg.BflowUpgEntry
89170 (p_business_method_code => l_bflow_method_code
89171 ,p_business_class_code => l_bflow_class_code
89172 ,p_balance_type => l_balance_type_code);
89173 ELSE
89174 NULL;
89175 -- No business flow processing for business flow method of NONE.
89176 END IF;
89177
89178 --
89179 -- call analytical criteria
89180 --
89181
89182 --
89183 -- call description
89184 --
89185 -- No description or it is inherited.
89186 --
89187 -- call ADRs
89188 -- Bug 4922099
89189 --
89190 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89191 (NVL(l_actual_upg_option, 'N') = 'O') OR
89192 (NVL(l_enc_upg_option, 'N') = 'O')
89193 )
89194 THEN
89195 NULL;
89196 --
89197 --
89198
89199 l_ccid := AcctDerRule_24(
89200 p_application_id => p_application_id
89201 , p_ae_header_id => l_ae_header_id
89202 , p_source_1 => p_source_1
89203 , p_source_2 => p_source_2
89204 , x_transaction_coa_id => l_adr_transaction_coa_id
89205 , x_accounting_coa_id => l_adr_accounting_coa_id
89206 , x_value_type_code => l_adr_value_type_code
89207 , p_side => 'NA'
89208 );
89209
89210 xla_ae_lines_pkg.set_ccid(
89211 p_code_combination_id => l_ccid
89212 , p_value_type_code => l_adr_value_type_code
89213 , p_transaction_coa_id => l_adr_transaction_coa_id
89214 , p_accounting_coa_id => l_adr_accounting_coa_id
89215 , p_adr_code => 'IRV'
89216 , p_adr_type_code => 'S'
89217 , p_component_type => l_component_type
89218 , p_component_code => l_component_code
89219 , p_component_type_code => l_component_type_code
89220 , p_component_appl_id => l_component_appl_id
89221 , p_amb_context_code => l_amb_context_code
89222 , p_side => 'NA'
89223 );
89224
89225
89226 --
89227 --
89228 END IF;
89229 --
89230 -- Bug 4922099
89231 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89232 (NVL(l_enc_upg_option, 'N') = 'O')
89233 ) AND
89234 (l_bflow_method_code = 'PRIOR_ENTRY')
89235 )
89236 THEN
89237 IF
89238 --
89239 1 = 2
89240 --
89241 THEN
89242 xla_accounting_err_pkg.build_message
89243 (p_appli_s_name => 'XLA'
89244 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89245 ,p_token_1 => 'LINE_NUMBER'
89246 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
89247 ,p_token_2 => 'LINE_TYPE_NAME'
89248 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
89249 l_component_type
89250 ,l_component_code
89251 ,l_component_type_code
89252 ,l_component_appl_id
89253 ,l_amb_context_code
89254 ,l_entity_code
89255 ,l_event_class_code
89259 p_lookup_type => 'XLA_OWNER_TYPE'
89256 )
89257 ,p_token_3 => 'OWNER'
89258 ,p_value_3 => xla_lookups_pkg.get_meaning(
89260 ,p_lookup_code => l_component_type_code
89261 )
89262 ,p_token_4 => 'PRODUCT_NAME'
89263 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89264 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89265 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89266 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89267 ,p_ae_header_id => NULL
89268 );
89269
89270 IF (C_LEVEL_ERROR>= g_log_level) THEN
89271 trace
89272 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89273 ,p_level => C_LEVEL_ERROR
89274 ,p_module => l_log_module);
89275 END IF;
89276 END IF;
89277 END IF;
89278 --
89279 --
89280 ------------------------------------------------------------------------------------------------
89281 -- 4219869 Business Flow
89282 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89283 -- Prior Entry. Currently, the following code is always generated.
89284 ------------------------------------------------------------------------------------------------
89285 XLA_AE_LINES_PKG.ValidateCurrentLine;
89286
89287 ------------------------------------------------------------------------------------
89288 -- 4219869 Business Flow
89289 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89290 ------------------------------------------------------------------------------------
89291 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89292
89293 ----------------------------------------------------------------------------------
89294 -- 4219869 Business Flow
89295 -- Update journal entry status -- Need to generate this within IF <condition>
89296 ----------------------------------------------------------------------------------
89297 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89298 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89299 ,p_balance_type_code => l_balance_type_code
89300 );
89301
89302 -------------------------------------------------------------------------------------------
89303 -- 4262811 - Generate the Accrual Reversal lines
89304 -------------------------------------------------------------------------------------------
89305 BEGIN
89306 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89307 (g_array_event(p_event_id).array_value_num('header_index'));
89308 IF l_acc_rev_flag IS NULL THEN
89309 l_acc_rev_flag := 'N';
89310 END IF;
89311 EXCEPTION
89312 WHEN OTHERS THEN
89313 l_acc_rev_flag := 'N';
89314 END;
89315 --
89316 IF (l_acc_rev_flag = 'Y') THEN
89317
89318 -- 4645092 ------------------------------------------------------------------------------
89319 -- To allow MPA report to determine if it should generate report process
89320 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89321 ------------------------------------------------------------------------------------------
89322
89323 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89324 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89325 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
89326 -- call ADRs
89327 -- Bug 4922099
89328 --
89329 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89330 (NVL(l_actual_upg_option, 'N') = 'O') OR
89331 (NVL(l_enc_upg_option, 'N') = 'O')
89332 )
89333 THEN
89334 NULL;
89335 --
89336 --
89337
89338 l_ccid := AcctDerRule_24(
89339 p_application_id => p_application_id
89340 , p_ae_header_id => l_ae_header_id
89341 , p_source_1 => p_source_1
89342 , p_source_2 => p_source_2
89343 , x_transaction_coa_id => l_adr_transaction_coa_id
89344 , x_accounting_coa_id => l_adr_accounting_coa_id
89345 , x_value_type_code => l_adr_value_type_code
89346 , p_side => 'NA'
89347 );
89348
89349 xla_ae_lines_pkg.set_ccid(
89350 p_code_combination_id => l_ccid
89351 , p_value_type_code => l_adr_value_type_code
89352 , p_transaction_coa_id => l_adr_transaction_coa_id
89353 , p_accounting_coa_id => l_adr_accounting_coa_id
89354 , p_adr_code => 'IRV'
89355 , p_adr_type_code => 'S'
89356 , p_component_type => l_component_type
89357 , p_component_code => l_component_code
89361 , p_side => 'NA'
89358 , p_component_type_code => l_component_type_code
89359 , p_component_appl_id => l_component_appl_id
89360 , p_amb_context_code => l_amb_context_code
89362 );
89363
89364
89365 --
89366 --
89367 END IF;
89368
89369 --
89370 -- Update the line information that should be overwritten
89371 --
89372 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89373 p_header_num => 1);
89374 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
89375
89376 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89377
89378 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
89379 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89380 END IF;
89381
89382 --
89383 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89384 --
89385 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89386 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
89387 ELSE
89388 ---------------------------------------------------------------------------------------------------
89389 -- 4262811a Switch Sign
89390 ---------------------------------------------------------------------------------------------------
89391 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
89392 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89393 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89394 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89395 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89396 -- 5132302
89397 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89398 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89399
89400 END IF;
89401
89402 -- 4955764
89403 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89404 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89405
89406
89407 XLA_AE_LINES_PKG.ValidateCurrentLine;
89408 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89409
89410 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89411 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89412 ,p_balance_type_code => l_balance_type_code);
89413
89414 END IF;
89415
89416 -----------------------------------------------------------------------------------------
89417 -- 4262811 Multiperiod Accounting
89418 -----------------------------------------------------------------------------------------
89419 -- No MPA option is assigned.
89420
89421
89422 END IF;
89423 END IF;
89424 --
89425
89426 --
89427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89428 trace
89429 (p_msg => 'END of AcctLineType_193'
89430 ,p_level => C_LEVEL_PROCEDURE
89431 ,p_module => l_log_module);
89432 END IF;
89433 --
89434 EXCEPTION
89435 WHEN xla_exceptions_pkg.application_exception THEN
89436 RAISE;
89437 WHEN OTHERS THEN
89438 xla_exceptions_pkg.raise_message
89439 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_193');
89440 END AcctLineType_193;
89441 --
89442
89443 ---------------------------------------
89444 --
89445 -- PRIVATE FUNCTION
89446 -- AcctLineType_194
89447 --
89448 ---------------------------------------
89449 PROCEDURE AcctLineType_194 (
89450 p_application_id IN NUMBER
89451 ,p_event_id IN NUMBER
89452 ,p_calculate_acctd_flag IN VARCHAR2
89453 ,p_calculate_g_l_flag IN VARCHAR2
89454 ,p_actual_flag IN OUT VARCHAR2
89455 ,p_balance_type_code OUT VARCHAR2
89456 ,p_gain_or_loss_ref OUT VARCHAR2
89457
89458 --Transaction Account
89459 , p_source_1 IN NUMBER
89460 --Journal Line Type
89461 , p_source_2 IN VARCHAR2
89462 --Entered Amount
89463 , p_source_3 IN NUMBER
89464 --First Distribution Identifier
89465 , p_source_5 IN NUMBER
89466 --Distribution Type
89467 , p_source_6 IN VARCHAR2
89468 --Currency Code
89469 , p_source_7 IN VARCHAR2
89470 --Currency Conversion Date
89471 , p_source_8 IN DATE
89472 --Currency Conversion Rate
89473 , p_source_9 IN NUMBER
89474 --Currency Conversion Type
89475 , p_source_10 IN VARCHAR2
89476 --Accounted Amount
89477 , p_source_11 IN NUMBER
89478 )
89479 IS
89480
89481 l_component_type VARCHAR2(80);
89482 l_component_code VARCHAR2(30);
89483 l_component_type_code VARCHAR2(1);
89484 l_component_appl_id INTEGER;
89485 l_amb_context_code VARCHAR2(30);
89489 l_event_type_code VARCHAR2(30);
89486 l_entity_code VARCHAR2(30);
89487 l_event_class_code VARCHAR2(30);
89488 l_ae_header_id NUMBER;
89490 l_line_definition_code VARCHAR2(30);
89491 l_line_definition_owner_code VARCHAR2(1);
89492 --
89493 -- adr variables
89494 l_segment VARCHAR2(30);
89495 l_ccid NUMBER;
89496 l_adr_transaction_coa_id NUMBER;
89497 l_adr_accounting_coa_id NUMBER;
89498 l_adr_flexfield_segment_code VARCHAR2(30);
89499 l_adr_flex_value_set_id NUMBER;
89500 l_adr_value_type_code VARCHAR2(30);
89501 l_adr_value_combination_id NUMBER;
89502 l_adr_value_segment_code VARCHAR2(30);
89503
89504 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
89505 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
89506 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
89507 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
89508
89509 -- 4262811 Variables ------------------------------------------------------------------------------------------
89510 l_entered_amt_idx NUMBER;
89511 l_accted_amt_idx NUMBER;
89512 l_acc_rev_flag VARCHAR2(1);
89513 l_accrual_line_num NUMBER;
89514 l_tmp_amt NUMBER;
89515 l_acc_rev_natural_side_code VARCHAR2(1);
89516
89517 l_num_entries NUMBER;
89518 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
89519 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
89520 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
89521 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
89522 l_recog_line_1 NUMBER;
89523 l_recog_line_2 NUMBER;
89524
89525 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
89526 l_bflow_applied_to_amt NUMBER; -- 5132302
89527 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
89528
89529 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89530
89531 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
89532 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
89533
89534 ---------------------------------------------------------------------------------------------------------------
89535
89536
89537 --
89538 -- bulk performance
89539 --
89540 l_balance_type_code VARCHAR2(1);
89541 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
89542 l_log_module VARCHAR2(240);
89543
89544 --
89545 -- Upgrade strategy
89546 --
89547 l_actual_upg_option VARCHAR2(1);
89548 l_enc_upg_option VARCHAR2(1);
89549
89550 --
89551 BEGIN
89552 --
89553 IF g_log_enabled THEN
89554 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_194';
89555 END IF;
89556 --
89557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89558
89559 trace
89560 (p_msg => 'BEGIN of AcctLineType_194'
89561 ,p_level => C_LEVEL_PROCEDURE
89562 ,p_module => l_log_module);
89563
89564 END IF;
89565 --
89566 l_component_type := 'AMB_JLT';
89567 l_component_code := 'ISP';
89568 l_component_type_code := 'S';
89569 l_component_appl_id := 555;
89570 l_amb_context_code := 'DEFAULT';
89571 l_entity_code := 'PURCHASING';
89572 l_event_class_code := 'RECEIVE';
89573 l_event_type_code := 'ADJUST_DELIVER';
89574 l_line_definition_owner_code := 'S';
89575 l_line_definition_code := 'ADJUST_DELIVER';
89576 --
89577 l_balance_type_code := 'A';
89578 l_segment := NULL;
89579 l_ccid := NULL;
89580 l_adr_transaction_coa_id := NULL;
89581 l_adr_accounting_coa_id := NULL;
89582 l_adr_flexfield_segment_code := NULL;
89583 l_adr_flex_value_set_id := NULL;
89584 l_adr_value_type_code := NULL;
89585 l_adr_value_combination_id := NULL;
89586 l_adr_value_segment_code := NULL;
89587
89588 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
89589 l_bflow_class_code := ''; -- 4219869 Business Flow
89590 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
89591 l_budgetary_control_flag := 'N';
89592
89593 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89594 l_bflow_applied_to_amt := NULL; -- 5132302
89595 l_entered_amt_idx := NULL; -- 4262811
89596 l_accted_amt_idx := NULL; -- 4262811
89597 l_acc_rev_flag := NULL; -- 4262811
89598 l_accrual_line_num := NULL; -- 4262811
89599 l_tmp_amt := NULL; -- 4262811
89600 --
89601
89602 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89603 l_balance_type_code <> 'B' THEN
89604 IF NVL(p_source_2,'
89605 ') = 'ISP'
89606 THEN
89607
89608 --
89609 XLA_AE_LINES_PKG.SetNewLine;
89610
89611 p_balance_type_code := l_balance_type_code;
89612 -- set the flag so later we will know whether the gain loss line needs to be created
89613
89617
89614 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89615 p_actual_flag :='A';
89616 END IF;
89618 --
89619 -- bulk performance
89620 --
89621 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89622 p_header_num => 0); -- 4262811
89623 --
89624 -- set accounting line options
89625 --
89626 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89627 p_natural_side_code => 'D'
89628 , p_gain_or_loss_flag => 'N'
89629 , p_gl_transfer_mode_code => 'D'
89630 , p_acct_entry_type_code => 'A'
89631 , p_switch_side_flag => 'Y'
89632 , p_merge_duplicate_code => 'W'
89633 );
89634 --
89635 l_acc_rev_natural_side_code := 'C'; -- 4262811
89636 --
89637 --
89638 -- set accounting line type info
89639 --
89640 xla_ae_lines_pkg.SetAcctLineType
89641 (p_component_type => l_component_type
89642 ,p_event_type_code => l_event_type_code
89643 ,p_line_definition_owner_code => l_line_definition_owner_code
89644 ,p_line_definition_code => l_line_definition_code
89645 ,p_accounting_line_code => l_component_code
89646 ,p_accounting_line_type_code => l_component_type_code
89647 ,p_accounting_line_appl_id => l_component_appl_id
89648 ,p_amb_context_code => l_amb_context_code
89649 ,p_entity_code => l_entity_code
89650 ,p_event_class_code => l_event_class_code);
89651 --
89652 -- set accounting class
89653 --
89654 xla_ae_lines_pkg.SetAcctClass(
89655 p_accounting_class_code => 'RECEIVING_INSPECTION'
89656 , p_ae_header_id => l_ae_header_id
89657 );
89658
89659 --
89660 -- set rounding class
89661 --
89662 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89663 'RECEIVING_INSPECTION';
89664
89665 --
89666 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89667 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89668 --
89669 -- bulk performance
89670 --
89671 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89672
89673 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89674 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89675
89676 -- 4955764
89677 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89678 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89679
89680 -- 4458381 Public Sector Enh
89681
89682 --
89683 -- set accounting attributes for the line type
89684 --
89685 l_entered_amt_idx := 3;
89686 l_accted_amt_idx := 8;
89687 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89688 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89689 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
89690 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89691 l_rec_acct_attrs.array_char_value(2) := p_source_6;
89692 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89693 l_rec_acct_attrs.array_num_value(3) := p_source_3;
89694 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89695 l_rec_acct_attrs.array_char_value(4) := p_source_7;
89696 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89697 l_rec_acct_attrs.array_date_value(5) := p_source_8;
89698 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89699 l_rec_acct_attrs.array_num_value(6) := p_source_9;
89700 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89701 l_rec_acct_attrs.array_char_value(7) := p_source_10;
89702 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89703 l_rec_acct_attrs.array_num_value(8) := p_source_11;
89704
89705 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89706 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89707
89708 ---------------------------------------------------------------------------------------------------------------
89709 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89710 ---------------------------------------------------------------------------------------------------------------
89711 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89712
89713 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89714 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89715
89716 IF xla_accounting_cache_pkg.GetValueChar
89717 (p_source_code => 'LEDGER_CATEGORY_CODE'
89718 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89719 AND l_bflow_method_code = 'PRIOR_ENTRY'
89720 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89721 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89722 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89723 )
89724 THEN
89728 ,p_balance_type => l_balance_type_code);
89725 xla_ae_lines_pkg.BflowUpgEntry
89726 (p_business_method_code => l_bflow_method_code
89727 ,p_business_class_code => l_bflow_class_code
89729 ELSE
89730 NULL;
89731 -- No business flow processing for business flow method of NONE.
89732 END IF;
89733
89734 --
89735 -- call analytical criteria
89736 --
89737
89738 --
89739 -- call description
89740 --
89741 -- No description or it is inherited.
89742 --
89743 -- call ADRs
89744 -- Bug 4922099
89745 --
89746 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89747 (NVL(l_actual_upg_option, 'N') = 'O') OR
89748 (NVL(l_enc_upg_option, 'N') = 'O')
89749 )
89750 THEN
89751 NULL;
89752 --
89753 --
89754
89755 l_ccid := AcctDerRule_25(
89756 p_application_id => p_application_id
89757 , p_ae_header_id => l_ae_header_id
89758 , p_source_1 => p_source_1
89759 , p_source_2 => p_source_2
89760 , x_transaction_coa_id => l_adr_transaction_coa_id
89761 , x_accounting_coa_id => l_adr_accounting_coa_id
89762 , x_value_type_code => l_adr_value_type_code
89763 , p_side => 'NA'
89764 );
89765
89766 xla_ae_lines_pkg.set_ccid(
89767 p_code_combination_id => l_ccid
89768 , p_value_type_code => l_adr_value_type_code
89769 , p_transaction_coa_id => l_adr_transaction_coa_id
89770 , p_accounting_coa_id => l_adr_accounting_coa_id
89771 , p_adr_code => 'ISP'
89772 , p_adr_type_code => 'S'
89773 , p_component_type => l_component_type
89774 , p_component_code => l_component_code
89775 , p_component_type_code => l_component_type_code
89776 , p_component_appl_id => l_component_appl_id
89777 , p_amb_context_code => l_amb_context_code
89778 , p_side => 'NA'
89779 );
89780
89781
89782 --
89783 --
89784 END IF;
89785 --
89786 -- Bug 4922099
89787 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89788 (NVL(l_enc_upg_option, 'N') = 'O')
89789 ) AND
89790 (l_bflow_method_code = 'PRIOR_ENTRY')
89791 )
89792 THEN
89793 IF
89794 --
89795 1 = 2
89796 --
89797 THEN
89798 xla_accounting_err_pkg.build_message
89799 (p_appli_s_name => 'XLA'
89800 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89801 ,p_token_1 => 'LINE_NUMBER'
89802 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
89803 ,p_token_2 => 'LINE_TYPE_NAME'
89804 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
89805 l_component_type
89806 ,l_component_code
89807 ,l_component_type_code
89808 ,l_component_appl_id
89809 ,l_amb_context_code
89810 ,l_entity_code
89811 ,l_event_class_code
89812 )
89813 ,p_token_3 => 'OWNER'
89814 ,p_value_3 => xla_lookups_pkg.get_meaning(
89815 p_lookup_type => 'XLA_OWNER_TYPE'
89816 ,p_lookup_code => l_component_type_code
89817 )
89818 ,p_token_4 => 'PRODUCT_NAME'
89819 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89820 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89821 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89822 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89823 ,p_ae_header_id => NULL
89824 );
89825
89826 IF (C_LEVEL_ERROR>= g_log_level) THEN
89827 trace
89828 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89829 ,p_level => C_LEVEL_ERROR
89830 ,p_module => l_log_module);
89831 END IF;
89832 END IF;
89833 END IF;
89834 --
89835 --
89836 ------------------------------------------------------------------------------------------------
89837 -- 4219869 Business Flow
89841 XLA_AE_LINES_PKG.ValidateCurrentLine;
89838 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89839 -- Prior Entry. Currently, the following code is always generated.
89840 ------------------------------------------------------------------------------------------------
89842
89843 ------------------------------------------------------------------------------------
89844 -- 4219869 Business Flow
89845 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89846 ------------------------------------------------------------------------------------
89847 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89848
89849 ----------------------------------------------------------------------------------
89850 -- 4219869 Business Flow
89851 -- Update journal entry status -- Need to generate this within IF <condition>
89852 ----------------------------------------------------------------------------------
89853 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89854 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89855 ,p_balance_type_code => l_balance_type_code
89856 );
89857
89858 -------------------------------------------------------------------------------------------
89859 -- 4262811 - Generate the Accrual Reversal lines
89860 -------------------------------------------------------------------------------------------
89861 BEGIN
89862 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89863 (g_array_event(p_event_id).array_value_num('header_index'));
89864 IF l_acc_rev_flag IS NULL THEN
89865 l_acc_rev_flag := 'N';
89866 END IF;
89867 EXCEPTION
89868 WHEN OTHERS THEN
89869 l_acc_rev_flag := 'N';
89870 END;
89871 --
89872 IF (l_acc_rev_flag = 'Y') THEN
89873
89874 -- 4645092 ------------------------------------------------------------------------------
89875 -- To allow MPA report to determine if it should generate report process
89876 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89877 ------------------------------------------------------------------------------------------
89878
89879 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89880 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89881 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
89882 -- call ADRs
89883 -- Bug 4922099
89884 --
89885 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89886 (NVL(l_actual_upg_option, 'N') = 'O') OR
89887 (NVL(l_enc_upg_option, 'N') = 'O')
89888 )
89889 THEN
89890 NULL;
89891 --
89892 --
89893
89894 l_ccid := AcctDerRule_25(
89895 p_application_id => p_application_id
89896 , p_ae_header_id => l_ae_header_id
89897 , p_source_1 => p_source_1
89898 , p_source_2 => p_source_2
89899 , x_transaction_coa_id => l_adr_transaction_coa_id
89900 , x_accounting_coa_id => l_adr_accounting_coa_id
89901 , x_value_type_code => l_adr_value_type_code
89902 , p_side => 'NA'
89903 );
89904
89905 xla_ae_lines_pkg.set_ccid(
89906 p_code_combination_id => l_ccid
89907 , p_value_type_code => l_adr_value_type_code
89908 , p_transaction_coa_id => l_adr_transaction_coa_id
89909 , p_accounting_coa_id => l_adr_accounting_coa_id
89910 , p_adr_code => 'ISP'
89911 , p_adr_type_code => 'S'
89912 , p_component_type => l_component_type
89913 , p_component_code => l_component_code
89914 , p_component_type_code => l_component_type_code
89915 , p_component_appl_id => l_component_appl_id
89916 , p_amb_context_code => l_amb_context_code
89917 , p_side => 'NA'
89918 );
89919
89920
89921 --
89922 --
89923 END IF;
89924
89925 --
89926 -- Update the line information that should be overwritten
89927 --
89928 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89929 p_header_num => 1);
89930 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
89931
89932 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89933
89934 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
89935 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89936 END IF;
89937
89938 --
89939 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89940 --
89941 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89942 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
89943 ELSE
89944 ---------------------------------------------------------------------------------------------------
89945 -- 4262811a Switch Sign
89946 ---------------------------------------------------------------------------------------------------
89950 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89947 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
89948 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89949 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89951 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89952 -- 5132302
89953 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89954 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89955
89956 END IF;
89957
89958 -- 4955764
89959 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89960 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89961
89962
89963 XLA_AE_LINES_PKG.ValidateCurrentLine;
89964 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89965
89966 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89967 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89968 ,p_balance_type_code => l_balance_type_code);
89969
89970 END IF;
89971
89972 -----------------------------------------------------------------------------------------
89973 -- 4262811 Multiperiod Accounting
89974 -----------------------------------------------------------------------------------------
89975 -- No MPA option is assigned.
89976
89977
89978 END IF;
89979 END IF;
89980 --
89981
89982 --
89983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89984 trace
89985 (p_msg => 'END of AcctLineType_194'
89986 ,p_level => C_LEVEL_PROCEDURE
89987 ,p_module => l_log_module);
89988 END IF;
89989 --
89990 EXCEPTION
89991 WHEN xla_exceptions_pkg.application_exception THEN
89992 RAISE;
89993 WHEN OTHERS THEN
89994 xla_exceptions_pkg.raise_message
89995 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_194');
89996 END AcctLineType_194;
89997 --
89998
89999 ---------------------------------------
90000 --
90001 -- PRIVATE FUNCTION
90002 -- AcctLineType_195
90003 --
90004 ---------------------------------------
90005 PROCEDURE AcctLineType_195 (
90006 p_application_id IN NUMBER
90007 ,p_event_id IN NUMBER
90008 ,p_calculate_acctd_flag IN VARCHAR2
90009 ,p_calculate_g_l_flag IN VARCHAR2
90010 ,p_actual_flag IN OUT VARCHAR2
90011 ,p_balance_type_code OUT VARCHAR2
90012 ,p_gain_or_loss_ref OUT VARCHAR2
90013
90014 --Transaction Account
90015 , p_source_1 IN NUMBER
90016 --Journal Line Type
90017 , p_source_2 IN VARCHAR2
90018 --Entered Amount
90019 , p_source_3 IN NUMBER
90020 --First Distribution Identifier
90021 , p_source_5 IN NUMBER
90022 --Distribution Type
90023 , p_source_6 IN VARCHAR2
90024 --Currency Code
90025 , p_source_7 IN VARCHAR2
90026 --Currency Conversion Date
90027 , p_source_8 IN DATE
90028 --Currency Conversion Rate
90029 , p_source_9 IN NUMBER
90030 --Currency Conversion Type
90031 , p_source_10 IN VARCHAR2
90032 --Accounted Amount
90033 , p_source_11 IN NUMBER
90034 )
90035 IS
90036
90037 l_component_type VARCHAR2(80);
90038 l_component_code VARCHAR2(30);
90039 l_component_type_code VARCHAR2(1);
90040 l_component_appl_id INTEGER;
90041 l_amb_context_code VARCHAR2(30);
90042 l_entity_code VARCHAR2(30);
90043 l_event_class_code VARCHAR2(30);
90044 l_ae_header_id NUMBER;
90045 l_event_type_code VARCHAR2(30);
90046 l_line_definition_code VARCHAR2(30);
90047 l_line_definition_owner_code VARCHAR2(1);
90048 --
90049 -- adr variables
90050 l_segment VARCHAR2(30);
90051 l_ccid NUMBER;
90052 l_adr_transaction_coa_id NUMBER;
90053 l_adr_accounting_coa_id NUMBER;
90054 l_adr_flexfield_segment_code VARCHAR2(30);
90055 l_adr_flex_value_set_id NUMBER;
90056 l_adr_value_type_code VARCHAR2(30);
90057 l_adr_value_combination_id NUMBER;
90058 l_adr_value_segment_code VARCHAR2(30);
90059
90060 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
90061 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
90062 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
90063 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
90064
90065 -- 4262811 Variables ------------------------------------------------------------------------------------------
90066 l_entered_amt_idx NUMBER;
90067 l_accted_amt_idx NUMBER;
90068 l_acc_rev_flag VARCHAR2(1);
90069 l_accrual_line_num NUMBER;
90070 l_tmp_amt NUMBER;
90071 l_acc_rev_natural_side_code VARCHAR2(1);
90072
90073 l_num_entries NUMBER;
90074 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
90075 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
90076 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
90080
90077 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
90078 l_recog_line_1 NUMBER;
90079 l_recog_line_2 NUMBER;
90081 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
90082 l_bflow_applied_to_amt NUMBER; -- 5132302
90083 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
90084
90085 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90086
90087 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
90088 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
90089
90090 ---------------------------------------------------------------------------------------------------------------
90091
90092
90093 --
90094 -- bulk performance
90095 --
90096 l_balance_type_code VARCHAR2(1);
90097 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
90098 l_log_module VARCHAR2(240);
90099
90100 --
90101 -- Upgrade strategy
90102 --
90103 l_actual_upg_option VARCHAR2(1);
90104 l_enc_upg_option VARCHAR2(1);
90105
90106 --
90107 BEGIN
90108 --
90109 IF g_log_enabled THEN
90110 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_195';
90111 END IF;
90112 --
90113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90114
90115 trace
90116 (p_msg => 'BEGIN of AcctLineType_195'
90117 ,p_level => C_LEVEL_PROCEDURE
90118 ,p_module => l_log_module);
90119
90120 END IF;
90121 --
90122 l_component_type := 'AMB_JLT';
90123 l_component_code := 'ISP';
90124 l_component_type_code := 'S';
90125 l_component_appl_id := 555;
90126 l_amb_context_code := 'DEFAULT';
90127 l_entity_code := 'PURCHASING';
90128 l_event_class_code := 'DELIVER';
90129 l_event_type_code := 'RET_TO_RECEIVING';
90130 l_line_definition_owner_code := 'S';
90131 l_line_definition_code := 'PO_RETURN';
90132 --
90133 l_balance_type_code := 'A';
90134 l_segment := NULL;
90135 l_ccid := NULL;
90136 l_adr_transaction_coa_id := NULL;
90137 l_adr_accounting_coa_id := NULL;
90138 l_adr_flexfield_segment_code := NULL;
90139 l_adr_flex_value_set_id := NULL;
90140 l_adr_value_type_code := NULL;
90141 l_adr_value_combination_id := NULL;
90142 l_adr_value_segment_code := NULL;
90143
90144 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
90145 l_bflow_class_code := ''; -- 4219869 Business Flow
90146 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
90147 l_budgetary_control_flag := 'N';
90148
90149 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90150 l_bflow_applied_to_amt := NULL; -- 5132302
90151 l_entered_amt_idx := NULL; -- 4262811
90152 l_accted_amt_idx := NULL; -- 4262811
90153 l_acc_rev_flag := NULL; -- 4262811
90154 l_accrual_line_num := NULL; -- 4262811
90155 l_tmp_amt := NULL; -- 4262811
90156 --
90157
90158 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90159 l_balance_type_code <> 'B' THEN
90160 IF NVL(p_source_2,'
90161 ') = 'ISP'
90162 THEN
90163
90164 --
90165 XLA_AE_LINES_PKG.SetNewLine;
90166
90167 p_balance_type_code := l_balance_type_code;
90168 -- set the flag so later we will know whether the gain loss line needs to be created
90169
90170 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90171 p_actual_flag :='A';
90172 END IF;
90173
90174 --
90175 -- bulk performance
90176 --
90177 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90178 p_header_num => 0); -- 4262811
90179 --
90180 -- set accounting line options
90181 --
90182 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90183 p_natural_side_code => 'D'
90184 , p_gain_or_loss_flag => 'N'
90185 , p_gl_transfer_mode_code => 'D'
90186 , p_acct_entry_type_code => 'A'
90187 , p_switch_side_flag => 'Y'
90188 , p_merge_duplicate_code => 'W'
90189 );
90190 --
90191 l_acc_rev_natural_side_code := 'C'; -- 4262811
90192 --
90193 --
90194 -- set accounting line type info
90195 --
90196 xla_ae_lines_pkg.SetAcctLineType
90197 (p_component_type => l_component_type
90198 ,p_event_type_code => l_event_type_code
90199 ,p_line_definition_owner_code => l_line_definition_owner_code
90200 ,p_line_definition_code => l_line_definition_code
90201 ,p_accounting_line_code => l_component_code
90202 ,p_accounting_line_type_code => l_component_type_code
90203 ,p_accounting_line_appl_id => l_component_appl_id
90204 ,p_amb_context_code => l_amb_context_code
90205 ,p_entity_code => l_entity_code
90206 ,p_event_class_code => l_event_class_code);
90207 --
90208 -- set accounting class
90209 --
90210 xla_ae_lines_pkg.SetAcctClass(
90214
90211 p_accounting_class_code => 'RECEIVING_INSPECTION'
90212 , p_ae_header_id => l_ae_header_id
90213 );
90215 --
90216 -- set rounding class
90217 --
90218 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90219 'RECEIVING_INSPECTION';
90220
90221 --
90222 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90223 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90224 --
90225 -- bulk performance
90226 --
90227 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90228
90229 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90230 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90231
90232 -- 4955764
90233 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90234 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90235
90236 -- 4458381 Public Sector Enh
90237
90238 --
90239 -- set accounting attributes for the line type
90240 --
90241 l_entered_amt_idx := 3;
90242 l_accted_amt_idx := 8;
90243 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90244 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90245 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
90246 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90247 l_rec_acct_attrs.array_char_value(2) := p_source_6;
90248 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90249 l_rec_acct_attrs.array_num_value(3) := p_source_3;
90250 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90251 l_rec_acct_attrs.array_char_value(4) := p_source_7;
90252 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90253 l_rec_acct_attrs.array_date_value(5) := p_source_8;
90254 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90255 l_rec_acct_attrs.array_num_value(6) := p_source_9;
90256 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90257 l_rec_acct_attrs.array_char_value(7) := p_source_10;
90258 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90259 l_rec_acct_attrs.array_num_value(8) := p_source_11;
90260
90261 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90262 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90263
90264 ---------------------------------------------------------------------------------------------------------------
90265 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90266 ---------------------------------------------------------------------------------------------------------------
90267 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90268
90269 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90270 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90271
90272 IF xla_accounting_cache_pkg.GetValueChar
90273 (p_source_code => 'LEDGER_CATEGORY_CODE'
90274 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90275 AND l_bflow_method_code = 'PRIOR_ENTRY'
90276 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90277 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90278 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90279 )
90280 THEN
90281 xla_ae_lines_pkg.BflowUpgEntry
90282 (p_business_method_code => l_bflow_method_code
90283 ,p_business_class_code => l_bflow_class_code
90284 ,p_balance_type => l_balance_type_code);
90285 ELSE
90286 NULL;
90287 -- No business flow processing for business flow method of NONE.
90288 END IF;
90289
90290 --
90291 -- call analytical criteria
90292 --
90293
90294 --
90295 -- call description
90296 --
90297 -- No description or it is inherited.
90298 --
90299 -- call ADRs
90300 -- Bug 4922099
90301 --
90302 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90303 (NVL(l_actual_upg_option, 'N') = 'O') OR
90304 (NVL(l_enc_upg_option, 'N') = 'O')
90305 )
90306 THEN
90307 NULL;
90308 --
90309 --
90310
90311 l_ccid := AcctDerRule_25(
90312 p_application_id => p_application_id
90313 , p_ae_header_id => l_ae_header_id
90314 , p_source_1 => p_source_1
90315 , p_source_2 => p_source_2
90316 , x_transaction_coa_id => l_adr_transaction_coa_id
90317 , x_accounting_coa_id => l_adr_accounting_coa_id
90318 , x_value_type_code => l_adr_value_type_code
90319 , p_side => 'NA'
90320 );
90321
90322 xla_ae_lines_pkg.set_ccid(
90323 p_code_combination_id => l_ccid
90324 , p_value_type_code => l_adr_value_type_code
90325 , p_transaction_coa_id => l_adr_transaction_coa_id
90329 , p_component_type => l_component_type
90326 , p_accounting_coa_id => l_adr_accounting_coa_id
90327 , p_adr_code => 'ISP'
90328 , p_adr_type_code => 'S'
90330 , p_component_code => l_component_code
90331 , p_component_type_code => l_component_type_code
90332 , p_component_appl_id => l_component_appl_id
90333 , p_amb_context_code => l_amb_context_code
90334 , p_side => 'NA'
90335 );
90336
90337
90338 --
90339 --
90340 END IF;
90341 --
90342 -- Bug 4922099
90343 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90344 (NVL(l_enc_upg_option, 'N') = 'O')
90345 ) AND
90346 (l_bflow_method_code = 'PRIOR_ENTRY')
90347 )
90348 THEN
90349 IF
90350 --
90351 1 = 2
90352 --
90353 THEN
90354 xla_accounting_err_pkg.build_message
90355 (p_appli_s_name => 'XLA'
90356 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90357 ,p_token_1 => 'LINE_NUMBER'
90358 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
90359 ,p_token_2 => 'LINE_TYPE_NAME'
90360 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
90361 l_component_type
90362 ,l_component_code
90363 ,l_component_type_code
90364 ,l_component_appl_id
90365 ,l_amb_context_code
90366 ,l_entity_code
90367 ,l_event_class_code
90368 )
90369 ,p_token_3 => 'OWNER'
90370 ,p_value_3 => xla_lookups_pkg.get_meaning(
90371 p_lookup_type => 'XLA_OWNER_TYPE'
90372 ,p_lookup_code => l_component_type_code
90373 )
90374 ,p_token_4 => 'PRODUCT_NAME'
90375 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90376 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90377 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90378 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90379 ,p_ae_header_id => NULL
90380 );
90381
90382 IF (C_LEVEL_ERROR>= g_log_level) THEN
90383 trace
90384 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90385 ,p_level => C_LEVEL_ERROR
90386 ,p_module => l_log_module);
90387 END IF;
90388 END IF;
90389 END IF;
90390 --
90391 --
90392 ------------------------------------------------------------------------------------------------
90393 -- 4219869 Business Flow
90394 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90395 -- Prior Entry. Currently, the following code is always generated.
90396 ------------------------------------------------------------------------------------------------
90397 XLA_AE_LINES_PKG.ValidateCurrentLine;
90398
90399 ------------------------------------------------------------------------------------
90400 -- 4219869 Business Flow
90401 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90402 ------------------------------------------------------------------------------------
90403 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90404
90405 ----------------------------------------------------------------------------------
90406 -- 4219869 Business Flow
90407 -- Update journal entry status -- Need to generate this within IF <condition>
90408 ----------------------------------------------------------------------------------
90409 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90410 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90411 ,p_balance_type_code => l_balance_type_code
90412 );
90413
90414 -------------------------------------------------------------------------------------------
90415 -- 4262811 - Generate the Accrual Reversal lines
90416 -------------------------------------------------------------------------------------------
90417 BEGIN
90418 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90422 END IF;
90419 (g_array_event(p_event_id).array_value_num('header_index'));
90420 IF l_acc_rev_flag IS NULL THEN
90421 l_acc_rev_flag := 'N';
90423 EXCEPTION
90424 WHEN OTHERS THEN
90425 l_acc_rev_flag := 'N';
90426 END;
90427 --
90428 IF (l_acc_rev_flag = 'Y') THEN
90429
90430 -- 4645092 ------------------------------------------------------------------------------
90431 -- To allow MPA report to determine if it should generate report process
90432 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90433 ------------------------------------------------------------------------------------------
90434
90435 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90436 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90437 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
90438 -- call ADRs
90439 -- Bug 4922099
90440 --
90441 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90442 (NVL(l_actual_upg_option, 'N') = 'O') OR
90443 (NVL(l_enc_upg_option, 'N') = 'O')
90444 )
90445 THEN
90446 NULL;
90447 --
90448 --
90449
90450 l_ccid := AcctDerRule_25(
90451 p_application_id => p_application_id
90452 , p_ae_header_id => l_ae_header_id
90453 , p_source_1 => p_source_1
90454 , p_source_2 => p_source_2
90455 , x_transaction_coa_id => l_adr_transaction_coa_id
90456 , x_accounting_coa_id => l_adr_accounting_coa_id
90457 , x_value_type_code => l_adr_value_type_code
90458 , p_side => 'NA'
90459 );
90460
90461 xla_ae_lines_pkg.set_ccid(
90462 p_code_combination_id => l_ccid
90463 , p_value_type_code => l_adr_value_type_code
90464 , p_transaction_coa_id => l_adr_transaction_coa_id
90465 , p_accounting_coa_id => l_adr_accounting_coa_id
90466 , p_adr_code => 'ISP'
90467 , p_adr_type_code => 'S'
90468 , p_component_type => l_component_type
90469 , p_component_code => l_component_code
90470 , p_component_type_code => l_component_type_code
90471 , p_component_appl_id => l_component_appl_id
90472 , p_amb_context_code => l_amb_context_code
90473 , p_side => 'NA'
90474 );
90475
90476
90477 --
90478 --
90479 END IF;
90480
90481 --
90482 -- Update the line information that should be overwritten
90483 --
90484 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90485 p_header_num => 1);
90486 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
90487
90488 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90489
90490 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
90491 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90492 END IF;
90493
90494 --
90495 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90496 --
90497 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90498 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
90499 ELSE
90500 ---------------------------------------------------------------------------------------------------
90501 -- 4262811a Switch Sign
90502 ---------------------------------------------------------------------------------------------------
90503 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
90504 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90505 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90506 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90507 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90508 -- 5132302
90509 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90510 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90511
90512 END IF;
90513
90514 -- 4955764
90515 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90516 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90517
90518
90519 XLA_AE_LINES_PKG.ValidateCurrentLine;
90520 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90521
90522 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90523 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90524 ,p_balance_type_code => l_balance_type_code);
90525
90526 END IF;
90527
90528 -----------------------------------------------------------------------------------------
90529 -- 4262811 Multiperiod Accounting
90530 -----------------------------------------------------------------------------------------
90531 -- No MPA option is assigned.
90532
90533
90537
90534 END IF;
90535 END IF;
90536 --
90538 --
90539 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90540 trace
90541 (p_msg => 'END of AcctLineType_195'
90542 ,p_level => C_LEVEL_PROCEDURE
90543 ,p_module => l_log_module);
90544 END IF;
90545 --
90546 EXCEPTION
90547 WHEN xla_exceptions_pkg.application_exception THEN
90548 RAISE;
90549 WHEN OTHERS THEN
90550 xla_exceptions_pkg.raise_message
90551 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_195');
90552 END AcctLineType_195;
90553 --
90554
90555 ---------------------------------------
90556 --
90557 -- PRIVATE FUNCTION
90558 -- AcctLineType_196
90559 --
90560 ---------------------------------------
90561 PROCEDURE AcctLineType_196 (
90562 p_application_id IN NUMBER
90563 ,p_event_id IN NUMBER
90564 ,p_calculate_acctd_flag IN VARCHAR2
90565 ,p_calculate_g_l_flag IN VARCHAR2
90566 ,p_actual_flag IN OUT VARCHAR2
90567 ,p_balance_type_code OUT VARCHAR2
90568 ,p_gain_or_loss_ref OUT VARCHAR2
90569
90570 --Transaction Account
90571 , p_source_1 IN NUMBER
90572 --Journal Line Type
90573 , p_source_2 IN VARCHAR2
90574 --Entered Amount
90575 , p_source_3 IN NUMBER
90576 --First Distribution Identifier
90577 , p_source_5 IN NUMBER
90578 --Distribution Type
90579 , p_source_6 IN VARCHAR2
90580 --Currency Code
90581 , p_source_7 IN VARCHAR2
90582 --Currency Conversion Date
90583 , p_source_8 IN DATE
90584 --Currency Conversion Rate
90585 , p_source_9 IN NUMBER
90586 --Currency Conversion Type
90587 , p_source_10 IN VARCHAR2
90588 --Accounted Amount
90589 , p_source_11 IN NUMBER
90590 )
90591 IS
90592
90593 l_component_type VARCHAR2(80);
90594 l_component_code VARCHAR2(30);
90595 l_component_type_code VARCHAR2(1);
90596 l_component_appl_id INTEGER;
90597 l_amb_context_code VARCHAR2(30);
90598 l_entity_code VARCHAR2(30);
90599 l_event_class_code VARCHAR2(30);
90600 l_ae_header_id NUMBER;
90601 l_event_type_code VARCHAR2(30);
90602 l_line_definition_code VARCHAR2(30);
90603 l_line_definition_owner_code VARCHAR2(1);
90604 --
90605 -- adr variables
90606 l_segment VARCHAR2(30);
90607 l_ccid NUMBER;
90608 l_adr_transaction_coa_id NUMBER;
90609 l_adr_accounting_coa_id NUMBER;
90610 l_adr_flexfield_segment_code VARCHAR2(30);
90611 l_adr_flex_value_set_id NUMBER;
90612 l_adr_value_type_code VARCHAR2(30);
90613 l_adr_value_combination_id NUMBER;
90614 l_adr_value_segment_code VARCHAR2(30);
90615
90616 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
90617 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
90618 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
90619 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
90620
90621 -- 4262811 Variables ------------------------------------------------------------------------------------------
90622 l_entered_amt_idx NUMBER;
90623 l_accted_amt_idx NUMBER;
90624 l_acc_rev_flag VARCHAR2(1);
90625 l_accrual_line_num NUMBER;
90626 l_tmp_amt NUMBER;
90627 l_acc_rev_natural_side_code VARCHAR2(1);
90628
90629 l_num_entries NUMBER;
90630 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
90631 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
90632 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
90633 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
90634 l_recog_line_1 NUMBER;
90635 l_recog_line_2 NUMBER;
90636
90637 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
90638 l_bflow_applied_to_amt NUMBER; -- 5132302
90639 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
90640
90641 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90642
90643 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
90644 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
90645
90646 ---------------------------------------------------------------------------------------------------------------
90647
90648
90649 --
90650 -- bulk performance
90651 --
90652 l_balance_type_code VARCHAR2(1);
90653 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
90654 l_log_module VARCHAR2(240);
90655
90656 --
90657 -- Upgrade strategy
90658 --
90659 l_actual_upg_option VARCHAR2(1);
90660 l_enc_upg_option VARCHAR2(1);
90661
90662 --
90663 BEGIN
90664 --
90665 IF g_log_enabled THEN
90666 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_196';
90667 END IF;
90668 --
90669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90670
90671 trace
90672 (p_msg => 'BEGIN of AcctLineType_196'
90673 ,p_level => C_LEVEL_PROCEDURE
90674 ,p_module => l_log_module);
90675
90679 l_component_code := 'ISP';
90676 END IF;
90677 --
90678 l_component_type := 'AMB_JLT';
90680 l_component_type_code := 'S';
90681 l_component_appl_id := 555;
90682 l_amb_context_code := 'DEFAULT';
90683 l_entity_code := 'PURCHASING';
90684 l_event_class_code := 'DELIVER';
90685 l_event_type_code := 'INT_REQ_RECEIPT_ADJ';
90686 l_line_definition_owner_code := 'S';
90687 l_line_definition_code := 'INT_REQ_RCPT_ADJ';
90688 --
90689 l_balance_type_code := 'A';
90690 l_segment := NULL;
90691 l_ccid := NULL;
90692 l_adr_transaction_coa_id := NULL;
90693 l_adr_accounting_coa_id := NULL;
90694 l_adr_flexfield_segment_code := NULL;
90695 l_adr_flex_value_set_id := NULL;
90696 l_adr_value_type_code := NULL;
90697 l_adr_value_combination_id := NULL;
90698 l_adr_value_segment_code := NULL;
90699
90700 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
90701 l_bflow_class_code := ''; -- 4219869 Business Flow
90702 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
90703 l_budgetary_control_flag := 'N';
90704
90705 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90706 l_bflow_applied_to_amt := NULL; -- 5132302
90707 l_entered_amt_idx := NULL; -- 4262811
90708 l_accted_amt_idx := NULL; -- 4262811
90709 l_acc_rev_flag := NULL; -- 4262811
90710 l_accrual_line_num := NULL; -- 4262811
90711 l_tmp_amt := NULL; -- 4262811
90712 --
90713
90714 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90715 l_balance_type_code <> 'B' THEN
90716 IF NVL(p_source_2,'
90717 ') = 'ISP'
90718 THEN
90719
90720 --
90721 XLA_AE_LINES_PKG.SetNewLine;
90722
90723 p_balance_type_code := l_balance_type_code;
90724 -- set the flag so later we will know whether the gain loss line needs to be created
90725
90726 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90727 p_actual_flag :='A';
90728 END IF;
90729
90730 --
90731 -- bulk performance
90732 --
90733 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90734 p_header_num => 0); -- 4262811
90735 --
90736 -- set accounting line options
90737 --
90738 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90739 p_natural_side_code => 'D'
90740 , p_gain_or_loss_flag => 'N'
90741 , p_gl_transfer_mode_code => 'D'
90742 , p_acct_entry_type_code => 'A'
90743 , p_switch_side_flag => 'Y'
90744 , p_merge_duplicate_code => 'W'
90745 );
90746 --
90747 l_acc_rev_natural_side_code := 'C'; -- 4262811
90748 --
90749 --
90750 -- set accounting line type info
90751 --
90752 xla_ae_lines_pkg.SetAcctLineType
90753 (p_component_type => l_component_type
90754 ,p_event_type_code => l_event_type_code
90755 ,p_line_definition_owner_code => l_line_definition_owner_code
90756 ,p_line_definition_code => l_line_definition_code
90757 ,p_accounting_line_code => l_component_code
90758 ,p_accounting_line_type_code => l_component_type_code
90759 ,p_accounting_line_appl_id => l_component_appl_id
90760 ,p_amb_context_code => l_amb_context_code
90761 ,p_entity_code => l_entity_code
90762 ,p_event_class_code => l_event_class_code);
90763 --
90764 -- set accounting class
90765 --
90766 xla_ae_lines_pkg.SetAcctClass(
90767 p_accounting_class_code => 'RECEIVING_INSPECTION'
90768 , p_ae_header_id => l_ae_header_id
90769 );
90770
90771 --
90772 -- set rounding class
90773 --
90774 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90775 'RECEIVING_INSPECTION';
90776
90777 --
90778 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90779 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90780 --
90781 -- bulk performance
90782 --
90783 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90784
90785 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90786 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90787
90788 -- 4955764
90789 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90790 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90791
90792 -- 4458381 Public Sector Enh
90793
90794 --
90795 -- set accounting attributes for the line type
90796 --
90797 l_entered_amt_idx := 3;
90798 l_accted_amt_idx := 8;
90799 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90800 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90801 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
90802 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90806 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90803 l_rec_acct_attrs.array_char_value(2) := p_source_6;
90804 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90805 l_rec_acct_attrs.array_num_value(3) := p_source_3;
90807 l_rec_acct_attrs.array_char_value(4) := p_source_7;
90808 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90809 l_rec_acct_attrs.array_date_value(5) := p_source_8;
90810 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90811 l_rec_acct_attrs.array_num_value(6) := p_source_9;
90812 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90813 l_rec_acct_attrs.array_char_value(7) := p_source_10;
90814 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90815 l_rec_acct_attrs.array_num_value(8) := p_source_11;
90816
90817 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90818 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90819
90820 ---------------------------------------------------------------------------------------------------------------
90821 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90822 ---------------------------------------------------------------------------------------------------------------
90823 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90824
90825 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90826 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90827
90828 IF xla_accounting_cache_pkg.GetValueChar
90829 (p_source_code => 'LEDGER_CATEGORY_CODE'
90830 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90831 AND l_bflow_method_code = 'PRIOR_ENTRY'
90832 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90833 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90834 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90835 )
90836 THEN
90837 xla_ae_lines_pkg.BflowUpgEntry
90838 (p_business_method_code => l_bflow_method_code
90839 ,p_business_class_code => l_bflow_class_code
90840 ,p_balance_type => l_balance_type_code);
90841 ELSE
90842 NULL;
90843 -- No business flow processing for business flow method of NONE.
90844 END IF;
90845
90846 --
90847 -- call analytical criteria
90848 --
90849
90850 --
90851 -- call description
90852 --
90853 -- No description or it is inherited.
90854 --
90855 -- call ADRs
90856 -- Bug 4922099
90857 --
90858 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90859 (NVL(l_actual_upg_option, 'N') = 'O') OR
90860 (NVL(l_enc_upg_option, 'N') = 'O')
90861 )
90862 THEN
90863 NULL;
90864 --
90865 --
90866
90867 l_ccid := AcctDerRule_25(
90868 p_application_id => p_application_id
90869 , p_ae_header_id => l_ae_header_id
90870 , p_source_1 => p_source_1
90871 , p_source_2 => p_source_2
90872 , x_transaction_coa_id => l_adr_transaction_coa_id
90873 , x_accounting_coa_id => l_adr_accounting_coa_id
90874 , x_value_type_code => l_adr_value_type_code
90875 , p_side => 'NA'
90876 );
90877
90878 xla_ae_lines_pkg.set_ccid(
90879 p_code_combination_id => l_ccid
90880 , p_value_type_code => l_adr_value_type_code
90881 , p_transaction_coa_id => l_adr_transaction_coa_id
90882 , p_accounting_coa_id => l_adr_accounting_coa_id
90883 , p_adr_code => 'ISP'
90884 , p_adr_type_code => 'S'
90885 , p_component_type => l_component_type
90886 , p_component_code => l_component_code
90887 , p_component_type_code => l_component_type_code
90888 , p_component_appl_id => l_component_appl_id
90889 , p_amb_context_code => l_amb_context_code
90890 , p_side => 'NA'
90891 );
90892
90893
90894 --
90895 --
90896 END IF;
90897 --
90898 -- Bug 4922099
90899 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90900 (NVL(l_enc_upg_option, 'N') = 'O')
90901 ) AND
90902 (l_bflow_method_code = 'PRIOR_ENTRY')
90903 )
90904 THEN
90905 IF
90906 --
90907 1 = 2
90908 --
90909 THEN
90910 xla_accounting_err_pkg.build_message
90911 (p_appli_s_name => 'XLA'
90912 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90913 ,p_token_1 => 'LINE_NUMBER'
90914 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
90915 ,p_token_2 => 'LINE_TYPE_NAME'
90916 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
90917 l_component_type
90921 ,l_amb_context_code
90918 ,l_component_code
90919 ,l_component_type_code
90920 ,l_component_appl_id
90922 ,l_entity_code
90923 ,l_event_class_code
90924 )
90925 ,p_token_3 => 'OWNER'
90926 ,p_value_3 => xla_lookups_pkg.get_meaning(
90927 p_lookup_type => 'XLA_OWNER_TYPE'
90928 ,p_lookup_code => l_component_type_code
90929 )
90930 ,p_token_4 => 'PRODUCT_NAME'
90931 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90932 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90933 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90934 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90935 ,p_ae_header_id => NULL
90936 );
90937
90938 IF (C_LEVEL_ERROR>= g_log_level) THEN
90939 trace
90940 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90941 ,p_level => C_LEVEL_ERROR
90942 ,p_module => l_log_module);
90943 END IF;
90944 END IF;
90945 END IF;
90946 --
90947 --
90948 ------------------------------------------------------------------------------------------------
90949 -- 4219869 Business Flow
90950 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90951 -- Prior Entry. Currently, the following code is always generated.
90952 ------------------------------------------------------------------------------------------------
90953 XLA_AE_LINES_PKG.ValidateCurrentLine;
90954
90955 ------------------------------------------------------------------------------------
90956 -- 4219869 Business Flow
90957 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90958 ------------------------------------------------------------------------------------
90959 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90960
90961 ----------------------------------------------------------------------------------
90962 -- 4219869 Business Flow
90963 -- Update journal entry status -- Need to generate this within IF <condition>
90964 ----------------------------------------------------------------------------------
90965 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90966 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90967 ,p_balance_type_code => l_balance_type_code
90968 );
90969
90970 -------------------------------------------------------------------------------------------
90971 -- 4262811 - Generate the Accrual Reversal lines
90972 -------------------------------------------------------------------------------------------
90973 BEGIN
90974 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90975 (g_array_event(p_event_id).array_value_num('header_index'));
90976 IF l_acc_rev_flag IS NULL THEN
90977 l_acc_rev_flag := 'N';
90978 END IF;
90979 EXCEPTION
90980 WHEN OTHERS THEN
90981 l_acc_rev_flag := 'N';
90982 END;
90983 --
90984 IF (l_acc_rev_flag = 'Y') THEN
90985
90986 -- 4645092 ------------------------------------------------------------------------------
90987 -- To allow MPA report to determine if it should generate report process
90988 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90989 ------------------------------------------------------------------------------------------
90990
90991 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90992 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90993 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
90994 -- call ADRs
90995 -- Bug 4922099
90996 --
90997 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90998 (NVL(l_actual_upg_option, 'N') = 'O') OR
90999 (NVL(l_enc_upg_option, 'N') = 'O')
91000 )
91001 THEN
91002 NULL;
91003 --
91004 --
91005
91006 l_ccid := AcctDerRule_25(
91007 p_application_id => p_application_id
91008 , p_ae_header_id => l_ae_header_id
91009 , p_source_1 => p_source_1
91010 , p_source_2 => p_source_2
91011 , x_transaction_coa_id => l_adr_transaction_coa_id
91012 , x_accounting_coa_id => l_adr_accounting_coa_id
91013 , x_value_type_code => l_adr_value_type_code
91014 , p_side => 'NA'
91018 p_code_combination_id => l_ccid
91015 );
91016
91017 xla_ae_lines_pkg.set_ccid(
91019 , p_value_type_code => l_adr_value_type_code
91020 , p_transaction_coa_id => l_adr_transaction_coa_id
91021 , p_accounting_coa_id => l_adr_accounting_coa_id
91022 , p_adr_code => 'ISP'
91023 , p_adr_type_code => 'S'
91024 , p_component_type => l_component_type
91025 , p_component_code => l_component_code
91026 , p_component_type_code => l_component_type_code
91027 , p_component_appl_id => l_component_appl_id
91028 , p_amb_context_code => l_amb_context_code
91029 , p_side => 'NA'
91030 );
91031
91032
91033 --
91034 --
91035 END IF;
91036
91037 --
91038 -- Update the line information that should be overwritten
91039 --
91040 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91041 p_header_num => 1);
91042 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
91043
91044 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91045
91046 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
91047 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91048 END IF;
91049
91050 --
91051 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91052 --
91053 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91054 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
91055 ELSE
91056 ---------------------------------------------------------------------------------------------------
91057 -- 4262811a Switch Sign
91058 ---------------------------------------------------------------------------------------------------
91059 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
91060 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91061 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91062 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91063 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91064 -- 5132302
91065 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91066 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91067
91068 END IF;
91069
91070 -- 4955764
91071 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91072 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91073
91074
91075 XLA_AE_LINES_PKG.ValidateCurrentLine;
91076 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91077
91078 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91079 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91080 ,p_balance_type_code => l_balance_type_code);
91081
91082 END IF;
91083
91084 -----------------------------------------------------------------------------------------
91085 -- 4262811 Multiperiod Accounting
91086 -----------------------------------------------------------------------------------------
91087 -- No MPA option is assigned.
91088
91089
91090 END IF;
91091 END IF;
91092 --
91093
91094 --
91095 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91096 trace
91097 (p_msg => 'END of AcctLineType_196'
91098 ,p_level => C_LEVEL_PROCEDURE
91099 ,p_module => l_log_module);
91100 END IF;
91101 --
91102 EXCEPTION
91103 WHEN xla_exceptions_pkg.application_exception THEN
91104 RAISE;
91105 WHEN OTHERS THEN
91106 xla_exceptions_pkg.raise_message
91107 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_196');
91108 END AcctLineType_196;
91109 --
91110
91111 ---------------------------------------
91112 --
91113 -- PRIVATE FUNCTION
91114 -- AcctLineType_197
91115 --
91116 ---------------------------------------
91117 PROCEDURE AcctLineType_197 (
91118 p_application_id IN NUMBER
91119 ,p_event_id IN NUMBER
91120 ,p_calculate_acctd_flag IN VARCHAR2
91121 ,p_calculate_g_l_flag IN VARCHAR2
91122 ,p_actual_flag IN OUT VARCHAR2
91123 ,p_balance_type_code OUT VARCHAR2
91124 ,p_gain_or_loss_ref OUT VARCHAR2
91125
91126 --Transaction Account
91127 , p_source_1 IN NUMBER
91128 --Journal Line Type
91129 , p_source_2 IN VARCHAR2
91130 --Entered Amount
91131 , p_source_3 IN NUMBER
91132 --First Distribution Identifier
91133 , p_source_5 IN NUMBER
91134 --Distribution Type
91135 , p_source_6 IN VARCHAR2
91136 --Currency Code
91137 , p_source_7 IN VARCHAR2
91138 --Currency Conversion Date
91139 , p_source_8 IN DATE
91140 --Currency Conversion Rate
91144 --Accounted Amount
91141 , p_source_9 IN NUMBER
91142 --Currency Conversion Type
91143 , p_source_10 IN VARCHAR2
91145 , p_source_11 IN NUMBER
91146 )
91147 IS
91148
91149 l_component_type VARCHAR2(80);
91150 l_component_code VARCHAR2(30);
91151 l_component_type_code VARCHAR2(1);
91152 l_component_appl_id INTEGER;
91153 l_amb_context_code VARCHAR2(30);
91154 l_entity_code VARCHAR2(30);
91155 l_event_class_code VARCHAR2(30);
91156 l_ae_header_id NUMBER;
91157 l_event_type_code VARCHAR2(30);
91158 l_line_definition_code VARCHAR2(30);
91159 l_line_definition_owner_code VARCHAR2(1);
91160 --
91161 -- adr variables
91162 l_segment VARCHAR2(30);
91163 l_ccid NUMBER;
91164 l_adr_transaction_coa_id NUMBER;
91165 l_adr_accounting_coa_id NUMBER;
91166 l_adr_flexfield_segment_code VARCHAR2(30);
91167 l_adr_flex_value_set_id NUMBER;
91168 l_adr_value_type_code VARCHAR2(30);
91169 l_adr_value_combination_id NUMBER;
91170 l_adr_value_segment_code VARCHAR2(30);
91171
91172 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
91173 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
91174 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
91175 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
91176
91177 -- 4262811 Variables ------------------------------------------------------------------------------------------
91178 l_entered_amt_idx NUMBER;
91179 l_accted_amt_idx NUMBER;
91180 l_acc_rev_flag VARCHAR2(1);
91181 l_accrual_line_num NUMBER;
91182 l_tmp_amt NUMBER;
91183 l_acc_rev_natural_side_code VARCHAR2(1);
91184
91185 l_num_entries NUMBER;
91186 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
91187 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
91188 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
91189 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
91190 l_recog_line_1 NUMBER;
91191 l_recog_line_2 NUMBER;
91192
91193 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
91194 l_bflow_applied_to_amt NUMBER; -- 5132302
91195 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
91196
91197 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91198
91199 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
91200 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
91201
91202 ---------------------------------------------------------------------------------------------------------------
91203
91204
91205 --
91206 -- bulk performance
91207 --
91208 l_balance_type_code VARCHAR2(1);
91209 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
91210 l_log_module VARCHAR2(240);
91211
91212 --
91213 -- Upgrade strategy
91214 --
91215 l_actual_upg_option VARCHAR2(1);
91216 l_enc_upg_option VARCHAR2(1);
91217
91218 --
91219 BEGIN
91220 --
91221 IF g_log_enabled THEN
91222 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_197';
91223 END IF;
91224 --
91225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91226
91227 trace
91228 (p_msg => 'BEGIN of AcctLineType_197'
91229 ,p_level => C_LEVEL_PROCEDURE
91230 ,p_module => l_log_module);
91231
91232 END IF;
91233 --
91234 l_component_type := 'AMB_JLT';
91235 l_component_code := 'ISP';
91236 l_component_type_code := 'S';
91237 l_component_appl_id := 555;
91238 l_amb_context_code := 'DEFAULT';
91239 l_entity_code := 'PURCHASING';
91240 l_event_class_code := 'RECEIVE';
91241 l_event_type_code := 'EXP_RET_TO_RECEIVING';
91242 l_line_definition_owner_code := 'S';
91243 l_line_definition_code := 'EXP_RET_TO_RECEIVING';
91244 --
91245 l_balance_type_code := 'A';
91246 l_segment := NULL;
91247 l_ccid := NULL;
91248 l_adr_transaction_coa_id := NULL;
91249 l_adr_accounting_coa_id := NULL;
91250 l_adr_flexfield_segment_code := NULL;
91251 l_adr_flex_value_set_id := NULL;
91252 l_adr_value_type_code := NULL;
91253 l_adr_value_combination_id := NULL;
91254 l_adr_value_segment_code := NULL;
91255
91256 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
91257 l_bflow_class_code := ''; -- 4219869 Business Flow
91258 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
91259 l_budgetary_control_flag := 'N';
91260
91261 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91262 l_bflow_applied_to_amt := NULL; -- 5132302
91263 l_entered_amt_idx := NULL; -- 4262811
91264 l_accted_amt_idx := NULL; -- 4262811
91265 l_acc_rev_flag := NULL; -- 4262811
91266 l_accrual_line_num := NULL; -- 4262811
91267 l_tmp_amt := NULL; -- 4262811
91268 --
91269
91273 ') = 'ISP'
91270 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91271 l_balance_type_code <> 'B' THEN
91272 IF NVL(p_source_2,'
91274 THEN
91275
91276 --
91277 XLA_AE_LINES_PKG.SetNewLine;
91278
91279 p_balance_type_code := l_balance_type_code;
91280 -- set the flag so later we will know whether the gain loss line needs to be created
91281
91282 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91283 p_actual_flag :='A';
91284 END IF;
91285
91286 --
91287 -- bulk performance
91288 --
91289 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91290 p_header_num => 0); -- 4262811
91291 --
91292 -- set accounting line options
91293 --
91294 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91295 p_natural_side_code => 'D'
91296 , p_gain_or_loss_flag => 'N'
91297 , p_gl_transfer_mode_code => 'D'
91298 , p_acct_entry_type_code => 'A'
91299 , p_switch_side_flag => 'Y'
91300 , p_merge_duplicate_code => 'W'
91301 );
91302 --
91303 l_acc_rev_natural_side_code := 'C'; -- 4262811
91304 --
91305 --
91306 -- set accounting line type info
91307 --
91308 xla_ae_lines_pkg.SetAcctLineType
91309 (p_component_type => l_component_type
91310 ,p_event_type_code => l_event_type_code
91311 ,p_line_definition_owner_code => l_line_definition_owner_code
91312 ,p_line_definition_code => l_line_definition_code
91313 ,p_accounting_line_code => l_component_code
91314 ,p_accounting_line_type_code => l_component_type_code
91315 ,p_accounting_line_appl_id => l_component_appl_id
91316 ,p_amb_context_code => l_amb_context_code
91317 ,p_entity_code => l_entity_code
91318 ,p_event_class_code => l_event_class_code);
91319 --
91320 -- set accounting class
91321 --
91322 xla_ae_lines_pkg.SetAcctClass(
91323 p_accounting_class_code => 'RECEIVING_INSPECTION'
91324 , p_ae_header_id => l_ae_header_id
91325 );
91326
91327 --
91328 -- set rounding class
91329 --
91330 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91331 'RECEIVING_INSPECTION';
91332
91333 --
91334 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91335 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91336 --
91337 -- bulk performance
91338 --
91339 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91340
91341 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91342 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91343
91344 -- 4955764
91345 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91346 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91347
91348 -- 4458381 Public Sector Enh
91349
91350 --
91351 -- set accounting attributes for the line type
91352 --
91353 l_entered_amt_idx := 3;
91354 l_accted_amt_idx := 8;
91355 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91356 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91357 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
91358 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91359 l_rec_acct_attrs.array_char_value(2) := p_source_6;
91360 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91361 l_rec_acct_attrs.array_num_value(3) := p_source_3;
91362 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91363 l_rec_acct_attrs.array_char_value(4) := p_source_7;
91364 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91365 l_rec_acct_attrs.array_date_value(5) := p_source_8;
91366 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91367 l_rec_acct_attrs.array_num_value(6) := p_source_9;
91368 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91369 l_rec_acct_attrs.array_char_value(7) := p_source_10;
91370 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91371 l_rec_acct_attrs.array_num_value(8) := p_source_11;
91372
91373 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91374 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91375
91376 ---------------------------------------------------------------------------------------------------------------
91377 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91378 ---------------------------------------------------------------------------------------------------------------
91379 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91380
91381 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91385 (p_source_code => 'LEDGER_CATEGORY_CODE'
91382 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91383
91384 IF xla_accounting_cache_pkg.GetValueChar
91386 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91387 AND l_bflow_method_code = 'PRIOR_ENTRY'
91388 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91389 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91390 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91391 )
91392 THEN
91393 xla_ae_lines_pkg.BflowUpgEntry
91394 (p_business_method_code => l_bflow_method_code
91395 ,p_business_class_code => l_bflow_class_code
91396 ,p_balance_type => l_balance_type_code);
91397 ELSE
91398 NULL;
91399 -- No business flow processing for business flow method of NONE.
91400 END IF;
91401
91402 --
91403 -- call analytical criteria
91404 --
91405
91406 --
91407 -- call description
91408 --
91409 -- No description or it is inherited.
91410 --
91411 -- call ADRs
91412 -- Bug 4922099
91413 --
91414 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91415 (NVL(l_actual_upg_option, 'N') = 'O') OR
91416 (NVL(l_enc_upg_option, 'N') = 'O')
91417 )
91418 THEN
91419 NULL;
91420 --
91421 --
91422
91423 l_ccid := AcctDerRule_25(
91424 p_application_id => p_application_id
91425 , p_ae_header_id => l_ae_header_id
91426 , p_source_1 => p_source_1
91427 , p_source_2 => p_source_2
91428 , x_transaction_coa_id => l_adr_transaction_coa_id
91429 , x_accounting_coa_id => l_adr_accounting_coa_id
91430 , x_value_type_code => l_adr_value_type_code
91431 , p_side => 'NA'
91432 );
91433
91434 xla_ae_lines_pkg.set_ccid(
91435 p_code_combination_id => l_ccid
91436 , p_value_type_code => l_adr_value_type_code
91437 , p_transaction_coa_id => l_adr_transaction_coa_id
91438 , p_accounting_coa_id => l_adr_accounting_coa_id
91439 , p_adr_code => 'ISP'
91440 , p_adr_type_code => 'S'
91441 , p_component_type => l_component_type
91442 , p_component_code => l_component_code
91443 , p_component_type_code => l_component_type_code
91444 , p_component_appl_id => l_component_appl_id
91445 , p_amb_context_code => l_amb_context_code
91446 , p_side => 'NA'
91447 );
91448
91449
91450 --
91451 --
91452 END IF;
91453 --
91454 -- Bug 4922099
91455 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91456 (NVL(l_enc_upg_option, 'N') = 'O')
91457 ) AND
91458 (l_bflow_method_code = 'PRIOR_ENTRY')
91459 )
91460 THEN
91461 IF
91462 --
91463 1 = 2
91464 --
91465 THEN
91466 xla_accounting_err_pkg.build_message
91467 (p_appli_s_name => 'XLA'
91468 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91469 ,p_token_1 => 'LINE_NUMBER'
91470 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
91471 ,p_token_2 => 'LINE_TYPE_NAME'
91472 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
91473 l_component_type
91474 ,l_component_code
91475 ,l_component_type_code
91476 ,l_component_appl_id
91477 ,l_amb_context_code
91478 ,l_entity_code
91479 ,l_event_class_code
91480 )
91481 ,p_token_3 => 'OWNER'
91482 ,p_value_3 => xla_lookups_pkg.get_meaning(
91483 p_lookup_type => 'XLA_OWNER_TYPE'
91484 ,p_lookup_code => l_component_type_code
91485 )
91486 ,p_token_4 => 'PRODUCT_NAME'
91487 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91488 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91489 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91493
91490 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91491 ,p_ae_header_id => NULL
91492 );
91494 IF (C_LEVEL_ERROR>= g_log_level) THEN
91495 trace
91496 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91497 ,p_level => C_LEVEL_ERROR
91498 ,p_module => l_log_module);
91499 END IF;
91500 END IF;
91501 END IF;
91502 --
91503 --
91504 ------------------------------------------------------------------------------------------------
91505 -- 4219869 Business Flow
91506 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91507 -- Prior Entry. Currently, the following code is always generated.
91508 ------------------------------------------------------------------------------------------------
91509 XLA_AE_LINES_PKG.ValidateCurrentLine;
91510
91511 ------------------------------------------------------------------------------------
91512 -- 4219869 Business Flow
91513 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91514 ------------------------------------------------------------------------------------
91515 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91516
91517 ----------------------------------------------------------------------------------
91518 -- 4219869 Business Flow
91519 -- Update journal entry status -- Need to generate this within IF <condition>
91520 ----------------------------------------------------------------------------------
91521 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91522 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91523 ,p_balance_type_code => l_balance_type_code
91524 );
91525
91526 -------------------------------------------------------------------------------------------
91527 -- 4262811 - Generate the Accrual Reversal lines
91528 -------------------------------------------------------------------------------------------
91529 BEGIN
91530 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91531 (g_array_event(p_event_id).array_value_num('header_index'));
91532 IF l_acc_rev_flag IS NULL THEN
91533 l_acc_rev_flag := 'N';
91534 END IF;
91535 EXCEPTION
91536 WHEN OTHERS THEN
91537 l_acc_rev_flag := 'N';
91538 END;
91539 --
91540 IF (l_acc_rev_flag = 'Y') THEN
91541
91542 -- 4645092 ------------------------------------------------------------------------------
91543 -- To allow MPA report to determine if it should generate report process
91544 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91545 ------------------------------------------------------------------------------------------
91546
91547 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91548 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91549 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
91550 -- call ADRs
91551 -- Bug 4922099
91552 --
91553 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91554 (NVL(l_actual_upg_option, 'N') = 'O') OR
91555 (NVL(l_enc_upg_option, 'N') = 'O')
91556 )
91557 THEN
91558 NULL;
91559 --
91560 --
91561
91562 l_ccid := AcctDerRule_25(
91563 p_application_id => p_application_id
91564 , p_ae_header_id => l_ae_header_id
91565 , p_source_1 => p_source_1
91566 , p_source_2 => p_source_2
91567 , x_transaction_coa_id => l_adr_transaction_coa_id
91568 , x_accounting_coa_id => l_adr_accounting_coa_id
91569 , x_value_type_code => l_adr_value_type_code
91570 , p_side => 'NA'
91571 );
91572
91573 xla_ae_lines_pkg.set_ccid(
91574 p_code_combination_id => l_ccid
91575 , p_value_type_code => l_adr_value_type_code
91576 , p_transaction_coa_id => l_adr_transaction_coa_id
91577 , p_accounting_coa_id => l_adr_accounting_coa_id
91578 , p_adr_code => 'ISP'
91579 , p_adr_type_code => 'S'
91580 , p_component_type => l_component_type
91581 , p_component_code => l_component_code
91582 , p_component_type_code => l_component_type_code
91583 , p_component_appl_id => l_component_appl_id
91584 , p_amb_context_code => l_amb_context_code
91585 , p_side => 'NA'
91586 );
91587
91588
91589 --
91590 --
91591 END IF;
91592
91593 --
91594 -- Update the line information that should be overwritten
91595 --
91596 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91597 p_header_num => 1);
91598 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
91599
91600 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91601
91602 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
91603 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91604 END IF;
91605
91606 --
91610 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
91607 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91608 --
91609 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91611 ELSE
91612 ---------------------------------------------------------------------------------------------------
91613 -- 4262811a Switch Sign
91614 ---------------------------------------------------------------------------------------------------
91615 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
91616 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91617 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91618 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91619 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91620 -- 5132302
91621 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91622 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91623
91624 END IF;
91625
91626 -- 4955764
91627 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91628 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91629
91630
91631 XLA_AE_LINES_PKG.ValidateCurrentLine;
91632 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91633
91634 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91635 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91636 ,p_balance_type_code => l_balance_type_code);
91637
91638 END IF;
91639
91640 -----------------------------------------------------------------------------------------
91641 -- 4262811 Multiperiod Accounting
91642 -----------------------------------------------------------------------------------------
91643 -- No MPA option is assigned.
91644
91645
91646 END IF;
91647 END IF;
91648 --
91649
91650 --
91651 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91652 trace
91653 (p_msg => 'END of AcctLineType_197'
91654 ,p_level => C_LEVEL_PROCEDURE
91655 ,p_module => l_log_module);
91656 END IF;
91657 --
91658 EXCEPTION
91659 WHEN xla_exceptions_pkg.application_exception THEN
91660 RAISE;
91661 WHEN OTHERS THEN
91662 xla_exceptions_pkg.raise_message
91663 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_197');
91664 END AcctLineType_197;
91665 --
91666
91667 ---------------------------------------
91668 --
91669 -- PRIVATE FUNCTION
91670 -- AcctLineType_198
91671 --
91672 ---------------------------------------
91673 PROCEDURE AcctLineType_198 (
91674 p_application_id IN NUMBER
91675 ,p_event_id IN NUMBER
91676 ,p_calculate_acctd_flag IN VARCHAR2
91677 ,p_calculate_g_l_flag IN VARCHAR2
91678 ,p_actual_flag IN OUT VARCHAR2
91679 ,p_balance_type_code OUT VARCHAR2
91680 ,p_gain_or_loss_ref OUT VARCHAR2
91681
91682 --Transaction Account
91683 , p_source_1 IN NUMBER
91684 --Journal Line Type
91685 , p_source_2 IN VARCHAR2
91686 --Entered Amount
91687 , p_source_3 IN NUMBER
91688 --First Distribution Identifier
91689 , p_source_5 IN NUMBER
91690 --Distribution Type
91691 , p_source_6 IN VARCHAR2
91692 --Currency Code
91693 , p_source_7 IN VARCHAR2
91694 --Currency Conversion Date
91695 , p_source_8 IN DATE
91696 --Currency Conversion Rate
91697 , p_source_9 IN NUMBER
91698 --Currency Conversion Type
91699 , p_source_10 IN VARCHAR2
91700 --Accounted Amount
91701 , p_source_11 IN NUMBER
91702 )
91703 IS
91704
91705 l_component_type VARCHAR2(80);
91706 l_component_code VARCHAR2(30);
91707 l_component_type_code VARCHAR2(1);
91708 l_component_appl_id INTEGER;
91709 l_amb_context_code VARCHAR2(30);
91710 l_entity_code VARCHAR2(30);
91711 l_event_class_code VARCHAR2(30);
91712 l_ae_header_id NUMBER;
91713 l_event_type_code VARCHAR2(30);
91714 l_line_definition_code VARCHAR2(30);
91715 l_line_definition_owner_code VARCHAR2(1);
91716 --
91717 -- adr variables
91718 l_segment VARCHAR2(30);
91719 l_ccid NUMBER;
91720 l_adr_transaction_coa_id NUMBER;
91721 l_adr_accounting_coa_id NUMBER;
91722 l_adr_flexfield_segment_code VARCHAR2(30);
91723 l_adr_flex_value_set_id NUMBER;
91724 l_adr_value_type_code VARCHAR2(30);
91725 l_adr_value_combination_id NUMBER;
91726 l_adr_value_segment_code VARCHAR2(30);
91727
91728 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
91729 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
91730 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
91731 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
91732
91736 l_acc_rev_flag VARCHAR2(1);
91733 -- 4262811 Variables ------------------------------------------------------------------------------------------
91734 l_entered_amt_idx NUMBER;
91735 l_accted_amt_idx NUMBER;
91737 l_accrual_line_num NUMBER;
91738 l_tmp_amt NUMBER;
91739 l_acc_rev_natural_side_code VARCHAR2(1);
91740
91741 l_num_entries NUMBER;
91742 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
91743 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
91744 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
91745 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
91746 l_recog_line_1 NUMBER;
91747 l_recog_line_2 NUMBER;
91748
91749 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
91750 l_bflow_applied_to_amt NUMBER; -- 5132302
91751 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
91752
91753 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91754
91755 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
91756 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
91757
91758 ---------------------------------------------------------------------------------------------------------------
91759
91760
91761 --
91762 -- bulk performance
91763 --
91764 l_balance_type_code VARCHAR2(1);
91765 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
91766 l_log_module VARCHAR2(240);
91767
91768 --
91769 -- Upgrade strategy
91770 --
91771 l_actual_upg_option VARCHAR2(1);
91772 l_enc_upg_option VARCHAR2(1);
91773
91774 --
91775 BEGIN
91776 --
91777 IF g_log_enabled THEN
91778 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_198';
91779 END IF;
91780 --
91781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91782
91783 trace
91784 (p_msg => 'BEGIN of AcctLineType_198'
91785 ,p_level => C_LEVEL_PROCEDURE
91786 ,p_module => l_log_module);
91787
91788 END IF;
91789 --
91790 l_component_type := 'AMB_JLT';
91791 l_component_code := 'ISP';
91792 l_component_type_code := 'S';
91793 l_component_appl_id := 555;
91794 l_amb_context_code := 'DEFAULT';
91795 l_entity_code := 'PURCHASING';
91796 l_event_class_code := 'DELIVER';
91797 l_event_type_code := 'PO_RECEIPT_ADJ';
91798 l_line_definition_owner_code := 'S';
91799 l_line_definition_code := 'PO_RECEIPT_ADJ';
91800 --
91801 l_balance_type_code := 'A';
91802 l_segment := NULL;
91803 l_ccid := NULL;
91804 l_adr_transaction_coa_id := NULL;
91805 l_adr_accounting_coa_id := NULL;
91806 l_adr_flexfield_segment_code := NULL;
91807 l_adr_flex_value_set_id := NULL;
91808 l_adr_value_type_code := NULL;
91809 l_adr_value_combination_id := NULL;
91810 l_adr_value_segment_code := NULL;
91811
91812 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
91813 l_bflow_class_code := ''; -- 4219869 Business Flow
91814 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
91815 l_budgetary_control_flag := 'N';
91816
91817 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91818 l_bflow_applied_to_amt := NULL; -- 5132302
91819 l_entered_amt_idx := NULL; -- 4262811
91820 l_accted_amt_idx := NULL; -- 4262811
91821 l_acc_rev_flag := NULL; -- 4262811
91822 l_accrual_line_num := NULL; -- 4262811
91823 l_tmp_amt := NULL; -- 4262811
91824 --
91825
91826 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91827 l_balance_type_code <> 'B' THEN
91828 IF NVL(p_source_2,'
91829 ') = 'ISP'
91830 THEN
91831
91832 --
91833 XLA_AE_LINES_PKG.SetNewLine;
91834
91835 p_balance_type_code := l_balance_type_code;
91836 -- set the flag so later we will know whether the gain loss line needs to be created
91837
91838 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91839 p_actual_flag :='A';
91840 END IF;
91841
91842 --
91843 -- bulk performance
91844 --
91845 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91846 p_header_num => 0); -- 4262811
91847 --
91848 -- set accounting line options
91849 --
91850 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91851 p_natural_side_code => 'D'
91852 , p_gain_or_loss_flag => 'N'
91853 , p_gl_transfer_mode_code => 'D'
91854 , p_acct_entry_type_code => 'A'
91855 , p_switch_side_flag => 'Y'
91856 , p_merge_duplicate_code => 'W'
91857 );
91858 --
91859 l_acc_rev_natural_side_code := 'C'; -- 4262811
91860 --
91861 --
91862 -- set accounting line type info
91863 --
91864 xla_ae_lines_pkg.SetAcctLineType
91868 ,p_line_definition_code => l_line_definition_code
91865 (p_component_type => l_component_type
91866 ,p_event_type_code => l_event_type_code
91867 ,p_line_definition_owner_code => l_line_definition_owner_code
91869 ,p_accounting_line_code => l_component_code
91870 ,p_accounting_line_type_code => l_component_type_code
91871 ,p_accounting_line_appl_id => l_component_appl_id
91872 ,p_amb_context_code => l_amb_context_code
91873 ,p_entity_code => l_entity_code
91874 ,p_event_class_code => l_event_class_code);
91875 --
91876 -- set accounting class
91877 --
91878 xla_ae_lines_pkg.SetAcctClass(
91879 p_accounting_class_code => 'RECEIVING_INSPECTION'
91880 , p_ae_header_id => l_ae_header_id
91881 );
91882
91883 --
91884 -- set rounding class
91885 --
91886 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91887 'RECEIVING_INSPECTION';
91888
91889 --
91890 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91891 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91892 --
91893 -- bulk performance
91894 --
91895 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91896
91897 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91898 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91899
91900 -- 4955764
91901 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91902 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91903
91904 -- 4458381 Public Sector Enh
91905
91906 --
91907 -- set accounting attributes for the line type
91908 --
91909 l_entered_amt_idx := 3;
91910 l_accted_amt_idx := 8;
91911 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91912 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91913 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
91914 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91915 l_rec_acct_attrs.array_char_value(2) := p_source_6;
91916 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91917 l_rec_acct_attrs.array_num_value(3) := p_source_3;
91918 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91919 l_rec_acct_attrs.array_char_value(4) := p_source_7;
91920 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91921 l_rec_acct_attrs.array_date_value(5) := p_source_8;
91922 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91923 l_rec_acct_attrs.array_num_value(6) := p_source_9;
91924 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91925 l_rec_acct_attrs.array_char_value(7) := p_source_10;
91926 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91927 l_rec_acct_attrs.array_num_value(8) := p_source_11;
91928
91929 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91930 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91931
91932 ---------------------------------------------------------------------------------------------------------------
91933 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91934 ---------------------------------------------------------------------------------------------------------------
91935 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91936
91937 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91938 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91939
91940 IF xla_accounting_cache_pkg.GetValueChar
91941 (p_source_code => 'LEDGER_CATEGORY_CODE'
91942 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91943 AND l_bflow_method_code = 'PRIOR_ENTRY'
91944 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91945 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91946 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91947 )
91948 THEN
91949 xla_ae_lines_pkg.BflowUpgEntry
91950 (p_business_method_code => l_bflow_method_code
91951 ,p_business_class_code => l_bflow_class_code
91952 ,p_balance_type => l_balance_type_code);
91953 ELSE
91954 NULL;
91955 -- No business flow processing for business flow method of NONE.
91956 END IF;
91957
91958 --
91959 -- call analytical criteria
91960 --
91961
91962 --
91963 -- call description
91964 --
91965 -- No description or it is inherited.
91966 --
91967 -- call ADRs
91968 -- Bug 4922099
91969 --
91970 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91971 (NVL(l_actual_upg_option, 'N') = 'O') OR
91972 (NVL(l_enc_upg_option, 'N') = 'O')
91973 )
91974 THEN
91975 NULL;
91976 --
91977 --
91981 , p_ae_header_id => l_ae_header_id
91978
91979 l_ccid := AcctDerRule_25(
91980 p_application_id => p_application_id
91982 , p_source_1 => p_source_1
91983 , p_source_2 => p_source_2
91984 , x_transaction_coa_id => l_adr_transaction_coa_id
91985 , x_accounting_coa_id => l_adr_accounting_coa_id
91986 , x_value_type_code => l_adr_value_type_code
91987 , p_side => 'NA'
91988 );
91989
91990 xla_ae_lines_pkg.set_ccid(
91991 p_code_combination_id => l_ccid
91992 , p_value_type_code => l_adr_value_type_code
91993 , p_transaction_coa_id => l_adr_transaction_coa_id
91994 , p_accounting_coa_id => l_adr_accounting_coa_id
91995 , p_adr_code => 'ISP'
91996 , p_adr_type_code => 'S'
91997 , p_component_type => l_component_type
91998 , p_component_code => l_component_code
91999 , p_component_type_code => l_component_type_code
92000 , p_component_appl_id => l_component_appl_id
92001 , p_amb_context_code => l_amb_context_code
92002 , p_side => 'NA'
92003 );
92004
92005
92006 --
92007 --
92008 END IF;
92009 --
92010 -- Bug 4922099
92011 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92012 (NVL(l_enc_upg_option, 'N') = 'O')
92013 ) AND
92014 (l_bflow_method_code = 'PRIOR_ENTRY')
92015 )
92016 THEN
92017 IF
92018 --
92019 1 = 2
92020 --
92021 THEN
92022 xla_accounting_err_pkg.build_message
92023 (p_appli_s_name => 'XLA'
92024 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92025 ,p_token_1 => 'LINE_NUMBER'
92026 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
92027 ,p_token_2 => 'LINE_TYPE_NAME'
92028 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
92029 l_component_type
92030 ,l_component_code
92031 ,l_component_type_code
92032 ,l_component_appl_id
92033 ,l_amb_context_code
92034 ,l_entity_code
92035 ,l_event_class_code
92036 )
92037 ,p_token_3 => 'OWNER'
92038 ,p_value_3 => xla_lookups_pkg.get_meaning(
92039 p_lookup_type => 'XLA_OWNER_TYPE'
92040 ,p_lookup_code => l_component_type_code
92041 )
92042 ,p_token_4 => 'PRODUCT_NAME'
92043 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92044 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92045 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92046 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92047 ,p_ae_header_id => NULL
92048 );
92049
92050 IF (C_LEVEL_ERROR>= g_log_level) THEN
92051 trace
92052 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92053 ,p_level => C_LEVEL_ERROR
92054 ,p_module => l_log_module);
92055 END IF;
92056 END IF;
92057 END IF;
92058 --
92059 --
92060 ------------------------------------------------------------------------------------------------
92061 -- 4219869 Business Flow
92062 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92063 -- Prior Entry. Currently, the following code is always generated.
92064 ------------------------------------------------------------------------------------------------
92065 XLA_AE_LINES_PKG.ValidateCurrentLine;
92066
92067 ------------------------------------------------------------------------------------
92068 -- 4219869 Business Flow
92069 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92070 ------------------------------------------------------------------------------------
92071 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92072
92073 ----------------------------------------------------------------------------------
92074 -- 4219869 Business Flow
92075 -- Update journal entry status -- Need to generate this within IF <condition>
92076 ----------------------------------------------------------------------------------
92080 );
92077 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92078 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92079 ,p_balance_type_code => l_balance_type_code
92081
92082 -------------------------------------------------------------------------------------------
92083 -- 4262811 - Generate the Accrual Reversal lines
92084 -------------------------------------------------------------------------------------------
92085 BEGIN
92086 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92087 (g_array_event(p_event_id).array_value_num('header_index'));
92088 IF l_acc_rev_flag IS NULL THEN
92089 l_acc_rev_flag := 'N';
92090 END IF;
92091 EXCEPTION
92092 WHEN OTHERS THEN
92093 l_acc_rev_flag := 'N';
92094 END;
92095 --
92096 IF (l_acc_rev_flag = 'Y') THEN
92097
92098 -- 4645092 ------------------------------------------------------------------------------
92099 -- To allow MPA report to determine if it should generate report process
92100 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92101 ------------------------------------------------------------------------------------------
92102
92103 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92104 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92105 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
92106 -- call ADRs
92107 -- Bug 4922099
92108 --
92109 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92110 (NVL(l_actual_upg_option, 'N') = 'O') OR
92111 (NVL(l_enc_upg_option, 'N') = 'O')
92112 )
92113 THEN
92114 NULL;
92115 --
92116 --
92117
92118 l_ccid := AcctDerRule_25(
92119 p_application_id => p_application_id
92120 , p_ae_header_id => l_ae_header_id
92121 , p_source_1 => p_source_1
92122 , p_source_2 => p_source_2
92123 , x_transaction_coa_id => l_adr_transaction_coa_id
92124 , x_accounting_coa_id => l_adr_accounting_coa_id
92125 , x_value_type_code => l_adr_value_type_code
92126 , p_side => 'NA'
92127 );
92128
92129 xla_ae_lines_pkg.set_ccid(
92130 p_code_combination_id => l_ccid
92131 , p_value_type_code => l_adr_value_type_code
92132 , p_transaction_coa_id => l_adr_transaction_coa_id
92133 , p_accounting_coa_id => l_adr_accounting_coa_id
92134 , p_adr_code => 'ISP'
92135 , p_adr_type_code => 'S'
92136 , p_component_type => l_component_type
92137 , p_component_code => l_component_code
92138 , p_component_type_code => l_component_type_code
92139 , p_component_appl_id => l_component_appl_id
92140 , p_amb_context_code => l_amb_context_code
92141 , p_side => 'NA'
92142 );
92143
92144
92145 --
92146 --
92147 END IF;
92148
92149 --
92150 -- Update the line information that should be overwritten
92151 --
92152 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92153 p_header_num => 1);
92154 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
92155
92156 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92157
92158 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
92159 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92160 END IF;
92161
92162 --
92163 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92164 --
92165 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92166 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
92167 ELSE
92168 ---------------------------------------------------------------------------------------------------
92169 -- 4262811a Switch Sign
92170 ---------------------------------------------------------------------------------------------------
92171 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
92172 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92173 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92174 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92175 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92176 -- 5132302
92177 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92178 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92179
92180 END IF;
92181
92182 -- 4955764
92183 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92184 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92185
92186
92187 XLA_AE_LINES_PKG.ValidateCurrentLine;
92191 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92188 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92189
92190 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92192 ,p_balance_type_code => l_balance_type_code);
92193
92194 END IF;
92195
92196 -----------------------------------------------------------------------------------------
92197 -- 4262811 Multiperiod Accounting
92198 -----------------------------------------------------------------------------------------
92199 -- No MPA option is assigned.
92200
92201
92202 END IF;
92203 END IF;
92204 --
92205
92206 --
92207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92208 trace
92209 (p_msg => 'END of AcctLineType_198'
92210 ,p_level => C_LEVEL_PROCEDURE
92211 ,p_module => l_log_module);
92212 END IF;
92213 --
92214 EXCEPTION
92215 WHEN xla_exceptions_pkg.application_exception THEN
92216 RAISE;
92217 WHEN OTHERS THEN
92218 xla_exceptions_pkg.raise_message
92219 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_198');
92220 END AcctLineType_198;
92221 --
92222
92223 ---------------------------------------
92224 --
92225 -- PRIVATE FUNCTION
92226 -- AcctLineType_199
92227 --
92228 ---------------------------------------
92229 PROCEDURE AcctLineType_199 (
92230 p_application_id IN NUMBER
92231 ,p_event_id IN NUMBER
92232 ,p_calculate_acctd_flag IN VARCHAR2
92233 ,p_calculate_g_l_flag IN VARCHAR2
92234 ,p_actual_flag IN OUT VARCHAR2
92235 ,p_balance_type_code OUT VARCHAR2
92236 ,p_gain_or_loss_ref OUT VARCHAR2
92237
92238 --Transaction Account
92239 , p_source_1 IN NUMBER
92240 --Journal Line Type
92241 , p_source_2 IN VARCHAR2
92242 --Entered Amount
92243 , p_source_3 IN NUMBER
92244 --First Distribution Identifier
92245 , p_source_5 IN NUMBER
92246 --Distribution Type
92247 , p_source_6 IN VARCHAR2
92248 --Currency Code
92249 , p_source_7 IN VARCHAR2
92250 --Currency Conversion Date
92251 , p_source_8 IN DATE
92252 --Currency Conversion Rate
92253 , p_source_9 IN NUMBER
92254 --Currency Conversion Type
92255 , p_source_10 IN VARCHAR2
92256 --Accounted Amount
92257 , p_source_11 IN NUMBER
92258 )
92259 IS
92260
92261 l_component_type VARCHAR2(80);
92262 l_component_code VARCHAR2(30);
92263 l_component_type_code VARCHAR2(1);
92264 l_component_appl_id INTEGER;
92265 l_amb_context_code VARCHAR2(30);
92266 l_entity_code VARCHAR2(30);
92267 l_event_class_code VARCHAR2(30);
92268 l_ae_header_id NUMBER;
92269 l_event_type_code VARCHAR2(30);
92270 l_line_definition_code VARCHAR2(30);
92271 l_line_definition_owner_code VARCHAR2(1);
92272 --
92273 -- adr variables
92274 l_segment VARCHAR2(30);
92275 l_ccid NUMBER;
92276 l_adr_transaction_coa_id NUMBER;
92277 l_adr_accounting_coa_id NUMBER;
92278 l_adr_flexfield_segment_code VARCHAR2(30);
92279 l_adr_flex_value_set_id NUMBER;
92280 l_adr_value_type_code VARCHAR2(30);
92281 l_adr_value_combination_id NUMBER;
92282 l_adr_value_segment_code VARCHAR2(30);
92283
92284 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
92285 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
92286 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
92287 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
92288
92289 -- 4262811 Variables ------------------------------------------------------------------------------------------
92290 l_entered_amt_idx NUMBER;
92291 l_accted_amt_idx NUMBER;
92292 l_acc_rev_flag VARCHAR2(1);
92293 l_accrual_line_num NUMBER;
92294 l_tmp_amt NUMBER;
92295 l_acc_rev_natural_side_code VARCHAR2(1);
92296
92297 l_num_entries NUMBER;
92298 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
92299 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
92300 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
92301 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
92302 l_recog_line_1 NUMBER;
92303 l_recog_line_2 NUMBER;
92304
92305 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
92306 l_bflow_applied_to_amt NUMBER; -- 5132302
92307 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
92308
92309 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92310
92311 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
92312 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
92313
92314 ---------------------------------------------------------------------------------------------------------------
92315
92316
92317 --
92318 -- bulk performance
92319 --
92320 l_balance_type_code VARCHAR2(1);
92321 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
92325 -- Upgrade strategy
92322 l_log_module VARCHAR2(240);
92323
92324 --
92326 --
92327 l_actual_upg_option VARCHAR2(1);
92328 l_enc_upg_option VARCHAR2(1);
92329
92330 --
92331 BEGIN
92332 --
92333 IF g_log_enabled THEN
92334 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_199';
92335 END IF;
92336 --
92337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92338
92339 trace
92340 (p_msg => 'BEGIN of AcctLineType_199'
92341 ,p_level => C_LEVEL_PROCEDURE
92342 ,p_module => l_log_module);
92343
92344 END IF;
92345 --
92346 l_component_type := 'AMB_JLT';
92347 l_component_code := 'ISP';
92348 l_component_type_code := 'S';
92349 l_component_appl_id := 555;
92350 l_amb_context_code := 'DEFAULT';
92351 l_entity_code := 'PURCHASING';
92352 l_event_class_code := 'RECEIVE';
92353 l_event_type_code := 'DELIVER_EXPENSE';
92354 l_line_definition_owner_code := 'S';
92355 l_line_definition_code := 'DELIVER_EXPENSE';
92356 --
92357 l_balance_type_code := 'A';
92358 l_segment := NULL;
92359 l_ccid := NULL;
92360 l_adr_transaction_coa_id := NULL;
92361 l_adr_accounting_coa_id := NULL;
92362 l_adr_flexfield_segment_code := NULL;
92363 l_adr_flex_value_set_id := NULL;
92364 l_adr_value_type_code := NULL;
92365 l_adr_value_combination_id := NULL;
92366 l_adr_value_segment_code := NULL;
92367
92368 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
92369 l_bflow_class_code := ''; -- 4219869 Business Flow
92370 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
92371 l_budgetary_control_flag := 'N';
92372
92373 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92374 l_bflow_applied_to_amt := NULL; -- 5132302
92375 l_entered_amt_idx := NULL; -- 4262811
92376 l_accted_amt_idx := NULL; -- 4262811
92377 l_acc_rev_flag := NULL; -- 4262811
92378 l_accrual_line_num := NULL; -- 4262811
92379 l_tmp_amt := NULL; -- 4262811
92380 --
92381
92382 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92383 l_balance_type_code <> 'B' THEN
92384 IF NVL(p_source_2,'
92385 ') = 'ISP'
92386 THEN
92387
92388 --
92389 XLA_AE_LINES_PKG.SetNewLine;
92390
92391 p_balance_type_code := l_balance_type_code;
92392 -- set the flag so later we will know whether the gain loss line needs to be created
92393
92394 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92395 p_actual_flag :='A';
92396 END IF;
92397
92398 --
92399 -- bulk performance
92400 --
92401 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92402 p_header_num => 0); -- 4262811
92403 --
92404 -- set accounting line options
92405 --
92406 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92407 p_natural_side_code => 'D'
92408 , p_gain_or_loss_flag => 'N'
92409 , p_gl_transfer_mode_code => 'D'
92410 , p_acct_entry_type_code => 'A'
92411 , p_switch_side_flag => 'Y'
92412 , p_merge_duplicate_code => 'W'
92413 );
92414 --
92415 l_acc_rev_natural_side_code := 'C'; -- 4262811
92416 --
92417 --
92418 -- set accounting line type info
92419 --
92420 xla_ae_lines_pkg.SetAcctLineType
92421 (p_component_type => l_component_type
92422 ,p_event_type_code => l_event_type_code
92423 ,p_line_definition_owner_code => l_line_definition_owner_code
92424 ,p_line_definition_code => l_line_definition_code
92425 ,p_accounting_line_code => l_component_code
92426 ,p_accounting_line_type_code => l_component_type_code
92427 ,p_accounting_line_appl_id => l_component_appl_id
92428 ,p_amb_context_code => l_amb_context_code
92429 ,p_entity_code => l_entity_code
92430 ,p_event_class_code => l_event_class_code);
92431 --
92432 -- set accounting class
92433 --
92434 xla_ae_lines_pkg.SetAcctClass(
92435 p_accounting_class_code => 'RECEIVING_INSPECTION'
92436 , p_ae_header_id => l_ae_header_id
92437 );
92438
92439 --
92440 -- set rounding class
92441 --
92442 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92443 'RECEIVING_INSPECTION';
92444
92445 --
92446 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92447 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92448 --
92449 -- bulk performance
92450 --
92451 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92452
92453 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92454 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92455
92456 -- 4955764
92460 -- 4458381 Public Sector Enh
92457 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92458 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92459
92461
92462 --
92463 -- set accounting attributes for the line type
92464 --
92465 l_entered_amt_idx := 3;
92466 l_accted_amt_idx := 8;
92467 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92468 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92469 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
92470 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92471 l_rec_acct_attrs.array_char_value(2) := p_source_6;
92472 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92473 l_rec_acct_attrs.array_num_value(3) := p_source_3;
92474 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92475 l_rec_acct_attrs.array_char_value(4) := p_source_7;
92476 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92477 l_rec_acct_attrs.array_date_value(5) := p_source_8;
92478 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92479 l_rec_acct_attrs.array_num_value(6) := p_source_9;
92480 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92481 l_rec_acct_attrs.array_char_value(7) := p_source_10;
92482 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92483 l_rec_acct_attrs.array_num_value(8) := p_source_11;
92484
92485 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92486 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92487
92488 ---------------------------------------------------------------------------------------------------------------
92489 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92490 ---------------------------------------------------------------------------------------------------------------
92491 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92492
92493 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92494 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92495
92496 IF xla_accounting_cache_pkg.GetValueChar
92497 (p_source_code => 'LEDGER_CATEGORY_CODE'
92498 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92499 AND l_bflow_method_code = 'PRIOR_ENTRY'
92500 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92501 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92502 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92503 )
92504 THEN
92505 xla_ae_lines_pkg.BflowUpgEntry
92506 (p_business_method_code => l_bflow_method_code
92507 ,p_business_class_code => l_bflow_class_code
92508 ,p_balance_type => l_balance_type_code);
92509 ELSE
92510 NULL;
92511 -- No business flow processing for business flow method of NONE.
92512 END IF;
92513
92514 --
92515 -- call analytical criteria
92516 --
92517
92518 --
92519 -- call description
92520 --
92521 -- No description or it is inherited.
92522 --
92523 -- call ADRs
92524 -- Bug 4922099
92525 --
92526 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92527 (NVL(l_actual_upg_option, 'N') = 'O') OR
92528 (NVL(l_enc_upg_option, 'N') = 'O')
92529 )
92530 THEN
92531 NULL;
92532 --
92533 --
92534
92535 l_ccid := AcctDerRule_25(
92536 p_application_id => p_application_id
92537 , p_ae_header_id => l_ae_header_id
92538 , p_source_1 => p_source_1
92539 , p_source_2 => p_source_2
92540 , x_transaction_coa_id => l_adr_transaction_coa_id
92541 , x_accounting_coa_id => l_adr_accounting_coa_id
92542 , x_value_type_code => l_adr_value_type_code
92543 , p_side => 'NA'
92544 );
92545
92546 xla_ae_lines_pkg.set_ccid(
92547 p_code_combination_id => l_ccid
92548 , p_value_type_code => l_adr_value_type_code
92549 , p_transaction_coa_id => l_adr_transaction_coa_id
92550 , p_accounting_coa_id => l_adr_accounting_coa_id
92551 , p_adr_code => 'ISP'
92552 , p_adr_type_code => 'S'
92553 , p_component_type => l_component_type
92554 , p_component_code => l_component_code
92555 , p_component_type_code => l_component_type_code
92556 , p_component_appl_id => l_component_appl_id
92557 , p_amb_context_code => l_amb_context_code
92558 , p_side => 'NA'
92559 );
92560
92561
92562 --
92563 --
92564 END IF;
92565 --
92566 -- Bug 4922099
92567 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92568 (NVL(l_enc_upg_option, 'N') = 'O')
92569 ) AND
92570 (l_bflow_method_code = 'PRIOR_ENTRY')
92571 )
92572 THEN
92573 IF
92574 --
92575 1 = 2
92576 --
92577 THEN
92578 xla_accounting_err_pkg.build_message
92582 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
92579 (p_appli_s_name => 'XLA'
92580 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92581 ,p_token_1 => 'LINE_NUMBER'
92583 ,p_token_2 => 'LINE_TYPE_NAME'
92584 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
92585 l_component_type
92586 ,l_component_code
92587 ,l_component_type_code
92588 ,l_component_appl_id
92589 ,l_amb_context_code
92590 ,l_entity_code
92591 ,l_event_class_code
92592 )
92593 ,p_token_3 => 'OWNER'
92594 ,p_value_3 => xla_lookups_pkg.get_meaning(
92595 p_lookup_type => 'XLA_OWNER_TYPE'
92596 ,p_lookup_code => l_component_type_code
92597 )
92598 ,p_token_4 => 'PRODUCT_NAME'
92599 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92600 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92601 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92602 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92603 ,p_ae_header_id => NULL
92604 );
92605
92606 IF (C_LEVEL_ERROR>= g_log_level) THEN
92607 trace
92608 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92609 ,p_level => C_LEVEL_ERROR
92610 ,p_module => l_log_module);
92611 END IF;
92612 END IF;
92613 END IF;
92614 --
92615 --
92616 ------------------------------------------------------------------------------------------------
92617 -- 4219869 Business Flow
92618 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92619 -- Prior Entry. Currently, the following code is always generated.
92620 ------------------------------------------------------------------------------------------------
92621 XLA_AE_LINES_PKG.ValidateCurrentLine;
92622
92623 ------------------------------------------------------------------------------------
92624 -- 4219869 Business Flow
92625 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92626 ------------------------------------------------------------------------------------
92627 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92628
92629 ----------------------------------------------------------------------------------
92630 -- 4219869 Business Flow
92631 -- Update journal entry status -- Need to generate this within IF <condition>
92632 ----------------------------------------------------------------------------------
92633 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92634 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92635 ,p_balance_type_code => l_balance_type_code
92636 );
92637
92638 -------------------------------------------------------------------------------------------
92639 -- 4262811 - Generate the Accrual Reversal lines
92640 -------------------------------------------------------------------------------------------
92641 BEGIN
92642 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92643 (g_array_event(p_event_id).array_value_num('header_index'));
92644 IF l_acc_rev_flag IS NULL THEN
92645 l_acc_rev_flag := 'N';
92646 END IF;
92647 EXCEPTION
92648 WHEN OTHERS THEN
92649 l_acc_rev_flag := 'N';
92650 END;
92651 --
92652 IF (l_acc_rev_flag = 'Y') THEN
92653
92654 -- 4645092 ------------------------------------------------------------------------------
92655 -- To allow MPA report to determine if it should generate report process
92656 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92657 ------------------------------------------------------------------------------------------
92658
92659 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92660 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92661 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
92662 -- call ADRs
92663 -- Bug 4922099
92664 --
92665 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92666 (NVL(l_actual_upg_option, 'N') = 'O') OR
92667 (NVL(l_enc_upg_option, 'N') = 'O')
92668 )
92669 THEN
92670 NULL;
92671 --
92675 p_application_id => p_application_id
92672 --
92673
92674 l_ccid := AcctDerRule_25(
92676 , p_ae_header_id => l_ae_header_id
92677 , p_source_1 => p_source_1
92678 , p_source_2 => p_source_2
92679 , x_transaction_coa_id => l_adr_transaction_coa_id
92680 , x_accounting_coa_id => l_adr_accounting_coa_id
92681 , x_value_type_code => l_adr_value_type_code
92682 , p_side => 'NA'
92683 );
92684
92685 xla_ae_lines_pkg.set_ccid(
92686 p_code_combination_id => l_ccid
92687 , p_value_type_code => l_adr_value_type_code
92688 , p_transaction_coa_id => l_adr_transaction_coa_id
92689 , p_accounting_coa_id => l_adr_accounting_coa_id
92690 , p_adr_code => 'ISP'
92691 , p_adr_type_code => 'S'
92692 , p_component_type => l_component_type
92693 , p_component_code => l_component_code
92694 , p_component_type_code => l_component_type_code
92695 , p_component_appl_id => l_component_appl_id
92696 , p_amb_context_code => l_amb_context_code
92697 , p_side => 'NA'
92698 );
92699
92700
92701 --
92702 --
92703 END IF;
92704
92705 --
92706 -- Update the line information that should be overwritten
92707 --
92708 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92709 p_header_num => 1);
92710 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
92711
92712 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92713
92714 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
92715 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92716 END IF;
92717
92718 --
92719 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92720 --
92721 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92722 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
92723 ELSE
92724 ---------------------------------------------------------------------------------------------------
92725 -- 4262811a Switch Sign
92726 ---------------------------------------------------------------------------------------------------
92727 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
92728 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92729 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92730 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92731 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92732 -- 5132302
92733 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92734 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92735
92736 END IF;
92737
92738 -- 4955764
92739 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92740 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92741
92742
92743 XLA_AE_LINES_PKG.ValidateCurrentLine;
92744 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92745
92746 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92747 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92748 ,p_balance_type_code => l_balance_type_code);
92749
92750 END IF;
92751
92752 -----------------------------------------------------------------------------------------
92753 -- 4262811 Multiperiod Accounting
92754 -----------------------------------------------------------------------------------------
92755 -- No MPA option is assigned.
92756
92757
92758 END IF;
92759 END IF;
92760 --
92761
92762 --
92763 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92764 trace
92765 (p_msg => 'END of AcctLineType_199'
92766 ,p_level => C_LEVEL_PROCEDURE
92767 ,p_module => l_log_module);
92768 END IF;
92769 --
92770 EXCEPTION
92771 WHEN xla_exceptions_pkg.application_exception THEN
92772 RAISE;
92773 WHEN OTHERS THEN
92774 xla_exceptions_pkg.raise_message
92775 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_199');
92776 END AcctLineType_199;
92777 --
92778
92779 ---------------------------------------
92780 --
92781 -- PRIVATE FUNCTION
92782 -- AcctLineType_200
92783 --
92784 ---------------------------------------
92785 PROCEDURE AcctLineType_200 (
92786 p_application_id IN NUMBER
92787 ,p_event_id IN NUMBER
92788 ,p_calculate_acctd_flag IN VARCHAR2
92789 ,p_calculate_g_l_flag IN VARCHAR2
92790 ,p_actual_flag IN OUT VARCHAR2
92791 ,p_balance_type_code OUT VARCHAR2
92792 ,p_gain_or_loss_ref OUT VARCHAR2
92793
92797 , p_source_2 IN VARCHAR2
92794 --Transaction Account
92795 , p_source_1 IN NUMBER
92796 --Journal Line Type
92798 --Entered Amount
92799 , p_source_3 IN NUMBER
92800 --First Distribution Identifier
92801 , p_source_5 IN NUMBER
92802 --Distribution Type
92803 , p_source_6 IN VARCHAR2
92804 --Currency Code
92805 , p_source_7 IN VARCHAR2
92806 --Currency Conversion Date
92807 , p_source_8 IN DATE
92808 --Currency Conversion Rate
92809 , p_source_9 IN NUMBER
92810 --Currency Conversion Type
92811 , p_source_10 IN VARCHAR2
92812 --Accounted Amount
92813 , p_source_11 IN NUMBER
92814 )
92815 IS
92816
92817 l_component_type VARCHAR2(80);
92818 l_component_code VARCHAR2(30);
92819 l_component_type_code VARCHAR2(1);
92820 l_component_appl_id INTEGER;
92821 l_amb_context_code VARCHAR2(30);
92822 l_entity_code VARCHAR2(30);
92823 l_event_class_code VARCHAR2(30);
92824 l_ae_header_id NUMBER;
92825 l_event_type_code VARCHAR2(30);
92826 l_line_definition_code VARCHAR2(30);
92827 l_line_definition_owner_code VARCHAR2(1);
92828 --
92829 -- adr variables
92830 l_segment VARCHAR2(30);
92831 l_ccid NUMBER;
92832 l_adr_transaction_coa_id NUMBER;
92833 l_adr_accounting_coa_id NUMBER;
92834 l_adr_flexfield_segment_code VARCHAR2(30);
92835 l_adr_flex_value_set_id NUMBER;
92836 l_adr_value_type_code VARCHAR2(30);
92837 l_adr_value_combination_id NUMBER;
92838 l_adr_value_segment_code VARCHAR2(30);
92839
92840 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
92841 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
92842 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
92843 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
92844
92845 -- 4262811 Variables ------------------------------------------------------------------------------------------
92846 l_entered_amt_idx NUMBER;
92847 l_accted_amt_idx NUMBER;
92848 l_acc_rev_flag VARCHAR2(1);
92849 l_accrual_line_num NUMBER;
92850 l_tmp_amt NUMBER;
92851 l_acc_rev_natural_side_code VARCHAR2(1);
92852
92853 l_num_entries NUMBER;
92854 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
92855 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
92856 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
92857 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
92858 l_recog_line_1 NUMBER;
92859 l_recog_line_2 NUMBER;
92860
92861 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
92862 l_bflow_applied_to_amt NUMBER; -- 5132302
92863 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
92864
92865 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92866
92867 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
92868 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
92869
92870 ---------------------------------------------------------------------------------------------------------------
92871
92872
92873 --
92874 -- bulk performance
92875 --
92876 l_balance_type_code VARCHAR2(1);
92877 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
92878 l_log_module VARCHAR2(240);
92879
92880 --
92881 -- Upgrade strategy
92882 --
92883 l_actual_upg_option VARCHAR2(1);
92884 l_enc_upg_option VARCHAR2(1);
92885
92886 --
92887 BEGIN
92888 --
92889 IF g_log_enabled THEN
92890 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_200';
92891 END IF;
92892 --
92893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92894
92895 trace
92896 (p_msg => 'BEGIN of AcctLineType_200'
92897 ,p_level => C_LEVEL_PROCEDURE
92898 ,p_module => l_log_module);
92899
92900 END IF;
92901 --
92902 l_component_type := 'AMB_JLT';
92903 l_component_code := 'ISP';
92904 l_component_type_code := 'S';
92905 l_component_appl_id := 555;
92906 l_amb_context_code := 'DEFAULT';
92907 l_entity_code := 'PURCHASING';
92908 l_event_class_code := 'RECEIVE';
92909 l_event_type_code := 'ADJUST_RECEIVE';
92910 l_line_definition_owner_code := 'S';
92911 l_line_definition_code := 'ADJUST_RECEIVE';
92912 --
92913 l_balance_type_code := 'A';
92914 l_segment := NULL;
92915 l_ccid := NULL;
92916 l_adr_transaction_coa_id := NULL;
92917 l_adr_accounting_coa_id := NULL;
92918 l_adr_flexfield_segment_code := NULL;
92919 l_adr_flex_value_set_id := NULL;
92920 l_adr_value_type_code := NULL;
92921 l_adr_value_combination_id := NULL;
92922 l_adr_value_segment_code := NULL;
92923
92924 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
92928
92925 l_bflow_class_code := ''; -- 4219869 Business Flow
92926 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
92927 l_budgetary_control_flag := 'N';
92929 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92930 l_bflow_applied_to_amt := NULL; -- 5132302
92931 l_entered_amt_idx := NULL; -- 4262811
92932 l_accted_amt_idx := NULL; -- 4262811
92933 l_acc_rev_flag := NULL; -- 4262811
92934 l_accrual_line_num := NULL; -- 4262811
92935 l_tmp_amt := NULL; -- 4262811
92936 --
92937
92938 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92939 l_balance_type_code <> 'B' THEN
92940 IF NVL(p_source_2,'
92941 ') = 'ISP'
92942 THEN
92943
92944 --
92945 XLA_AE_LINES_PKG.SetNewLine;
92946
92947 p_balance_type_code := l_balance_type_code;
92948 -- set the flag so later we will know whether the gain loss line needs to be created
92949
92950 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92951 p_actual_flag :='A';
92952 END IF;
92953
92954 --
92955 -- bulk performance
92956 --
92957 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92958 p_header_num => 0); -- 4262811
92959 --
92960 -- set accounting line options
92961 --
92962 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92963 p_natural_side_code => 'D'
92964 , p_gain_or_loss_flag => 'N'
92965 , p_gl_transfer_mode_code => 'D'
92966 , p_acct_entry_type_code => 'A'
92967 , p_switch_side_flag => 'Y'
92968 , p_merge_duplicate_code => 'W'
92969 );
92970 --
92971 l_acc_rev_natural_side_code := 'C'; -- 4262811
92972 --
92973 --
92974 -- set accounting line type info
92975 --
92976 xla_ae_lines_pkg.SetAcctLineType
92977 (p_component_type => l_component_type
92978 ,p_event_type_code => l_event_type_code
92979 ,p_line_definition_owner_code => l_line_definition_owner_code
92980 ,p_line_definition_code => l_line_definition_code
92981 ,p_accounting_line_code => l_component_code
92982 ,p_accounting_line_type_code => l_component_type_code
92983 ,p_accounting_line_appl_id => l_component_appl_id
92984 ,p_amb_context_code => l_amb_context_code
92985 ,p_entity_code => l_entity_code
92986 ,p_event_class_code => l_event_class_code);
92987 --
92988 -- set accounting class
92989 --
92990 xla_ae_lines_pkg.SetAcctClass(
92991 p_accounting_class_code => 'RECEIVING_INSPECTION'
92992 , p_ae_header_id => l_ae_header_id
92993 );
92994
92995 --
92996 -- set rounding class
92997 --
92998 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92999 'RECEIVING_INSPECTION';
93000
93001 --
93002 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93003 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93004 --
93005 -- bulk performance
93006 --
93007 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93008
93009 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93010 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93011
93012 -- 4955764
93013 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93014 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93015
93016 -- 4458381 Public Sector Enh
93017
93018 --
93019 -- set accounting attributes for the line type
93020 --
93021 l_entered_amt_idx := 3;
93022 l_accted_amt_idx := 8;
93023 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93024 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93025 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
93026 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93027 l_rec_acct_attrs.array_char_value(2) := p_source_6;
93028 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93029 l_rec_acct_attrs.array_num_value(3) := p_source_3;
93030 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93031 l_rec_acct_attrs.array_char_value(4) := p_source_7;
93032 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93033 l_rec_acct_attrs.array_date_value(5) := p_source_8;
93034 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93035 l_rec_acct_attrs.array_num_value(6) := p_source_9;
93036 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93037 l_rec_acct_attrs.array_char_value(7) := p_source_10;
93038 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93039 l_rec_acct_attrs.array_num_value(8) := p_source_11;
93040
93041 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93042 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93043
93047 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93044 ---------------------------------------------------------------------------------------------------------------
93045 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93046 ---------------------------------------------------------------------------------------------------------------
93048
93049 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93050 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93051
93052 IF xla_accounting_cache_pkg.GetValueChar
93053 (p_source_code => 'LEDGER_CATEGORY_CODE'
93054 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93055 AND l_bflow_method_code = 'PRIOR_ENTRY'
93056 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93057 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93058 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93059 )
93060 THEN
93061 xla_ae_lines_pkg.BflowUpgEntry
93062 (p_business_method_code => l_bflow_method_code
93063 ,p_business_class_code => l_bflow_class_code
93064 ,p_balance_type => l_balance_type_code);
93065 ELSE
93066 NULL;
93067 -- No business flow processing for business flow method of NONE.
93068 END IF;
93069
93070 --
93071 -- call analytical criteria
93072 --
93073
93074 --
93075 -- call description
93076 --
93077 -- No description or it is inherited.
93078 --
93079 -- call ADRs
93080 -- Bug 4922099
93081 --
93082 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93083 (NVL(l_actual_upg_option, 'N') = 'O') OR
93084 (NVL(l_enc_upg_option, 'N') = 'O')
93085 )
93086 THEN
93087 NULL;
93088 --
93089 --
93090
93091 l_ccid := AcctDerRule_25(
93092 p_application_id => p_application_id
93093 , p_ae_header_id => l_ae_header_id
93094 , p_source_1 => p_source_1
93095 , p_source_2 => p_source_2
93096 , x_transaction_coa_id => l_adr_transaction_coa_id
93097 , x_accounting_coa_id => l_adr_accounting_coa_id
93098 , x_value_type_code => l_adr_value_type_code
93099 , p_side => 'NA'
93100 );
93101
93102 xla_ae_lines_pkg.set_ccid(
93103 p_code_combination_id => l_ccid
93104 , p_value_type_code => l_adr_value_type_code
93105 , p_transaction_coa_id => l_adr_transaction_coa_id
93106 , p_accounting_coa_id => l_adr_accounting_coa_id
93107 , p_adr_code => 'ISP'
93108 , p_adr_type_code => 'S'
93109 , p_component_type => l_component_type
93110 , p_component_code => l_component_code
93111 , p_component_type_code => l_component_type_code
93112 , p_component_appl_id => l_component_appl_id
93113 , p_amb_context_code => l_amb_context_code
93114 , p_side => 'NA'
93115 );
93116
93117
93118 --
93119 --
93120 END IF;
93121 --
93122 -- Bug 4922099
93123 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93124 (NVL(l_enc_upg_option, 'N') = 'O')
93125 ) AND
93126 (l_bflow_method_code = 'PRIOR_ENTRY')
93127 )
93128 THEN
93129 IF
93130 --
93131 1 = 2
93132 --
93133 THEN
93134 xla_accounting_err_pkg.build_message
93135 (p_appli_s_name => 'XLA'
93136 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93137 ,p_token_1 => 'LINE_NUMBER'
93138 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
93139 ,p_token_2 => 'LINE_TYPE_NAME'
93140 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
93141 l_component_type
93142 ,l_component_code
93143 ,l_component_type_code
93144 ,l_component_appl_id
93145 ,l_amb_context_code
93146 ,l_entity_code
93147 ,l_event_class_code
93148 )
93149 ,p_token_3 => 'OWNER'
93150 ,p_value_3 => xla_lookups_pkg.get_meaning(
93151 p_lookup_type => 'XLA_OWNER_TYPE'
93152 ,p_lookup_code => l_component_type_code
93153 )
93154 ,p_token_4 => 'PRODUCT_NAME'
93158 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93155 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93156 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93157 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93159 ,p_ae_header_id => NULL
93160 );
93161
93162 IF (C_LEVEL_ERROR>= g_log_level) THEN
93163 trace
93164 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93165 ,p_level => C_LEVEL_ERROR
93166 ,p_module => l_log_module);
93167 END IF;
93168 END IF;
93169 END IF;
93170 --
93171 --
93172 ------------------------------------------------------------------------------------------------
93173 -- 4219869 Business Flow
93174 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93175 -- Prior Entry. Currently, the following code is always generated.
93176 ------------------------------------------------------------------------------------------------
93177 XLA_AE_LINES_PKG.ValidateCurrentLine;
93178
93179 ------------------------------------------------------------------------------------
93180 -- 4219869 Business Flow
93181 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93182 ------------------------------------------------------------------------------------
93183 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93184
93185 ----------------------------------------------------------------------------------
93186 -- 4219869 Business Flow
93187 -- Update journal entry status -- Need to generate this within IF <condition>
93188 ----------------------------------------------------------------------------------
93189 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93190 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93191 ,p_balance_type_code => l_balance_type_code
93192 );
93193
93194 -------------------------------------------------------------------------------------------
93195 -- 4262811 - Generate the Accrual Reversal lines
93196 -------------------------------------------------------------------------------------------
93197 BEGIN
93198 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93199 (g_array_event(p_event_id).array_value_num('header_index'));
93200 IF l_acc_rev_flag IS NULL THEN
93201 l_acc_rev_flag := 'N';
93202 END IF;
93203 EXCEPTION
93204 WHEN OTHERS THEN
93205 l_acc_rev_flag := 'N';
93206 END;
93207 --
93208 IF (l_acc_rev_flag = 'Y') THEN
93209
93210 -- 4645092 ------------------------------------------------------------------------------
93211 -- To allow MPA report to determine if it should generate report process
93212 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93213 ------------------------------------------------------------------------------------------
93214
93215 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93216 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93217 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
93218 -- call ADRs
93219 -- Bug 4922099
93220 --
93221 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93222 (NVL(l_actual_upg_option, 'N') = 'O') OR
93223 (NVL(l_enc_upg_option, 'N') = 'O')
93224 )
93225 THEN
93226 NULL;
93227 --
93228 --
93229
93230 l_ccid := AcctDerRule_25(
93231 p_application_id => p_application_id
93232 , p_ae_header_id => l_ae_header_id
93233 , p_source_1 => p_source_1
93234 , p_source_2 => p_source_2
93235 , x_transaction_coa_id => l_adr_transaction_coa_id
93236 , x_accounting_coa_id => l_adr_accounting_coa_id
93237 , x_value_type_code => l_adr_value_type_code
93238 , p_side => 'NA'
93239 );
93240
93241 xla_ae_lines_pkg.set_ccid(
93242 p_code_combination_id => l_ccid
93243 , p_value_type_code => l_adr_value_type_code
93244 , p_transaction_coa_id => l_adr_transaction_coa_id
93245 , p_accounting_coa_id => l_adr_accounting_coa_id
93246 , p_adr_code => 'ISP'
93247 , p_adr_type_code => 'S'
93248 , p_component_type => l_component_type
93249 , p_component_code => l_component_code
93250 , p_component_type_code => l_component_type_code
93251 , p_component_appl_id => l_component_appl_id
93252 , p_amb_context_code => l_amb_context_code
93253 , p_side => 'NA'
93254 );
93255
93256
93257 --
93258 --
93259 END IF;
93260
93261 --
93262 -- Update the line information that should be overwritten
93263 --
93264 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93265 p_header_num => 1);
93266 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
93270 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
93267
93268 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93269
93271 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93272 END IF;
93273
93274 --
93275 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93276 --
93277 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93278 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
93279 ELSE
93280 ---------------------------------------------------------------------------------------------------
93281 -- 4262811a Switch Sign
93282 ---------------------------------------------------------------------------------------------------
93283 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
93284 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93285 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93286 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93287 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93288 -- 5132302
93289 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93290 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93291
93292 END IF;
93293
93294 -- 4955764
93295 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93296 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93297
93298
93299 XLA_AE_LINES_PKG.ValidateCurrentLine;
93300 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93301
93302 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93303 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93304 ,p_balance_type_code => l_balance_type_code);
93305
93306 END IF;
93307
93308 -----------------------------------------------------------------------------------------
93309 -- 4262811 Multiperiod Accounting
93310 -----------------------------------------------------------------------------------------
93311 -- No MPA option is assigned.
93312
93313
93314 END IF;
93315 END IF;
93316 --
93317
93318 --
93319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93320 trace
93321 (p_msg => 'END of AcctLineType_200'
93322 ,p_level => C_LEVEL_PROCEDURE
93323 ,p_module => l_log_module);
93324 END IF;
93325 --
93326 EXCEPTION
93327 WHEN xla_exceptions_pkg.application_exception THEN
93328 RAISE;
93329 WHEN OTHERS THEN
93330 xla_exceptions_pkg.raise_message
93331 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_200');
93332 END AcctLineType_200;
93333 --
93334
93335 ---------------------------------------
93336 --
93337 -- PRIVATE FUNCTION
93338 -- AcctLineType_201
93339 --
93340 ---------------------------------------
93341 PROCEDURE AcctLineType_201 (
93342 p_application_id IN NUMBER
93343 ,p_event_id IN NUMBER
93344 ,p_calculate_acctd_flag IN VARCHAR2
93345 ,p_calculate_g_l_flag IN VARCHAR2
93346 ,p_actual_flag IN OUT VARCHAR2
93347 ,p_balance_type_code OUT VARCHAR2
93348 ,p_gain_or_loss_ref OUT VARCHAR2
93349
93350 --Transaction Account
93351 , p_source_1 IN NUMBER
93352 --Journal Line Type
93353 , p_source_2 IN VARCHAR2
93354 --Entered Amount
93355 , p_source_3 IN NUMBER
93356 --First Distribution Identifier
93357 , p_source_5 IN NUMBER
93358 --Distribution Type
93359 , p_source_6 IN VARCHAR2
93360 --Currency Code
93361 , p_source_7 IN VARCHAR2
93362 --Currency Conversion Date
93363 , p_source_8 IN DATE
93364 --Currency Conversion Rate
93365 , p_source_9 IN NUMBER
93366 --Currency Conversion Type
93367 , p_source_10 IN VARCHAR2
93368 --Accounted Amount
93369 , p_source_11 IN NUMBER
93370 )
93371 IS
93372
93373 l_component_type VARCHAR2(80);
93374 l_component_code VARCHAR2(30);
93375 l_component_type_code VARCHAR2(1);
93376 l_component_appl_id INTEGER;
93377 l_amb_context_code VARCHAR2(30);
93378 l_entity_code VARCHAR2(30);
93379 l_event_class_code VARCHAR2(30);
93380 l_ae_header_id NUMBER;
93381 l_event_type_code VARCHAR2(30);
93382 l_line_definition_code VARCHAR2(30);
93383 l_line_definition_owner_code VARCHAR2(1);
93384 --
93385 -- adr variables
93386 l_segment VARCHAR2(30);
93387 l_ccid NUMBER;
93388 l_adr_transaction_coa_id NUMBER;
93389 l_adr_accounting_coa_id NUMBER;
93390 l_adr_flexfield_segment_code VARCHAR2(30);
93391 l_adr_flex_value_set_id NUMBER;
93392 l_adr_value_type_code VARCHAR2(30);
93396 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
93393 l_adr_value_combination_id NUMBER;
93394 l_adr_value_segment_code VARCHAR2(30);
93395
93397 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
93398 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
93399 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
93400
93401 -- 4262811 Variables ------------------------------------------------------------------------------------------
93402 l_entered_amt_idx NUMBER;
93403 l_accted_amt_idx NUMBER;
93404 l_acc_rev_flag VARCHAR2(1);
93405 l_accrual_line_num NUMBER;
93406 l_tmp_amt NUMBER;
93407 l_acc_rev_natural_side_code VARCHAR2(1);
93408
93409 l_num_entries NUMBER;
93410 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
93411 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
93412 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
93413 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
93414 l_recog_line_1 NUMBER;
93415 l_recog_line_2 NUMBER;
93416
93417 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
93418 l_bflow_applied_to_amt NUMBER; -- 5132302
93419 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
93420
93421 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93422
93423 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
93424 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
93425
93426 ---------------------------------------------------------------------------------------------------------------
93427
93428
93429 --
93430 -- bulk performance
93431 --
93432 l_balance_type_code VARCHAR2(1);
93433 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
93434 l_log_module VARCHAR2(240);
93435
93436 --
93437 -- Upgrade strategy
93438 --
93439 l_actual_upg_option VARCHAR2(1);
93440 l_enc_upg_option VARCHAR2(1);
93441
93442 --
93443 BEGIN
93444 --
93445 IF g_log_enabled THEN
93446 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_201';
93447 END IF;
93448 --
93449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93450
93451 trace
93452 (p_msg => 'BEGIN of AcctLineType_201'
93453 ,p_level => C_LEVEL_PROCEDURE
93454 ,p_module => l_log_module);
93455
93456 END IF;
93457 --
93458 l_component_type := 'AMB_JLT';
93459 l_component_code := 'ISP';
93460 l_component_type_code := 'S';
93461 l_component_appl_id := 555;
93462 l_amb_context_code := 'DEFAULT';
93463 l_entity_code := 'PURCHASING';
93464 l_event_class_code := 'RECEIVE';
93465 l_event_type_code := 'RECEIVE';
93466 l_line_definition_owner_code := 'S';
93467 l_line_definition_code := 'RECEIVE';
93468 --
93469 l_balance_type_code := 'A';
93470 l_segment := NULL;
93471 l_ccid := NULL;
93472 l_adr_transaction_coa_id := NULL;
93473 l_adr_accounting_coa_id := NULL;
93474 l_adr_flexfield_segment_code := NULL;
93475 l_adr_flex_value_set_id := NULL;
93476 l_adr_value_type_code := NULL;
93477 l_adr_value_combination_id := NULL;
93478 l_adr_value_segment_code := NULL;
93479
93480 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
93481 l_bflow_class_code := ''; -- 4219869 Business Flow
93482 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
93483 l_budgetary_control_flag := 'N';
93484
93485 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93486 l_bflow_applied_to_amt := NULL; -- 5132302
93487 l_entered_amt_idx := NULL; -- 4262811
93488 l_accted_amt_idx := NULL; -- 4262811
93489 l_acc_rev_flag := NULL; -- 4262811
93490 l_accrual_line_num := NULL; -- 4262811
93491 l_tmp_amt := NULL; -- 4262811
93492 --
93493
93494 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93495 l_balance_type_code <> 'B' THEN
93496 IF NVL(p_source_2,'
93497 ') = 'ISP'
93498 THEN
93499
93500 --
93501 XLA_AE_LINES_PKG.SetNewLine;
93502
93503 p_balance_type_code := l_balance_type_code;
93504 -- set the flag so later we will know whether the gain loss line needs to be created
93505
93506 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93507 p_actual_flag :='A';
93508 END IF;
93509
93510 --
93511 -- bulk performance
93512 --
93513 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93514 p_header_num => 0); -- 4262811
93515 --
93516 -- set accounting line options
93517 --
93518 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93519 p_natural_side_code => 'D'
93520 , p_gain_or_loss_flag => 'N'
93521 , p_gl_transfer_mode_code => 'D'
93525 );
93522 , p_acct_entry_type_code => 'A'
93523 , p_switch_side_flag => 'Y'
93524 , p_merge_duplicate_code => 'W'
93526 --
93527 l_acc_rev_natural_side_code := 'C'; -- 4262811
93528 --
93529 --
93530 -- set accounting line type info
93531 --
93532 xla_ae_lines_pkg.SetAcctLineType
93533 (p_component_type => l_component_type
93534 ,p_event_type_code => l_event_type_code
93535 ,p_line_definition_owner_code => l_line_definition_owner_code
93536 ,p_line_definition_code => l_line_definition_code
93537 ,p_accounting_line_code => l_component_code
93538 ,p_accounting_line_type_code => l_component_type_code
93539 ,p_accounting_line_appl_id => l_component_appl_id
93540 ,p_amb_context_code => l_amb_context_code
93541 ,p_entity_code => l_entity_code
93542 ,p_event_class_code => l_event_class_code);
93543 --
93544 -- set accounting class
93545 --
93546 xla_ae_lines_pkg.SetAcctClass(
93547 p_accounting_class_code => 'RECEIVING_INSPECTION'
93548 , p_ae_header_id => l_ae_header_id
93549 );
93550
93551 --
93552 -- set rounding class
93553 --
93554 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93555 'RECEIVING_INSPECTION';
93556
93557 --
93558 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93559 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93560 --
93561 -- bulk performance
93562 --
93563 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93564
93565 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93566 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93567
93568 -- 4955764
93569 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93570 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93571
93572 -- 4458381 Public Sector Enh
93573
93574 --
93575 -- set accounting attributes for the line type
93576 --
93577 l_entered_amt_idx := 3;
93578 l_accted_amt_idx := 8;
93579 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93580 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93581 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
93582 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93583 l_rec_acct_attrs.array_char_value(2) := p_source_6;
93584 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93585 l_rec_acct_attrs.array_num_value(3) := p_source_3;
93586 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93587 l_rec_acct_attrs.array_char_value(4) := p_source_7;
93588 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93589 l_rec_acct_attrs.array_date_value(5) := p_source_8;
93590 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93591 l_rec_acct_attrs.array_num_value(6) := p_source_9;
93592 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93593 l_rec_acct_attrs.array_char_value(7) := p_source_10;
93594 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93595 l_rec_acct_attrs.array_num_value(8) := p_source_11;
93596
93597 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93598 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93599
93600 ---------------------------------------------------------------------------------------------------------------
93601 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93602 ---------------------------------------------------------------------------------------------------------------
93603 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93604
93605 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93606 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93607
93608 IF xla_accounting_cache_pkg.GetValueChar
93609 (p_source_code => 'LEDGER_CATEGORY_CODE'
93610 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93611 AND l_bflow_method_code = 'PRIOR_ENTRY'
93612 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93613 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93614 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93615 )
93616 THEN
93617 xla_ae_lines_pkg.BflowUpgEntry
93618 (p_business_method_code => l_bflow_method_code
93619 ,p_business_class_code => l_bflow_class_code
93620 ,p_balance_type => l_balance_type_code);
93621 ELSE
93622 NULL;
93623 -- No business flow processing for business flow method of NONE.
93624 END IF;
93625
93626 --
93627 -- call analytical criteria
93628 --
93629
93630 --
93631 -- call description
93632 --
93633 -- No description or it is inherited.
93634 --
93635 -- call ADRs
93636 -- Bug 4922099
93640 (NVL(l_enc_upg_option, 'N') = 'O')
93637 --
93638 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93639 (NVL(l_actual_upg_option, 'N') = 'O') OR
93641 )
93642 THEN
93643 NULL;
93644 --
93645 --
93646
93647 l_ccid := AcctDerRule_25(
93648 p_application_id => p_application_id
93649 , p_ae_header_id => l_ae_header_id
93650 , p_source_1 => p_source_1
93651 , p_source_2 => p_source_2
93652 , x_transaction_coa_id => l_adr_transaction_coa_id
93653 , x_accounting_coa_id => l_adr_accounting_coa_id
93654 , x_value_type_code => l_adr_value_type_code
93655 , p_side => 'NA'
93656 );
93657
93658 xla_ae_lines_pkg.set_ccid(
93659 p_code_combination_id => l_ccid
93660 , p_value_type_code => l_adr_value_type_code
93661 , p_transaction_coa_id => l_adr_transaction_coa_id
93662 , p_accounting_coa_id => l_adr_accounting_coa_id
93663 , p_adr_code => 'ISP'
93664 , p_adr_type_code => 'S'
93665 , p_component_type => l_component_type
93666 , p_component_code => l_component_code
93667 , p_component_type_code => l_component_type_code
93668 , p_component_appl_id => l_component_appl_id
93669 , p_amb_context_code => l_amb_context_code
93670 , p_side => 'NA'
93671 );
93672
93673
93674 --
93675 --
93676 END IF;
93677 --
93678 -- Bug 4922099
93679 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93680 (NVL(l_enc_upg_option, 'N') = 'O')
93681 ) AND
93682 (l_bflow_method_code = 'PRIOR_ENTRY')
93683 )
93684 THEN
93685 IF
93686 --
93687 1 = 2
93688 --
93689 THEN
93690 xla_accounting_err_pkg.build_message
93691 (p_appli_s_name => 'XLA'
93692 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93693 ,p_token_1 => 'LINE_NUMBER'
93694 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
93695 ,p_token_2 => 'LINE_TYPE_NAME'
93696 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
93697 l_component_type
93698 ,l_component_code
93699 ,l_component_type_code
93700 ,l_component_appl_id
93701 ,l_amb_context_code
93702 ,l_entity_code
93703 ,l_event_class_code
93704 )
93705 ,p_token_3 => 'OWNER'
93706 ,p_value_3 => xla_lookups_pkg.get_meaning(
93707 p_lookup_type => 'XLA_OWNER_TYPE'
93708 ,p_lookup_code => l_component_type_code
93709 )
93710 ,p_token_4 => 'PRODUCT_NAME'
93711 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93712 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93713 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93714 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93715 ,p_ae_header_id => NULL
93716 );
93717
93718 IF (C_LEVEL_ERROR>= g_log_level) THEN
93719 trace
93720 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93721 ,p_level => C_LEVEL_ERROR
93722 ,p_module => l_log_module);
93723 END IF;
93724 END IF;
93725 END IF;
93726 --
93727 --
93728 ------------------------------------------------------------------------------------------------
93729 -- 4219869 Business Flow
93730 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93731 -- Prior Entry. Currently, the following code is always generated.
93732 ------------------------------------------------------------------------------------------------
93733 XLA_AE_LINES_PKG.ValidateCurrentLine;
93734
93735 ------------------------------------------------------------------------------------
93736 -- 4219869 Business Flow
93737 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93738 ------------------------------------------------------------------------------------
93739 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93740
93744 ----------------------------------------------------------------------------------
93741 ----------------------------------------------------------------------------------
93742 -- 4219869 Business Flow
93743 -- Update journal entry status -- Need to generate this within IF <condition>
93745 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93746 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93747 ,p_balance_type_code => l_balance_type_code
93748 );
93749
93750 -------------------------------------------------------------------------------------------
93751 -- 4262811 - Generate the Accrual Reversal lines
93752 -------------------------------------------------------------------------------------------
93753 BEGIN
93754 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93755 (g_array_event(p_event_id).array_value_num('header_index'));
93756 IF l_acc_rev_flag IS NULL THEN
93757 l_acc_rev_flag := 'N';
93758 END IF;
93759 EXCEPTION
93760 WHEN OTHERS THEN
93761 l_acc_rev_flag := 'N';
93762 END;
93763 --
93764 IF (l_acc_rev_flag = 'Y') THEN
93765
93766 -- 4645092 ------------------------------------------------------------------------------
93767 -- To allow MPA report to determine if it should generate report process
93768 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93769 ------------------------------------------------------------------------------------------
93770
93771 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93772 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93773 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
93774 -- call ADRs
93775 -- Bug 4922099
93776 --
93777 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93778 (NVL(l_actual_upg_option, 'N') = 'O') OR
93779 (NVL(l_enc_upg_option, 'N') = 'O')
93780 )
93781 THEN
93782 NULL;
93783 --
93784 --
93785
93786 l_ccid := AcctDerRule_25(
93787 p_application_id => p_application_id
93788 , p_ae_header_id => l_ae_header_id
93789 , p_source_1 => p_source_1
93790 , p_source_2 => p_source_2
93791 , x_transaction_coa_id => l_adr_transaction_coa_id
93792 , x_accounting_coa_id => l_adr_accounting_coa_id
93793 , x_value_type_code => l_adr_value_type_code
93794 , p_side => 'NA'
93795 );
93796
93797 xla_ae_lines_pkg.set_ccid(
93798 p_code_combination_id => l_ccid
93799 , p_value_type_code => l_adr_value_type_code
93800 , p_transaction_coa_id => l_adr_transaction_coa_id
93801 , p_accounting_coa_id => l_adr_accounting_coa_id
93802 , p_adr_code => 'ISP'
93803 , p_adr_type_code => 'S'
93804 , p_component_type => l_component_type
93805 , p_component_code => l_component_code
93806 , p_component_type_code => l_component_type_code
93807 , p_component_appl_id => l_component_appl_id
93808 , p_amb_context_code => l_amb_context_code
93809 , p_side => 'NA'
93810 );
93811
93812
93813 --
93814 --
93815 END IF;
93816
93817 --
93818 -- Update the line information that should be overwritten
93819 --
93820 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93821 p_header_num => 1);
93822 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
93823
93824 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93825
93826 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
93827 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93828 END IF;
93829
93830 --
93831 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93832 --
93833 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93834 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
93835 ELSE
93836 ---------------------------------------------------------------------------------------------------
93837 -- 4262811a Switch Sign
93838 ---------------------------------------------------------------------------------------------------
93839 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
93840 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93841 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93842 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93843 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93844 -- 5132302
93845 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93846 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93847
93848 END IF;
93849
93853
93850 -- 4955764
93851 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93852 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93854
93855 XLA_AE_LINES_PKG.ValidateCurrentLine;
93856 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93857
93858 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93859 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93860 ,p_balance_type_code => l_balance_type_code);
93861
93862 END IF;
93863
93864 -----------------------------------------------------------------------------------------
93865 -- 4262811 Multiperiod Accounting
93866 -----------------------------------------------------------------------------------------
93867 -- No MPA option is assigned.
93868
93869
93870 END IF;
93871 END IF;
93872 --
93873
93874 --
93875 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93876 trace
93877 (p_msg => 'END of AcctLineType_201'
93878 ,p_level => C_LEVEL_PROCEDURE
93879 ,p_module => l_log_module);
93880 END IF;
93881 --
93882 EXCEPTION
93883 WHEN xla_exceptions_pkg.application_exception THEN
93884 RAISE;
93885 WHEN OTHERS THEN
93886 xla_exceptions_pkg.raise_message
93887 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_201');
93888 END AcctLineType_201;
93889 --
93890
93891 ---------------------------------------
93892 --
93893 -- PRIVATE FUNCTION
93894 -- AcctLineType_202
93895 --
93896 ---------------------------------------
93897 PROCEDURE AcctLineType_202 (
93898 p_application_id IN NUMBER
93899 ,p_event_id IN NUMBER
93900 ,p_calculate_acctd_flag IN VARCHAR2
93901 ,p_calculate_g_l_flag IN VARCHAR2
93902 ,p_actual_flag IN OUT VARCHAR2
93903 ,p_balance_type_code OUT VARCHAR2
93904 ,p_gain_or_loss_ref OUT VARCHAR2
93905
93906 --Transaction Account
93907 , p_source_1 IN NUMBER
93908 --Journal Line Type
93909 , p_source_2 IN VARCHAR2
93910 --Entered Amount
93911 , p_source_3 IN NUMBER
93912 --First Distribution Identifier
93913 , p_source_5 IN NUMBER
93914 --Distribution Type
93915 , p_source_6 IN VARCHAR2
93916 --Currency Code
93917 , p_source_7 IN VARCHAR2
93918 --Currency Conversion Date
93919 , p_source_8 IN DATE
93920 --Currency Conversion Rate
93921 , p_source_9 IN NUMBER
93922 --Currency Conversion Type
93923 , p_source_10 IN VARCHAR2
93924 --Accounted Amount
93925 , p_source_11 IN NUMBER
93926 )
93927 IS
93928
93929 l_component_type VARCHAR2(80);
93930 l_component_code VARCHAR2(30);
93931 l_component_type_code VARCHAR2(1);
93932 l_component_appl_id INTEGER;
93933 l_amb_context_code VARCHAR2(30);
93934 l_entity_code VARCHAR2(30);
93935 l_event_class_code VARCHAR2(30);
93936 l_ae_header_id NUMBER;
93937 l_event_type_code VARCHAR2(30);
93938 l_line_definition_code VARCHAR2(30);
93939 l_line_definition_owner_code VARCHAR2(1);
93940 --
93941 -- adr variables
93942 l_segment VARCHAR2(30);
93943 l_ccid NUMBER;
93944 l_adr_transaction_coa_id NUMBER;
93945 l_adr_accounting_coa_id NUMBER;
93946 l_adr_flexfield_segment_code VARCHAR2(30);
93947 l_adr_flex_value_set_id NUMBER;
93948 l_adr_value_type_code VARCHAR2(30);
93949 l_adr_value_combination_id NUMBER;
93950 l_adr_value_segment_code VARCHAR2(30);
93951
93952 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
93953 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
93954 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
93955 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
93956
93957 -- 4262811 Variables ------------------------------------------------------------------------------------------
93958 l_entered_amt_idx NUMBER;
93959 l_accted_amt_idx NUMBER;
93960 l_acc_rev_flag VARCHAR2(1);
93961 l_accrual_line_num NUMBER;
93962 l_tmp_amt NUMBER;
93963 l_acc_rev_natural_side_code VARCHAR2(1);
93964
93965 l_num_entries NUMBER;
93966 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
93967 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
93968 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
93969 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
93970 l_recog_line_1 NUMBER;
93971 l_recog_line_2 NUMBER;
93972
93973 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
93974 l_bflow_applied_to_amt NUMBER; -- 5132302
93975 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
93976
93977 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93978
93979 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
93980 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
93984
93981
93982 ---------------------------------------------------------------------------------------------------------------
93983
93985 --
93986 -- bulk performance
93987 --
93988 l_balance_type_code VARCHAR2(1);
93989 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
93990 l_log_module VARCHAR2(240);
93991
93992 --
93993 -- Upgrade strategy
93994 --
93995 l_actual_upg_option VARCHAR2(1);
93996 l_enc_upg_option VARCHAR2(1);
93997
93998 --
93999 BEGIN
94000 --
94001 IF g_log_enabled THEN
94002 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_202';
94003 END IF;
94004 --
94005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94006
94007 trace
94008 (p_msg => 'BEGIN of AcctLineType_202'
94009 ,p_level => C_LEVEL_PROCEDURE
94010 ,p_module => l_log_module);
94011
94012 END IF;
94013 --
94014 l_component_type := 'AMB_JLT';
94015 l_component_code := 'ISP';
94016 l_component_type_code := 'S';
94017 l_component_appl_id := 555;
94018 l_amb_context_code := 'DEFAULT';
94019 l_entity_code := 'PURCHASING';
94020 l_event_class_code := 'DELIVER';
94021 l_event_type_code := 'XFER_TO_CONSIGNED';
94022 l_line_definition_owner_code := 'S';
94023 l_line_definition_code := 'XFER_TO_CONSIGN';
94024 --
94025 l_balance_type_code := 'A';
94026 l_segment := NULL;
94027 l_ccid := NULL;
94028 l_adr_transaction_coa_id := NULL;
94029 l_adr_accounting_coa_id := NULL;
94030 l_adr_flexfield_segment_code := NULL;
94031 l_adr_flex_value_set_id := NULL;
94032 l_adr_value_type_code := NULL;
94033 l_adr_value_combination_id := NULL;
94034 l_adr_value_segment_code := NULL;
94035
94036 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
94037 l_bflow_class_code := ''; -- 4219869 Business Flow
94038 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
94039 l_budgetary_control_flag := 'N';
94040
94041 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94042 l_bflow_applied_to_amt := NULL; -- 5132302
94043 l_entered_amt_idx := NULL; -- 4262811
94044 l_accted_amt_idx := NULL; -- 4262811
94045 l_acc_rev_flag := NULL; -- 4262811
94046 l_accrual_line_num := NULL; -- 4262811
94047 l_tmp_amt := NULL; -- 4262811
94048 --
94049
94050 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94051 l_balance_type_code <> 'B' THEN
94052 IF NVL(p_source_2,'
94053 ') = 'ISP'
94054 THEN
94055
94056 --
94057 XLA_AE_LINES_PKG.SetNewLine;
94058
94059 p_balance_type_code := l_balance_type_code;
94060 -- set the flag so later we will know whether the gain loss line needs to be created
94061
94062 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94063 p_actual_flag :='A';
94064 END IF;
94065
94066 --
94067 -- bulk performance
94068 --
94069 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94070 p_header_num => 0); -- 4262811
94071 --
94072 -- set accounting line options
94073 --
94074 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94075 p_natural_side_code => 'D'
94076 , p_gain_or_loss_flag => 'N'
94077 , p_gl_transfer_mode_code => 'D'
94078 , p_acct_entry_type_code => 'A'
94079 , p_switch_side_flag => 'Y'
94080 , p_merge_duplicate_code => 'W'
94081 );
94082 --
94083 l_acc_rev_natural_side_code := 'C'; -- 4262811
94084 --
94085 --
94086 -- set accounting line type info
94087 --
94088 xla_ae_lines_pkg.SetAcctLineType
94089 (p_component_type => l_component_type
94090 ,p_event_type_code => l_event_type_code
94091 ,p_line_definition_owner_code => l_line_definition_owner_code
94092 ,p_line_definition_code => l_line_definition_code
94093 ,p_accounting_line_code => l_component_code
94094 ,p_accounting_line_type_code => l_component_type_code
94095 ,p_accounting_line_appl_id => l_component_appl_id
94096 ,p_amb_context_code => l_amb_context_code
94097 ,p_entity_code => l_entity_code
94098 ,p_event_class_code => l_event_class_code);
94099 --
94100 -- set accounting class
94101 --
94102 xla_ae_lines_pkg.SetAcctClass(
94103 p_accounting_class_code => 'RECEIVING_INSPECTION'
94104 , p_ae_header_id => l_ae_header_id
94105 );
94106
94107 --
94108 -- set rounding class
94109 --
94110 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94111 'RECEIVING_INSPECTION';
94112
94113 --
94114 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94115 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94116 --
94117 -- bulk performance
94121 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94118 --
94119 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94120
94122 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94123
94124 -- 4955764
94125 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94126 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94127
94128 -- 4458381 Public Sector Enh
94129
94130 --
94131 -- set accounting attributes for the line type
94132 --
94133 l_entered_amt_idx := 3;
94134 l_accted_amt_idx := 8;
94135 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94136 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
94137 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
94138 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
94139 l_rec_acct_attrs.array_char_value(2) := p_source_6;
94140 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
94141 l_rec_acct_attrs.array_num_value(3) := p_source_3;
94142 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
94143 l_rec_acct_attrs.array_char_value(4) := p_source_7;
94144 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
94145 l_rec_acct_attrs.array_date_value(5) := p_source_8;
94146 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
94147 l_rec_acct_attrs.array_num_value(6) := p_source_9;
94148 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
94149 l_rec_acct_attrs.array_char_value(7) := p_source_10;
94150 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
94151 l_rec_acct_attrs.array_num_value(8) := p_source_11;
94152
94153 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94154 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94155
94156 ---------------------------------------------------------------------------------------------------------------
94157 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94158 ---------------------------------------------------------------------------------------------------------------
94159 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94160
94161 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94162 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94163
94164 IF xla_accounting_cache_pkg.GetValueChar
94165 (p_source_code => 'LEDGER_CATEGORY_CODE'
94166 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94167 AND l_bflow_method_code = 'PRIOR_ENTRY'
94168 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94169 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94170 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94171 )
94172 THEN
94173 xla_ae_lines_pkg.BflowUpgEntry
94174 (p_business_method_code => l_bflow_method_code
94175 ,p_business_class_code => l_bflow_class_code
94176 ,p_balance_type => l_balance_type_code);
94177 ELSE
94178 NULL;
94179 -- No business flow processing for business flow method of NONE.
94180 END IF;
94181
94182 --
94183 -- call analytical criteria
94184 --
94185
94186 --
94187 -- call description
94188 --
94189 -- No description or it is inherited.
94190 --
94191 -- call ADRs
94192 -- Bug 4922099
94193 --
94194 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94195 (NVL(l_actual_upg_option, 'N') = 'O') OR
94196 (NVL(l_enc_upg_option, 'N') = 'O')
94197 )
94198 THEN
94199 NULL;
94200 --
94201 --
94202
94203 l_ccid := AcctDerRule_25(
94204 p_application_id => p_application_id
94205 , p_ae_header_id => l_ae_header_id
94206 , p_source_1 => p_source_1
94207 , p_source_2 => p_source_2
94208 , x_transaction_coa_id => l_adr_transaction_coa_id
94209 , x_accounting_coa_id => l_adr_accounting_coa_id
94210 , x_value_type_code => l_adr_value_type_code
94211 , p_side => 'NA'
94212 );
94213
94214 xla_ae_lines_pkg.set_ccid(
94215 p_code_combination_id => l_ccid
94216 , p_value_type_code => l_adr_value_type_code
94217 , p_transaction_coa_id => l_adr_transaction_coa_id
94218 , p_accounting_coa_id => l_adr_accounting_coa_id
94219 , p_adr_code => 'ISP'
94220 , p_adr_type_code => 'S'
94221 , p_component_type => l_component_type
94222 , p_component_code => l_component_code
94223 , p_component_type_code => l_component_type_code
94224 , p_component_appl_id => l_component_appl_id
94225 , p_amb_context_code => l_amb_context_code
94226 , p_side => 'NA'
94227 );
94228
94229
94230 --
94231 --
94232 END IF;
94233 --
94234 -- Bug 4922099
94235 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94236 (NVL(l_enc_upg_option, 'N') = 'O')
94237 ) AND
94238 (l_bflow_method_code = 'PRIOR_ENTRY')
94242 --
94239 )
94240 THEN
94241 IF
94243 1 = 2
94244 --
94245 THEN
94246 xla_accounting_err_pkg.build_message
94247 (p_appli_s_name => 'XLA'
94248 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94249 ,p_token_1 => 'LINE_NUMBER'
94250 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
94251 ,p_token_2 => 'LINE_TYPE_NAME'
94252 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
94253 l_component_type
94254 ,l_component_code
94255 ,l_component_type_code
94256 ,l_component_appl_id
94257 ,l_amb_context_code
94258 ,l_entity_code
94259 ,l_event_class_code
94260 )
94261 ,p_token_3 => 'OWNER'
94262 ,p_value_3 => xla_lookups_pkg.get_meaning(
94263 p_lookup_type => 'XLA_OWNER_TYPE'
94264 ,p_lookup_code => l_component_type_code
94265 )
94266 ,p_token_4 => 'PRODUCT_NAME'
94267 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94268 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94269 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94270 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94271 ,p_ae_header_id => NULL
94272 );
94273
94274 IF (C_LEVEL_ERROR>= g_log_level) THEN
94275 trace
94276 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94277 ,p_level => C_LEVEL_ERROR
94278 ,p_module => l_log_module);
94279 END IF;
94280 END IF;
94281 END IF;
94282 --
94283 --
94284 ------------------------------------------------------------------------------------------------
94285 -- 4219869 Business Flow
94286 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94287 -- Prior Entry. Currently, the following code is always generated.
94288 ------------------------------------------------------------------------------------------------
94289 XLA_AE_LINES_PKG.ValidateCurrentLine;
94290
94291 ------------------------------------------------------------------------------------
94292 -- 4219869 Business Flow
94293 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94294 ------------------------------------------------------------------------------------
94295 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94296
94297 ----------------------------------------------------------------------------------
94298 -- 4219869 Business Flow
94299 -- Update journal entry status -- Need to generate this within IF <condition>
94300 ----------------------------------------------------------------------------------
94301 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94302 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94303 ,p_balance_type_code => l_balance_type_code
94304 );
94305
94306 -------------------------------------------------------------------------------------------
94307 -- 4262811 - Generate the Accrual Reversal lines
94308 -------------------------------------------------------------------------------------------
94309 BEGIN
94310 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94311 (g_array_event(p_event_id).array_value_num('header_index'));
94312 IF l_acc_rev_flag IS NULL THEN
94313 l_acc_rev_flag := 'N';
94314 END IF;
94315 EXCEPTION
94316 WHEN OTHERS THEN
94317 l_acc_rev_flag := 'N';
94318 END;
94319 --
94320 IF (l_acc_rev_flag = 'Y') THEN
94321
94322 -- 4645092 ------------------------------------------------------------------------------
94323 -- To allow MPA report to determine if it should generate report process
94324 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94325 ------------------------------------------------------------------------------------------
94326
94327 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94328 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94332 --
94329 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
94330 -- call ADRs
94331 -- Bug 4922099
94333 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94334 (NVL(l_actual_upg_option, 'N') = 'O') OR
94335 (NVL(l_enc_upg_option, 'N') = 'O')
94336 )
94337 THEN
94338 NULL;
94339 --
94340 --
94341
94342 l_ccid := AcctDerRule_25(
94343 p_application_id => p_application_id
94344 , p_ae_header_id => l_ae_header_id
94345 , p_source_1 => p_source_1
94346 , p_source_2 => p_source_2
94347 , x_transaction_coa_id => l_adr_transaction_coa_id
94348 , x_accounting_coa_id => l_adr_accounting_coa_id
94349 , x_value_type_code => l_adr_value_type_code
94350 , p_side => 'NA'
94351 );
94352
94353 xla_ae_lines_pkg.set_ccid(
94354 p_code_combination_id => l_ccid
94355 , p_value_type_code => l_adr_value_type_code
94356 , p_transaction_coa_id => l_adr_transaction_coa_id
94357 , p_accounting_coa_id => l_adr_accounting_coa_id
94358 , p_adr_code => 'ISP'
94359 , p_adr_type_code => 'S'
94360 , p_component_type => l_component_type
94361 , p_component_code => l_component_code
94362 , p_component_type_code => l_component_type_code
94363 , p_component_appl_id => l_component_appl_id
94364 , p_amb_context_code => l_amb_context_code
94365 , p_side => 'NA'
94366 );
94367
94368
94369 --
94370 --
94371 END IF;
94372
94373 --
94374 -- Update the line information that should be overwritten
94375 --
94376 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94377 p_header_num => 1);
94378 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
94379
94380 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94381
94382 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
94383 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94384 END IF;
94385
94386 --
94387 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94388 --
94389 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94390 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
94391 ELSE
94392 ---------------------------------------------------------------------------------------------------
94393 -- 4262811a Switch Sign
94394 ---------------------------------------------------------------------------------------------------
94395 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
94396 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94397 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94398 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94399 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94400 -- 5132302
94401 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94402 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94403
94404 END IF;
94405
94406 -- 4955764
94407 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94408 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94409
94410
94411 XLA_AE_LINES_PKG.ValidateCurrentLine;
94412 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94413
94414 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94415 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94416 ,p_balance_type_code => l_balance_type_code);
94417
94418 END IF;
94419
94420 -----------------------------------------------------------------------------------------
94421 -- 4262811 Multiperiod Accounting
94422 -----------------------------------------------------------------------------------------
94423 -- No MPA option is assigned.
94424
94425
94426 END IF;
94427 END IF;
94428 --
94429
94430 --
94431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94432 trace
94433 (p_msg => 'END of AcctLineType_202'
94434 ,p_level => C_LEVEL_PROCEDURE
94435 ,p_module => l_log_module);
94436 END IF;
94437 --
94438 EXCEPTION
94439 WHEN xla_exceptions_pkg.application_exception THEN
94440 RAISE;
94441 WHEN OTHERS THEN
94442 xla_exceptions_pkg.raise_message
94443 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_202');
94444 END AcctLineType_202;
94445 --
94446
94447 ---------------------------------------
94448 --
94449 -- PRIVATE FUNCTION
94453 PROCEDURE AcctLineType_203 (
94450 -- AcctLineType_203
94451 --
94452 ---------------------------------------
94454 p_application_id IN NUMBER
94455 ,p_event_id IN NUMBER
94456 ,p_calculate_acctd_flag IN VARCHAR2
94457 ,p_calculate_g_l_flag IN VARCHAR2
94458 ,p_actual_flag IN OUT VARCHAR2
94459 ,p_balance_type_code OUT VARCHAR2
94460 ,p_gain_or_loss_ref OUT VARCHAR2
94461
94462 --Transaction Account
94463 , p_source_1 IN NUMBER
94464 --Journal Line Type
94465 , p_source_2 IN VARCHAR2
94466 --Entered Amount
94467 , p_source_3 IN NUMBER
94468 --First Distribution Identifier
94469 , p_source_5 IN NUMBER
94470 --Distribution Type
94471 , p_source_6 IN VARCHAR2
94472 --Currency Code
94473 , p_source_7 IN VARCHAR2
94474 --Currency Conversion Date
94475 , p_source_8 IN DATE
94476 --Currency Conversion Rate
94477 , p_source_9 IN NUMBER
94478 --Currency Conversion Type
94479 , p_source_10 IN VARCHAR2
94480 --Accounted Amount
94481 , p_source_11 IN NUMBER
94482 )
94483 IS
94484
94485 l_component_type VARCHAR2(80);
94486 l_component_code VARCHAR2(30);
94487 l_component_type_code VARCHAR2(1);
94488 l_component_appl_id INTEGER;
94489 l_amb_context_code VARCHAR2(30);
94490 l_entity_code VARCHAR2(30);
94491 l_event_class_code VARCHAR2(30);
94492 l_ae_header_id NUMBER;
94493 l_event_type_code VARCHAR2(30);
94494 l_line_definition_code VARCHAR2(30);
94495 l_line_definition_owner_code VARCHAR2(1);
94496 --
94497 -- adr variables
94498 l_segment VARCHAR2(30);
94499 l_ccid NUMBER;
94500 l_adr_transaction_coa_id NUMBER;
94501 l_adr_accounting_coa_id NUMBER;
94502 l_adr_flexfield_segment_code VARCHAR2(30);
94503 l_adr_flex_value_set_id NUMBER;
94504 l_adr_value_type_code VARCHAR2(30);
94505 l_adr_value_combination_id NUMBER;
94506 l_adr_value_segment_code VARCHAR2(30);
94507
94508 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
94509 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
94510 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
94511 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
94512
94513 -- 4262811 Variables ------------------------------------------------------------------------------------------
94514 l_entered_amt_idx NUMBER;
94515 l_accted_amt_idx NUMBER;
94516 l_acc_rev_flag VARCHAR2(1);
94517 l_accrual_line_num NUMBER;
94518 l_tmp_amt NUMBER;
94519 l_acc_rev_natural_side_code VARCHAR2(1);
94520
94521 l_num_entries NUMBER;
94522 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
94523 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
94524 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
94525 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
94526 l_recog_line_1 NUMBER;
94527 l_recog_line_2 NUMBER;
94528
94529 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
94530 l_bflow_applied_to_amt NUMBER; -- 5132302
94531 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
94532
94533 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94534
94535 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
94536 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
94537
94538 ---------------------------------------------------------------------------------------------------------------
94539
94540
94541 --
94542 -- bulk performance
94543 --
94544 l_balance_type_code VARCHAR2(1);
94545 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
94546 l_log_module VARCHAR2(240);
94547
94548 --
94549 -- Upgrade strategy
94550 --
94551 l_actual_upg_option VARCHAR2(1);
94552 l_enc_upg_option VARCHAR2(1);
94553
94554 --
94555 BEGIN
94556 --
94557 IF g_log_enabled THEN
94558 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_203';
94559 END IF;
94560 --
94561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94562
94563 trace
94564 (p_msg => 'BEGIN of AcctLineType_203'
94565 ,p_level => C_LEVEL_PROCEDURE
94566 ,p_module => l_log_module);
94567
94568 END IF;
94569 --
94570 l_component_type := 'AMB_JLT';
94571 l_component_code := 'ISP';
94572 l_component_type_code := 'S';
94573 l_component_appl_id := 555;
94574 l_amb_context_code := 'DEFAULT';
94575 l_entity_code := 'PURCHASING';
94576 l_event_class_code := 'RECEIVE';
94577 l_event_type_code := 'RET_TO_VENDOR';
94578 l_line_definition_owner_code := 'S';
94579 l_line_definition_code := 'RETURN';
94580 --
94581 l_balance_type_code := 'A';
94582 l_segment := NULL;
94583 l_ccid := NULL;
94587 l_adr_flex_value_set_id := NULL;
94584 l_adr_transaction_coa_id := NULL;
94585 l_adr_accounting_coa_id := NULL;
94586 l_adr_flexfield_segment_code := NULL;
94588 l_adr_value_type_code := NULL;
94589 l_adr_value_combination_id := NULL;
94590 l_adr_value_segment_code := NULL;
94591
94592 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
94593 l_bflow_class_code := ''; -- 4219869 Business Flow
94594 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
94595 l_budgetary_control_flag := 'N';
94596
94597 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94598 l_bflow_applied_to_amt := NULL; -- 5132302
94599 l_entered_amt_idx := NULL; -- 4262811
94600 l_accted_amt_idx := NULL; -- 4262811
94601 l_acc_rev_flag := NULL; -- 4262811
94602 l_accrual_line_num := NULL; -- 4262811
94603 l_tmp_amt := NULL; -- 4262811
94604 --
94605
94606 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94607 l_balance_type_code <> 'B' THEN
94608 IF NVL(p_source_2,'
94609 ') = 'ISP'
94610 THEN
94611
94612 --
94613 XLA_AE_LINES_PKG.SetNewLine;
94614
94615 p_balance_type_code := l_balance_type_code;
94616 -- set the flag so later we will know whether the gain loss line needs to be created
94617
94618 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94619 p_actual_flag :='A';
94620 END IF;
94621
94622 --
94623 -- bulk performance
94624 --
94625 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94626 p_header_num => 0); -- 4262811
94627 --
94628 -- set accounting line options
94629 --
94630 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94631 p_natural_side_code => 'D'
94632 , p_gain_or_loss_flag => 'N'
94633 , p_gl_transfer_mode_code => 'D'
94634 , p_acct_entry_type_code => 'A'
94635 , p_switch_side_flag => 'Y'
94636 , p_merge_duplicate_code => 'W'
94637 );
94638 --
94639 l_acc_rev_natural_side_code := 'C'; -- 4262811
94640 --
94641 --
94642 -- set accounting line type info
94643 --
94644 xla_ae_lines_pkg.SetAcctLineType
94645 (p_component_type => l_component_type
94646 ,p_event_type_code => l_event_type_code
94647 ,p_line_definition_owner_code => l_line_definition_owner_code
94648 ,p_line_definition_code => l_line_definition_code
94649 ,p_accounting_line_code => l_component_code
94650 ,p_accounting_line_type_code => l_component_type_code
94651 ,p_accounting_line_appl_id => l_component_appl_id
94652 ,p_amb_context_code => l_amb_context_code
94653 ,p_entity_code => l_entity_code
94654 ,p_event_class_code => l_event_class_code);
94655 --
94656 -- set accounting class
94657 --
94658 xla_ae_lines_pkg.SetAcctClass(
94659 p_accounting_class_code => 'RECEIVING_INSPECTION'
94660 , p_ae_header_id => l_ae_header_id
94661 );
94662
94663 --
94664 -- set rounding class
94665 --
94666 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94667 'RECEIVING_INSPECTION';
94668
94669 --
94670 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94671 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94672 --
94673 -- bulk performance
94674 --
94675 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94676
94677 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94678 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94679
94680 -- 4955764
94681 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94682 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94683
94684 -- 4458381 Public Sector Enh
94685
94686 --
94687 -- set accounting attributes for the line type
94688 --
94689 l_entered_amt_idx := 3;
94690 l_accted_amt_idx := 8;
94691 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94692 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
94693 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
94694 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
94695 l_rec_acct_attrs.array_char_value(2) := p_source_6;
94696 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
94697 l_rec_acct_attrs.array_num_value(3) := p_source_3;
94698 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
94699 l_rec_acct_attrs.array_char_value(4) := p_source_7;
94700 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
94701 l_rec_acct_attrs.array_date_value(5) := p_source_8;
94702 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
94703 l_rec_acct_attrs.array_num_value(6) := p_source_9;
94704 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
94705 l_rec_acct_attrs.array_char_value(7) := p_source_10;
94709 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94706 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
94707 l_rec_acct_attrs.array_num_value(8) := p_source_11;
94708
94710 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94711
94712 ---------------------------------------------------------------------------------------------------------------
94713 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94714 ---------------------------------------------------------------------------------------------------------------
94715 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94716
94717 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94718 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94719
94720 IF xla_accounting_cache_pkg.GetValueChar
94721 (p_source_code => 'LEDGER_CATEGORY_CODE'
94722 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94723 AND l_bflow_method_code = 'PRIOR_ENTRY'
94724 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94725 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94726 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94727 )
94728 THEN
94729 xla_ae_lines_pkg.BflowUpgEntry
94730 (p_business_method_code => l_bflow_method_code
94731 ,p_business_class_code => l_bflow_class_code
94732 ,p_balance_type => l_balance_type_code);
94733 ELSE
94734 NULL;
94735 -- No business flow processing for business flow method of NONE.
94736 END IF;
94737
94738 --
94739 -- call analytical criteria
94740 --
94741
94742 --
94743 -- call description
94744 --
94745 -- No description or it is inherited.
94746 --
94747 -- call ADRs
94748 -- Bug 4922099
94749 --
94750 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94751 (NVL(l_actual_upg_option, 'N') = 'O') OR
94752 (NVL(l_enc_upg_option, 'N') = 'O')
94753 )
94754 THEN
94755 NULL;
94756 --
94757 --
94758
94759 l_ccid := AcctDerRule_25(
94760 p_application_id => p_application_id
94761 , p_ae_header_id => l_ae_header_id
94762 , p_source_1 => p_source_1
94763 , p_source_2 => p_source_2
94764 , x_transaction_coa_id => l_adr_transaction_coa_id
94765 , x_accounting_coa_id => l_adr_accounting_coa_id
94766 , x_value_type_code => l_adr_value_type_code
94767 , p_side => 'NA'
94768 );
94769
94770 xla_ae_lines_pkg.set_ccid(
94771 p_code_combination_id => l_ccid
94772 , p_value_type_code => l_adr_value_type_code
94773 , p_transaction_coa_id => l_adr_transaction_coa_id
94774 , p_accounting_coa_id => l_adr_accounting_coa_id
94775 , p_adr_code => 'ISP'
94776 , p_adr_type_code => 'S'
94777 , p_component_type => l_component_type
94778 , p_component_code => l_component_code
94779 , p_component_type_code => l_component_type_code
94780 , p_component_appl_id => l_component_appl_id
94781 , p_amb_context_code => l_amb_context_code
94782 , p_side => 'NA'
94783 );
94784
94785
94786 --
94787 --
94788 END IF;
94789 --
94790 -- Bug 4922099
94791 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94792 (NVL(l_enc_upg_option, 'N') = 'O')
94793 ) AND
94794 (l_bflow_method_code = 'PRIOR_ENTRY')
94795 )
94796 THEN
94797 IF
94798 --
94799 1 = 2
94800 --
94801 THEN
94802 xla_accounting_err_pkg.build_message
94803 (p_appli_s_name => 'XLA'
94804 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94805 ,p_token_1 => 'LINE_NUMBER'
94806 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
94807 ,p_token_2 => 'LINE_TYPE_NAME'
94808 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
94809 l_component_type
94810 ,l_component_code
94811 ,l_component_type_code
94812 ,l_component_appl_id
94813 ,l_amb_context_code
94814 ,l_entity_code
94815 ,l_event_class_code
94816 )
94817 ,p_token_3 => 'OWNER'
94818 ,p_value_3 => xla_lookups_pkg.get_meaning(
94822 ,p_token_4 => 'PRODUCT_NAME'
94819 p_lookup_type => 'XLA_OWNER_TYPE'
94820 ,p_lookup_code => l_component_type_code
94821 )
94823 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94824 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94825 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94826 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94827 ,p_ae_header_id => NULL
94828 );
94829
94830 IF (C_LEVEL_ERROR>= g_log_level) THEN
94831 trace
94832 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94833 ,p_level => C_LEVEL_ERROR
94834 ,p_module => l_log_module);
94835 END IF;
94836 END IF;
94837 END IF;
94838 --
94839 --
94840 ------------------------------------------------------------------------------------------------
94841 -- 4219869 Business Flow
94842 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94843 -- Prior Entry. Currently, the following code is always generated.
94844 ------------------------------------------------------------------------------------------------
94845 XLA_AE_LINES_PKG.ValidateCurrentLine;
94846
94847 ------------------------------------------------------------------------------------
94848 -- 4219869 Business Flow
94849 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94850 ------------------------------------------------------------------------------------
94851 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94852
94853 ----------------------------------------------------------------------------------
94854 -- 4219869 Business Flow
94855 -- Update journal entry status -- Need to generate this within IF <condition>
94856 ----------------------------------------------------------------------------------
94857 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94858 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94859 ,p_balance_type_code => l_balance_type_code
94860 );
94861
94862 -------------------------------------------------------------------------------------------
94863 -- 4262811 - Generate the Accrual Reversal lines
94864 -------------------------------------------------------------------------------------------
94865 BEGIN
94866 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94867 (g_array_event(p_event_id).array_value_num('header_index'));
94868 IF l_acc_rev_flag IS NULL THEN
94869 l_acc_rev_flag := 'N';
94870 END IF;
94871 EXCEPTION
94872 WHEN OTHERS THEN
94873 l_acc_rev_flag := 'N';
94874 END;
94875 --
94876 IF (l_acc_rev_flag = 'Y') THEN
94877
94878 -- 4645092 ------------------------------------------------------------------------------
94879 -- To allow MPA report to determine if it should generate report process
94880 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94881 ------------------------------------------------------------------------------------------
94882
94883 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94884 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94885 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
94886 -- call ADRs
94887 -- Bug 4922099
94888 --
94889 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94890 (NVL(l_actual_upg_option, 'N') = 'O') OR
94891 (NVL(l_enc_upg_option, 'N') = 'O')
94892 )
94893 THEN
94894 NULL;
94895 --
94896 --
94897
94898 l_ccid := AcctDerRule_25(
94899 p_application_id => p_application_id
94900 , p_ae_header_id => l_ae_header_id
94901 , p_source_1 => p_source_1
94902 , p_source_2 => p_source_2
94903 , x_transaction_coa_id => l_adr_transaction_coa_id
94904 , x_accounting_coa_id => l_adr_accounting_coa_id
94905 , x_value_type_code => l_adr_value_type_code
94906 , p_side => 'NA'
94907 );
94908
94909 xla_ae_lines_pkg.set_ccid(
94910 p_code_combination_id => l_ccid
94911 , p_value_type_code => l_adr_value_type_code
94912 , p_transaction_coa_id => l_adr_transaction_coa_id
94913 , p_accounting_coa_id => l_adr_accounting_coa_id
94914 , p_adr_code => 'ISP'
94915 , p_adr_type_code => 'S'
94916 , p_component_type => l_component_type
94917 , p_component_code => l_component_code
94918 , p_component_type_code => l_component_type_code
94919 , p_component_appl_id => l_component_appl_id
94920 , p_amb_context_code => l_amb_context_code
94921 , p_side => 'NA'
94922 );
94923
94924
94925 --
94926 --
94930 -- Update the line information that should be overwritten
94927 END IF;
94928
94929 --
94931 --
94932 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94933 p_header_num => 1);
94934 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
94935
94936 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94937
94938 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
94939 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94940 END IF;
94941
94942 --
94943 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94944 --
94945 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94946 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
94947 ELSE
94948 ---------------------------------------------------------------------------------------------------
94949 -- 4262811a Switch Sign
94950 ---------------------------------------------------------------------------------------------------
94951 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
94952 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94953 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94954 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94955 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94956 -- 5132302
94957 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94958 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94959
94960 END IF;
94961
94962 -- 4955764
94963 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94964 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94965
94966
94967 XLA_AE_LINES_PKG.ValidateCurrentLine;
94968 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94969
94970 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94971 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94972 ,p_balance_type_code => l_balance_type_code);
94973
94974 END IF;
94975
94976 -----------------------------------------------------------------------------------------
94977 -- 4262811 Multiperiod Accounting
94978 -----------------------------------------------------------------------------------------
94979 -- No MPA option is assigned.
94980
94981
94982 END IF;
94983 END IF;
94984 --
94985
94986 --
94987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94988 trace
94989 (p_msg => 'END of AcctLineType_203'
94990 ,p_level => C_LEVEL_PROCEDURE
94991 ,p_module => l_log_module);
94992 END IF;
94993 --
94994 EXCEPTION
94995 WHEN xla_exceptions_pkg.application_exception THEN
94996 RAISE;
94997 WHEN OTHERS THEN
94998 xla_exceptions_pkg.raise_message
94999 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_203');
95000 END AcctLineType_203;
95001 --
95002
95003 ---------------------------------------
95004 --
95005 -- PRIVATE FUNCTION
95006 -- AcctLineType_204
95007 --
95008 ---------------------------------------
95009 PROCEDURE AcctLineType_204 (
95010 p_application_id IN NUMBER
95011 ,p_event_id IN NUMBER
95012 ,p_calculate_acctd_flag IN VARCHAR2
95013 ,p_calculate_g_l_flag IN VARCHAR2
95014 ,p_actual_flag IN OUT VARCHAR2
95015 ,p_balance_type_code OUT VARCHAR2
95016 ,p_gain_or_loss_ref OUT VARCHAR2
95017
95018 --Transaction Account
95019 , p_source_1 IN NUMBER
95020 --Journal Line Type
95021 , p_source_2 IN VARCHAR2
95022 --Entered Amount
95023 , p_source_3 IN NUMBER
95024 --First Distribution Identifier
95025 , p_source_5 IN NUMBER
95026 --Distribution Type
95027 , p_source_6 IN VARCHAR2
95028 --Currency Code
95029 , p_source_7 IN VARCHAR2
95030 --Currency Conversion Date
95031 , p_source_8 IN DATE
95032 --Currency Conversion Rate
95033 , p_source_9 IN NUMBER
95034 --Currency Conversion Type
95035 , p_source_10 IN VARCHAR2
95036 --Accounted Amount
95037 , p_source_11 IN NUMBER
95038 )
95039 IS
95040
95041 l_component_type VARCHAR2(80);
95042 l_component_code VARCHAR2(30);
95043 l_component_type_code VARCHAR2(1);
95044 l_component_appl_id INTEGER;
95045 l_amb_context_code VARCHAR2(30);
95046 l_entity_code VARCHAR2(30);
95047 l_event_class_code VARCHAR2(30);
95048 l_ae_header_id NUMBER;
95049 l_event_type_code VARCHAR2(30);
95050 l_line_definition_code VARCHAR2(30);
95051 l_line_definition_owner_code VARCHAR2(1);
95055 l_ccid NUMBER;
95052 --
95053 -- adr variables
95054 l_segment VARCHAR2(30);
95056 l_adr_transaction_coa_id NUMBER;
95057 l_adr_accounting_coa_id NUMBER;
95058 l_adr_flexfield_segment_code VARCHAR2(30);
95059 l_adr_flex_value_set_id NUMBER;
95060 l_adr_value_type_code VARCHAR2(30);
95061 l_adr_value_combination_id NUMBER;
95062 l_adr_value_segment_code VARCHAR2(30);
95063
95064 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
95065 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
95066 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
95067 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
95068
95069 -- 4262811 Variables ------------------------------------------------------------------------------------------
95070 l_entered_amt_idx NUMBER;
95071 l_accted_amt_idx NUMBER;
95072 l_acc_rev_flag VARCHAR2(1);
95073 l_accrual_line_num NUMBER;
95074 l_tmp_amt NUMBER;
95075 l_acc_rev_natural_side_code VARCHAR2(1);
95076
95077 l_num_entries NUMBER;
95078 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
95079 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
95080 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
95081 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
95082 l_recog_line_1 NUMBER;
95083 l_recog_line_2 NUMBER;
95084
95085 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
95086 l_bflow_applied_to_amt NUMBER; -- 5132302
95087 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
95088
95089 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95090
95091 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
95092 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
95093
95094 ---------------------------------------------------------------------------------------------------------------
95095
95096
95097 --
95098 -- bulk performance
95099 --
95100 l_balance_type_code VARCHAR2(1);
95101 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
95102 l_log_module VARCHAR2(240);
95103
95104 --
95105 -- Upgrade strategy
95106 --
95107 l_actual_upg_option VARCHAR2(1);
95108 l_enc_upg_option VARCHAR2(1);
95109
95110 --
95111 BEGIN
95112 --
95113 IF g_log_enabled THEN
95114 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_204';
95115 END IF;
95116 --
95117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95118
95119 trace
95120 (p_msg => 'BEGIN of AcctLineType_204'
95121 ,p_level => C_LEVEL_PROCEDURE
95122 ,p_module => l_log_module);
95123
95124 END IF;
95125 --
95126 l_component_type := 'AMB_JLT';
95127 l_component_code := 'ISP';
95128 l_component_type_code := 'S';
95129 l_component_appl_id := 555;
95130 l_amb_context_code := 'DEFAULT';
95131 l_entity_code := 'PURCHASING';
95132 l_event_class_code := 'DELIVER';
95133 l_event_type_code := 'XFER_TO_REGULAR';
95134 l_line_definition_owner_code := 'S';
95135 l_line_definition_code := 'XFER_TO_REG';
95136 --
95137 l_balance_type_code := 'A';
95138 l_segment := NULL;
95139 l_ccid := NULL;
95140 l_adr_transaction_coa_id := NULL;
95141 l_adr_accounting_coa_id := NULL;
95142 l_adr_flexfield_segment_code := NULL;
95143 l_adr_flex_value_set_id := NULL;
95144 l_adr_value_type_code := NULL;
95145 l_adr_value_combination_id := NULL;
95146 l_adr_value_segment_code := NULL;
95147
95148 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
95149 l_bflow_class_code := ''; -- 4219869 Business Flow
95150 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
95151 l_budgetary_control_flag := 'N';
95152
95153 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95154 l_bflow_applied_to_amt := NULL; -- 5132302
95155 l_entered_amt_idx := NULL; -- 4262811
95156 l_accted_amt_idx := NULL; -- 4262811
95157 l_acc_rev_flag := NULL; -- 4262811
95158 l_accrual_line_num := NULL; -- 4262811
95159 l_tmp_amt := NULL; -- 4262811
95160 --
95161
95162 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95163 l_balance_type_code <> 'B' THEN
95164 IF NVL(p_source_2,'
95165 ') = 'ISP'
95166 THEN
95167
95168 --
95169 XLA_AE_LINES_PKG.SetNewLine;
95170
95171 p_balance_type_code := l_balance_type_code;
95172 -- set the flag so later we will know whether the gain loss line needs to be created
95173
95174 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95175 p_actual_flag :='A';
95176 END IF;
95177
95178 --
95179 -- bulk performance
95180 --
95181 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95185 --
95182 p_header_num => 0); -- 4262811
95183 --
95184 -- set accounting line options
95186 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95187 p_natural_side_code => 'D'
95188 , p_gain_or_loss_flag => 'N'
95189 , p_gl_transfer_mode_code => 'D'
95190 , p_acct_entry_type_code => 'A'
95191 , p_switch_side_flag => 'Y'
95192 , p_merge_duplicate_code => 'W'
95193 );
95194 --
95195 l_acc_rev_natural_side_code := 'C'; -- 4262811
95196 --
95197 --
95198 -- set accounting line type info
95199 --
95200 xla_ae_lines_pkg.SetAcctLineType
95201 (p_component_type => l_component_type
95202 ,p_event_type_code => l_event_type_code
95203 ,p_line_definition_owner_code => l_line_definition_owner_code
95204 ,p_line_definition_code => l_line_definition_code
95205 ,p_accounting_line_code => l_component_code
95206 ,p_accounting_line_type_code => l_component_type_code
95207 ,p_accounting_line_appl_id => l_component_appl_id
95208 ,p_amb_context_code => l_amb_context_code
95209 ,p_entity_code => l_entity_code
95210 ,p_event_class_code => l_event_class_code);
95211 --
95212 -- set accounting class
95213 --
95214 xla_ae_lines_pkg.SetAcctClass(
95215 p_accounting_class_code => 'RECEIVING_INSPECTION'
95216 , p_ae_header_id => l_ae_header_id
95217 );
95218
95219 --
95220 -- set rounding class
95221 --
95222 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95223 'RECEIVING_INSPECTION';
95224
95225 --
95226 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95227 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95228 --
95229 -- bulk performance
95230 --
95231 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95232
95233 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95234 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95235
95236 -- 4955764
95237 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95238 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95239
95240 -- 4458381 Public Sector Enh
95241
95242 --
95243 -- set accounting attributes for the line type
95244 --
95245 l_entered_amt_idx := 3;
95246 l_accted_amt_idx := 8;
95247 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95248 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95249 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
95250 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95251 l_rec_acct_attrs.array_char_value(2) := p_source_6;
95252 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95253 l_rec_acct_attrs.array_num_value(3) := p_source_3;
95254 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95255 l_rec_acct_attrs.array_char_value(4) := p_source_7;
95256 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95257 l_rec_acct_attrs.array_date_value(5) := p_source_8;
95258 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95259 l_rec_acct_attrs.array_num_value(6) := p_source_9;
95260 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95261 l_rec_acct_attrs.array_char_value(7) := p_source_10;
95262 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95263 l_rec_acct_attrs.array_num_value(8) := p_source_11;
95264
95265 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95266 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95267
95268 ---------------------------------------------------------------------------------------------------------------
95269 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95270 ---------------------------------------------------------------------------------------------------------------
95271 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95272
95273 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95274 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95275
95276 IF xla_accounting_cache_pkg.GetValueChar
95277 (p_source_code => 'LEDGER_CATEGORY_CODE'
95278 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95279 AND l_bflow_method_code = 'PRIOR_ENTRY'
95280 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95281 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95282 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95283 )
95284 THEN
95285 xla_ae_lines_pkg.BflowUpgEntry
95286 (p_business_method_code => l_bflow_method_code
95287 ,p_business_class_code => l_bflow_class_code
95288 ,p_balance_type => l_balance_type_code);
95289 ELSE
95290 NULL;
95294 --
95291 -- No business flow processing for business flow method of NONE.
95292 END IF;
95293
95295 -- call analytical criteria
95296 --
95297
95298 --
95299 -- call description
95300 --
95301 -- No description or it is inherited.
95302 --
95303 -- call ADRs
95304 -- Bug 4922099
95305 --
95306 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95307 (NVL(l_actual_upg_option, 'N') = 'O') OR
95308 (NVL(l_enc_upg_option, 'N') = 'O')
95309 )
95310 THEN
95311 NULL;
95312 --
95313 --
95314
95315 l_ccid := AcctDerRule_25(
95316 p_application_id => p_application_id
95317 , p_ae_header_id => l_ae_header_id
95318 , p_source_1 => p_source_1
95319 , p_source_2 => p_source_2
95320 , x_transaction_coa_id => l_adr_transaction_coa_id
95321 , x_accounting_coa_id => l_adr_accounting_coa_id
95322 , x_value_type_code => l_adr_value_type_code
95323 , p_side => 'NA'
95324 );
95325
95326 xla_ae_lines_pkg.set_ccid(
95327 p_code_combination_id => l_ccid
95328 , p_value_type_code => l_adr_value_type_code
95329 , p_transaction_coa_id => l_adr_transaction_coa_id
95330 , p_accounting_coa_id => l_adr_accounting_coa_id
95331 , p_adr_code => 'ISP'
95332 , p_adr_type_code => 'S'
95333 , p_component_type => l_component_type
95334 , p_component_code => l_component_code
95335 , p_component_type_code => l_component_type_code
95336 , p_component_appl_id => l_component_appl_id
95337 , p_amb_context_code => l_amb_context_code
95338 , p_side => 'NA'
95339 );
95340
95341
95342 --
95343 --
95344 END IF;
95345 --
95346 -- Bug 4922099
95347 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95348 (NVL(l_enc_upg_option, 'N') = 'O')
95349 ) AND
95350 (l_bflow_method_code = 'PRIOR_ENTRY')
95351 )
95352 THEN
95353 IF
95354 --
95355 1 = 2
95356 --
95357 THEN
95358 xla_accounting_err_pkg.build_message
95359 (p_appli_s_name => 'XLA'
95360 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95361 ,p_token_1 => 'LINE_NUMBER'
95362 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
95363 ,p_token_2 => 'LINE_TYPE_NAME'
95364 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
95365 l_component_type
95366 ,l_component_code
95367 ,l_component_type_code
95368 ,l_component_appl_id
95369 ,l_amb_context_code
95370 ,l_entity_code
95371 ,l_event_class_code
95372 )
95373 ,p_token_3 => 'OWNER'
95374 ,p_value_3 => xla_lookups_pkg.get_meaning(
95375 p_lookup_type => 'XLA_OWNER_TYPE'
95376 ,p_lookup_code => l_component_type_code
95377 )
95378 ,p_token_4 => 'PRODUCT_NAME'
95379 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95380 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95381 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95382 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95383 ,p_ae_header_id => NULL
95384 );
95385
95386 IF (C_LEVEL_ERROR>= g_log_level) THEN
95387 trace
95388 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95389 ,p_level => C_LEVEL_ERROR
95390 ,p_module => l_log_module);
95391 END IF;
95392 END IF;
95393 END IF;
95394 --
95395 --
95396 ------------------------------------------------------------------------------------------------
95397 -- 4219869 Business Flow
95398 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95399 -- Prior Entry. Currently, the following code is always generated.
95400 ------------------------------------------------------------------------------------------------
95401 XLA_AE_LINES_PKG.ValidateCurrentLine;
95405 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95402
95403 ------------------------------------------------------------------------------------
95404 -- 4219869 Business Flow
95406 ------------------------------------------------------------------------------------
95407 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95408
95409 ----------------------------------------------------------------------------------
95410 -- 4219869 Business Flow
95411 -- Update journal entry status -- Need to generate this within IF <condition>
95412 ----------------------------------------------------------------------------------
95413 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95414 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95415 ,p_balance_type_code => l_balance_type_code
95416 );
95417
95418 -------------------------------------------------------------------------------------------
95419 -- 4262811 - Generate the Accrual Reversal lines
95420 -------------------------------------------------------------------------------------------
95421 BEGIN
95422 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95423 (g_array_event(p_event_id).array_value_num('header_index'));
95424 IF l_acc_rev_flag IS NULL THEN
95425 l_acc_rev_flag := 'N';
95426 END IF;
95427 EXCEPTION
95428 WHEN OTHERS THEN
95429 l_acc_rev_flag := 'N';
95430 END;
95431 --
95432 IF (l_acc_rev_flag = 'Y') THEN
95433
95434 -- 4645092 ------------------------------------------------------------------------------
95435 -- To allow MPA report to determine if it should generate report process
95436 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95437 ------------------------------------------------------------------------------------------
95438
95439 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95440 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95441 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
95442 -- call ADRs
95443 -- Bug 4922099
95444 --
95445 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95446 (NVL(l_actual_upg_option, 'N') = 'O') OR
95447 (NVL(l_enc_upg_option, 'N') = 'O')
95448 )
95449 THEN
95450 NULL;
95451 --
95452 --
95453
95454 l_ccid := AcctDerRule_25(
95455 p_application_id => p_application_id
95456 , p_ae_header_id => l_ae_header_id
95457 , p_source_1 => p_source_1
95458 , p_source_2 => p_source_2
95459 , x_transaction_coa_id => l_adr_transaction_coa_id
95460 , x_accounting_coa_id => l_adr_accounting_coa_id
95461 , x_value_type_code => l_adr_value_type_code
95462 , p_side => 'NA'
95463 );
95464
95465 xla_ae_lines_pkg.set_ccid(
95466 p_code_combination_id => l_ccid
95467 , p_value_type_code => l_adr_value_type_code
95468 , p_transaction_coa_id => l_adr_transaction_coa_id
95469 , p_accounting_coa_id => l_adr_accounting_coa_id
95470 , p_adr_code => 'ISP'
95471 , p_adr_type_code => 'S'
95472 , p_component_type => l_component_type
95473 , p_component_code => l_component_code
95474 , p_component_type_code => l_component_type_code
95475 , p_component_appl_id => l_component_appl_id
95476 , p_amb_context_code => l_amb_context_code
95477 , p_side => 'NA'
95478 );
95479
95480
95481 --
95482 --
95483 END IF;
95484
95485 --
95486 -- Update the line information that should be overwritten
95487 --
95488 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95489 p_header_num => 1);
95490 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
95491
95492 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95493
95494 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
95495 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95496 END IF;
95497
95498 --
95499 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95500 --
95501 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95502 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
95503 ELSE
95504 ---------------------------------------------------------------------------------------------------
95505 -- 4262811a Switch Sign
95506 ---------------------------------------------------------------------------------------------------
95507 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
95508 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95509 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95513 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95510 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95511 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95512 -- 5132302
95514 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95515
95516 END IF;
95517
95518 -- 4955764
95519 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95520 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95521
95522
95523 XLA_AE_LINES_PKG.ValidateCurrentLine;
95524 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95525
95526 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95527 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95528 ,p_balance_type_code => l_balance_type_code);
95529
95530 END IF;
95531
95532 -----------------------------------------------------------------------------------------
95533 -- 4262811 Multiperiod Accounting
95534 -----------------------------------------------------------------------------------------
95535 -- No MPA option is assigned.
95536
95537
95538 END IF;
95539 END IF;
95540 --
95541
95542 --
95543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95544 trace
95545 (p_msg => 'END of AcctLineType_204'
95546 ,p_level => C_LEVEL_PROCEDURE
95547 ,p_module => l_log_module);
95548 END IF;
95549 --
95550 EXCEPTION
95551 WHEN xla_exceptions_pkg.application_exception THEN
95552 RAISE;
95553 WHEN OTHERS THEN
95554 xla_exceptions_pkg.raise_message
95555 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_204');
95556 END AcctLineType_204;
95557 --
95558
95559 ---------------------------------------
95560 --
95561 -- PRIVATE FUNCTION
95562 -- AcctLineType_205
95563 --
95564 ---------------------------------------
95565 PROCEDURE AcctLineType_205 (
95566 p_application_id IN NUMBER
95567 ,p_event_id IN NUMBER
95568 ,p_calculate_acctd_flag IN VARCHAR2
95569 ,p_calculate_g_l_flag IN VARCHAR2
95570 ,p_actual_flag IN OUT VARCHAR2
95571 ,p_balance_type_code OUT VARCHAR2
95572 ,p_gain_or_loss_ref OUT VARCHAR2
95573
95574 --Transaction Account
95575 , p_source_1 IN NUMBER
95576 --Journal Line Type
95577 , p_source_2 IN VARCHAR2
95578 --Entered Amount
95579 , p_source_3 IN NUMBER
95580 --First Distribution Identifier
95581 , p_source_5 IN NUMBER
95582 --Distribution Type
95583 , p_source_6 IN VARCHAR2
95584 --Currency Code
95585 , p_source_7 IN VARCHAR2
95586 --Currency Conversion Date
95587 , p_source_8 IN DATE
95588 --Currency Conversion Rate
95589 , p_source_9 IN NUMBER
95590 --Currency Conversion Type
95591 , p_source_10 IN VARCHAR2
95592 --Accounted Amount
95593 , p_source_11 IN NUMBER
95594 )
95595 IS
95596
95597 l_component_type VARCHAR2(80);
95598 l_component_code VARCHAR2(30);
95599 l_component_type_code VARCHAR2(1);
95600 l_component_appl_id INTEGER;
95601 l_amb_context_code VARCHAR2(30);
95602 l_entity_code VARCHAR2(30);
95603 l_event_class_code VARCHAR2(30);
95604 l_ae_header_id NUMBER;
95605 l_event_type_code VARCHAR2(30);
95606 l_line_definition_code VARCHAR2(30);
95607 l_line_definition_owner_code VARCHAR2(1);
95608 --
95609 -- adr variables
95610 l_segment VARCHAR2(30);
95611 l_ccid NUMBER;
95612 l_adr_transaction_coa_id NUMBER;
95613 l_adr_accounting_coa_id NUMBER;
95614 l_adr_flexfield_segment_code VARCHAR2(30);
95615 l_adr_flex_value_set_id NUMBER;
95616 l_adr_value_type_code VARCHAR2(30);
95617 l_adr_value_combination_id NUMBER;
95618 l_adr_value_segment_code VARCHAR2(30);
95619
95620 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
95621 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
95622 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
95623 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
95624
95625 -- 4262811 Variables ------------------------------------------------------------------------------------------
95626 l_entered_amt_idx NUMBER;
95627 l_accted_amt_idx NUMBER;
95628 l_acc_rev_flag VARCHAR2(1);
95629 l_accrual_line_num NUMBER;
95630 l_tmp_amt NUMBER;
95631 l_acc_rev_natural_side_code VARCHAR2(1);
95632
95633 l_num_entries NUMBER;
95634 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
95635 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
95636 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
95637 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
95638 l_recog_line_1 NUMBER;
95639 l_recog_line_2 NUMBER;
95640
95644
95641 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
95642 l_bflow_applied_to_amt NUMBER; -- 5132302
95643 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
95645 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95646
95647 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
95648 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
95649
95650 ---------------------------------------------------------------------------------------------------------------
95651
95652
95653 --
95654 -- bulk performance
95655 --
95656 l_balance_type_code VARCHAR2(1);
95657 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
95658 l_log_module VARCHAR2(240);
95659
95660 --
95661 -- Upgrade strategy
95662 --
95663 l_actual_upg_option VARCHAR2(1);
95664 l_enc_upg_option VARCHAR2(1);
95665
95666 --
95667 BEGIN
95668 --
95669 IF g_log_enabled THEN
95670 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_205';
95671 END IF;
95672 --
95673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95674
95675 trace
95676 (p_msg => 'BEGIN of AcctLineType_205'
95677 ,p_level => C_LEVEL_PROCEDURE
95678 ,p_module => l_log_module);
95679
95680 END IF;
95681 --
95682 l_component_type := 'AMB_JLT';
95683 l_component_code := 'ISP';
95684 l_component_type_code := 'S';
95685 l_component_appl_id := 555;
95686 l_amb_context_code := 'DEFAULT';
95687 l_entity_code := 'PURCHASING';
95688 l_event_class_code := 'DELIVER';
95689 l_event_type_code := 'PO_RECEIPT';
95690 l_line_definition_owner_code := 'S';
95691 l_line_definition_code := 'DELIVER';
95692 --
95693 l_balance_type_code := 'A';
95694 l_segment := NULL;
95695 l_ccid := NULL;
95696 l_adr_transaction_coa_id := NULL;
95697 l_adr_accounting_coa_id := NULL;
95698 l_adr_flexfield_segment_code := NULL;
95699 l_adr_flex_value_set_id := NULL;
95700 l_adr_value_type_code := NULL;
95701 l_adr_value_combination_id := NULL;
95702 l_adr_value_segment_code := NULL;
95703
95704 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
95705 l_bflow_class_code := ''; -- 4219869 Business Flow
95706 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
95707 l_budgetary_control_flag := 'N';
95708
95709 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95710 l_bflow_applied_to_amt := NULL; -- 5132302
95711 l_entered_amt_idx := NULL; -- 4262811
95712 l_accted_amt_idx := NULL; -- 4262811
95713 l_acc_rev_flag := NULL; -- 4262811
95714 l_accrual_line_num := NULL; -- 4262811
95715 l_tmp_amt := NULL; -- 4262811
95716 --
95717
95718 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95719 l_balance_type_code <> 'B' THEN
95720 IF NVL(p_source_2,'
95721 ') = 'ISP'
95722 THEN
95723
95724 --
95725 XLA_AE_LINES_PKG.SetNewLine;
95726
95727 p_balance_type_code := l_balance_type_code;
95728 -- set the flag so later we will know whether the gain loss line needs to be created
95729
95730 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95731 p_actual_flag :='A';
95732 END IF;
95733
95734 --
95735 -- bulk performance
95736 --
95737 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95738 p_header_num => 0); -- 4262811
95739 --
95740 -- set accounting line options
95741 --
95742 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95743 p_natural_side_code => 'D'
95744 , p_gain_or_loss_flag => 'N'
95745 , p_gl_transfer_mode_code => 'D'
95746 , p_acct_entry_type_code => 'A'
95747 , p_switch_side_flag => 'Y'
95748 , p_merge_duplicate_code => 'W'
95749 );
95750 --
95751 l_acc_rev_natural_side_code := 'C'; -- 4262811
95752 --
95753 --
95754 -- set accounting line type info
95755 --
95756 xla_ae_lines_pkg.SetAcctLineType
95757 (p_component_type => l_component_type
95758 ,p_event_type_code => l_event_type_code
95759 ,p_line_definition_owner_code => l_line_definition_owner_code
95760 ,p_line_definition_code => l_line_definition_code
95761 ,p_accounting_line_code => l_component_code
95762 ,p_accounting_line_type_code => l_component_type_code
95763 ,p_accounting_line_appl_id => l_component_appl_id
95764 ,p_amb_context_code => l_amb_context_code
95765 ,p_entity_code => l_entity_code
95766 ,p_event_class_code => l_event_class_code);
95767 --
95768 -- set accounting class
95769 --
95770 xla_ae_lines_pkg.SetAcctClass(
95771 p_accounting_class_code => 'RECEIVING_INSPECTION'
95772 , p_ae_header_id => l_ae_header_id
95773 );
95774
95775 --
95776 -- set rounding class
95777 --
95781 --
95778 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95779 'RECEIVING_INSPECTION';
95780
95782 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95783 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95784 --
95785 -- bulk performance
95786 --
95787 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95788
95789 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95790 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95791
95792 -- 4955764
95793 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95794 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95795
95796 -- 4458381 Public Sector Enh
95797
95798 --
95799 -- set accounting attributes for the line type
95800 --
95801 l_entered_amt_idx := 3;
95802 l_accted_amt_idx := 8;
95803 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95804 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95805 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
95806 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95807 l_rec_acct_attrs.array_char_value(2) := p_source_6;
95808 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95809 l_rec_acct_attrs.array_num_value(3) := p_source_3;
95810 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95811 l_rec_acct_attrs.array_char_value(4) := p_source_7;
95812 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95813 l_rec_acct_attrs.array_date_value(5) := p_source_8;
95814 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95815 l_rec_acct_attrs.array_num_value(6) := p_source_9;
95816 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95817 l_rec_acct_attrs.array_char_value(7) := p_source_10;
95818 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95819 l_rec_acct_attrs.array_num_value(8) := p_source_11;
95820
95821 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95822 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95823
95824 ---------------------------------------------------------------------------------------------------------------
95825 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95826 ---------------------------------------------------------------------------------------------------------------
95827 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95828
95829 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95830 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95831
95832 IF xla_accounting_cache_pkg.GetValueChar
95833 (p_source_code => 'LEDGER_CATEGORY_CODE'
95834 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95835 AND l_bflow_method_code = 'PRIOR_ENTRY'
95836 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95837 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95838 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95839 )
95840 THEN
95841 xla_ae_lines_pkg.BflowUpgEntry
95842 (p_business_method_code => l_bflow_method_code
95843 ,p_business_class_code => l_bflow_class_code
95844 ,p_balance_type => l_balance_type_code);
95845 ELSE
95846 NULL;
95847 -- No business flow processing for business flow method of NONE.
95848 END IF;
95849
95850 --
95851 -- call analytical criteria
95852 --
95853
95854 --
95855 -- call description
95856 --
95857 -- No description or it is inherited.
95858 --
95859 -- call ADRs
95860 -- Bug 4922099
95861 --
95862 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95863 (NVL(l_actual_upg_option, 'N') = 'O') OR
95864 (NVL(l_enc_upg_option, 'N') = 'O')
95865 )
95866 THEN
95867 NULL;
95868 --
95869 --
95870
95871 l_ccid := AcctDerRule_25(
95872 p_application_id => p_application_id
95873 , p_ae_header_id => l_ae_header_id
95874 , p_source_1 => p_source_1
95875 , p_source_2 => p_source_2
95876 , x_transaction_coa_id => l_adr_transaction_coa_id
95877 , x_accounting_coa_id => l_adr_accounting_coa_id
95878 , x_value_type_code => l_adr_value_type_code
95879 , p_side => 'NA'
95880 );
95881
95882 xla_ae_lines_pkg.set_ccid(
95883 p_code_combination_id => l_ccid
95884 , p_value_type_code => l_adr_value_type_code
95885 , p_transaction_coa_id => l_adr_transaction_coa_id
95886 , p_accounting_coa_id => l_adr_accounting_coa_id
95887 , p_adr_code => 'ISP'
95888 , p_adr_type_code => 'S'
95889 , p_component_type => l_component_type
95890 , p_component_code => l_component_code
95894 , p_side => 'NA'
95891 , p_component_type_code => l_component_type_code
95892 , p_component_appl_id => l_component_appl_id
95893 , p_amb_context_code => l_amb_context_code
95895 );
95896
95897
95898 --
95899 --
95900 END IF;
95901 --
95902 -- Bug 4922099
95903 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95904 (NVL(l_enc_upg_option, 'N') = 'O')
95905 ) AND
95906 (l_bflow_method_code = 'PRIOR_ENTRY')
95907 )
95908 THEN
95909 IF
95910 --
95911 1 = 2
95912 --
95913 THEN
95914 xla_accounting_err_pkg.build_message
95915 (p_appli_s_name => 'XLA'
95916 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95917 ,p_token_1 => 'LINE_NUMBER'
95918 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
95919 ,p_token_2 => 'LINE_TYPE_NAME'
95920 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
95921 l_component_type
95922 ,l_component_code
95923 ,l_component_type_code
95924 ,l_component_appl_id
95925 ,l_amb_context_code
95926 ,l_entity_code
95927 ,l_event_class_code
95928 )
95929 ,p_token_3 => 'OWNER'
95930 ,p_value_3 => xla_lookups_pkg.get_meaning(
95931 p_lookup_type => 'XLA_OWNER_TYPE'
95932 ,p_lookup_code => l_component_type_code
95933 )
95934 ,p_token_4 => 'PRODUCT_NAME'
95935 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95936 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95937 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95938 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95939 ,p_ae_header_id => NULL
95940 );
95941
95942 IF (C_LEVEL_ERROR>= g_log_level) THEN
95943 trace
95944 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95945 ,p_level => C_LEVEL_ERROR
95946 ,p_module => l_log_module);
95947 END IF;
95948 END IF;
95949 END IF;
95950 --
95951 --
95952 ------------------------------------------------------------------------------------------------
95953 -- 4219869 Business Flow
95954 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95955 -- Prior Entry. Currently, the following code is always generated.
95956 ------------------------------------------------------------------------------------------------
95957 XLA_AE_LINES_PKG.ValidateCurrentLine;
95958
95959 ------------------------------------------------------------------------------------
95960 -- 4219869 Business Flow
95961 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95962 ------------------------------------------------------------------------------------
95963 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95964
95965 ----------------------------------------------------------------------------------
95966 -- 4219869 Business Flow
95967 -- Update journal entry status -- Need to generate this within IF <condition>
95968 ----------------------------------------------------------------------------------
95969 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95970 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95971 ,p_balance_type_code => l_balance_type_code
95972 );
95973
95974 -------------------------------------------------------------------------------------------
95975 -- 4262811 - Generate the Accrual Reversal lines
95976 -------------------------------------------------------------------------------------------
95977 BEGIN
95978 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95979 (g_array_event(p_event_id).array_value_num('header_index'));
95980 IF l_acc_rev_flag IS NULL THEN
95981 l_acc_rev_flag := 'N';
95982 END IF;
95983 EXCEPTION
95984 WHEN OTHERS THEN
95985 l_acc_rev_flag := 'N';
95986 END;
95987 --
95988 IF (l_acc_rev_flag = 'Y') THEN
95989
95993 ------------------------------------------------------------------------------------------
95990 -- 4645092 ------------------------------------------------------------------------------
95991 -- To allow MPA report to determine if it should generate report process
95992 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95994
95995 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95996 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95997 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
95998 -- call ADRs
95999 -- Bug 4922099
96000 --
96001 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96002 (NVL(l_actual_upg_option, 'N') = 'O') OR
96003 (NVL(l_enc_upg_option, 'N') = 'O')
96004 )
96005 THEN
96006 NULL;
96007 --
96008 --
96009
96010 l_ccid := AcctDerRule_25(
96011 p_application_id => p_application_id
96012 , p_ae_header_id => l_ae_header_id
96013 , p_source_1 => p_source_1
96014 , p_source_2 => p_source_2
96015 , x_transaction_coa_id => l_adr_transaction_coa_id
96016 , x_accounting_coa_id => l_adr_accounting_coa_id
96017 , x_value_type_code => l_adr_value_type_code
96018 , p_side => 'NA'
96019 );
96020
96021 xla_ae_lines_pkg.set_ccid(
96022 p_code_combination_id => l_ccid
96023 , p_value_type_code => l_adr_value_type_code
96024 , p_transaction_coa_id => l_adr_transaction_coa_id
96025 , p_accounting_coa_id => l_adr_accounting_coa_id
96026 , p_adr_code => 'ISP'
96027 , p_adr_type_code => 'S'
96028 , p_component_type => l_component_type
96029 , p_component_code => l_component_code
96030 , p_component_type_code => l_component_type_code
96031 , p_component_appl_id => l_component_appl_id
96032 , p_amb_context_code => l_amb_context_code
96033 , p_side => 'NA'
96034 );
96035
96036
96037 --
96038 --
96039 END IF;
96040
96041 --
96042 -- Update the line information that should be overwritten
96043 --
96044 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96045 p_header_num => 1);
96046 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
96047
96048 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96049
96050 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
96051 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96052 END IF;
96053
96054 --
96055 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96056 --
96057 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96058 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
96059 ELSE
96060 ---------------------------------------------------------------------------------------------------
96061 -- 4262811a Switch Sign
96062 ---------------------------------------------------------------------------------------------------
96063 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
96064 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96065 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96066 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96067 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96068 -- 5132302
96069 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96070 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96071
96072 END IF;
96073
96074 -- 4955764
96075 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96076 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96077
96078
96079 XLA_AE_LINES_PKG.ValidateCurrentLine;
96080 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96081
96082 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96083 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96084 ,p_balance_type_code => l_balance_type_code);
96085
96086 END IF;
96087
96088 -----------------------------------------------------------------------------------------
96089 -- 4262811 Multiperiod Accounting
96090 -----------------------------------------------------------------------------------------
96091 -- No MPA option is assigned.
96092
96093
96094 END IF;
96095 END IF;
96096 --
96097
96098 --
96099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96100 trace
96101 (p_msg => 'END of AcctLineType_205'
96102 ,p_level => C_LEVEL_PROCEDURE
96106 EXCEPTION
96103 ,p_module => l_log_module);
96104 END IF;
96105 --
96107 WHEN xla_exceptions_pkg.application_exception THEN
96108 RAISE;
96109 WHEN OTHERS THEN
96110 xla_exceptions_pkg.raise_message
96111 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_205');
96112 END AcctLineType_205;
96113 --
96114
96115 ---------------------------------------
96116 --
96117 -- PRIVATE FUNCTION
96118 -- AcctLineType_206
96119 --
96120 ---------------------------------------
96121 PROCEDURE AcctLineType_206 (
96122 p_application_id IN NUMBER
96123 ,p_event_id IN NUMBER
96124 ,p_calculate_acctd_flag IN VARCHAR2
96125 ,p_calculate_g_l_flag IN VARCHAR2
96126 ,p_actual_flag IN OUT VARCHAR2
96127 ,p_balance_type_code OUT VARCHAR2
96128 ,p_gain_or_loss_ref OUT VARCHAR2
96129
96130 --Transaction Account
96131 , p_source_1 IN NUMBER
96132 --Journal Line Type
96133 , p_source_2 IN VARCHAR2
96134 --Entered Amount
96135 , p_source_3 IN NUMBER
96136 --First Distribution Identifier
96137 , p_source_5 IN NUMBER
96138 --Distribution Type
96139 , p_source_6 IN VARCHAR2
96140 --Currency Code
96141 , p_source_7 IN VARCHAR2
96142 --Currency Conversion Date
96143 , p_source_8 IN DATE
96144 --Currency Conversion Rate
96145 , p_source_9 IN NUMBER
96146 --Currency Conversion Type
96147 , p_source_10 IN VARCHAR2
96148 --Accounted Amount
96149 , p_source_11 IN NUMBER
96150 )
96151 IS
96152
96153 l_component_type VARCHAR2(80);
96154 l_component_code VARCHAR2(30);
96155 l_component_type_code VARCHAR2(1);
96156 l_component_appl_id INTEGER;
96157 l_amb_context_code VARCHAR2(30);
96158 l_entity_code VARCHAR2(30);
96159 l_event_class_code VARCHAR2(30);
96160 l_ae_header_id NUMBER;
96161 l_event_type_code VARCHAR2(30);
96162 l_line_definition_code VARCHAR2(30);
96163 l_line_definition_owner_code VARCHAR2(1);
96164 --
96165 -- adr variables
96166 l_segment VARCHAR2(30);
96167 l_ccid NUMBER;
96168 l_adr_transaction_coa_id NUMBER;
96169 l_adr_accounting_coa_id NUMBER;
96170 l_adr_flexfield_segment_code VARCHAR2(30);
96171 l_adr_flex_value_set_id NUMBER;
96172 l_adr_value_type_code VARCHAR2(30);
96173 l_adr_value_combination_id NUMBER;
96174 l_adr_value_segment_code VARCHAR2(30);
96175
96176 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
96177 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
96178 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
96179 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
96180
96181 -- 4262811 Variables ------------------------------------------------------------------------------------------
96182 l_entered_amt_idx NUMBER;
96183 l_accted_amt_idx NUMBER;
96184 l_acc_rev_flag VARCHAR2(1);
96185 l_accrual_line_num NUMBER;
96186 l_tmp_amt NUMBER;
96187 l_acc_rev_natural_side_code VARCHAR2(1);
96188
96189 l_num_entries NUMBER;
96190 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
96191 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
96192 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
96193 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
96194 l_recog_line_1 NUMBER;
96195 l_recog_line_2 NUMBER;
96196
96197 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
96198 l_bflow_applied_to_amt NUMBER; -- 5132302
96199 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
96200
96201 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96202
96203 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
96204 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
96205
96206 ---------------------------------------------------------------------------------------------------------------
96207
96208
96209 --
96210 -- bulk performance
96211 --
96212 l_balance_type_code VARCHAR2(1);
96213 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
96214 l_log_module VARCHAR2(240);
96215
96216 --
96217 -- Upgrade strategy
96218 --
96219 l_actual_upg_option VARCHAR2(1);
96220 l_enc_upg_option VARCHAR2(1);
96221
96222 --
96223 BEGIN
96224 --
96225 IF g_log_enabled THEN
96226 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_206';
96227 END IF;
96228 --
96229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96230
96231 trace
96232 (p_msg => 'BEGIN of AcctLineType_206'
96233 ,p_level => C_LEVEL_PROCEDURE
96234 ,p_module => l_log_module);
96235
96236 END IF;
96237 --
96238 l_component_type := 'AMB_JLT';
96239 l_component_code := 'ISP';
96240 l_component_type_code := 'S';
96241 l_component_appl_id := 555;
96242 l_amb_context_code := 'DEFAULT';
96246 l_line_definition_owner_code := 'S';
96243 l_entity_code := 'PURCHASING';
96244 l_event_class_code := 'RECEIVE';
96245 l_event_type_code := 'CORRECTION_RECEIVE';
96247 l_line_definition_code := 'CORRECTION_RECEIVE';
96248 --
96249 l_balance_type_code := 'A';
96250 l_segment := NULL;
96251 l_ccid := NULL;
96252 l_adr_transaction_coa_id := NULL;
96253 l_adr_accounting_coa_id := NULL;
96254 l_adr_flexfield_segment_code := NULL;
96255 l_adr_flex_value_set_id := NULL;
96256 l_adr_value_type_code := NULL;
96257 l_adr_value_combination_id := NULL;
96258 l_adr_value_segment_code := NULL;
96259
96260 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
96261 l_bflow_class_code := ''; -- 4219869 Business Flow
96262 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
96263 l_budgetary_control_flag := 'N';
96264
96265 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96266 l_bflow_applied_to_amt := NULL; -- 5132302
96267 l_entered_amt_idx := NULL; -- 4262811
96268 l_accted_amt_idx := NULL; -- 4262811
96269 l_acc_rev_flag := NULL; -- 4262811
96270 l_accrual_line_num := NULL; -- 4262811
96271 l_tmp_amt := NULL; -- 4262811
96272 --
96273
96274 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96275 l_balance_type_code <> 'B' THEN
96276 IF NVL(p_source_2,'
96277 ') = 'ISP'
96278 THEN
96279
96280 --
96281 XLA_AE_LINES_PKG.SetNewLine;
96282
96283 p_balance_type_code := l_balance_type_code;
96284 -- set the flag so later we will know whether the gain loss line needs to be created
96285
96286 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96287 p_actual_flag :='A';
96288 END IF;
96289
96290 --
96291 -- bulk performance
96292 --
96293 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96294 p_header_num => 0); -- 4262811
96295 --
96296 -- set accounting line options
96297 --
96298 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96299 p_natural_side_code => 'D'
96300 , p_gain_or_loss_flag => 'N'
96301 , p_gl_transfer_mode_code => 'D'
96302 , p_acct_entry_type_code => 'A'
96303 , p_switch_side_flag => 'Y'
96304 , p_merge_duplicate_code => 'W'
96305 );
96306 --
96307 l_acc_rev_natural_side_code := 'C'; -- 4262811
96308 --
96309 --
96310 -- set accounting line type info
96311 --
96312 xla_ae_lines_pkg.SetAcctLineType
96313 (p_component_type => l_component_type
96314 ,p_event_type_code => l_event_type_code
96315 ,p_line_definition_owner_code => l_line_definition_owner_code
96316 ,p_line_definition_code => l_line_definition_code
96317 ,p_accounting_line_code => l_component_code
96318 ,p_accounting_line_type_code => l_component_type_code
96319 ,p_accounting_line_appl_id => l_component_appl_id
96320 ,p_amb_context_code => l_amb_context_code
96321 ,p_entity_code => l_entity_code
96322 ,p_event_class_code => l_event_class_code);
96323 --
96324 -- set accounting class
96325 --
96326 xla_ae_lines_pkg.SetAcctClass(
96327 p_accounting_class_code => 'RECEIVING_INSPECTION'
96328 , p_ae_header_id => l_ae_header_id
96329 );
96330
96331 --
96332 -- set rounding class
96333 --
96334 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96335 'RECEIVING_INSPECTION';
96336
96337 --
96338 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96339 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96340 --
96341 -- bulk performance
96342 --
96343 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96344
96345 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96346 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96347
96348 -- 4955764
96349 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96350 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96351
96352 -- 4458381 Public Sector Enh
96353
96354 --
96355 -- set accounting attributes for the line type
96356 --
96357 l_entered_amt_idx := 3;
96358 l_accted_amt_idx := 8;
96359 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96360 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96361 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
96362 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96363 l_rec_acct_attrs.array_char_value(2) := p_source_6;
96364 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96365 l_rec_acct_attrs.array_num_value(3) := p_source_3;
96366 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96370 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96367 l_rec_acct_attrs.array_char_value(4) := p_source_7;
96368 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96369 l_rec_acct_attrs.array_date_value(5) := p_source_8;
96371 l_rec_acct_attrs.array_num_value(6) := p_source_9;
96372 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96373 l_rec_acct_attrs.array_char_value(7) := p_source_10;
96374 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96375 l_rec_acct_attrs.array_num_value(8) := p_source_11;
96376
96377 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96378 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96379
96380 ---------------------------------------------------------------------------------------------------------------
96381 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96382 ---------------------------------------------------------------------------------------------------------------
96383 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96384
96385 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96386 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96387
96388 IF xla_accounting_cache_pkg.GetValueChar
96389 (p_source_code => 'LEDGER_CATEGORY_CODE'
96390 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96391 AND l_bflow_method_code = 'PRIOR_ENTRY'
96392 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96393 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96394 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96395 )
96396 THEN
96397 xla_ae_lines_pkg.BflowUpgEntry
96398 (p_business_method_code => l_bflow_method_code
96399 ,p_business_class_code => l_bflow_class_code
96400 ,p_balance_type => l_balance_type_code);
96401 ELSE
96402 NULL;
96403 -- No business flow processing for business flow method of NONE.
96404 END IF;
96405
96406 --
96407 -- call analytical criteria
96408 --
96409
96410 --
96411 -- call description
96412 --
96413 -- No description or it is inherited.
96414 --
96415 -- call ADRs
96416 -- Bug 4922099
96417 --
96418 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96419 (NVL(l_actual_upg_option, 'N') = 'O') OR
96420 (NVL(l_enc_upg_option, 'N') = 'O')
96421 )
96422 THEN
96423 NULL;
96424 --
96425 --
96426
96427 l_ccid := AcctDerRule_25(
96428 p_application_id => p_application_id
96429 , p_ae_header_id => l_ae_header_id
96430 , p_source_1 => p_source_1
96431 , p_source_2 => p_source_2
96432 , x_transaction_coa_id => l_adr_transaction_coa_id
96433 , x_accounting_coa_id => l_adr_accounting_coa_id
96434 , x_value_type_code => l_adr_value_type_code
96435 , p_side => 'NA'
96436 );
96437
96438 xla_ae_lines_pkg.set_ccid(
96439 p_code_combination_id => l_ccid
96440 , p_value_type_code => l_adr_value_type_code
96441 , p_transaction_coa_id => l_adr_transaction_coa_id
96442 , p_accounting_coa_id => l_adr_accounting_coa_id
96443 , p_adr_code => 'ISP'
96444 , p_adr_type_code => 'S'
96445 , p_component_type => l_component_type
96446 , p_component_code => l_component_code
96447 , p_component_type_code => l_component_type_code
96448 , p_component_appl_id => l_component_appl_id
96449 , p_amb_context_code => l_amb_context_code
96450 , p_side => 'NA'
96451 );
96452
96453
96454 --
96455 --
96456 END IF;
96457 --
96458 -- Bug 4922099
96459 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96460 (NVL(l_enc_upg_option, 'N') = 'O')
96461 ) AND
96462 (l_bflow_method_code = 'PRIOR_ENTRY')
96463 )
96464 THEN
96465 IF
96466 --
96467 1 = 2
96468 --
96469 THEN
96470 xla_accounting_err_pkg.build_message
96471 (p_appli_s_name => 'XLA'
96472 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96473 ,p_token_1 => 'LINE_NUMBER'
96474 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
96475 ,p_token_2 => 'LINE_TYPE_NAME'
96476 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
96477 l_component_type
96478 ,l_component_code
96479 ,l_component_type_code
96480 ,l_component_appl_id
96481 ,l_amb_context_code
96485 ,p_token_3 => 'OWNER'
96482 ,l_entity_code
96483 ,l_event_class_code
96484 )
96486 ,p_value_3 => xla_lookups_pkg.get_meaning(
96487 p_lookup_type => 'XLA_OWNER_TYPE'
96488 ,p_lookup_code => l_component_type_code
96489 )
96490 ,p_token_4 => 'PRODUCT_NAME'
96491 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96492 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96493 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96494 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96495 ,p_ae_header_id => NULL
96496 );
96497
96498 IF (C_LEVEL_ERROR>= g_log_level) THEN
96499 trace
96500 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96501 ,p_level => C_LEVEL_ERROR
96502 ,p_module => l_log_module);
96503 END IF;
96504 END IF;
96505 END IF;
96506 --
96507 --
96508 ------------------------------------------------------------------------------------------------
96509 -- 4219869 Business Flow
96510 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96511 -- Prior Entry. Currently, the following code is always generated.
96512 ------------------------------------------------------------------------------------------------
96513 XLA_AE_LINES_PKG.ValidateCurrentLine;
96514
96515 ------------------------------------------------------------------------------------
96516 -- 4219869 Business Flow
96517 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96518 ------------------------------------------------------------------------------------
96519 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96520
96521 ----------------------------------------------------------------------------------
96522 -- 4219869 Business Flow
96523 -- Update journal entry status -- Need to generate this within IF <condition>
96524 ----------------------------------------------------------------------------------
96525 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96526 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96527 ,p_balance_type_code => l_balance_type_code
96528 );
96529
96530 -------------------------------------------------------------------------------------------
96531 -- 4262811 - Generate the Accrual Reversal lines
96532 -------------------------------------------------------------------------------------------
96533 BEGIN
96534 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96535 (g_array_event(p_event_id).array_value_num('header_index'));
96536 IF l_acc_rev_flag IS NULL THEN
96537 l_acc_rev_flag := 'N';
96538 END IF;
96539 EXCEPTION
96540 WHEN OTHERS THEN
96541 l_acc_rev_flag := 'N';
96542 END;
96543 --
96544 IF (l_acc_rev_flag = 'Y') THEN
96545
96546 -- 4645092 ------------------------------------------------------------------------------
96547 -- To allow MPA report to determine if it should generate report process
96548 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96549 ------------------------------------------------------------------------------------------
96550
96551 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96552 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96553 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
96554 -- call ADRs
96555 -- Bug 4922099
96556 --
96557 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96558 (NVL(l_actual_upg_option, 'N') = 'O') OR
96559 (NVL(l_enc_upg_option, 'N') = 'O')
96560 )
96561 THEN
96562 NULL;
96563 --
96564 --
96565
96566 l_ccid := AcctDerRule_25(
96567 p_application_id => p_application_id
96568 , p_ae_header_id => l_ae_header_id
96569 , p_source_1 => p_source_1
96570 , p_source_2 => p_source_2
96571 , x_transaction_coa_id => l_adr_transaction_coa_id
96572 , x_accounting_coa_id => l_adr_accounting_coa_id
96573 , x_value_type_code => l_adr_value_type_code
96574 , p_side => 'NA'
96575 );
96576
96577 xla_ae_lines_pkg.set_ccid(
96578 p_code_combination_id => l_ccid
96579 , p_value_type_code => l_adr_value_type_code
96580 , p_transaction_coa_id => l_adr_transaction_coa_id
96581 , p_accounting_coa_id => l_adr_accounting_coa_id
96582 , p_adr_code => 'ISP'
96586 , p_component_type_code => l_component_type_code
96583 , p_adr_type_code => 'S'
96584 , p_component_type => l_component_type
96585 , p_component_code => l_component_code
96587 , p_component_appl_id => l_component_appl_id
96588 , p_amb_context_code => l_amb_context_code
96589 , p_side => 'NA'
96590 );
96591
96592
96593 --
96594 --
96595 END IF;
96596
96597 --
96598 -- Update the line information that should be overwritten
96599 --
96600 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96601 p_header_num => 1);
96602 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
96603
96604 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96605
96606 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
96607 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96608 END IF;
96609
96610 --
96611 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96612 --
96613 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96614 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
96615 ELSE
96616 ---------------------------------------------------------------------------------------------------
96617 -- 4262811a Switch Sign
96618 ---------------------------------------------------------------------------------------------------
96619 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
96620 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96621 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96622 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96623 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96624 -- 5132302
96625 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96626 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96627
96628 END IF;
96629
96630 -- 4955764
96631 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96632 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96633
96634
96635 XLA_AE_LINES_PKG.ValidateCurrentLine;
96636 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96637
96638 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96639 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96640 ,p_balance_type_code => l_balance_type_code);
96641
96642 END IF;
96643
96644 -----------------------------------------------------------------------------------------
96645 -- 4262811 Multiperiod Accounting
96646 -----------------------------------------------------------------------------------------
96647 -- No MPA option is assigned.
96648
96649
96650 END IF;
96651 END IF;
96652 --
96653
96654 --
96655 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96656 trace
96657 (p_msg => 'END of AcctLineType_206'
96658 ,p_level => C_LEVEL_PROCEDURE
96659 ,p_module => l_log_module);
96660 END IF;
96661 --
96662 EXCEPTION
96663 WHEN xla_exceptions_pkg.application_exception THEN
96664 RAISE;
96665 WHEN OTHERS THEN
96666 xla_exceptions_pkg.raise_message
96667 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_206');
96668 END AcctLineType_206;
96669 --
96670
96671 ---------------------------------------
96672 --
96673 -- PRIVATE FUNCTION
96674 -- AcctLineType_207
96675 --
96676 ---------------------------------------
96677 PROCEDURE AcctLineType_207 (
96678 p_application_id IN NUMBER
96679 ,p_event_id IN NUMBER
96680 ,p_calculate_acctd_flag IN VARCHAR2
96681 ,p_calculate_g_l_flag IN VARCHAR2
96682 ,p_actual_flag IN OUT VARCHAR2
96683 ,p_balance_type_code OUT VARCHAR2
96684 ,p_gain_or_loss_ref OUT VARCHAR2
96685
96686 --Transaction Account
96687 , p_source_1 IN NUMBER
96688 --Journal Line Type
96689 , p_source_2 IN VARCHAR2
96690 --Entered Amount
96691 , p_source_3 IN NUMBER
96692 --First Distribution Identifier
96693 , p_source_5 IN NUMBER
96694 --Distribution Type
96695 , p_source_6 IN VARCHAR2
96696 --Currency Code
96697 , p_source_7 IN VARCHAR2
96698 --Currency Conversion Date
96699 , p_source_8 IN DATE
96700 --Currency Conversion Rate
96701 , p_source_9 IN NUMBER
96702 --Currency Conversion Type
96703 , p_source_10 IN VARCHAR2
96704 --Accounted Amount
96705 , p_source_11 IN NUMBER
96706 )
96707 IS
96708
96709 l_component_type VARCHAR2(80);
96713 l_amb_context_code VARCHAR2(30);
96710 l_component_code VARCHAR2(30);
96711 l_component_type_code VARCHAR2(1);
96712 l_component_appl_id INTEGER;
96714 l_entity_code VARCHAR2(30);
96715 l_event_class_code VARCHAR2(30);
96716 l_ae_header_id NUMBER;
96717 l_event_type_code VARCHAR2(30);
96718 l_line_definition_code VARCHAR2(30);
96719 l_line_definition_owner_code VARCHAR2(1);
96720 --
96721 -- adr variables
96722 l_segment VARCHAR2(30);
96723 l_ccid NUMBER;
96724 l_adr_transaction_coa_id NUMBER;
96725 l_adr_accounting_coa_id NUMBER;
96726 l_adr_flexfield_segment_code VARCHAR2(30);
96727 l_adr_flex_value_set_id NUMBER;
96728 l_adr_value_type_code VARCHAR2(30);
96729 l_adr_value_combination_id NUMBER;
96730 l_adr_value_segment_code VARCHAR2(30);
96731
96732 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
96733 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
96734 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
96735 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
96736
96737 -- 4262811 Variables ------------------------------------------------------------------------------------------
96738 l_entered_amt_idx NUMBER;
96739 l_accted_amt_idx NUMBER;
96740 l_acc_rev_flag VARCHAR2(1);
96741 l_accrual_line_num NUMBER;
96742 l_tmp_amt NUMBER;
96743 l_acc_rev_natural_side_code VARCHAR2(1);
96744
96745 l_num_entries NUMBER;
96746 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
96747 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
96748 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
96749 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
96750 l_recog_line_1 NUMBER;
96751 l_recog_line_2 NUMBER;
96752
96753 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
96754 l_bflow_applied_to_amt NUMBER; -- 5132302
96755 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
96756
96757 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96758
96759 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
96760 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
96761
96762 ---------------------------------------------------------------------------------------------------------------
96763
96764
96765 --
96766 -- bulk performance
96767 --
96768 l_balance_type_code VARCHAR2(1);
96769 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
96770 l_log_module VARCHAR2(240);
96771
96772 --
96773 -- Upgrade strategy
96774 --
96775 l_actual_upg_option VARCHAR2(1);
96776 l_enc_upg_option VARCHAR2(1);
96777
96778 --
96779 BEGIN
96780 --
96781 IF g_log_enabled THEN
96782 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_207';
96783 END IF;
96784 --
96785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96786
96787 trace
96788 (p_msg => 'BEGIN of AcctLineType_207'
96789 ,p_level => C_LEVEL_PROCEDURE
96790 ,p_module => l_log_module);
96791
96792 END IF;
96793 --
96794 l_component_type := 'AMB_JLT';
96795 l_component_code := 'ITR';
96796 l_component_type_code := 'S';
96797 l_component_appl_id := 555;
96798 l_amb_context_code := 'DEFAULT';
96799 l_entity_code := 'INVENTORY';
96800 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
96801 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT';
96802 l_line_definition_owner_code := 'S';
96803 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
96804 --
96805 l_balance_type_code := 'A';
96806 l_segment := NULL;
96807 l_ccid := NULL;
96808 l_adr_transaction_coa_id := NULL;
96809 l_adr_accounting_coa_id := NULL;
96810 l_adr_flexfield_segment_code := NULL;
96811 l_adr_flex_value_set_id := NULL;
96812 l_adr_value_type_code := NULL;
96813 l_adr_value_combination_id := NULL;
96814 l_adr_value_segment_code := NULL;
96815
96816 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
96817 l_bflow_class_code := ''; -- 4219869 Business Flow
96818 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
96819 l_budgetary_control_flag := 'N';
96820
96821 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96822 l_bflow_applied_to_amt := NULL; -- 5132302
96823 l_entered_amt_idx := NULL; -- 4262811
96824 l_accted_amt_idx := NULL; -- 4262811
96825 l_acc_rev_flag := NULL; -- 4262811
96826 l_accrual_line_num := NULL; -- 4262811
96827 l_tmp_amt := NULL; -- 4262811
96828 --
96829
96830 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96831 l_balance_type_code <> 'B' THEN
96832 IF NVL(p_source_2,'
96833 ') = 'ITR'
96834 THEN
96835
96836 --
96837 XLA_AE_LINES_PKG.SetNewLine;
96838
96839 p_balance_type_code := l_balance_type_code;
96843 p_actual_flag :='A';
96840 -- set the flag so later we will know whether the gain loss line needs to be created
96841
96842 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96844 END IF;
96845
96846 --
96847 -- bulk performance
96848 --
96849 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96850 p_header_num => 0); -- 4262811
96851 --
96852 -- set accounting line options
96853 --
96854 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96855 p_natural_side_code => 'D'
96856 , p_gain_or_loss_flag => 'N'
96857 , p_gl_transfer_mode_code => 'D'
96858 , p_acct_entry_type_code => 'A'
96859 , p_switch_side_flag => 'Y'
96860 , p_merge_duplicate_code => 'W'
96861 );
96862 --
96863 l_acc_rev_natural_side_code := 'C'; -- 4262811
96864 --
96865 --
96866 -- set accounting line type info
96867 --
96868 xla_ae_lines_pkg.SetAcctLineType
96869 (p_component_type => l_component_type
96870 ,p_event_type_code => l_event_type_code
96871 ,p_line_definition_owner_code => l_line_definition_owner_code
96872 ,p_line_definition_code => l_line_definition_code
96873 ,p_accounting_line_code => l_component_code
96874 ,p_accounting_line_type_code => l_component_type_code
96875 ,p_accounting_line_appl_id => l_component_appl_id
96876 ,p_amb_context_code => l_amb_context_code
96877 ,p_entity_code => l_entity_code
96878 ,p_event_class_code => l_event_class_code);
96879 --
96880 -- set accounting class
96881 --
96882 xla_ae_lines_pkg.SetAcctClass(
96883 p_accounting_class_code => 'INTRANSIT_VALUATION'
96884 , p_ae_header_id => l_ae_header_id
96885 );
96886
96887 --
96888 -- set rounding class
96889 --
96890 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96891 'INTRANSIT_VALUATION';
96892
96893 --
96894 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96895 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96896 --
96897 -- bulk performance
96898 --
96899 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96900
96901 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96902 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96903
96904 -- 4955764
96905 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96906 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96907
96908 -- 4458381 Public Sector Enh
96909
96910 --
96911 -- set accounting attributes for the line type
96912 --
96913 l_entered_amt_idx := 3;
96914 l_accted_amt_idx := 8;
96915 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96916 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96917 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
96918 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96919 l_rec_acct_attrs.array_char_value(2) := p_source_6;
96920 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96921 l_rec_acct_attrs.array_num_value(3) := p_source_3;
96922 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96923 l_rec_acct_attrs.array_char_value(4) := p_source_7;
96924 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96925 l_rec_acct_attrs.array_date_value(5) := p_source_8;
96926 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96927 l_rec_acct_attrs.array_num_value(6) := p_source_9;
96928 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96929 l_rec_acct_attrs.array_char_value(7) := p_source_10;
96930 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96931 l_rec_acct_attrs.array_num_value(8) := p_source_11;
96932
96933 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96934 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96935
96936 ---------------------------------------------------------------------------------------------------------------
96937 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96938 ---------------------------------------------------------------------------------------------------------------
96939 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96940
96941 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96942 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96943
96944 IF xla_accounting_cache_pkg.GetValueChar
96945 (p_source_code => 'LEDGER_CATEGORY_CODE'
96946 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96947 AND l_bflow_method_code = 'PRIOR_ENTRY'
96948 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96952 THEN
96949 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96950 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96951 )
96953 xla_ae_lines_pkg.BflowUpgEntry
96954 (p_business_method_code => l_bflow_method_code
96955 ,p_business_class_code => l_bflow_class_code
96956 ,p_balance_type => l_balance_type_code);
96957 ELSE
96958 NULL;
96959 -- No business flow processing for business flow method of NONE.
96960 END IF;
96961
96962 --
96963 -- call analytical criteria
96964 --
96965
96966 --
96967 -- call description
96968 --
96969 -- No description or it is inherited.
96970 --
96971 -- call ADRs
96972 -- Bug 4922099
96973 --
96974 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96975 (NVL(l_actual_upg_option, 'N') = 'O') OR
96976 (NVL(l_enc_upg_option, 'N') = 'O')
96977 )
96978 THEN
96979 NULL;
96980 --
96981 --
96982
96983 l_ccid := AcctDerRule_26(
96984 p_application_id => p_application_id
96985 , p_ae_header_id => l_ae_header_id
96986 , p_source_1 => p_source_1
96987 , p_source_2 => p_source_2
96988 , x_transaction_coa_id => l_adr_transaction_coa_id
96989 , x_accounting_coa_id => l_adr_accounting_coa_id
96990 , x_value_type_code => l_adr_value_type_code
96991 , p_side => 'NA'
96992 );
96993
96994 xla_ae_lines_pkg.set_ccid(
96995 p_code_combination_id => l_ccid
96996 , p_value_type_code => l_adr_value_type_code
96997 , p_transaction_coa_id => l_adr_transaction_coa_id
96998 , p_accounting_coa_id => l_adr_accounting_coa_id
96999 , p_adr_code => 'ITR'
97000 , p_adr_type_code => 'S'
97001 , p_component_type => l_component_type
97002 , p_component_code => l_component_code
97003 , p_component_type_code => l_component_type_code
97004 , p_component_appl_id => l_component_appl_id
97005 , p_amb_context_code => l_amb_context_code
97006 , p_side => 'NA'
97007 );
97008
97009
97010 --
97011 --
97012 END IF;
97013 --
97014 -- Bug 4922099
97015 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97016 (NVL(l_enc_upg_option, 'N') = 'O')
97017 ) AND
97018 (l_bflow_method_code = 'PRIOR_ENTRY')
97019 )
97020 THEN
97021 IF
97022 --
97023 1 = 2
97024 --
97025 THEN
97026 xla_accounting_err_pkg.build_message
97027 (p_appli_s_name => 'XLA'
97028 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97029 ,p_token_1 => 'LINE_NUMBER'
97030 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
97031 ,p_token_2 => 'LINE_TYPE_NAME'
97032 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
97033 l_component_type
97034 ,l_component_code
97035 ,l_component_type_code
97036 ,l_component_appl_id
97037 ,l_amb_context_code
97038 ,l_entity_code
97039 ,l_event_class_code
97040 )
97041 ,p_token_3 => 'OWNER'
97042 ,p_value_3 => xla_lookups_pkg.get_meaning(
97043 p_lookup_type => 'XLA_OWNER_TYPE'
97044 ,p_lookup_code => l_component_type_code
97045 )
97046 ,p_token_4 => 'PRODUCT_NAME'
97047 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97048 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97049 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97050 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97051 ,p_ae_header_id => NULL
97052 );
97053
97054 IF (C_LEVEL_ERROR>= g_log_level) THEN
97055 trace
97056 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97057 ,p_level => C_LEVEL_ERROR
97058 ,p_module => l_log_module);
97059 END IF;
97060 END IF;
97064 ------------------------------------------------------------------------------------------------
97061 END IF;
97062 --
97063 --
97065 -- 4219869 Business Flow
97066 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97067 -- Prior Entry. Currently, the following code is always generated.
97068 ------------------------------------------------------------------------------------------------
97069 XLA_AE_LINES_PKG.ValidateCurrentLine;
97070
97071 ------------------------------------------------------------------------------------
97072 -- 4219869 Business Flow
97073 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97074 ------------------------------------------------------------------------------------
97075 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97076
97077 ----------------------------------------------------------------------------------
97078 -- 4219869 Business Flow
97079 -- Update journal entry status -- Need to generate this within IF <condition>
97080 ----------------------------------------------------------------------------------
97081 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97082 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97083 ,p_balance_type_code => l_balance_type_code
97084 );
97085
97086 -------------------------------------------------------------------------------------------
97087 -- 4262811 - Generate the Accrual Reversal lines
97088 -------------------------------------------------------------------------------------------
97089 BEGIN
97090 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97091 (g_array_event(p_event_id).array_value_num('header_index'));
97092 IF l_acc_rev_flag IS NULL THEN
97093 l_acc_rev_flag := 'N';
97094 END IF;
97095 EXCEPTION
97096 WHEN OTHERS THEN
97097 l_acc_rev_flag := 'N';
97098 END;
97099 --
97100 IF (l_acc_rev_flag = 'Y') THEN
97101
97102 -- 4645092 ------------------------------------------------------------------------------
97103 -- To allow MPA report to determine if it should generate report process
97104 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97105 ------------------------------------------------------------------------------------------
97106
97107 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97108 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97109 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
97110 -- call ADRs
97111 -- Bug 4922099
97112 --
97113 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97114 (NVL(l_actual_upg_option, 'N') = 'O') OR
97115 (NVL(l_enc_upg_option, 'N') = 'O')
97116 )
97117 THEN
97118 NULL;
97119 --
97120 --
97121
97122 l_ccid := AcctDerRule_26(
97123 p_application_id => p_application_id
97124 , p_ae_header_id => l_ae_header_id
97125 , p_source_1 => p_source_1
97126 , p_source_2 => p_source_2
97127 , x_transaction_coa_id => l_adr_transaction_coa_id
97128 , x_accounting_coa_id => l_adr_accounting_coa_id
97129 , x_value_type_code => l_adr_value_type_code
97130 , p_side => 'NA'
97131 );
97132
97133 xla_ae_lines_pkg.set_ccid(
97134 p_code_combination_id => l_ccid
97135 , p_value_type_code => l_adr_value_type_code
97136 , p_transaction_coa_id => l_adr_transaction_coa_id
97137 , p_accounting_coa_id => l_adr_accounting_coa_id
97138 , p_adr_code => 'ITR'
97139 , p_adr_type_code => 'S'
97140 , p_component_type => l_component_type
97141 , p_component_code => l_component_code
97142 , p_component_type_code => l_component_type_code
97143 , p_component_appl_id => l_component_appl_id
97144 , p_amb_context_code => l_amb_context_code
97145 , p_side => 'NA'
97146 );
97147
97148
97149 --
97150 --
97151 END IF;
97152
97153 --
97154 -- Update the line information that should be overwritten
97155 --
97156 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97157 p_header_num => 1);
97158 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
97159
97160 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97161
97162 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
97163 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97164 END IF;
97165
97166 --
97167 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97168 --
97169 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97170 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
97171 ELSE
97175 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
97172 ---------------------------------------------------------------------------------------------------
97173 -- 4262811a Switch Sign
97174 ---------------------------------------------------------------------------------------------------
97176 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97177 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97178 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97179 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97180 -- 5132302
97181 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97182 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97183
97184 END IF;
97185
97186 -- 4955764
97187 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97188 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97189
97190
97191 XLA_AE_LINES_PKG.ValidateCurrentLine;
97192 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97193
97194 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97195 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97196 ,p_balance_type_code => l_balance_type_code);
97197
97198 END IF;
97199
97200 -----------------------------------------------------------------------------------------
97201 -- 4262811 Multiperiod Accounting
97202 -----------------------------------------------------------------------------------------
97203 -- No MPA option is assigned.
97204
97205
97206 END IF;
97207 END IF;
97208 --
97209
97210 --
97211 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97212 trace
97213 (p_msg => 'END of AcctLineType_207'
97214 ,p_level => C_LEVEL_PROCEDURE
97215 ,p_module => l_log_module);
97216 END IF;
97217 --
97218 EXCEPTION
97219 WHEN xla_exceptions_pkg.application_exception THEN
97220 RAISE;
97221 WHEN OTHERS THEN
97222 xla_exceptions_pkg.raise_message
97223 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_207');
97224 END AcctLineType_207;
97225 --
97226
97227 ---------------------------------------
97228 --
97229 -- PRIVATE FUNCTION
97230 -- AcctLineType_208
97231 --
97232 ---------------------------------------
97233 PROCEDURE AcctLineType_208 (
97234 p_application_id IN NUMBER
97235 ,p_event_id IN NUMBER
97236 ,p_calculate_acctd_flag IN VARCHAR2
97237 ,p_calculate_g_l_flag IN VARCHAR2
97238 ,p_actual_flag IN OUT VARCHAR2
97239 ,p_balance_type_code OUT VARCHAR2
97240 ,p_gain_or_loss_ref OUT VARCHAR2
97241
97242 --Transaction Account
97243 , p_source_1 IN NUMBER
97244 --Journal Line Type
97245 , p_source_2 IN VARCHAR2
97246 --Entered Amount
97247 , p_source_3 IN NUMBER
97248 --First Distribution Identifier
97249 , p_source_5 IN NUMBER
97250 --Distribution Type
97251 , p_source_6 IN VARCHAR2
97252 --Currency Code
97253 , p_source_7 IN VARCHAR2
97254 --Currency Conversion Date
97255 , p_source_8 IN DATE
97256 --Currency Conversion Rate
97257 , p_source_9 IN NUMBER
97258 --Currency Conversion Type
97259 , p_source_10 IN VARCHAR2
97260 --Accounted Amount
97261 , p_source_11 IN NUMBER
97262 )
97263 IS
97264
97265 l_component_type VARCHAR2(80);
97266 l_component_code VARCHAR2(30);
97267 l_component_type_code VARCHAR2(1);
97268 l_component_appl_id INTEGER;
97269 l_amb_context_code VARCHAR2(30);
97270 l_entity_code VARCHAR2(30);
97271 l_event_class_code VARCHAR2(30);
97272 l_ae_header_id NUMBER;
97273 l_event_type_code VARCHAR2(30);
97274 l_line_definition_code VARCHAR2(30);
97275 l_line_definition_owner_code VARCHAR2(1);
97276 --
97277 -- adr variables
97278 l_segment VARCHAR2(30);
97279 l_ccid NUMBER;
97280 l_adr_transaction_coa_id NUMBER;
97281 l_adr_accounting_coa_id NUMBER;
97282 l_adr_flexfield_segment_code VARCHAR2(30);
97283 l_adr_flex_value_set_id NUMBER;
97284 l_adr_value_type_code VARCHAR2(30);
97285 l_adr_value_combination_id NUMBER;
97286 l_adr_value_segment_code VARCHAR2(30);
97287
97288 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
97289 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
97290 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
97291 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
97292
97293 -- 4262811 Variables ------------------------------------------------------------------------------------------
97294 l_entered_amt_idx NUMBER;
97295 l_accted_amt_idx NUMBER;
97296 l_acc_rev_flag VARCHAR2(1);
97297 l_accrual_line_num NUMBER;
97298 l_tmp_amt NUMBER;
97299 l_acc_rev_natural_side_code VARCHAR2(1);
97300
97304 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
97301 l_num_entries NUMBER;
97302 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
97303 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
97305 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
97306 l_recog_line_1 NUMBER;
97307 l_recog_line_2 NUMBER;
97308
97309 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
97310 l_bflow_applied_to_amt NUMBER; -- 5132302
97311 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
97312
97313 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97314
97315 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
97316 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
97317
97318 ---------------------------------------------------------------------------------------------------------------
97319
97320
97321 --
97322 -- bulk performance
97323 --
97324 l_balance_type_code VARCHAR2(1);
97325 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
97326 l_log_module VARCHAR2(240);
97327
97328 --
97329 -- Upgrade strategy
97330 --
97331 l_actual_upg_option VARCHAR2(1);
97332 l_enc_upg_option VARCHAR2(1);
97333
97334 --
97335 BEGIN
97336 --
97337 IF g_log_enabled THEN
97338 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_208';
97339 END IF;
97340 --
97341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97342
97343 trace
97344 (p_msg => 'BEGIN of AcctLineType_208'
97345 ,p_level => C_LEVEL_PROCEDURE
97346 ,p_module => l_log_module);
97347
97348 END IF;
97349 --
97350 l_component_type := 'AMB_JLT';
97351 l_component_code := 'ITR';
97352 l_component_type_code := 'S';
97353 l_component_appl_id := 555;
97354 l_amb_context_code := 'DEFAULT';
97355 l_entity_code := 'INVENTORY';
97356 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
97357 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
97358 l_line_definition_owner_code := 'S';
97359 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
97360 --
97361 l_balance_type_code := 'A';
97362 l_segment := NULL;
97363 l_ccid := NULL;
97364 l_adr_transaction_coa_id := NULL;
97365 l_adr_accounting_coa_id := NULL;
97366 l_adr_flexfield_segment_code := NULL;
97367 l_adr_flex_value_set_id := NULL;
97368 l_adr_value_type_code := NULL;
97369 l_adr_value_combination_id := NULL;
97370 l_adr_value_segment_code := NULL;
97371
97372 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
97373 l_bflow_class_code := ''; -- 4219869 Business Flow
97374 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
97375 l_budgetary_control_flag := 'N';
97376
97377 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97378 l_bflow_applied_to_amt := NULL; -- 5132302
97379 l_entered_amt_idx := NULL; -- 4262811
97380 l_accted_amt_idx := NULL; -- 4262811
97381 l_acc_rev_flag := NULL; -- 4262811
97382 l_accrual_line_num := NULL; -- 4262811
97383 l_tmp_amt := NULL; -- 4262811
97384 --
97385
97386 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97387 l_balance_type_code <> 'B' THEN
97388 IF NVL(p_source_2,'
97389 ') = 'ITR'
97390 THEN
97391
97392 --
97393 XLA_AE_LINES_PKG.SetNewLine;
97394
97395 p_balance_type_code := l_balance_type_code;
97396 -- set the flag so later we will know whether the gain loss line needs to be created
97397
97398 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97399 p_actual_flag :='A';
97400 END IF;
97401
97402 --
97403 -- bulk performance
97404 --
97405 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97406 p_header_num => 0); -- 4262811
97407 --
97408 -- set accounting line options
97409 --
97410 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97411 p_natural_side_code => 'D'
97412 , p_gain_or_loss_flag => 'N'
97413 , p_gl_transfer_mode_code => 'D'
97414 , p_acct_entry_type_code => 'A'
97415 , p_switch_side_flag => 'Y'
97416 , p_merge_duplicate_code => 'W'
97417 );
97418 --
97419 l_acc_rev_natural_side_code := 'C'; -- 4262811
97420 --
97421 --
97422 -- set accounting line type info
97423 --
97424 xla_ae_lines_pkg.SetAcctLineType
97425 (p_component_type => l_component_type
97426 ,p_event_type_code => l_event_type_code
97427 ,p_line_definition_owner_code => l_line_definition_owner_code
97428 ,p_line_definition_code => l_line_definition_code
97429 ,p_accounting_line_code => l_component_code
97430 ,p_accounting_line_type_code => l_component_type_code
97431 ,p_accounting_line_appl_id => l_component_appl_id
97435 --
97432 ,p_amb_context_code => l_amb_context_code
97433 ,p_entity_code => l_entity_code
97434 ,p_event_class_code => l_event_class_code);
97436 -- set accounting class
97437 --
97438 xla_ae_lines_pkg.SetAcctClass(
97439 p_accounting_class_code => 'INTRANSIT_VALUATION'
97440 , p_ae_header_id => l_ae_header_id
97441 );
97442
97443 --
97444 -- set rounding class
97445 --
97446 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97447 'INTRANSIT_VALUATION';
97448
97449 --
97450 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97451 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97452 --
97453 -- bulk performance
97454 --
97455 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97456
97457 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97458 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97459
97460 -- 4955764
97461 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97462 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97463
97464 -- 4458381 Public Sector Enh
97465
97466 --
97467 -- set accounting attributes for the line type
97468 --
97469 l_entered_amt_idx := 3;
97470 l_accted_amt_idx := 8;
97471 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97472 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97473 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
97474 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97475 l_rec_acct_attrs.array_char_value(2) := p_source_6;
97476 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97477 l_rec_acct_attrs.array_num_value(3) := p_source_3;
97478 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97479 l_rec_acct_attrs.array_char_value(4) := p_source_7;
97480 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97481 l_rec_acct_attrs.array_date_value(5) := p_source_8;
97482 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97483 l_rec_acct_attrs.array_num_value(6) := p_source_9;
97484 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97485 l_rec_acct_attrs.array_char_value(7) := p_source_10;
97486 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97487 l_rec_acct_attrs.array_num_value(8) := p_source_11;
97488
97489 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97490 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97491
97492 ---------------------------------------------------------------------------------------------------------------
97493 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97494 ---------------------------------------------------------------------------------------------------------------
97495 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97496
97497 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97498 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97499
97500 IF xla_accounting_cache_pkg.GetValueChar
97501 (p_source_code => 'LEDGER_CATEGORY_CODE'
97502 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97503 AND l_bflow_method_code = 'PRIOR_ENTRY'
97504 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97505 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97506 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97507 )
97508 THEN
97509 xla_ae_lines_pkg.BflowUpgEntry
97510 (p_business_method_code => l_bflow_method_code
97511 ,p_business_class_code => l_bflow_class_code
97512 ,p_balance_type => l_balance_type_code);
97513 ELSE
97514 NULL;
97515 -- No business flow processing for business flow method of NONE.
97516 END IF;
97517
97518 --
97519 -- call analytical criteria
97520 --
97521
97522 --
97523 -- call description
97524 --
97525 -- No description or it is inherited.
97526 --
97527 -- call ADRs
97528 -- Bug 4922099
97529 --
97530 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97531 (NVL(l_actual_upg_option, 'N') = 'O') OR
97532 (NVL(l_enc_upg_option, 'N') = 'O')
97533 )
97534 THEN
97535 NULL;
97536 --
97537 --
97538
97539 l_ccid := AcctDerRule_26(
97540 p_application_id => p_application_id
97541 , p_ae_header_id => l_ae_header_id
97542 , p_source_1 => p_source_1
97543 , p_source_2 => p_source_2
97544 , x_transaction_coa_id => l_adr_transaction_coa_id
97545 , x_accounting_coa_id => l_adr_accounting_coa_id
97546 , x_value_type_code => l_adr_value_type_code
97547 , p_side => 'NA'
97548 );
97549
97553 , p_transaction_coa_id => l_adr_transaction_coa_id
97550 xla_ae_lines_pkg.set_ccid(
97551 p_code_combination_id => l_ccid
97552 , p_value_type_code => l_adr_value_type_code
97554 , p_accounting_coa_id => l_adr_accounting_coa_id
97555 , p_adr_code => 'ITR'
97556 , p_adr_type_code => 'S'
97557 , p_component_type => l_component_type
97558 , p_component_code => l_component_code
97559 , p_component_type_code => l_component_type_code
97560 , p_component_appl_id => l_component_appl_id
97561 , p_amb_context_code => l_amb_context_code
97562 , p_side => 'NA'
97563 );
97564
97565
97566 --
97567 --
97568 END IF;
97569 --
97570 -- Bug 4922099
97571 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97572 (NVL(l_enc_upg_option, 'N') = 'O')
97573 ) AND
97574 (l_bflow_method_code = 'PRIOR_ENTRY')
97575 )
97576 THEN
97577 IF
97578 --
97579 1 = 2
97580 --
97581 THEN
97582 xla_accounting_err_pkg.build_message
97583 (p_appli_s_name => 'XLA'
97584 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97585 ,p_token_1 => 'LINE_NUMBER'
97586 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
97587 ,p_token_2 => 'LINE_TYPE_NAME'
97588 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
97589 l_component_type
97590 ,l_component_code
97591 ,l_component_type_code
97592 ,l_component_appl_id
97593 ,l_amb_context_code
97594 ,l_entity_code
97595 ,l_event_class_code
97596 )
97597 ,p_token_3 => 'OWNER'
97598 ,p_value_3 => xla_lookups_pkg.get_meaning(
97599 p_lookup_type => 'XLA_OWNER_TYPE'
97600 ,p_lookup_code => l_component_type_code
97601 )
97602 ,p_token_4 => 'PRODUCT_NAME'
97603 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97604 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97605 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97606 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97607 ,p_ae_header_id => NULL
97608 );
97609
97610 IF (C_LEVEL_ERROR>= g_log_level) THEN
97611 trace
97612 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97613 ,p_level => C_LEVEL_ERROR
97614 ,p_module => l_log_module);
97615 END IF;
97616 END IF;
97617 END IF;
97618 --
97619 --
97620 ------------------------------------------------------------------------------------------------
97621 -- 4219869 Business Flow
97622 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97623 -- Prior Entry. Currently, the following code is always generated.
97624 ------------------------------------------------------------------------------------------------
97625 XLA_AE_LINES_PKG.ValidateCurrentLine;
97626
97627 ------------------------------------------------------------------------------------
97628 -- 4219869 Business Flow
97629 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97630 ------------------------------------------------------------------------------------
97631 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97632
97633 ----------------------------------------------------------------------------------
97634 -- 4219869 Business Flow
97635 -- Update journal entry status -- Need to generate this within IF <condition>
97636 ----------------------------------------------------------------------------------
97637 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97638 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97639 ,p_balance_type_code => l_balance_type_code
97640 );
97641
97642 -------------------------------------------------------------------------------------------
97643 -- 4262811 - Generate the Accrual Reversal lines
97647 (g_array_event(p_event_id).array_value_num('header_index'));
97644 -------------------------------------------------------------------------------------------
97645 BEGIN
97646 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97648 IF l_acc_rev_flag IS NULL THEN
97649 l_acc_rev_flag := 'N';
97650 END IF;
97651 EXCEPTION
97652 WHEN OTHERS THEN
97653 l_acc_rev_flag := 'N';
97654 END;
97655 --
97656 IF (l_acc_rev_flag = 'Y') THEN
97657
97658 -- 4645092 ------------------------------------------------------------------------------
97659 -- To allow MPA report to determine if it should generate report process
97660 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97661 ------------------------------------------------------------------------------------------
97662
97663 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97664 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97665 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
97666 -- call ADRs
97667 -- Bug 4922099
97668 --
97669 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97670 (NVL(l_actual_upg_option, 'N') = 'O') OR
97671 (NVL(l_enc_upg_option, 'N') = 'O')
97672 )
97673 THEN
97674 NULL;
97675 --
97676 --
97677
97678 l_ccid := AcctDerRule_26(
97679 p_application_id => p_application_id
97680 , p_ae_header_id => l_ae_header_id
97681 , p_source_1 => p_source_1
97682 , p_source_2 => p_source_2
97683 , x_transaction_coa_id => l_adr_transaction_coa_id
97684 , x_accounting_coa_id => l_adr_accounting_coa_id
97685 , x_value_type_code => l_adr_value_type_code
97686 , p_side => 'NA'
97687 );
97688
97689 xla_ae_lines_pkg.set_ccid(
97690 p_code_combination_id => l_ccid
97691 , p_value_type_code => l_adr_value_type_code
97692 , p_transaction_coa_id => l_adr_transaction_coa_id
97693 , p_accounting_coa_id => l_adr_accounting_coa_id
97694 , p_adr_code => 'ITR'
97695 , p_adr_type_code => 'S'
97696 , p_component_type => l_component_type
97697 , p_component_code => l_component_code
97698 , p_component_type_code => l_component_type_code
97699 , p_component_appl_id => l_component_appl_id
97700 , p_amb_context_code => l_amb_context_code
97701 , p_side => 'NA'
97702 );
97703
97704
97705 --
97706 --
97707 END IF;
97708
97709 --
97710 -- Update the line information that should be overwritten
97711 --
97712 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97713 p_header_num => 1);
97714 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
97715
97716 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97717
97718 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
97719 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97720 END IF;
97721
97722 --
97723 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97724 --
97725 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97726 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
97727 ELSE
97728 ---------------------------------------------------------------------------------------------------
97729 -- 4262811a Switch Sign
97730 ---------------------------------------------------------------------------------------------------
97731 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
97732 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97733 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97734 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97735 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97736 -- 5132302
97737 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97738 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97739
97740 END IF;
97741
97742 -- 4955764
97743 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97744 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97745
97746
97747 XLA_AE_LINES_PKG.ValidateCurrentLine;
97748 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97749
97750 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97751 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97752 ,p_balance_type_code => l_balance_type_code);
97753
97754 END IF;
97755
97759 -- No MPA option is assigned.
97756 -----------------------------------------------------------------------------------------
97757 -- 4262811 Multiperiod Accounting
97758 -----------------------------------------------------------------------------------------
97760
97761
97762 END IF;
97763 END IF;
97764 --
97765
97766 --
97767 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97768 trace
97769 (p_msg => 'END of AcctLineType_208'
97770 ,p_level => C_LEVEL_PROCEDURE
97771 ,p_module => l_log_module);
97772 END IF;
97773 --
97774 EXCEPTION
97775 WHEN xla_exceptions_pkg.application_exception THEN
97776 RAISE;
97777 WHEN OTHERS THEN
97778 xla_exceptions_pkg.raise_message
97779 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_208');
97780 END AcctLineType_208;
97781 --
97782
97783 ---------------------------------------
97784 --
97785 -- PRIVATE FUNCTION
97786 -- AcctLineType_209
97787 --
97788 ---------------------------------------
97789 PROCEDURE AcctLineType_209 (
97790 p_application_id IN NUMBER
97791 ,p_event_id IN NUMBER
97792 ,p_calculate_acctd_flag IN VARCHAR2
97793 ,p_calculate_g_l_flag IN VARCHAR2
97794 ,p_actual_flag IN OUT VARCHAR2
97795 ,p_balance_type_code OUT VARCHAR2
97796 ,p_gain_or_loss_ref OUT VARCHAR2
97797
97798 --Transaction Account
97799 , p_source_1 IN NUMBER
97800 --Journal Line Type
97801 , p_source_2 IN VARCHAR2
97802 --Entered Amount
97803 , p_source_3 IN NUMBER
97804 --First Distribution Identifier
97805 , p_source_5 IN NUMBER
97806 --Distribution Type
97807 , p_source_6 IN VARCHAR2
97808 --Currency Code
97809 , p_source_7 IN VARCHAR2
97810 --Currency Conversion Date
97811 , p_source_8 IN DATE
97812 --Currency Conversion Rate
97813 , p_source_9 IN NUMBER
97814 --Currency Conversion Type
97815 , p_source_10 IN VARCHAR2
97816 --Accounted Amount
97817 , p_source_11 IN NUMBER
97818 )
97819 IS
97820
97821 l_component_type VARCHAR2(80);
97822 l_component_code VARCHAR2(30);
97823 l_component_type_code VARCHAR2(1);
97824 l_component_appl_id INTEGER;
97825 l_amb_context_code VARCHAR2(30);
97826 l_entity_code VARCHAR2(30);
97827 l_event_class_code VARCHAR2(30);
97828 l_ae_header_id NUMBER;
97829 l_event_type_code VARCHAR2(30);
97830 l_line_definition_code VARCHAR2(30);
97831 l_line_definition_owner_code VARCHAR2(1);
97832 --
97833 -- adr variables
97834 l_segment VARCHAR2(30);
97835 l_ccid NUMBER;
97836 l_adr_transaction_coa_id NUMBER;
97837 l_adr_accounting_coa_id NUMBER;
97838 l_adr_flexfield_segment_code VARCHAR2(30);
97839 l_adr_flex_value_set_id NUMBER;
97840 l_adr_value_type_code VARCHAR2(30);
97841 l_adr_value_combination_id NUMBER;
97842 l_adr_value_segment_code VARCHAR2(30);
97843
97844 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
97845 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
97846 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
97847 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
97848
97849 -- 4262811 Variables ------------------------------------------------------------------------------------------
97850 l_entered_amt_idx NUMBER;
97851 l_accted_amt_idx NUMBER;
97852 l_acc_rev_flag VARCHAR2(1);
97853 l_accrual_line_num NUMBER;
97854 l_tmp_amt NUMBER;
97855 l_acc_rev_natural_side_code VARCHAR2(1);
97856
97857 l_num_entries NUMBER;
97858 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
97859 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
97860 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
97861 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
97862 l_recog_line_1 NUMBER;
97863 l_recog_line_2 NUMBER;
97864
97865 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
97866 l_bflow_applied_to_amt NUMBER; -- 5132302
97867 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
97868
97869 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97870
97871 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
97872 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
97873
97874 ---------------------------------------------------------------------------------------------------------------
97875
97876
97877 --
97878 -- bulk performance
97879 --
97880 l_balance_type_code VARCHAR2(1);
97881 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
97882 l_log_module VARCHAR2(240);
97883
97884 --
97885 -- Upgrade strategy
97886 --
97887 l_actual_upg_option VARCHAR2(1);
97888 l_enc_upg_option VARCHAR2(1);
97889
97890 --
97891 BEGIN
97892 --
97893 IF g_log_enabled THEN
97894 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_209';
97895 END IF;
97896 --
97900 (p_msg => 'BEGIN of AcctLineType_209'
97897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97898
97899 trace
97901 ,p_level => C_LEVEL_PROCEDURE
97902 ,p_module => l_log_module);
97903
97904 END IF;
97905 --
97906 l_component_type := 'AMB_JLT';
97907 l_component_code := 'ITR';
97908 l_component_type_code := 'S';
97909 l_component_appl_id := 555;
97910 l_amb_context_code := 'DEFAULT';
97911 l_entity_code := 'INVENTORY';
97912 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
97913 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_TP';
97914 l_line_definition_owner_code := 'S';
97915 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_TP';
97916 --
97917 l_balance_type_code := 'A';
97918 l_segment := NULL;
97919 l_ccid := NULL;
97920 l_adr_transaction_coa_id := NULL;
97921 l_adr_accounting_coa_id := NULL;
97922 l_adr_flexfield_segment_code := NULL;
97923 l_adr_flex_value_set_id := NULL;
97924 l_adr_value_type_code := NULL;
97925 l_adr_value_combination_id := NULL;
97926 l_adr_value_segment_code := NULL;
97927
97928 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
97929 l_bflow_class_code := ''; -- 4219869 Business Flow
97930 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
97931 l_budgetary_control_flag := 'N';
97932
97933 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97934 l_bflow_applied_to_amt := NULL; -- 5132302
97935 l_entered_amt_idx := NULL; -- 4262811
97936 l_accted_amt_idx := NULL; -- 4262811
97937 l_acc_rev_flag := NULL; -- 4262811
97938 l_accrual_line_num := NULL; -- 4262811
97939 l_tmp_amt := NULL; -- 4262811
97940 --
97941
97942 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97943 l_balance_type_code <> 'B' THEN
97944 IF NVL(p_source_2,'
97945 ') = 'ITR'
97946 THEN
97947
97948 --
97949 XLA_AE_LINES_PKG.SetNewLine;
97950
97951 p_balance_type_code := l_balance_type_code;
97952 -- set the flag so later we will know whether the gain loss line needs to be created
97953
97954 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97955 p_actual_flag :='A';
97956 END IF;
97957
97958 --
97959 -- bulk performance
97960 --
97961 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97962 p_header_num => 0); -- 4262811
97963 --
97964 -- set accounting line options
97965 --
97966 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97967 p_natural_side_code => 'D'
97968 , p_gain_or_loss_flag => 'N'
97969 , p_gl_transfer_mode_code => 'D'
97970 , p_acct_entry_type_code => 'A'
97971 , p_switch_side_flag => 'Y'
97972 , p_merge_duplicate_code => 'W'
97973 );
97974 --
97975 l_acc_rev_natural_side_code := 'C'; -- 4262811
97976 --
97977 --
97978 -- set accounting line type info
97979 --
97980 xla_ae_lines_pkg.SetAcctLineType
97981 (p_component_type => l_component_type
97982 ,p_event_type_code => l_event_type_code
97983 ,p_line_definition_owner_code => l_line_definition_owner_code
97984 ,p_line_definition_code => l_line_definition_code
97985 ,p_accounting_line_code => l_component_code
97986 ,p_accounting_line_type_code => l_component_type_code
97987 ,p_accounting_line_appl_id => l_component_appl_id
97988 ,p_amb_context_code => l_amb_context_code
97989 ,p_entity_code => l_entity_code
97990 ,p_event_class_code => l_event_class_code);
97991 --
97992 -- set accounting class
97993 --
97994 xla_ae_lines_pkg.SetAcctClass(
97995 p_accounting_class_code => 'INTRANSIT_VALUATION'
97996 , p_ae_header_id => l_ae_header_id
97997 );
97998
97999 --
98000 -- set rounding class
98001 --
98002 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98003 'INTRANSIT_VALUATION';
98004
98005 --
98006 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98007 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98008 --
98009 -- bulk performance
98010 --
98011 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98012
98013 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98014 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98015
98016 -- 4955764
98017 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98018 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98019
98020 -- 4458381 Public Sector Enh
98021
98022 --
98023 -- set accounting attributes for the line type
98024 --
98025 l_entered_amt_idx := 3;
98026 l_accted_amt_idx := 8;
98030 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98027 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98028 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98029 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
98031 l_rec_acct_attrs.array_char_value(2) := p_source_6;
98032 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98033 l_rec_acct_attrs.array_num_value(3) := p_source_3;
98034 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98035 l_rec_acct_attrs.array_char_value(4) := p_source_7;
98036 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98037 l_rec_acct_attrs.array_date_value(5) := p_source_8;
98038 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98039 l_rec_acct_attrs.array_num_value(6) := p_source_9;
98040 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98041 l_rec_acct_attrs.array_char_value(7) := p_source_10;
98042 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98043 l_rec_acct_attrs.array_num_value(8) := p_source_11;
98044
98045 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98046 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98047
98048 ---------------------------------------------------------------------------------------------------------------
98049 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98050 ---------------------------------------------------------------------------------------------------------------
98051 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98052
98053 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98054 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98055
98056 IF xla_accounting_cache_pkg.GetValueChar
98057 (p_source_code => 'LEDGER_CATEGORY_CODE'
98058 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98059 AND l_bflow_method_code = 'PRIOR_ENTRY'
98060 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98061 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98062 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98063 )
98064 THEN
98065 xla_ae_lines_pkg.BflowUpgEntry
98066 (p_business_method_code => l_bflow_method_code
98067 ,p_business_class_code => l_bflow_class_code
98068 ,p_balance_type => l_balance_type_code);
98069 ELSE
98070 NULL;
98071 -- No business flow processing for business flow method of NONE.
98072 END IF;
98073
98074 --
98075 -- call analytical criteria
98076 --
98077
98078 --
98079 -- call description
98080 --
98081 -- No description or it is inherited.
98082 --
98083 -- call ADRs
98084 -- Bug 4922099
98085 --
98086 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98087 (NVL(l_actual_upg_option, 'N') = 'O') OR
98088 (NVL(l_enc_upg_option, 'N') = 'O')
98089 )
98090 THEN
98091 NULL;
98092 --
98093 --
98094
98095 l_ccid := AcctDerRule_26(
98096 p_application_id => p_application_id
98097 , p_ae_header_id => l_ae_header_id
98098 , p_source_1 => p_source_1
98099 , p_source_2 => p_source_2
98100 , x_transaction_coa_id => l_adr_transaction_coa_id
98101 , x_accounting_coa_id => l_adr_accounting_coa_id
98102 , x_value_type_code => l_adr_value_type_code
98103 , p_side => 'NA'
98104 );
98105
98106 xla_ae_lines_pkg.set_ccid(
98107 p_code_combination_id => l_ccid
98108 , p_value_type_code => l_adr_value_type_code
98109 , p_transaction_coa_id => l_adr_transaction_coa_id
98110 , p_accounting_coa_id => l_adr_accounting_coa_id
98111 , p_adr_code => 'ITR'
98112 , p_adr_type_code => 'S'
98113 , p_component_type => l_component_type
98114 , p_component_code => l_component_code
98115 , p_component_type_code => l_component_type_code
98116 , p_component_appl_id => l_component_appl_id
98117 , p_amb_context_code => l_amb_context_code
98118 , p_side => 'NA'
98119 );
98120
98121
98122 --
98123 --
98124 END IF;
98125 --
98126 -- Bug 4922099
98127 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98128 (NVL(l_enc_upg_option, 'N') = 'O')
98129 ) AND
98130 (l_bflow_method_code = 'PRIOR_ENTRY')
98131 )
98132 THEN
98133 IF
98134 --
98135 1 = 2
98136 --
98137 THEN
98138 xla_accounting_err_pkg.build_message
98139 (p_appli_s_name => 'XLA'
98140 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98141 ,p_token_1 => 'LINE_NUMBER'
98142 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
98146 ,l_component_code
98143 ,p_token_2 => 'LINE_TYPE_NAME'
98144 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
98145 l_component_type
98147 ,l_component_type_code
98148 ,l_component_appl_id
98149 ,l_amb_context_code
98150 ,l_entity_code
98151 ,l_event_class_code
98152 )
98153 ,p_token_3 => 'OWNER'
98154 ,p_value_3 => xla_lookups_pkg.get_meaning(
98155 p_lookup_type => 'XLA_OWNER_TYPE'
98156 ,p_lookup_code => l_component_type_code
98157 )
98158 ,p_token_4 => 'PRODUCT_NAME'
98159 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98160 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98161 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98162 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98163 ,p_ae_header_id => NULL
98164 );
98165
98166 IF (C_LEVEL_ERROR>= g_log_level) THEN
98167 trace
98168 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98169 ,p_level => C_LEVEL_ERROR
98170 ,p_module => l_log_module);
98171 END IF;
98172 END IF;
98173 END IF;
98174 --
98175 --
98176 ------------------------------------------------------------------------------------------------
98177 -- 4219869 Business Flow
98178 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98179 -- Prior Entry. Currently, the following code is always generated.
98180 ------------------------------------------------------------------------------------------------
98181 XLA_AE_LINES_PKG.ValidateCurrentLine;
98182
98183 ------------------------------------------------------------------------------------
98184 -- 4219869 Business Flow
98185 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98186 ------------------------------------------------------------------------------------
98187 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98188
98189 ----------------------------------------------------------------------------------
98190 -- 4219869 Business Flow
98191 -- Update journal entry status -- Need to generate this within IF <condition>
98192 ----------------------------------------------------------------------------------
98193 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98194 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98195 ,p_balance_type_code => l_balance_type_code
98196 );
98197
98198 -------------------------------------------------------------------------------------------
98199 -- 4262811 - Generate the Accrual Reversal lines
98200 -------------------------------------------------------------------------------------------
98201 BEGIN
98202 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98203 (g_array_event(p_event_id).array_value_num('header_index'));
98204 IF l_acc_rev_flag IS NULL THEN
98205 l_acc_rev_flag := 'N';
98206 END IF;
98207 EXCEPTION
98208 WHEN OTHERS THEN
98209 l_acc_rev_flag := 'N';
98210 END;
98211 --
98212 IF (l_acc_rev_flag = 'Y') THEN
98213
98214 -- 4645092 ------------------------------------------------------------------------------
98215 -- To allow MPA report to determine if it should generate report process
98216 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98217 ------------------------------------------------------------------------------------------
98218
98219 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98220 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98221 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
98222 -- call ADRs
98223 -- Bug 4922099
98224 --
98225 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98226 (NVL(l_actual_upg_option, 'N') = 'O') OR
98227 (NVL(l_enc_upg_option, 'N') = 'O')
98228 )
98229 THEN
98230 NULL;
98231 --
98232 --
98233
98234 l_ccid := AcctDerRule_26(
98235 p_application_id => p_application_id
98236 , p_ae_header_id => l_ae_header_id
98240 , x_accounting_coa_id => l_adr_accounting_coa_id
98237 , p_source_1 => p_source_1
98238 , p_source_2 => p_source_2
98239 , x_transaction_coa_id => l_adr_transaction_coa_id
98241 , x_value_type_code => l_adr_value_type_code
98242 , p_side => 'NA'
98243 );
98244
98245 xla_ae_lines_pkg.set_ccid(
98246 p_code_combination_id => l_ccid
98247 , p_value_type_code => l_adr_value_type_code
98248 , p_transaction_coa_id => l_adr_transaction_coa_id
98249 , p_accounting_coa_id => l_adr_accounting_coa_id
98250 , p_adr_code => 'ITR'
98251 , p_adr_type_code => 'S'
98252 , p_component_type => l_component_type
98253 , p_component_code => l_component_code
98254 , p_component_type_code => l_component_type_code
98255 , p_component_appl_id => l_component_appl_id
98256 , p_amb_context_code => l_amb_context_code
98257 , p_side => 'NA'
98258 );
98259
98260
98261 --
98262 --
98263 END IF;
98264
98265 --
98266 -- Update the line information that should be overwritten
98267 --
98268 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98269 p_header_num => 1);
98270 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
98271
98272 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98273
98274 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
98275 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98276 END IF;
98277
98278 --
98279 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98280 --
98281 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98282 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
98283 ELSE
98284 ---------------------------------------------------------------------------------------------------
98285 -- 4262811a Switch Sign
98286 ---------------------------------------------------------------------------------------------------
98287 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
98288 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98289 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98290 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98291 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98292 -- 5132302
98293 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98294 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98295
98296 END IF;
98297
98298 -- 4955764
98299 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98300 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98301
98302
98303 XLA_AE_LINES_PKG.ValidateCurrentLine;
98304 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98305
98306 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98307 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98308 ,p_balance_type_code => l_balance_type_code);
98309
98310 END IF;
98311
98312 -----------------------------------------------------------------------------------------
98313 -- 4262811 Multiperiod Accounting
98314 -----------------------------------------------------------------------------------------
98315 -- No MPA option is assigned.
98316
98317
98318 END IF;
98319 END IF;
98320 --
98321
98322 --
98323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98324 trace
98325 (p_msg => 'END of AcctLineType_209'
98326 ,p_level => C_LEVEL_PROCEDURE
98327 ,p_module => l_log_module);
98328 END IF;
98329 --
98330 EXCEPTION
98331 WHEN xla_exceptions_pkg.application_exception THEN
98332 RAISE;
98333 WHEN OTHERS THEN
98334 xla_exceptions_pkg.raise_message
98335 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_209');
98336 END AcctLineType_209;
98337 --
98338
98339 ---------------------------------------
98340 --
98341 -- PRIVATE FUNCTION
98342 -- AcctLineType_210
98343 --
98344 ---------------------------------------
98345 PROCEDURE AcctLineType_210 (
98346 p_application_id IN NUMBER
98347 ,p_event_id IN NUMBER
98348 ,p_calculate_acctd_flag IN VARCHAR2
98349 ,p_calculate_g_l_flag IN VARCHAR2
98350 ,p_actual_flag IN OUT VARCHAR2
98351 ,p_balance_type_code OUT VARCHAR2
98352 ,p_gain_or_loss_ref OUT VARCHAR2
98353
98354 --Transaction Account
98355 , p_source_1 IN NUMBER
98356 --Journal Line Type
98357 , p_source_2 IN VARCHAR2
98358 --Entered Amount
98359 , p_source_3 IN NUMBER
98360 --First Distribution Identifier
98364 --Currency Code
98361 , p_source_5 IN NUMBER
98362 --Distribution Type
98363 , p_source_6 IN VARCHAR2
98365 , p_source_7 IN VARCHAR2
98366 --Currency Conversion Date
98367 , p_source_8 IN DATE
98368 --Currency Conversion Rate
98369 , p_source_9 IN NUMBER
98370 --Currency Conversion Type
98371 , p_source_10 IN VARCHAR2
98372 --Accounted Amount
98373 , p_source_11 IN NUMBER
98374 )
98375 IS
98376
98377 l_component_type VARCHAR2(80);
98378 l_component_code VARCHAR2(30);
98379 l_component_type_code VARCHAR2(1);
98380 l_component_appl_id INTEGER;
98381 l_amb_context_code VARCHAR2(30);
98382 l_entity_code VARCHAR2(30);
98383 l_event_class_code VARCHAR2(30);
98384 l_ae_header_id NUMBER;
98385 l_event_type_code VARCHAR2(30);
98386 l_line_definition_code VARCHAR2(30);
98387 l_line_definition_owner_code VARCHAR2(1);
98388 --
98389 -- adr variables
98390 l_segment VARCHAR2(30);
98391 l_ccid NUMBER;
98392 l_adr_transaction_coa_id NUMBER;
98393 l_adr_accounting_coa_id NUMBER;
98394 l_adr_flexfield_segment_code VARCHAR2(30);
98395 l_adr_flex_value_set_id NUMBER;
98396 l_adr_value_type_code VARCHAR2(30);
98397 l_adr_value_combination_id NUMBER;
98398 l_adr_value_segment_code VARCHAR2(30);
98399
98400 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
98401 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
98402 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
98403 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
98404
98405 -- 4262811 Variables ------------------------------------------------------------------------------------------
98406 l_entered_amt_idx NUMBER;
98407 l_accted_amt_idx NUMBER;
98408 l_acc_rev_flag VARCHAR2(1);
98409 l_accrual_line_num NUMBER;
98410 l_tmp_amt NUMBER;
98411 l_acc_rev_natural_side_code VARCHAR2(1);
98412
98413 l_num_entries NUMBER;
98414 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
98415 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
98416 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
98417 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
98418 l_recog_line_1 NUMBER;
98419 l_recog_line_2 NUMBER;
98420
98421 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
98422 l_bflow_applied_to_amt NUMBER; -- 5132302
98423 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
98424
98425 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98426
98427 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
98428 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
98429
98430 ---------------------------------------------------------------------------------------------------------------
98431
98432
98433 --
98434 -- bulk performance
98435 --
98436 l_balance_type_code VARCHAR2(1);
98437 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
98438 l_log_module VARCHAR2(240);
98439
98440 --
98441 -- Upgrade strategy
98442 --
98443 l_actual_upg_option VARCHAR2(1);
98444 l_enc_upg_option VARCHAR2(1);
98445
98446 --
98447 BEGIN
98448 --
98449 IF g_log_enabled THEN
98450 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_210';
98451 END IF;
98452 --
98453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98454
98455 trace
98456 (p_msg => 'BEGIN of AcctLineType_210'
98457 ,p_level => C_LEVEL_PROCEDURE
98458 ,p_module => l_log_module);
98459
98460 END IF;
98461 --
98462 l_component_type := 'AMB_JLT';
98463 l_component_code := 'ITR';
98464 l_component_type_code := 'S';
98465 l_component_appl_id := 555;
98466 l_amb_context_code := 'DEFAULT';
98467 l_entity_code := 'INVENTORY';
98468 l_event_class_code := 'FOB_RCPT_SENDER_SHIP';
98469 l_event_type_code := 'FOB_RCPT_SENDER_SHIP';
98470 l_line_definition_owner_code := 'S';
98471 l_line_definition_code := 'FOB_RCPT_SENDER_SHIP';
98472 --
98473 l_balance_type_code := 'A';
98474 l_segment := NULL;
98475 l_ccid := NULL;
98476 l_adr_transaction_coa_id := NULL;
98477 l_adr_accounting_coa_id := NULL;
98478 l_adr_flexfield_segment_code := NULL;
98479 l_adr_flex_value_set_id := NULL;
98480 l_adr_value_type_code := NULL;
98481 l_adr_value_combination_id := NULL;
98482 l_adr_value_segment_code := NULL;
98483
98484 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
98485 l_bflow_class_code := ''; -- 4219869 Business Flow
98486 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
98487 l_budgetary_control_flag := 'N';
98488
98489 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98490 l_bflow_applied_to_amt := NULL; -- 5132302
98494 l_accrual_line_num := NULL; -- 4262811
98491 l_entered_amt_idx := NULL; -- 4262811
98492 l_accted_amt_idx := NULL; -- 4262811
98493 l_acc_rev_flag := NULL; -- 4262811
98495 l_tmp_amt := NULL; -- 4262811
98496 --
98497
98498 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98499 l_balance_type_code <> 'B' THEN
98500 IF NVL(p_source_2,'
98501 ') = 'ITR'
98502 THEN
98503
98504 --
98505 XLA_AE_LINES_PKG.SetNewLine;
98506
98507 p_balance_type_code := l_balance_type_code;
98508 -- set the flag so later we will know whether the gain loss line needs to be created
98509
98510 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98511 p_actual_flag :='A';
98512 END IF;
98513
98514 --
98515 -- bulk performance
98516 --
98517 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98518 p_header_num => 0); -- 4262811
98519 --
98520 -- set accounting line options
98521 --
98522 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98523 p_natural_side_code => 'D'
98524 , p_gain_or_loss_flag => 'N'
98525 , p_gl_transfer_mode_code => 'D'
98526 , p_acct_entry_type_code => 'A'
98527 , p_switch_side_flag => 'Y'
98528 , p_merge_duplicate_code => 'W'
98529 );
98530 --
98531 l_acc_rev_natural_side_code := 'C'; -- 4262811
98532 --
98533 --
98534 -- set accounting line type info
98535 --
98536 xla_ae_lines_pkg.SetAcctLineType
98537 (p_component_type => l_component_type
98538 ,p_event_type_code => l_event_type_code
98539 ,p_line_definition_owner_code => l_line_definition_owner_code
98540 ,p_line_definition_code => l_line_definition_code
98541 ,p_accounting_line_code => l_component_code
98542 ,p_accounting_line_type_code => l_component_type_code
98543 ,p_accounting_line_appl_id => l_component_appl_id
98544 ,p_amb_context_code => l_amb_context_code
98545 ,p_entity_code => l_entity_code
98546 ,p_event_class_code => l_event_class_code);
98547 --
98548 -- set accounting class
98549 --
98550 xla_ae_lines_pkg.SetAcctClass(
98551 p_accounting_class_code => 'INTRANSIT_VALUATION'
98552 , p_ae_header_id => l_ae_header_id
98553 );
98554
98555 --
98556 -- set rounding class
98557 --
98558 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98559 'INTRANSIT_VALUATION';
98560
98561 --
98562 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98563 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98564 --
98565 -- bulk performance
98566 --
98567 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98568
98569 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98570 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98571
98572 -- 4955764
98573 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98574 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98575
98576 -- 4458381 Public Sector Enh
98577
98578 --
98579 -- set accounting attributes for the line type
98580 --
98581 l_entered_amt_idx := 3;
98582 l_accted_amt_idx := 8;
98583 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98584 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98585 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
98586 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98587 l_rec_acct_attrs.array_char_value(2) := p_source_6;
98588 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98589 l_rec_acct_attrs.array_num_value(3) := p_source_3;
98590 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98591 l_rec_acct_attrs.array_char_value(4) := p_source_7;
98592 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98593 l_rec_acct_attrs.array_date_value(5) := p_source_8;
98594 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98595 l_rec_acct_attrs.array_num_value(6) := p_source_9;
98596 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98597 l_rec_acct_attrs.array_char_value(7) := p_source_10;
98598 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98599 l_rec_acct_attrs.array_num_value(8) := p_source_11;
98600
98601 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98602 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98603
98604 ---------------------------------------------------------------------------------------------------------------
98605 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98609 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98606 ---------------------------------------------------------------------------------------------------------------
98607 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98608
98610 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98611
98612 IF xla_accounting_cache_pkg.GetValueChar
98613 (p_source_code => 'LEDGER_CATEGORY_CODE'
98614 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98615 AND l_bflow_method_code = 'PRIOR_ENTRY'
98616 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98617 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98618 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98619 )
98620 THEN
98621 xla_ae_lines_pkg.BflowUpgEntry
98622 (p_business_method_code => l_bflow_method_code
98623 ,p_business_class_code => l_bflow_class_code
98624 ,p_balance_type => l_balance_type_code);
98625 ELSE
98626 NULL;
98627 -- No business flow processing for business flow method of NONE.
98628 END IF;
98629
98630 --
98631 -- call analytical criteria
98632 --
98633
98634 --
98635 -- call description
98636 --
98637 -- No description or it is inherited.
98638 --
98639 -- call ADRs
98640 -- Bug 4922099
98641 --
98642 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98643 (NVL(l_actual_upg_option, 'N') = 'O') OR
98644 (NVL(l_enc_upg_option, 'N') = 'O')
98645 )
98646 THEN
98647 NULL;
98648 --
98649 --
98650
98651 l_ccid := AcctDerRule_26(
98652 p_application_id => p_application_id
98653 , p_ae_header_id => l_ae_header_id
98654 , p_source_1 => p_source_1
98655 , p_source_2 => p_source_2
98656 , x_transaction_coa_id => l_adr_transaction_coa_id
98657 , x_accounting_coa_id => l_adr_accounting_coa_id
98658 , x_value_type_code => l_adr_value_type_code
98659 , p_side => 'NA'
98660 );
98661
98662 xla_ae_lines_pkg.set_ccid(
98663 p_code_combination_id => l_ccid
98664 , p_value_type_code => l_adr_value_type_code
98665 , p_transaction_coa_id => l_adr_transaction_coa_id
98666 , p_accounting_coa_id => l_adr_accounting_coa_id
98667 , p_adr_code => 'ITR'
98668 , p_adr_type_code => 'S'
98669 , p_component_type => l_component_type
98670 , p_component_code => l_component_code
98671 , p_component_type_code => l_component_type_code
98672 , p_component_appl_id => l_component_appl_id
98673 , p_amb_context_code => l_amb_context_code
98674 , p_side => 'NA'
98675 );
98676
98677
98678 --
98679 --
98680 END IF;
98681 --
98682 -- Bug 4922099
98683 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98684 (NVL(l_enc_upg_option, 'N') = 'O')
98685 ) AND
98686 (l_bflow_method_code = 'PRIOR_ENTRY')
98687 )
98688 THEN
98689 IF
98690 --
98691 1 = 2
98692 --
98693 THEN
98694 xla_accounting_err_pkg.build_message
98695 (p_appli_s_name => 'XLA'
98696 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98697 ,p_token_1 => 'LINE_NUMBER'
98698 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
98699 ,p_token_2 => 'LINE_TYPE_NAME'
98700 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
98701 l_component_type
98702 ,l_component_code
98703 ,l_component_type_code
98704 ,l_component_appl_id
98705 ,l_amb_context_code
98706 ,l_entity_code
98707 ,l_event_class_code
98708 )
98709 ,p_token_3 => 'OWNER'
98710 ,p_value_3 => xla_lookups_pkg.get_meaning(
98711 p_lookup_type => 'XLA_OWNER_TYPE'
98712 ,p_lookup_code => l_component_type_code
98713 )
98714 ,p_token_4 => 'PRODUCT_NAME'
98718 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98715 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98716 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98717 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98719 ,p_ae_header_id => NULL
98720 );
98721
98722 IF (C_LEVEL_ERROR>= g_log_level) THEN
98723 trace
98724 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98725 ,p_level => C_LEVEL_ERROR
98726 ,p_module => l_log_module);
98727 END IF;
98728 END IF;
98729 END IF;
98730 --
98731 --
98732 ------------------------------------------------------------------------------------------------
98733 -- 4219869 Business Flow
98734 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98735 -- Prior Entry. Currently, the following code is always generated.
98736 ------------------------------------------------------------------------------------------------
98737 XLA_AE_LINES_PKG.ValidateCurrentLine;
98738
98739 ------------------------------------------------------------------------------------
98740 -- 4219869 Business Flow
98741 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98742 ------------------------------------------------------------------------------------
98743 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98744
98745 ----------------------------------------------------------------------------------
98746 -- 4219869 Business Flow
98747 -- Update journal entry status -- Need to generate this within IF <condition>
98748 ----------------------------------------------------------------------------------
98749 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98750 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98751 ,p_balance_type_code => l_balance_type_code
98752 );
98753
98754 -------------------------------------------------------------------------------------------
98755 -- 4262811 - Generate the Accrual Reversal lines
98756 -------------------------------------------------------------------------------------------
98757 BEGIN
98758 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98759 (g_array_event(p_event_id).array_value_num('header_index'));
98760 IF l_acc_rev_flag IS NULL THEN
98761 l_acc_rev_flag := 'N';
98762 END IF;
98763 EXCEPTION
98764 WHEN OTHERS THEN
98765 l_acc_rev_flag := 'N';
98766 END;
98767 --
98768 IF (l_acc_rev_flag = 'Y') THEN
98769
98770 -- 4645092 ------------------------------------------------------------------------------
98771 -- To allow MPA report to determine if it should generate report process
98772 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98773 ------------------------------------------------------------------------------------------
98774
98775 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98776 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98777 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
98778 -- call ADRs
98779 -- Bug 4922099
98780 --
98781 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98782 (NVL(l_actual_upg_option, 'N') = 'O') OR
98783 (NVL(l_enc_upg_option, 'N') = 'O')
98784 )
98785 THEN
98786 NULL;
98787 --
98788 --
98789
98790 l_ccid := AcctDerRule_26(
98791 p_application_id => p_application_id
98792 , p_ae_header_id => l_ae_header_id
98793 , p_source_1 => p_source_1
98794 , p_source_2 => p_source_2
98795 , x_transaction_coa_id => l_adr_transaction_coa_id
98796 , x_accounting_coa_id => l_adr_accounting_coa_id
98797 , x_value_type_code => l_adr_value_type_code
98798 , p_side => 'NA'
98799 );
98800
98801 xla_ae_lines_pkg.set_ccid(
98802 p_code_combination_id => l_ccid
98803 , p_value_type_code => l_adr_value_type_code
98804 , p_transaction_coa_id => l_adr_transaction_coa_id
98805 , p_accounting_coa_id => l_adr_accounting_coa_id
98806 , p_adr_code => 'ITR'
98807 , p_adr_type_code => 'S'
98808 , p_component_type => l_component_type
98809 , p_component_code => l_component_code
98810 , p_component_type_code => l_component_type_code
98811 , p_component_appl_id => l_component_appl_id
98812 , p_amb_context_code => l_amb_context_code
98813 , p_side => 'NA'
98814 );
98815
98816
98817 --
98818 --
98819 END IF;
98820
98821 --
98822 -- Update the line information that should be overwritten
98823 --
98824 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98825 p_header_num => 1);
98826 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
98827
98831 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98828 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98829
98830 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
98832 END IF;
98833
98834 --
98835 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98836 --
98837 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98838 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
98839 ELSE
98840 ---------------------------------------------------------------------------------------------------
98841 -- 4262811a Switch Sign
98842 ---------------------------------------------------------------------------------------------------
98843 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
98844 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98845 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98846 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98847 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98848 -- 5132302
98849 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98850 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98851
98852 END IF;
98853
98854 -- 4955764
98855 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98856 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98857
98858
98859 XLA_AE_LINES_PKG.ValidateCurrentLine;
98860 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98861
98862 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98863 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98864 ,p_balance_type_code => l_balance_type_code);
98865
98866 END IF;
98867
98868 -----------------------------------------------------------------------------------------
98869 -- 4262811 Multiperiod Accounting
98870 -----------------------------------------------------------------------------------------
98871 -- No MPA option is assigned.
98872
98873
98874 END IF;
98875 END IF;
98876 --
98877
98878 --
98879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98880 trace
98881 (p_msg => 'END of AcctLineType_210'
98882 ,p_level => C_LEVEL_PROCEDURE
98883 ,p_module => l_log_module);
98884 END IF;
98885 --
98886 EXCEPTION
98887 WHEN xla_exceptions_pkg.application_exception THEN
98888 RAISE;
98889 WHEN OTHERS THEN
98890 xla_exceptions_pkg.raise_message
98891 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_210');
98892 END AcctLineType_210;
98893 --
98894
98895 ---------------------------------------
98896 --
98897 -- PRIVATE FUNCTION
98898 -- AcctLineType_211
98899 --
98900 ---------------------------------------
98901 PROCEDURE AcctLineType_211 (
98902 p_application_id IN NUMBER
98903 ,p_event_id IN NUMBER
98904 ,p_calculate_acctd_flag IN VARCHAR2
98905 ,p_calculate_g_l_flag IN VARCHAR2
98906 ,p_actual_flag IN OUT VARCHAR2
98907 ,p_balance_type_code OUT VARCHAR2
98908 ,p_gain_or_loss_ref OUT VARCHAR2
98909
98910 --Transaction Account
98911 , p_source_1 IN NUMBER
98912 --Journal Line Type
98913 , p_source_2 IN VARCHAR2
98914 --Entered Amount
98915 , p_source_3 IN NUMBER
98916 --First Distribution Identifier
98917 , p_source_5 IN NUMBER
98918 --Distribution Type
98919 , p_source_6 IN VARCHAR2
98920 --Currency Code
98921 , p_source_7 IN VARCHAR2
98922 --Currency Conversion Date
98923 , p_source_8 IN DATE
98924 --Currency Conversion Rate
98925 , p_source_9 IN NUMBER
98926 --Currency Conversion Type
98927 , p_source_10 IN VARCHAR2
98928 --Accounted Amount
98929 , p_source_11 IN NUMBER
98930 )
98931 IS
98932
98933 l_component_type VARCHAR2(80);
98934 l_component_code VARCHAR2(30);
98935 l_component_type_code VARCHAR2(1);
98936 l_component_appl_id INTEGER;
98937 l_amb_context_code VARCHAR2(30);
98938 l_entity_code VARCHAR2(30);
98939 l_event_class_code VARCHAR2(30);
98940 l_ae_header_id NUMBER;
98941 l_event_type_code VARCHAR2(30);
98942 l_line_definition_code VARCHAR2(30);
98943 l_line_definition_owner_code VARCHAR2(1);
98944 --
98945 -- adr variables
98946 l_segment VARCHAR2(30);
98947 l_ccid NUMBER;
98948 l_adr_transaction_coa_id NUMBER;
98949 l_adr_accounting_coa_id NUMBER;
98950 l_adr_flexfield_segment_code VARCHAR2(30);
98951 l_adr_flex_value_set_id NUMBER;
98952 l_adr_value_type_code VARCHAR2(30);
98953 l_adr_value_combination_id NUMBER;
98957 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
98954 l_adr_value_segment_code VARCHAR2(30);
98955
98956 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
98958 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
98959 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
98960
98961 -- 4262811 Variables ------------------------------------------------------------------------------------------
98962 l_entered_amt_idx NUMBER;
98963 l_accted_amt_idx NUMBER;
98964 l_acc_rev_flag VARCHAR2(1);
98965 l_accrual_line_num NUMBER;
98966 l_tmp_amt NUMBER;
98967 l_acc_rev_natural_side_code VARCHAR2(1);
98968
98969 l_num_entries NUMBER;
98970 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
98971 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
98972 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
98973 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
98974 l_recog_line_1 NUMBER;
98975 l_recog_line_2 NUMBER;
98976
98977 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
98978 l_bflow_applied_to_amt NUMBER; -- 5132302
98979 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
98980
98981 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98982
98983 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
98984 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
98985
98986 ---------------------------------------------------------------------------------------------------------------
98987
98988
98989 --
98990 -- bulk performance
98991 --
98992 l_balance_type_code VARCHAR2(1);
98993 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
98994 l_log_module VARCHAR2(240);
98995
98996 --
98997 -- Upgrade strategy
98998 --
98999 l_actual_upg_option VARCHAR2(1);
99000 l_enc_upg_option VARCHAR2(1);
99001
99002 --
99003 BEGIN
99004 --
99005 IF g_log_enabled THEN
99006 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_211';
99007 END IF;
99008 --
99009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99010
99011 trace
99012 (p_msg => 'BEGIN of AcctLineType_211'
99013 ,p_level => C_LEVEL_PROCEDURE
99014 ,p_module => l_log_module);
99015
99016 END IF;
99017 --
99018 l_component_type := 'AMB_JLT';
99019 l_component_code := 'ITR';
99020 l_component_type_code := 'S';
99021 l_component_appl_id := 555;
99022 l_amb_context_code := 'DEFAULT';
99023 l_entity_code := 'INVENTORY';
99024 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
99025 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
99026 l_line_definition_owner_code := 'S';
99027 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
99028 --
99029 l_balance_type_code := 'A';
99030 l_segment := NULL;
99031 l_ccid := NULL;
99032 l_adr_transaction_coa_id := NULL;
99033 l_adr_accounting_coa_id := NULL;
99034 l_adr_flexfield_segment_code := NULL;
99035 l_adr_flex_value_set_id := NULL;
99036 l_adr_value_type_code := NULL;
99037 l_adr_value_combination_id := NULL;
99038 l_adr_value_segment_code := NULL;
99039
99040 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
99041 l_bflow_class_code := ''; -- 4219869 Business Flow
99042 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
99043 l_budgetary_control_flag := 'N';
99044
99045 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99046 l_bflow_applied_to_amt := NULL; -- 5132302
99047 l_entered_amt_idx := NULL; -- 4262811
99048 l_accted_amt_idx := NULL; -- 4262811
99049 l_acc_rev_flag := NULL; -- 4262811
99050 l_accrual_line_num := NULL; -- 4262811
99051 l_tmp_amt := NULL; -- 4262811
99052 --
99053
99054 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99055 l_balance_type_code <> 'B' THEN
99056 IF NVL(p_source_2,'
99057 ') = 'ITR'
99058 THEN
99059
99060 --
99061 XLA_AE_LINES_PKG.SetNewLine;
99062
99063 p_balance_type_code := l_balance_type_code;
99064 -- set the flag so later we will know whether the gain loss line needs to be created
99065
99066 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99067 p_actual_flag :='A';
99068 END IF;
99069
99070 --
99071 -- bulk performance
99072 --
99073 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99074 p_header_num => 0); -- 4262811
99075 --
99076 -- set accounting line options
99077 --
99078 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99079 p_natural_side_code => 'D'
99080 , p_gain_or_loss_flag => 'N'
99081 , p_gl_transfer_mode_code => 'D'
99082 , p_acct_entry_type_code => 'A'
99086 --
99083 , p_switch_side_flag => 'Y'
99084 , p_merge_duplicate_code => 'W'
99085 );
99087 l_acc_rev_natural_side_code := 'C'; -- 4262811
99088 --
99089 --
99090 -- set accounting line type info
99091 --
99092 xla_ae_lines_pkg.SetAcctLineType
99093 (p_component_type => l_component_type
99094 ,p_event_type_code => l_event_type_code
99095 ,p_line_definition_owner_code => l_line_definition_owner_code
99096 ,p_line_definition_code => l_line_definition_code
99097 ,p_accounting_line_code => l_component_code
99098 ,p_accounting_line_type_code => l_component_type_code
99099 ,p_accounting_line_appl_id => l_component_appl_id
99100 ,p_amb_context_code => l_amb_context_code
99101 ,p_entity_code => l_entity_code
99102 ,p_event_class_code => l_event_class_code);
99103 --
99104 -- set accounting class
99105 --
99106 xla_ae_lines_pkg.SetAcctClass(
99107 p_accounting_class_code => 'INTRANSIT_VALUATION'
99108 , p_ae_header_id => l_ae_header_id
99109 );
99110
99111 --
99112 -- set rounding class
99113 --
99114 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99115 'INTRANSIT_VALUATION';
99116
99117 --
99118 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99119 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99120 --
99121 -- bulk performance
99122 --
99123 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99124
99125 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99126 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99127
99128 -- 4955764
99129 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99130 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99131
99132 -- 4458381 Public Sector Enh
99133
99134 --
99135 -- set accounting attributes for the line type
99136 --
99137 l_entered_amt_idx := 3;
99138 l_accted_amt_idx := 8;
99139 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99140 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99141 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
99142 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99143 l_rec_acct_attrs.array_char_value(2) := p_source_6;
99144 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99145 l_rec_acct_attrs.array_num_value(3) := p_source_3;
99146 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99147 l_rec_acct_attrs.array_char_value(4) := p_source_7;
99148 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99149 l_rec_acct_attrs.array_date_value(5) := p_source_8;
99150 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99151 l_rec_acct_attrs.array_num_value(6) := p_source_9;
99152 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99153 l_rec_acct_attrs.array_char_value(7) := p_source_10;
99154 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99155 l_rec_acct_attrs.array_num_value(8) := p_source_11;
99156
99157 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99158 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99159
99160 ---------------------------------------------------------------------------------------------------------------
99161 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99162 ---------------------------------------------------------------------------------------------------------------
99163 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99164
99165 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99166 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99167
99168 IF xla_accounting_cache_pkg.GetValueChar
99169 (p_source_code => 'LEDGER_CATEGORY_CODE'
99170 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99171 AND l_bflow_method_code = 'PRIOR_ENTRY'
99172 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99173 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99174 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99175 )
99176 THEN
99177 xla_ae_lines_pkg.BflowUpgEntry
99178 (p_business_method_code => l_bflow_method_code
99179 ,p_business_class_code => l_bflow_class_code
99180 ,p_balance_type => l_balance_type_code);
99181 ELSE
99182 NULL;
99183 -- No business flow processing for business flow method of NONE.
99184 END IF;
99185
99186 --
99187 -- call analytical criteria
99188 --
99189
99190 --
99191 -- call description
99192 --
99193 -- No description or it is inherited.
99194 --
99195 -- call ADRs
99199 (NVL(l_actual_upg_option, 'N') = 'O') OR
99196 -- Bug 4922099
99197 --
99198 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99200 (NVL(l_enc_upg_option, 'N') = 'O')
99201 )
99202 THEN
99203 NULL;
99204 --
99205 --
99206
99207 l_ccid := AcctDerRule_26(
99208 p_application_id => p_application_id
99209 , p_ae_header_id => l_ae_header_id
99210 , p_source_1 => p_source_1
99211 , p_source_2 => p_source_2
99212 , x_transaction_coa_id => l_adr_transaction_coa_id
99213 , x_accounting_coa_id => l_adr_accounting_coa_id
99214 , x_value_type_code => l_adr_value_type_code
99215 , p_side => 'NA'
99216 );
99217
99218 xla_ae_lines_pkg.set_ccid(
99219 p_code_combination_id => l_ccid
99220 , p_value_type_code => l_adr_value_type_code
99221 , p_transaction_coa_id => l_adr_transaction_coa_id
99222 , p_accounting_coa_id => l_adr_accounting_coa_id
99223 , p_adr_code => 'ITR'
99224 , p_adr_type_code => 'S'
99225 , p_component_type => l_component_type
99226 , p_component_code => l_component_code
99227 , p_component_type_code => l_component_type_code
99228 , p_component_appl_id => l_component_appl_id
99229 , p_amb_context_code => l_amb_context_code
99230 , p_side => 'NA'
99231 );
99232
99233
99234 --
99235 --
99236 END IF;
99237 --
99238 -- Bug 4922099
99239 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99240 (NVL(l_enc_upg_option, 'N') = 'O')
99241 ) AND
99242 (l_bflow_method_code = 'PRIOR_ENTRY')
99243 )
99244 THEN
99245 IF
99246 --
99247 1 = 2
99248 --
99249 THEN
99250 xla_accounting_err_pkg.build_message
99251 (p_appli_s_name => 'XLA'
99252 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99253 ,p_token_1 => 'LINE_NUMBER'
99254 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
99255 ,p_token_2 => 'LINE_TYPE_NAME'
99256 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
99257 l_component_type
99258 ,l_component_code
99259 ,l_component_type_code
99260 ,l_component_appl_id
99261 ,l_amb_context_code
99262 ,l_entity_code
99263 ,l_event_class_code
99264 )
99265 ,p_token_3 => 'OWNER'
99266 ,p_value_3 => xla_lookups_pkg.get_meaning(
99267 p_lookup_type => 'XLA_OWNER_TYPE'
99268 ,p_lookup_code => l_component_type_code
99269 )
99270 ,p_token_4 => 'PRODUCT_NAME'
99271 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99272 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99273 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99274 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99275 ,p_ae_header_id => NULL
99276 );
99277
99278 IF (C_LEVEL_ERROR>= g_log_level) THEN
99279 trace
99280 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99281 ,p_level => C_LEVEL_ERROR
99282 ,p_module => l_log_module);
99283 END IF;
99284 END IF;
99285 END IF;
99286 --
99287 --
99288 ------------------------------------------------------------------------------------------------
99289 -- 4219869 Business Flow
99290 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99291 -- Prior Entry. Currently, the following code is always generated.
99292 ------------------------------------------------------------------------------------------------
99293 XLA_AE_LINES_PKG.ValidateCurrentLine;
99294
99295 ------------------------------------------------------------------------------------
99296 -- 4219869 Business Flow
99297 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99298 ------------------------------------------------------------------------------------
99302 -- 4219869 Business Flow
99299 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99300
99301 ----------------------------------------------------------------------------------
99303 -- Update journal entry status -- Need to generate this within IF <condition>
99304 ----------------------------------------------------------------------------------
99305 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99306 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99307 ,p_balance_type_code => l_balance_type_code
99308 );
99309
99310 -------------------------------------------------------------------------------------------
99311 -- 4262811 - Generate the Accrual Reversal lines
99312 -------------------------------------------------------------------------------------------
99313 BEGIN
99314 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99315 (g_array_event(p_event_id).array_value_num('header_index'));
99316 IF l_acc_rev_flag IS NULL THEN
99317 l_acc_rev_flag := 'N';
99318 END IF;
99319 EXCEPTION
99320 WHEN OTHERS THEN
99321 l_acc_rev_flag := 'N';
99322 END;
99323 --
99324 IF (l_acc_rev_flag = 'Y') THEN
99325
99326 -- 4645092 ------------------------------------------------------------------------------
99327 -- To allow MPA report to determine if it should generate report process
99328 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99329 ------------------------------------------------------------------------------------------
99330
99331 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99332 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99333 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
99334 -- call ADRs
99335 -- Bug 4922099
99336 --
99337 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99338 (NVL(l_actual_upg_option, 'N') = 'O') OR
99339 (NVL(l_enc_upg_option, 'N') = 'O')
99340 )
99341 THEN
99342 NULL;
99343 --
99344 --
99345
99346 l_ccid := AcctDerRule_26(
99347 p_application_id => p_application_id
99348 , p_ae_header_id => l_ae_header_id
99349 , p_source_1 => p_source_1
99350 , p_source_2 => p_source_2
99351 , x_transaction_coa_id => l_adr_transaction_coa_id
99352 , x_accounting_coa_id => l_adr_accounting_coa_id
99353 , x_value_type_code => l_adr_value_type_code
99354 , p_side => 'NA'
99355 );
99356
99357 xla_ae_lines_pkg.set_ccid(
99358 p_code_combination_id => l_ccid
99359 , p_value_type_code => l_adr_value_type_code
99360 , p_transaction_coa_id => l_adr_transaction_coa_id
99361 , p_accounting_coa_id => l_adr_accounting_coa_id
99362 , p_adr_code => 'ITR'
99363 , p_adr_type_code => 'S'
99364 , p_component_type => l_component_type
99365 , p_component_code => l_component_code
99366 , p_component_type_code => l_component_type_code
99367 , p_component_appl_id => l_component_appl_id
99368 , p_amb_context_code => l_amb_context_code
99369 , p_side => 'NA'
99370 );
99371
99372
99373 --
99374 --
99375 END IF;
99376
99377 --
99378 -- Update the line information that should be overwritten
99379 --
99380 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99381 p_header_num => 1);
99382 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
99383
99384 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99385
99386 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
99387 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99388 END IF;
99389
99390 --
99391 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99392 --
99393 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99394 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
99395 ELSE
99396 ---------------------------------------------------------------------------------------------------
99397 -- 4262811a Switch Sign
99398 ---------------------------------------------------------------------------------------------------
99399 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
99400 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99401 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99402 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99403 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99404 -- 5132302
99405 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99406 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99407
99408 END IF;
99409
99410 -- 4955764
99414
99411 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99412 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99413
99415 XLA_AE_LINES_PKG.ValidateCurrentLine;
99416 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99417
99418 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99419 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99420 ,p_balance_type_code => l_balance_type_code);
99421
99422 END IF;
99423
99424 -----------------------------------------------------------------------------------------
99425 -- 4262811 Multiperiod Accounting
99426 -----------------------------------------------------------------------------------------
99427 -- No MPA option is assigned.
99428
99429
99430 END IF;
99431 END IF;
99432 --
99433
99434 --
99435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99436 trace
99437 (p_msg => 'END of AcctLineType_211'
99438 ,p_level => C_LEVEL_PROCEDURE
99439 ,p_module => l_log_module);
99440 END IF;
99441 --
99442 EXCEPTION
99443 WHEN xla_exceptions_pkg.application_exception THEN
99444 RAISE;
99445 WHEN OTHERS THEN
99446 xla_exceptions_pkg.raise_message
99447 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_211');
99448 END AcctLineType_211;
99449 --
99450
99451 ---------------------------------------
99452 --
99453 -- PRIVATE FUNCTION
99454 -- AcctLineType_212
99455 --
99456 ---------------------------------------
99457 PROCEDURE AcctLineType_212 (
99458 p_application_id IN NUMBER
99459 ,p_event_id IN NUMBER
99460 ,p_calculate_acctd_flag IN VARCHAR2
99461 ,p_calculate_g_l_flag IN VARCHAR2
99462 ,p_actual_flag IN OUT VARCHAR2
99463 ,p_balance_type_code OUT VARCHAR2
99464 ,p_gain_or_loss_ref OUT VARCHAR2
99465
99466 --Transaction Account
99467 , p_source_1 IN NUMBER
99468 --Journal Line Type
99469 , p_source_2 IN VARCHAR2
99470 --Entered Amount
99471 , p_source_3 IN NUMBER
99472 --First Distribution Identifier
99473 , p_source_5 IN NUMBER
99474 --Distribution Type
99475 , p_source_6 IN VARCHAR2
99476 --Currency Code
99477 , p_source_7 IN VARCHAR2
99478 --Currency Conversion Date
99479 , p_source_8 IN DATE
99480 --Currency Conversion Rate
99481 , p_source_9 IN NUMBER
99482 --Currency Conversion Type
99483 , p_source_10 IN VARCHAR2
99484 --Accounted Amount
99485 , p_source_11 IN NUMBER
99486 )
99487 IS
99488
99489 l_component_type VARCHAR2(80);
99490 l_component_code VARCHAR2(30);
99491 l_component_type_code VARCHAR2(1);
99492 l_component_appl_id INTEGER;
99493 l_amb_context_code VARCHAR2(30);
99494 l_entity_code VARCHAR2(30);
99495 l_event_class_code VARCHAR2(30);
99496 l_ae_header_id NUMBER;
99497 l_event_type_code VARCHAR2(30);
99498 l_line_definition_code VARCHAR2(30);
99499 l_line_definition_owner_code VARCHAR2(1);
99500 --
99501 -- adr variables
99502 l_segment VARCHAR2(30);
99503 l_ccid NUMBER;
99504 l_adr_transaction_coa_id NUMBER;
99505 l_adr_accounting_coa_id NUMBER;
99506 l_adr_flexfield_segment_code VARCHAR2(30);
99507 l_adr_flex_value_set_id NUMBER;
99508 l_adr_value_type_code VARCHAR2(30);
99509 l_adr_value_combination_id NUMBER;
99510 l_adr_value_segment_code VARCHAR2(30);
99511
99512 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
99513 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
99514 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
99515 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
99516
99517 -- 4262811 Variables ------------------------------------------------------------------------------------------
99518 l_entered_amt_idx NUMBER;
99519 l_accted_amt_idx NUMBER;
99520 l_acc_rev_flag VARCHAR2(1);
99521 l_accrual_line_num NUMBER;
99522 l_tmp_amt NUMBER;
99523 l_acc_rev_natural_side_code VARCHAR2(1);
99524
99525 l_num_entries NUMBER;
99526 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
99527 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
99528 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
99529 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
99530 l_recog_line_1 NUMBER;
99531 l_recog_line_2 NUMBER;
99532
99533 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
99534 l_bflow_applied_to_amt NUMBER; -- 5132302
99535 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
99536
99537 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99538
99539 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
99540 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
99541
99545 --
99542 ---------------------------------------------------------------------------------------------------------------
99543
99544
99546 -- bulk performance
99547 --
99548 l_balance_type_code VARCHAR2(1);
99549 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
99550 l_log_module VARCHAR2(240);
99551
99552 --
99553 -- Upgrade strategy
99554 --
99555 l_actual_upg_option VARCHAR2(1);
99556 l_enc_upg_option VARCHAR2(1);
99557
99558 --
99559 BEGIN
99560 --
99561 IF g_log_enabled THEN
99562 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_212';
99563 END IF;
99564 --
99565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99566
99567 trace
99568 (p_msg => 'BEGIN of AcctLineType_212'
99569 ,p_level => C_LEVEL_PROCEDURE
99570 ,p_module => l_log_module);
99571
99572 END IF;
99573 --
99574 l_component_type := 'AMB_JLT';
99575 l_component_code := 'ITR';
99576 l_component_type_code := 'S';
99577 l_component_appl_id := 555;
99578 l_amb_context_code := 'DEFAULT';
99579 l_entity_code := 'INVENTORY';
99580 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
99581 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
99582 l_line_definition_owner_code := 'S';
99583 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
99584 --
99585 l_balance_type_code := 'A';
99586 l_segment := NULL;
99587 l_ccid := NULL;
99588 l_adr_transaction_coa_id := NULL;
99589 l_adr_accounting_coa_id := NULL;
99590 l_adr_flexfield_segment_code := NULL;
99591 l_adr_flex_value_set_id := NULL;
99592 l_adr_value_type_code := NULL;
99593 l_adr_value_combination_id := NULL;
99594 l_adr_value_segment_code := NULL;
99595
99596 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
99597 l_bflow_class_code := ''; -- 4219869 Business Flow
99598 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
99599 l_budgetary_control_flag := 'N';
99600
99601 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99602 l_bflow_applied_to_amt := NULL; -- 5132302
99603 l_entered_amt_idx := NULL; -- 4262811
99604 l_accted_amt_idx := NULL; -- 4262811
99605 l_acc_rev_flag := NULL; -- 4262811
99606 l_accrual_line_num := NULL; -- 4262811
99607 l_tmp_amt := NULL; -- 4262811
99608 --
99609
99610 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99611 l_balance_type_code <> 'B' THEN
99612 IF NVL(p_source_2,'
99613 ') = 'ITR'
99614 THEN
99615
99616 --
99617 XLA_AE_LINES_PKG.SetNewLine;
99618
99619 p_balance_type_code := l_balance_type_code;
99620 -- set the flag so later we will know whether the gain loss line needs to be created
99621
99622 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99623 p_actual_flag :='A';
99624 END IF;
99625
99626 --
99627 -- bulk performance
99628 --
99629 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99630 p_header_num => 0); -- 4262811
99631 --
99632 -- set accounting line options
99633 --
99634 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99635 p_natural_side_code => 'D'
99636 , p_gain_or_loss_flag => 'N'
99637 , p_gl_transfer_mode_code => 'D'
99638 , p_acct_entry_type_code => 'A'
99639 , p_switch_side_flag => 'Y'
99640 , p_merge_duplicate_code => 'W'
99641 );
99642 --
99643 l_acc_rev_natural_side_code := 'C'; -- 4262811
99644 --
99645 --
99646 -- set accounting line type info
99647 --
99648 xla_ae_lines_pkg.SetAcctLineType
99649 (p_component_type => l_component_type
99650 ,p_event_type_code => l_event_type_code
99651 ,p_line_definition_owner_code => l_line_definition_owner_code
99652 ,p_line_definition_code => l_line_definition_code
99653 ,p_accounting_line_code => l_component_code
99654 ,p_accounting_line_type_code => l_component_type_code
99655 ,p_accounting_line_appl_id => l_component_appl_id
99656 ,p_amb_context_code => l_amb_context_code
99657 ,p_entity_code => l_entity_code
99658 ,p_event_class_code => l_event_class_code);
99659 --
99660 -- set accounting class
99661 --
99662 xla_ae_lines_pkg.SetAcctClass(
99663 p_accounting_class_code => 'INTRANSIT_VALUATION'
99664 , p_ae_header_id => l_ae_header_id
99665 );
99666
99667 --
99668 -- set rounding class
99669 --
99670 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99671 'INTRANSIT_VALUATION';
99672
99673 --
99674 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99675 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99679 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99676 --
99677 -- bulk performance
99678 --
99680
99681 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99682 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99683
99684 -- 4955764
99685 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99686 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99687
99688 -- 4458381 Public Sector Enh
99689
99690 --
99691 -- set accounting attributes for the line type
99692 --
99693 l_entered_amt_idx := 3;
99694 l_accted_amt_idx := 8;
99695 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99696 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99697 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
99698 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99699 l_rec_acct_attrs.array_char_value(2) := p_source_6;
99700 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99701 l_rec_acct_attrs.array_num_value(3) := p_source_3;
99702 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99703 l_rec_acct_attrs.array_char_value(4) := p_source_7;
99704 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99705 l_rec_acct_attrs.array_date_value(5) := p_source_8;
99706 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99707 l_rec_acct_attrs.array_num_value(6) := p_source_9;
99708 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99709 l_rec_acct_attrs.array_char_value(7) := p_source_10;
99710 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99711 l_rec_acct_attrs.array_num_value(8) := p_source_11;
99712
99713 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99714 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99715
99716 ---------------------------------------------------------------------------------------------------------------
99717 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99718 ---------------------------------------------------------------------------------------------------------------
99719 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99720
99721 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99722 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99723
99724 IF xla_accounting_cache_pkg.GetValueChar
99725 (p_source_code => 'LEDGER_CATEGORY_CODE'
99726 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99727 AND l_bflow_method_code = 'PRIOR_ENTRY'
99728 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99729 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99730 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99731 )
99732 THEN
99733 xla_ae_lines_pkg.BflowUpgEntry
99734 (p_business_method_code => l_bflow_method_code
99735 ,p_business_class_code => l_bflow_class_code
99736 ,p_balance_type => l_balance_type_code);
99737 ELSE
99738 NULL;
99739 -- No business flow processing for business flow method of NONE.
99740 END IF;
99741
99742 --
99743 -- call analytical criteria
99744 --
99745
99746 --
99747 -- call description
99748 --
99749 -- No description or it is inherited.
99750 --
99751 -- call ADRs
99752 -- Bug 4922099
99753 --
99754 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99755 (NVL(l_actual_upg_option, 'N') = 'O') OR
99756 (NVL(l_enc_upg_option, 'N') = 'O')
99757 )
99758 THEN
99759 NULL;
99760 --
99761 --
99762
99763 l_ccid := AcctDerRule_26(
99764 p_application_id => p_application_id
99765 , p_ae_header_id => l_ae_header_id
99766 , p_source_1 => p_source_1
99767 , p_source_2 => p_source_2
99768 , x_transaction_coa_id => l_adr_transaction_coa_id
99769 , x_accounting_coa_id => l_adr_accounting_coa_id
99770 , x_value_type_code => l_adr_value_type_code
99771 , p_side => 'NA'
99772 );
99773
99774 xla_ae_lines_pkg.set_ccid(
99775 p_code_combination_id => l_ccid
99776 , p_value_type_code => l_adr_value_type_code
99777 , p_transaction_coa_id => l_adr_transaction_coa_id
99778 , p_accounting_coa_id => l_adr_accounting_coa_id
99779 , p_adr_code => 'ITR'
99780 , p_adr_type_code => 'S'
99781 , p_component_type => l_component_type
99782 , p_component_code => l_component_code
99783 , p_component_type_code => l_component_type_code
99784 , p_component_appl_id => l_component_appl_id
99785 , p_amb_context_code => l_amb_context_code
99786 , p_side => 'NA'
99787 );
99788
99789
99790 --
99791 --
99792 END IF;
99793 --
99797 ) AND
99794 -- Bug 4922099
99795 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99796 (NVL(l_enc_upg_option, 'N') = 'O')
99798 (l_bflow_method_code = 'PRIOR_ENTRY')
99799 )
99800 THEN
99801 IF
99802 --
99803 1 = 2
99804 --
99805 THEN
99806 xla_accounting_err_pkg.build_message
99807 (p_appli_s_name => 'XLA'
99808 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99809 ,p_token_1 => 'LINE_NUMBER'
99810 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
99811 ,p_token_2 => 'LINE_TYPE_NAME'
99812 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
99813 l_component_type
99814 ,l_component_code
99815 ,l_component_type_code
99816 ,l_component_appl_id
99817 ,l_amb_context_code
99818 ,l_entity_code
99819 ,l_event_class_code
99820 )
99821 ,p_token_3 => 'OWNER'
99822 ,p_value_3 => xla_lookups_pkg.get_meaning(
99823 p_lookup_type => 'XLA_OWNER_TYPE'
99824 ,p_lookup_code => l_component_type_code
99825 )
99826 ,p_token_4 => 'PRODUCT_NAME'
99827 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99828 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99829 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99830 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99831 ,p_ae_header_id => NULL
99832 );
99833
99834 IF (C_LEVEL_ERROR>= g_log_level) THEN
99835 trace
99836 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99837 ,p_level => C_LEVEL_ERROR
99838 ,p_module => l_log_module);
99839 END IF;
99840 END IF;
99841 END IF;
99842 --
99843 --
99844 ------------------------------------------------------------------------------------------------
99845 -- 4219869 Business Flow
99846 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99847 -- Prior Entry. Currently, the following code is always generated.
99848 ------------------------------------------------------------------------------------------------
99849 XLA_AE_LINES_PKG.ValidateCurrentLine;
99850
99851 ------------------------------------------------------------------------------------
99852 -- 4219869 Business Flow
99853 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99854 ------------------------------------------------------------------------------------
99855 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99856
99857 ----------------------------------------------------------------------------------
99858 -- 4219869 Business Flow
99859 -- Update journal entry status -- Need to generate this within IF <condition>
99860 ----------------------------------------------------------------------------------
99861 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99862 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99863 ,p_balance_type_code => l_balance_type_code
99864 );
99865
99866 -------------------------------------------------------------------------------------------
99867 -- 4262811 - Generate the Accrual Reversal lines
99868 -------------------------------------------------------------------------------------------
99869 BEGIN
99870 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99871 (g_array_event(p_event_id).array_value_num('header_index'));
99872 IF l_acc_rev_flag IS NULL THEN
99873 l_acc_rev_flag := 'N';
99874 END IF;
99875 EXCEPTION
99876 WHEN OTHERS THEN
99877 l_acc_rev_flag := 'N';
99878 END;
99879 --
99880 IF (l_acc_rev_flag = 'Y') THEN
99881
99882 -- 4645092 ------------------------------------------------------------------------------
99883 -- To allow MPA report to determine if it should generate report process
99884 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99885 ------------------------------------------------------------------------------------------
99886
99887 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99888 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99892 --
99889 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
99890 -- call ADRs
99891 -- Bug 4922099
99893 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99894 (NVL(l_actual_upg_option, 'N') = 'O') OR
99895 (NVL(l_enc_upg_option, 'N') = 'O')
99896 )
99897 THEN
99898 NULL;
99899 --
99900 --
99901
99902 l_ccid := AcctDerRule_26(
99903 p_application_id => p_application_id
99904 , p_ae_header_id => l_ae_header_id
99905 , p_source_1 => p_source_1
99906 , p_source_2 => p_source_2
99907 , x_transaction_coa_id => l_adr_transaction_coa_id
99908 , x_accounting_coa_id => l_adr_accounting_coa_id
99909 , x_value_type_code => l_adr_value_type_code
99910 , p_side => 'NA'
99911 );
99912
99913 xla_ae_lines_pkg.set_ccid(
99914 p_code_combination_id => l_ccid
99915 , p_value_type_code => l_adr_value_type_code
99916 , p_transaction_coa_id => l_adr_transaction_coa_id
99917 , p_accounting_coa_id => l_adr_accounting_coa_id
99918 , p_adr_code => 'ITR'
99919 , p_adr_type_code => 'S'
99920 , p_component_type => l_component_type
99921 , p_component_code => l_component_code
99922 , p_component_type_code => l_component_type_code
99923 , p_component_appl_id => l_component_appl_id
99924 , p_amb_context_code => l_amb_context_code
99925 , p_side => 'NA'
99926 );
99927
99928
99929 --
99930 --
99931 END IF;
99932
99933 --
99934 -- Update the line information that should be overwritten
99935 --
99936 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99937 p_header_num => 1);
99938 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
99939
99940 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99941
99942 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
99943 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99944 END IF;
99945
99946 --
99947 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99948 --
99949 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99950 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
99951 ELSE
99952 ---------------------------------------------------------------------------------------------------
99953 -- 4262811a Switch Sign
99954 ---------------------------------------------------------------------------------------------------
99955 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
99956 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99957 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99958 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99959 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99960 -- 5132302
99961 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99962 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99963
99964 END IF;
99965
99966 -- 4955764
99967 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99968 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99969
99970
99971 XLA_AE_LINES_PKG.ValidateCurrentLine;
99972 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99973
99974 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99975 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99976 ,p_balance_type_code => l_balance_type_code);
99977
99978 END IF;
99979
99980 -----------------------------------------------------------------------------------------
99981 -- 4262811 Multiperiod Accounting
99982 -----------------------------------------------------------------------------------------
99983 -- No MPA option is assigned.
99984
99985
99986 END IF;
99987 END IF;
99988 --
99989
99990 --
99991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99992 trace
99993 (p_msg => 'END of AcctLineType_212'
99994 ,p_level => C_LEVEL_PROCEDURE
99995 ,p_module => l_log_module);
99996 END IF;
99997 --
99998 EXCEPTION
99999 WHEN xla_exceptions_pkg.application_exception THEN
100000 RAISE;
100001 WHEN OTHERS THEN
100002 xla_exceptions_pkg.raise_message
100003 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_212');
100004 END AcctLineType_212;
100005 --
100006
100007 ---------------------------------------
100008 --
100009 -- PRIVATE FUNCTION
100010 -- AcctLineType_213
100011 --
100015 ,p_event_id IN NUMBER
100012 ---------------------------------------
100013 PROCEDURE AcctLineType_213 (
100014 p_application_id IN NUMBER
100016 ,p_calculate_acctd_flag IN VARCHAR2
100017 ,p_calculate_g_l_flag IN VARCHAR2
100018 ,p_actual_flag IN OUT VARCHAR2
100019 ,p_balance_type_code OUT VARCHAR2
100020 ,p_gain_or_loss_ref OUT VARCHAR2
100021
100022 --Transaction Account
100023 , p_source_1 IN NUMBER
100024 --Journal Line Type
100025 , p_source_2 IN VARCHAR2
100026 --Entered Amount
100027 , p_source_3 IN NUMBER
100028 --First Distribution Identifier
100029 , p_source_5 IN NUMBER
100030 --Distribution Type
100031 , p_source_6 IN VARCHAR2
100032 --Currency Code
100033 , p_source_7 IN VARCHAR2
100034 --Currency Conversion Date
100035 , p_source_8 IN DATE
100036 --Currency Conversion Rate
100037 , p_source_9 IN NUMBER
100038 --Accounted Amount
100039 , p_source_11 IN NUMBER
100040 )
100041 IS
100042
100043 l_component_type VARCHAR2(80);
100044 l_component_code VARCHAR2(30);
100045 l_component_type_code VARCHAR2(1);
100046 l_component_appl_id INTEGER;
100047 l_amb_context_code VARCHAR2(30);
100048 l_entity_code VARCHAR2(30);
100049 l_event_class_code VARCHAR2(30);
100050 l_ae_header_id NUMBER;
100051 l_event_type_code VARCHAR2(30);
100052 l_line_definition_code VARCHAR2(30);
100053 l_line_definition_owner_code VARCHAR2(1);
100054 --
100055 -- adr variables
100056 l_segment VARCHAR2(30);
100057 l_ccid NUMBER;
100058 l_adr_transaction_coa_id NUMBER;
100059 l_adr_accounting_coa_id NUMBER;
100060 l_adr_flexfield_segment_code VARCHAR2(30);
100061 l_adr_flex_value_set_id NUMBER;
100062 l_adr_value_type_code VARCHAR2(30);
100063 l_adr_value_combination_id NUMBER;
100064 l_adr_value_segment_code VARCHAR2(30);
100065
100066 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
100067 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
100068 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
100069 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
100070
100071 -- 4262811 Variables ------------------------------------------------------------------------------------------
100072 l_entered_amt_idx NUMBER;
100073 l_accted_amt_idx NUMBER;
100074 l_acc_rev_flag VARCHAR2(1);
100075 l_accrual_line_num NUMBER;
100076 l_tmp_amt NUMBER;
100077 l_acc_rev_natural_side_code VARCHAR2(1);
100078
100079 l_num_entries NUMBER;
100080 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
100081 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
100082 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
100083 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
100084 l_recog_line_1 NUMBER;
100085 l_recog_line_2 NUMBER;
100086
100087 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
100088 l_bflow_applied_to_amt NUMBER; -- 5132302
100089 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
100090
100091 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100092
100093 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
100094 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
100095
100096 ---------------------------------------------------------------------------------------------------------------
100097
100098
100099 --
100100 -- bulk performance
100101 --
100102 l_balance_type_code VARCHAR2(1);
100103 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
100104 l_log_module VARCHAR2(240);
100105
100106 --
100107 -- Upgrade strategy
100108 --
100109 l_actual_upg_option VARCHAR2(1);
100110 l_enc_upg_option VARCHAR2(1);
100111
100112 --
100113 BEGIN
100114 --
100115 IF g_log_enabled THEN
100116 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_213';
100117 END IF;
100118 --
100119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100120
100121 trace
100122 (p_msg => 'BEGIN of AcctLineType_213'
100123 ,p_level => C_LEVEL_PROCEDURE
100124 ,p_module => l_log_module);
100125
100126 END IF;
100127 --
100128 l_component_type := 'AMB_JLT';
100129 l_component_code := 'IVA';
100130 l_component_type_code := 'S';
100131 l_component_appl_id := 555;
100132 l_amb_context_code := 'DEFAULT';
100133 l_entity_code := 'INVENTORY';
100134 l_event_class_code := 'MISC_TXN';
100135 l_event_type_code := 'MISC_TXN_ALL';
100136 l_line_definition_owner_code := 'S';
100137 l_line_definition_code := 'MISC_TXN';
100138 --
100139 l_balance_type_code := 'A';
100140 l_segment := NULL;
100141 l_ccid := NULL;
100142 l_adr_transaction_coa_id := NULL;
100143 l_adr_accounting_coa_id := NULL;
100144 l_adr_flexfield_segment_code := NULL;
100148 l_adr_value_segment_code := NULL;
100145 l_adr_flex_value_set_id := NULL;
100146 l_adr_value_type_code := NULL;
100147 l_adr_value_combination_id := NULL;
100149
100150 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
100151 l_bflow_class_code := ''; -- 4219869 Business Flow
100152 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
100153 l_budgetary_control_flag := 'N';
100154
100155 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100156 l_bflow_applied_to_amt := NULL; -- 5132302
100157 l_entered_amt_idx := NULL; -- 4262811
100158 l_accted_amt_idx := NULL; -- 4262811
100159 l_acc_rev_flag := NULL; -- 4262811
100160 l_accrual_line_num := NULL; -- 4262811
100161 l_tmp_amt := NULL; -- 4262811
100162 --
100163
100164 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100165 l_balance_type_code <> 'B' THEN
100166 IF NVL(p_source_2,'
100167 ') = 'IVA'
100168 THEN
100169
100170 --
100171 XLA_AE_LINES_PKG.SetNewLine;
100172
100173 p_balance_type_code := l_balance_type_code;
100174 -- set the flag so later we will know whether the gain loss line needs to be created
100175
100176 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100177 p_actual_flag :='A';
100178 END IF;
100179
100180 --
100181 -- bulk performance
100182 --
100183 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100184 p_header_num => 0); -- 4262811
100185 --
100186 -- set accounting line options
100187 --
100188 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100189 p_natural_side_code => 'D'
100190 , p_gain_or_loss_flag => 'N'
100191 , p_gl_transfer_mode_code => 'D'
100192 , p_acct_entry_type_code => 'A'
100193 , p_switch_side_flag => 'Y'
100194 , p_merge_duplicate_code => 'W'
100195 );
100196 --
100197 l_acc_rev_natural_side_code := 'C'; -- 4262811
100198 --
100199 --
100200 -- set accounting line type info
100201 --
100202 xla_ae_lines_pkg.SetAcctLineType
100203 (p_component_type => l_component_type
100204 ,p_event_type_code => l_event_type_code
100205 ,p_line_definition_owner_code => l_line_definition_owner_code
100206 ,p_line_definition_code => l_line_definition_code
100207 ,p_accounting_line_code => l_component_code
100208 ,p_accounting_line_type_code => l_component_type_code
100209 ,p_accounting_line_appl_id => l_component_appl_id
100210 ,p_amb_context_code => l_amb_context_code
100211 ,p_entity_code => l_entity_code
100212 ,p_event_class_code => l_event_class_code);
100213 --
100214 -- set accounting class
100215 --
100216 xla_ae_lines_pkg.SetAcctClass(
100217 p_accounting_class_code => 'IVA'
100218 , p_ae_header_id => l_ae_header_id
100219 );
100220
100221 --
100222 -- set rounding class
100223 --
100224 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100225 'IVA';
100226
100227 --
100228 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100229 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100230 --
100231 -- bulk performance
100232 --
100233 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100234
100235 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100236 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100237
100238 -- 4955764
100239 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100240 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100241
100242 -- 4458381 Public Sector Enh
100243
100244 --
100245 -- set accounting attributes for the line type
100246 --
100247 l_entered_amt_idx := 3;
100248 l_accted_amt_idx := 8;
100249 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100250 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100251 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
100252 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100253 l_rec_acct_attrs.array_char_value(2) := p_source_6;
100254 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100255 l_rec_acct_attrs.array_num_value(3) := p_source_3;
100256 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100257 l_rec_acct_attrs.array_char_value(4) := p_source_7;
100258 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100259 l_rec_acct_attrs.array_date_value(5) := p_source_8;
100260 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100261 l_rec_acct_attrs.array_num_value(6) := p_source_9;
100262 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100263 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_9);
100264 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100268 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100265 l_rec_acct_attrs.array_num_value(8) := p_source_11;
100266
100267 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100269
100270 ---------------------------------------------------------------------------------------------------------------
100271 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100272 ---------------------------------------------------------------------------------------------------------------
100273 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100274
100275 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100276 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100277
100278 IF xla_accounting_cache_pkg.GetValueChar
100279 (p_source_code => 'LEDGER_CATEGORY_CODE'
100280 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100281 AND l_bflow_method_code = 'PRIOR_ENTRY'
100282 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100283 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100284 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100285 )
100286 THEN
100287 xla_ae_lines_pkg.BflowUpgEntry
100288 (p_business_method_code => l_bflow_method_code
100289 ,p_business_class_code => l_bflow_class_code
100290 ,p_balance_type => l_balance_type_code);
100291 ELSE
100292 NULL;
100293 -- No business flow processing for business flow method of NONE.
100294 END IF;
100295
100296 --
100297 -- call analytical criteria
100298 --
100299
100300 --
100301 -- call description
100302 --
100303 -- No description or it is inherited.
100304 --
100305 -- call ADRs
100306 -- Bug 4922099
100307 --
100308 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100309 (NVL(l_actual_upg_option, 'N') = 'O') OR
100310 (NVL(l_enc_upg_option, 'N') = 'O')
100311 )
100312 THEN
100313 NULL;
100314 --
100315 --
100316
100317 l_ccid := AcctDerRule_27(
100318 p_application_id => p_application_id
100319 , p_ae_header_id => l_ae_header_id
100320 , p_source_1 => p_source_1
100321 , p_source_2 => p_source_2
100322 , x_transaction_coa_id => l_adr_transaction_coa_id
100323 , x_accounting_coa_id => l_adr_accounting_coa_id
100324 , x_value_type_code => l_adr_value_type_code
100325 , p_side => 'NA'
100326 );
100327
100328 xla_ae_lines_pkg.set_ccid(
100329 p_code_combination_id => l_ccid
100330 , p_value_type_code => l_adr_value_type_code
100331 , p_transaction_coa_id => l_adr_transaction_coa_id
100332 , p_accounting_coa_id => l_adr_accounting_coa_id
100333 , p_adr_code => 'IVA'
100334 , p_adr_type_code => 'S'
100335 , p_component_type => l_component_type
100336 , p_component_code => l_component_code
100337 , p_component_type_code => l_component_type_code
100338 , p_component_appl_id => l_component_appl_id
100339 , p_amb_context_code => l_amb_context_code
100340 , p_side => 'NA'
100341 );
100342
100343
100344 --
100345 --
100346 END IF;
100347 --
100348 -- Bug 4922099
100349 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100350 (NVL(l_enc_upg_option, 'N') = 'O')
100351 ) AND
100352 (l_bflow_method_code = 'PRIOR_ENTRY')
100353 )
100354 THEN
100355 IF
100356 --
100357 1 = 2
100358 --
100359 THEN
100360 xla_accounting_err_pkg.build_message
100361 (p_appli_s_name => 'XLA'
100362 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100363 ,p_token_1 => 'LINE_NUMBER'
100364 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
100365 ,p_token_2 => 'LINE_TYPE_NAME'
100366 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
100367 l_component_type
100368 ,l_component_code
100369 ,l_component_type_code
100370 ,l_component_appl_id
100371 ,l_amb_context_code
100372 ,l_entity_code
100373 ,l_event_class_code
100374 )
100375 ,p_token_3 => 'OWNER'
100376 ,p_value_3 => xla_lookups_pkg.get_meaning(
100380 ,p_token_4 => 'PRODUCT_NAME'
100377 p_lookup_type => 'XLA_OWNER_TYPE'
100378 ,p_lookup_code => l_component_type_code
100379 )
100381 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100382 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100383 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100384 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100385 ,p_ae_header_id => NULL
100386 );
100387
100388 IF (C_LEVEL_ERROR>= g_log_level) THEN
100389 trace
100390 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100391 ,p_level => C_LEVEL_ERROR
100392 ,p_module => l_log_module);
100393 END IF;
100394 END IF;
100395 END IF;
100396 --
100397 --
100398 ------------------------------------------------------------------------------------------------
100399 -- 4219869 Business Flow
100400 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100401 -- Prior Entry. Currently, the following code is always generated.
100402 ------------------------------------------------------------------------------------------------
100403 XLA_AE_LINES_PKG.ValidateCurrentLine;
100404
100405 ------------------------------------------------------------------------------------
100406 -- 4219869 Business Flow
100407 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100408 ------------------------------------------------------------------------------------
100409 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100410
100411 ----------------------------------------------------------------------------------
100412 -- 4219869 Business Flow
100413 -- Update journal entry status -- Need to generate this within IF <condition>
100414 ----------------------------------------------------------------------------------
100415 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100416 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100417 ,p_balance_type_code => l_balance_type_code
100418 );
100419
100420 -------------------------------------------------------------------------------------------
100421 -- 4262811 - Generate the Accrual Reversal lines
100422 -------------------------------------------------------------------------------------------
100423 BEGIN
100424 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100425 (g_array_event(p_event_id).array_value_num('header_index'));
100426 IF l_acc_rev_flag IS NULL THEN
100427 l_acc_rev_flag := 'N';
100428 END IF;
100429 EXCEPTION
100430 WHEN OTHERS THEN
100431 l_acc_rev_flag := 'N';
100432 END;
100433 --
100434 IF (l_acc_rev_flag = 'Y') THEN
100435
100436 -- 4645092 ------------------------------------------------------------------------------
100437 -- To allow MPA report to determine if it should generate report process
100438 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100439 ------------------------------------------------------------------------------------------
100440
100441 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100442 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100443 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
100444 -- call ADRs
100445 -- Bug 4922099
100446 --
100447 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100448 (NVL(l_actual_upg_option, 'N') = 'O') OR
100449 (NVL(l_enc_upg_option, 'N') = 'O')
100450 )
100451 THEN
100452 NULL;
100453 --
100454 --
100455
100456 l_ccid := AcctDerRule_27(
100457 p_application_id => p_application_id
100458 , p_ae_header_id => l_ae_header_id
100459 , p_source_1 => p_source_1
100460 , p_source_2 => p_source_2
100461 , x_transaction_coa_id => l_adr_transaction_coa_id
100462 , x_accounting_coa_id => l_adr_accounting_coa_id
100463 , x_value_type_code => l_adr_value_type_code
100464 , p_side => 'NA'
100465 );
100466
100467 xla_ae_lines_pkg.set_ccid(
100468 p_code_combination_id => l_ccid
100469 , p_value_type_code => l_adr_value_type_code
100470 , p_transaction_coa_id => l_adr_transaction_coa_id
100471 , p_accounting_coa_id => l_adr_accounting_coa_id
100472 , p_adr_code => 'IVA'
100473 , p_adr_type_code => 'S'
100474 , p_component_type => l_component_type
100475 , p_component_code => l_component_code
100476 , p_component_type_code => l_component_type_code
100477 , p_component_appl_id => l_component_appl_id
100478 , p_amb_context_code => l_amb_context_code
100479 , p_side => 'NA'
100480 );
100481
100482
100483 --
100484 --
100485 END IF;
100486
100490 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100487 --
100488 -- Update the line information that should be overwritten
100489 --
100491 p_header_num => 1);
100492 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
100493
100494 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100495
100496 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
100497 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100498 END IF;
100499
100500 --
100501 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100502 --
100503 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100504 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
100505 ELSE
100506 ---------------------------------------------------------------------------------------------------
100507 -- 4262811a Switch Sign
100508 ---------------------------------------------------------------------------------------------------
100509 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
100510 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100511 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100512 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100513 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100514 -- 5132302
100515 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100516 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100517
100518 END IF;
100519
100520 -- 4955764
100521 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100522 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100523
100524
100525 XLA_AE_LINES_PKG.ValidateCurrentLine;
100526 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100527
100528 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100529 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100530 ,p_balance_type_code => l_balance_type_code);
100531
100532 END IF;
100533
100534 -----------------------------------------------------------------------------------------
100535 -- 4262811 Multiperiod Accounting
100536 -----------------------------------------------------------------------------------------
100537 -- No MPA option is assigned.
100538
100539
100540 END IF;
100541 END IF;
100542 --
100543
100544 --
100545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100546 trace
100547 (p_msg => 'END of AcctLineType_213'
100548 ,p_level => C_LEVEL_PROCEDURE
100549 ,p_module => l_log_module);
100550 END IF;
100551 --
100552 EXCEPTION
100553 WHEN xla_exceptions_pkg.application_exception THEN
100554 RAISE;
100555 WHEN OTHERS THEN
100556 xla_exceptions_pkg.raise_message
100557 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_213');
100558 END AcctLineType_213;
100559 --
100560
100561 ---------------------------------------
100562 --
100563 -- PRIVATE FUNCTION
100564 -- AcctLineType_214
100565 --
100566 ---------------------------------------
100567 PROCEDURE AcctLineType_214 (
100568 p_application_id IN NUMBER
100569 ,p_event_id IN NUMBER
100570 ,p_calculate_acctd_flag IN VARCHAR2
100571 ,p_calculate_g_l_flag IN VARCHAR2
100572 ,p_actual_flag IN OUT VARCHAR2
100573 ,p_balance_type_code OUT VARCHAR2
100574 ,p_gain_or_loss_ref OUT VARCHAR2
100575
100576 --Transaction Account
100577 , p_source_1 IN NUMBER
100578 --Journal Line Type
100579 , p_source_2 IN VARCHAR2
100580 --Entered Amount
100581 , p_source_3 IN NUMBER
100582 --First Distribution Identifier
100583 , p_source_5 IN NUMBER
100584 --Distribution Type
100585 , p_source_6 IN VARCHAR2
100586 --Currency Code
100587 , p_source_7 IN VARCHAR2
100588 --Currency Conversion Date
100589 , p_source_8 IN DATE
100590 --Currency Conversion Rate
100591 , p_source_9 IN NUMBER
100592 --Currency Conversion Type
100593 , p_source_10 IN VARCHAR2
100594 --Accounted Amount
100595 , p_source_11 IN NUMBER
100596 )
100597 IS
100598
100599 l_component_type VARCHAR2(80);
100600 l_component_code VARCHAR2(30);
100601 l_component_type_code VARCHAR2(1);
100602 l_component_appl_id INTEGER;
100603 l_amb_context_code VARCHAR2(30);
100604 l_entity_code VARCHAR2(30);
100605 l_event_class_code VARCHAR2(30);
100606 l_ae_header_id NUMBER;
100607 l_event_type_code VARCHAR2(30);
100608 l_line_definition_code VARCHAR2(30);
100609 l_line_definition_owner_code VARCHAR2(1);
100610 --
100611 -- adr variables
100615 l_adr_accounting_coa_id NUMBER;
100612 l_segment VARCHAR2(30);
100613 l_ccid NUMBER;
100614 l_adr_transaction_coa_id NUMBER;
100616 l_adr_flexfield_segment_code VARCHAR2(30);
100617 l_adr_flex_value_set_id NUMBER;
100618 l_adr_value_type_code VARCHAR2(30);
100619 l_adr_value_combination_id NUMBER;
100620 l_adr_value_segment_code VARCHAR2(30);
100621
100622 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
100623 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
100624 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
100625 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
100626
100627 -- 4262811 Variables ------------------------------------------------------------------------------------------
100628 l_entered_amt_idx NUMBER;
100629 l_accted_amt_idx NUMBER;
100630 l_acc_rev_flag VARCHAR2(1);
100631 l_accrual_line_num NUMBER;
100632 l_tmp_amt NUMBER;
100633 l_acc_rev_natural_side_code VARCHAR2(1);
100634
100635 l_num_entries NUMBER;
100636 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
100637 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
100638 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
100639 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
100640 l_recog_line_1 NUMBER;
100641 l_recog_line_2 NUMBER;
100642
100643 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
100644 l_bflow_applied_to_amt NUMBER; -- 5132302
100645 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
100646
100647 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100648
100649 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
100650 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
100651
100652 ---------------------------------------------------------------------------------------------------------------
100653
100654
100655 --
100656 -- bulk performance
100657 --
100658 l_balance_type_code VARCHAR2(1);
100659 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
100660 l_log_module VARCHAR2(240);
100661
100662 --
100663 -- Upgrade strategy
100664 --
100665 l_actual_upg_option VARCHAR2(1);
100666 l_enc_upg_option VARCHAR2(1);
100667
100668 --
100669 BEGIN
100670 --
100671 IF g_log_enabled THEN
100672 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_214';
100673 END IF;
100674 --
100675 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100676
100677 trace
100678 (p_msg => 'BEGIN of AcctLineType_214'
100679 ,p_level => C_LEVEL_PROCEDURE
100680 ,p_module => l_log_module);
100681
100682 END IF;
100683 --
100684 l_component_type := 'AMB_JLT';
100685 l_component_code := 'OHV';
100686 l_component_type_code := 'S';
100687 l_component_appl_id := 555;
100688 l_amb_context_code := 'DEFAULT';
100689 l_entity_code := 'PRODUCTION';
100690 l_event_class_code := 'BATCH_CLOSE';
100691 l_event_type_code := 'CLOS';
100692 l_line_definition_owner_code := 'S';
100693 l_line_definition_code := 'BATCH_CLOSE';
100694 --
100695 l_balance_type_code := 'A';
100696 l_segment := NULL;
100697 l_ccid := NULL;
100698 l_adr_transaction_coa_id := NULL;
100699 l_adr_accounting_coa_id := NULL;
100700 l_adr_flexfield_segment_code := NULL;
100701 l_adr_flex_value_set_id := NULL;
100702 l_adr_value_type_code := NULL;
100703 l_adr_value_combination_id := NULL;
100704 l_adr_value_segment_code := NULL;
100705
100706 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
100707 l_bflow_class_code := ''; -- 4219869 Business Flow
100708 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
100709 l_budgetary_control_flag := 'N';
100710
100711 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100712 l_bflow_applied_to_amt := NULL; -- 5132302
100713 l_entered_amt_idx := NULL; -- 4262811
100714 l_accted_amt_idx := NULL; -- 4262811
100715 l_acc_rev_flag := NULL; -- 4262811
100716 l_accrual_line_num := NULL; -- 4262811
100717 l_tmp_amt := NULL; -- 4262811
100718 --
100719
100720 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100721 l_balance_type_code <> 'B' THEN
100722 IF NVL(p_source_2,'
100723 ') = 'OHV'
100724 THEN
100725
100726 --
100727 XLA_AE_LINES_PKG.SetNewLine;
100728
100729 p_balance_type_code := l_balance_type_code;
100730 -- set the flag so later we will know whether the gain loss line needs to be created
100731
100732 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100733 p_actual_flag :='A';
100734 END IF;
100735
100736 --
100737 -- bulk performance
100738 --
100739 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100743 --
100740 p_header_num => 0); -- 4262811
100741 --
100742 -- set accounting line options
100744 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100745 p_natural_side_code => 'D'
100746 , p_gain_or_loss_flag => 'N'
100747 , p_gl_transfer_mode_code => 'D'
100748 , p_acct_entry_type_code => 'A'
100749 , p_switch_side_flag => 'Y'
100750 , p_merge_duplicate_code => 'W'
100751 );
100752 --
100753 l_acc_rev_natural_side_code := 'C'; -- 4262811
100754 --
100755 --
100756 -- set accounting line type info
100757 --
100758 xla_ae_lines_pkg.SetAcctLineType
100759 (p_component_type => l_component_type
100760 ,p_event_type_code => l_event_type_code
100761 ,p_line_definition_owner_code => l_line_definition_owner_code
100762 ,p_line_definition_code => l_line_definition_code
100763 ,p_accounting_line_code => l_component_code
100764 ,p_accounting_line_type_code => l_component_type_code
100765 ,p_accounting_line_appl_id => l_component_appl_id
100766 ,p_amb_context_code => l_amb_context_code
100767 ,p_entity_code => l_entity_code
100768 ,p_event_class_code => l_event_class_code);
100769 --
100770 -- set accounting class
100771 --
100772 xla_ae_lines_pkg.SetAcctClass(
100773 p_accounting_class_code => 'OHV'
100774 , p_ae_header_id => l_ae_header_id
100775 );
100776
100777 --
100778 -- set rounding class
100779 --
100780 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100781 'OHV';
100782
100783 --
100784 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100785 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100786 --
100787 -- bulk performance
100788 --
100789 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100790
100791 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100792 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100793
100794 -- 4955764
100795 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100796 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100797
100798 -- 4458381 Public Sector Enh
100799
100800 --
100801 -- set accounting attributes for the line type
100802 --
100803 l_entered_amt_idx := 3;
100804 l_accted_amt_idx := 8;
100805 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100806 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100807 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
100808 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100809 l_rec_acct_attrs.array_char_value(2) := p_source_6;
100810 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100811 l_rec_acct_attrs.array_num_value(3) := p_source_3;
100812 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100813 l_rec_acct_attrs.array_char_value(4) := p_source_7;
100814 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100815 l_rec_acct_attrs.array_date_value(5) := p_source_8;
100816 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100817 l_rec_acct_attrs.array_num_value(6) := p_source_9;
100818 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100819 l_rec_acct_attrs.array_char_value(7) := p_source_10;
100820 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100821 l_rec_acct_attrs.array_num_value(8) := p_source_11;
100822
100823 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100824 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100825
100826 ---------------------------------------------------------------------------------------------------------------
100827 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100828 ---------------------------------------------------------------------------------------------------------------
100829 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100830
100831 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100832 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100833
100834 IF xla_accounting_cache_pkg.GetValueChar
100835 (p_source_code => 'LEDGER_CATEGORY_CODE'
100836 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100837 AND l_bflow_method_code = 'PRIOR_ENTRY'
100838 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100839 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100840 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100841 )
100842 THEN
100843 xla_ae_lines_pkg.BflowUpgEntry
100844 (p_business_method_code => l_bflow_method_code
100845 ,p_business_class_code => l_bflow_class_code
100846 ,p_balance_type => l_balance_type_code);
100847 ELSE
100851
100848 NULL;
100849 -- No business flow processing for business flow method of NONE.
100850 END IF;
100852 --
100853 -- call analytical criteria
100854 --
100855
100856 --
100857 -- call description
100858 --
100859 -- No description or it is inherited.
100860 --
100861 -- call ADRs
100862 -- Bug 4922099
100863 --
100864 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100865 (NVL(l_actual_upg_option, 'N') = 'O') OR
100866 (NVL(l_enc_upg_option, 'N') = 'O')
100867 )
100868 THEN
100869 NULL;
100870 --
100871 --
100872
100873 l_ccid := AcctDerRule_28(
100874 p_application_id => p_application_id
100875 , p_ae_header_id => l_ae_header_id
100876 , p_source_1 => p_source_1
100877 , p_source_2 => p_source_2
100878 , x_transaction_coa_id => l_adr_transaction_coa_id
100879 , x_accounting_coa_id => l_adr_accounting_coa_id
100880 , x_value_type_code => l_adr_value_type_code
100881 , p_side => 'NA'
100882 );
100883
100884 xla_ae_lines_pkg.set_ccid(
100885 p_code_combination_id => l_ccid
100886 , p_value_type_code => l_adr_value_type_code
100887 , p_transaction_coa_id => l_adr_transaction_coa_id
100888 , p_accounting_coa_id => l_adr_accounting_coa_id
100889 , p_adr_code => 'OHV'
100890 , p_adr_type_code => 'S'
100891 , p_component_type => l_component_type
100892 , p_component_code => l_component_code
100893 , p_component_type_code => l_component_type_code
100894 , p_component_appl_id => l_component_appl_id
100895 , p_amb_context_code => l_amb_context_code
100896 , p_side => 'NA'
100897 );
100898
100899
100900 --
100901 --
100902 END IF;
100903 --
100904 -- Bug 4922099
100905 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100906 (NVL(l_enc_upg_option, 'N') = 'O')
100907 ) AND
100908 (l_bflow_method_code = 'PRIOR_ENTRY')
100909 )
100910 THEN
100911 IF
100912 --
100913 1 = 2
100914 --
100915 THEN
100916 xla_accounting_err_pkg.build_message
100917 (p_appli_s_name => 'XLA'
100918 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100919 ,p_token_1 => 'LINE_NUMBER'
100920 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
100921 ,p_token_2 => 'LINE_TYPE_NAME'
100922 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
100923 l_component_type
100924 ,l_component_code
100925 ,l_component_type_code
100926 ,l_component_appl_id
100927 ,l_amb_context_code
100928 ,l_entity_code
100929 ,l_event_class_code
100930 )
100931 ,p_token_3 => 'OWNER'
100932 ,p_value_3 => xla_lookups_pkg.get_meaning(
100933 p_lookup_type => 'XLA_OWNER_TYPE'
100934 ,p_lookup_code => l_component_type_code
100935 )
100936 ,p_token_4 => 'PRODUCT_NAME'
100937 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100938 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100939 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100940 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100941 ,p_ae_header_id => NULL
100942 );
100943
100944 IF (C_LEVEL_ERROR>= g_log_level) THEN
100945 trace
100946 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100947 ,p_level => C_LEVEL_ERROR
100948 ,p_module => l_log_module);
100949 END IF;
100950 END IF;
100951 END IF;
100952 --
100953 --
100954 ------------------------------------------------------------------------------------------------
100955 -- 4219869 Business Flow
100956 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100957 -- Prior Entry. Currently, the following code is always generated.
100958 ------------------------------------------------------------------------------------------------
100959 XLA_AE_LINES_PKG.ValidateCurrentLine;
100960
100964 ------------------------------------------------------------------------------------
100961 ------------------------------------------------------------------------------------
100962 -- 4219869 Business Flow
100963 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100965 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100966
100967 ----------------------------------------------------------------------------------
100968 -- 4219869 Business Flow
100969 -- Update journal entry status -- Need to generate this within IF <condition>
100970 ----------------------------------------------------------------------------------
100971 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100972 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100973 ,p_balance_type_code => l_balance_type_code
100974 );
100975
100976 -------------------------------------------------------------------------------------------
100977 -- 4262811 - Generate the Accrual Reversal lines
100978 -------------------------------------------------------------------------------------------
100979 BEGIN
100980 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100981 (g_array_event(p_event_id).array_value_num('header_index'));
100982 IF l_acc_rev_flag IS NULL THEN
100983 l_acc_rev_flag := 'N';
100984 END IF;
100985 EXCEPTION
100986 WHEN OTHERS THEN
100987 l_acc_rev_flag := 'N';
100988 END;
100989 --
100990 IF (l_acc_rev_flag = 'Y') THEN
100991
100992 -- 4645092 ------------------------------------------------------------------------------
100993 -- To allow MPA report to determine if it should generate report process
100994 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100995 ------------------------------------------------------------------------------------------
100996
100997 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100998 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100999 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
101000 -- call ADRs
101001 -- Bug 4922099
101002 --
101003 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101004 (NVL(l_actual_upg_option, 'N') = 'O') OR
101005 (NVL(l_enc_upg_option, 'N') = 'O')
101006 )
101007 THEN
101008 NULL;
101009 --
101010 --
101011
101012 l_ccid := AcctDerRule_28(
101013 p_application_id => p_application_id
101014 , p_ae_header_id => l_ae_header_id
101015 , p_source_1 => p_source_1
101016 , p_source_2 => p_source_2
101017 , x_transaction_coa_id => l_adr_transaction_coa_id
101018 , x_accounting_coa_id => l_adr_accounting_coa_id
101019 , x_value_type_code => l_adr_value_type_code
101020 , p_side => 'NA'
101021 );
101022
101023 xla_ae_lines_pkg.set_ccid(
101024 p_code_combination_id => l_ccid
101025 , p_value_type_code => l_adr_value_type_code
101026 , p_transaction_coa_id => l_adr_transaction_coa_id
101027 , p_accounting_coa_id => l_adr_accounting_coa_id
101028 , p_adr_code => 'OHV'
101029 , p_adr_type_code => 'S'
101030 , p_component_type => l_component_type
101031 , p_component_code => l_component_code
101032 , p_component_type_code => l_component_type_code
101033 , p_component_appl_id => l_component_appl_id
101034 , p_amb_context_code => l_amb_context_code
101035 , p_side => 'NA'
101036 );
101037
101038
101039 --
101040 --
101041 END IF;
101042
101043 --
101044 -- Update the line information that should be overwritten
101045 --
101046 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101047 p_header_num => 1);
101048 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
101049
101050 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101051
101052 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
101053 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101054 END IF;
101055
101056 --
101057 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101058 --
101059 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101060 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
101061 ELSE
101062 ---------------------------------------------------------------------------------------------------
101063 -- 4262811a Switch Sign
101064 ---------------------------------------------------------------------------------------------------
101065 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
101066 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101067 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101068 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101072 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101069 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101070 -- 5132302
101071 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101073
101074 END IF;
101075
101076 -- 4955764
101077 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101078 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101079
101080
101081 XLA_AE_LINES_PKG.ValidateCurrentLine;
101082 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101083
101084 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101085 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101086 ,p_balance_type_code => l_balance_type_code);
101087
101088 END IF;
101089
101090 -----------------------------------------------------------------------------------------
101091 -- 4262811 Multiperiod Accounting
101092 -----------------------------------------------------------------------------------------
101093 -- No MPA option is assigned.
101094
101095
101096 END IF;
101097 END IF;
101098 --
101099
101100 --
101101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101102 trace
101103 (p_msg => 'END of AcctLineType_214'
101104 ,p_level => C_LEVEL_PROCEDURE
101105 ,p_module => l_log_module);
101106 END IF;
101107 --
101108 EXCEPTION
101109 WHEN xla_exceptions_pkg.application_exception THEN
101110 RAISE;
101111 WHEN OTHERS THEN
101112 xla_exceptions_pkg.raise_message
101113 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_214');
101114 END AcctLineType_214;
101115 --
101116
101117 ---------------------------------------
101118 --
101119 -- PRIVATE FUNCTION
101120 -- AcctLineType_215
101121 --
101122 ---------------------------------------
101123 PROCEDURE AcctLineType_215 (
101124 p_application_id IN NUMBER
101125 ,p_event_id IN NUMBER
101126 ,p_calculate_acctd_flag IN VARCHAR2
101127 ,p_calculate_g_l_flag IN VARCHAR2
101128 ,p_actual_flag IN OUT VARCHAR2
101129 ,p_balance_type_code OUT VARCHAR2
101130 ,p_gain_or_loss_ref OUT VARCHAR2
101131
101132 --Transaction Account
101133 , p_source_1 IN NUMBER
101134 --Journal Line Type
101135 , p_source_2 IN VARCHAR2
101136 --Entered Amount
101137 , p_source_3 IN NUMBER
101138 --First Distribution Identifier
101139 , p_source_5 IN NUMBER
101140 --Distribution Type
101141 , p_source_6 IN VARCHAR2
101142 --Currency Code
101143 , p_source_7 IN VARCHAR2
101144 --Currency Conversion Date
101145 , p_source_8 IN DATE
101146 --Currency Conversion Rate
101147 , p_source_9 IN NUMBER
101148 --Currency Conversion Type
101149 , p_source_10 IN VARCHAR2
101150 --Accounted Amount
101151 , p_source_11 IN NUMBER
101152 )
101153 IS
101154
101155 l_component_type VARCHAR2(80);
101156 l_component_code VARCHAR2(30);
101157 l_component_type_code VARCHAR2(1);
101158 l_component_appl_id INTEGER;
101159 l_amb_context_code VARCHAR2(30);
101160 l_entity_code VARCHAR2(30);
101161 l_event_class_code VARCHAR2(30);
101162 l_ae_header_id NUMBER;
101163 l_event_type_code VARCHAR2(30);
101164 l_line_definition_code VARCHAR2(30);
101165 l_line_definition_owner_code VARCHAR2(1);
101166 --
101167 -- adr variables
101168 l_segment VARCHAR2(30);
101169 l_ccid NUMBER;
101170 l_adr_transaction_coa_id NUMBER;
101171 l_adr_accounting_coa_id NUMBER;
101172 l_adr_flexfield_segment_code VARCHAR2(30);
101173 l_adr_flex_value_set_id NUMBER;
101174 l_adr_value_type_code VARCHAR2(30);
101175 l_adr_value_combination_id NUMBER;
101176 l_adr_value_segment_code VARCHAR2(30);
101177
101178 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
101179 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
101180 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
101181 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
101182
101183 -- 4262811 Variables ------------------------------------------------------------------------------------------
101184 l_entered_amt_idx NUMBER;
101185 l_accted_amt_idx NUMBER;
101186 l_acc_rev_flag VARCHAR2(1);
101187 l_accrual_line_num NUMBER;
101188 l_tmp_amt NUMBER;
101189 l_acc_rev_natural_side_code VARCHAR2(1);
101190
101191 l_num_entries NUMBER;
101192 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
101193 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
101194 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
101195 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
101196 l_recog_line_1 NUMBER;
101197 l_recog_line_2 NUMBER;
101198
101199 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
101200 l_bflow_applied_to_amt NUMBER; -- 5132302
101204
101201 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
101202
101203 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101205 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
101206 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
101207
101208 ---------------------------------------------------------------------------------------------------------------
101209
101210
101211 --
101212 -- bulk performance
101213 --
101214 l_balance_type_code VARCHAR2(1);
101215 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
101216 l_log_module VARCHAR2(240);
101217
101218 --
101219 -- Upgrade strategy
101220 --
101221 l_actual_upg_option VARCHAR2(1);
101222 l_enc_upg_option VARCHAR2(1);
101223
101224 --
101225 BEGIN
101226 --
101227 IF g_log_enabled THEN
101228 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_215';
101229 END IF;
101230 --
101231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101232
101233 trace
101234 (p_msg => 'BEGIN of AcctLineType_215'
101235 ,p_level => C_LEVEL_PROCEDURE
101236 ,p_module => l_log_module);
101237
101238 END IF;
101239 --
101240 l_component_type := 'AMB_JLT';
101241 l_component_code := 'OVH';
101242 l_component_type_code := 'S';
101243 l_component_appl_id := 555;
101244 l_amb_context_code := 'DEFAULT';
101245 l_entity_code := 'PRODUCTION';
101246 l_event_class_code := 'BATCH_MATERIAL';
101247 l_event_type_code := 'CERT';
101248 l_line_definition_owner_code := 'S';
101249 l_line_definition_code := 'BATCH_COMPLETION';
101250 --
101251 l_balance_type_code := 'A';
101252 l_segment := NULL;
101253 l_ccid := NULL;
101254 l_adr_transaction_coa_id := NULL;
101255 l_adr_accounting_coa_id := NULL;
101256 l_adr_flexfield_segment_code := NULL;
101257 l_adr_flex_value_set_id := NULL;
101258 l_adr_value_type_code := NULL;
101259 l_adr_value_combination_id := NULL;
101260 l_adr_value_segment_code := NULL;
101261
101262 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
101263 l_bflow_class_code := ''; -- 4219869 Business Flow
101264 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
101265 l_budgetary_control_flag := 'N';
101266
101267 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101268 l_bflow_applied_to_amt := NULL; -- 5132302
101269 l_entered_amt_idx := NULL; -- 4262811
101270 l_accted_amt_idx := NULL; -- 4262811
101271 l_acc_rev_flag := NULL; -- 4262811
101272 l_accrual_line_num := NULL; -- 4262811
101273 l_tmp_amt := NULL; -- 4262811
101274 --
101275
101276 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101277 l_balance_type_code <> 'B' THEN
101278 IF NVL(p_source_2,'
101279 ') = 'OVH'
101280 THEN
101281
101282 --
101283 XLA_AE_LINES_PKG.SetNewLine;
101284
101285 p_balance_type_code := l_balance_type_code;
101286 -- set the flag so later we will know whether the gain loss line needs to be created
101287
101288 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101289 p_actual_flag :='A';
101290 END IF;
101291
101292 --
101293 -- bulk performance
101294 --
101295 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101296 p_header_num => 0); -- 4262811
101297 --
101298 -- set accounting line options
101299 --
101300 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101301 p_natural_side_code => 'D'
101302 , p_gain_or_loss_flag => 'N'
101303 , p_gl_transfer_mode_code => 'D'
101304 , p_acct_entry_type_code => 'A'
101305 , p_switch_side_flag => 'Y'
101306 , p_merge_duplicate_code => 'W'
101307 );
101308 --
101309 l_acc_rev_natural_side_code := 'C'; -- 4262811
101310 --
101311 --
101312 -- set accounting line type info
101313 --
101314 xla_ae_lines_pkg.SetAcctLineType
101315 (p_component_type => l_component_type
101316 ,p_event_type_code => l_event_type_code
101317 ,p_line_definition_owner_code => l_line_definition_owner_code
101318 ,p_line_definition_code => l_line_definition_code
101319 ,p_accounting_line_code => l_component_code
101320 ,p_accounting_line_type_code => l_component_type_code
101321 ,p_accounting_line_appl_id => l_component_appl_id
101322 ,p_amb_context_code => l_amb_context_code
101323 ,p_entity_code => l_entity_code
101324 ,p_event_class_code => l_event_class_code);
101325 --
101326 -- set accounting class
101327 --
101328 xla_ae_lines_pkg.SetAcctClass(
101329 p_accounting_class_code => 'OVERHEAD_ABSORPTION'
101330 , p_ae_header_id => l_ae_header_id
101331 );
101332
101333 --
101334 -- set rounding class
101335 --
101339 --
101336 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101337 'OVERHEAD_ABSORPTION';
101338
101340 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101341 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101342 --
101343 -- bulk performance
101344 --
101345 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101346
101347 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101348 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101349
101350 -- 4955764
101351 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101352 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101353
101354 -- 4458381 Public Sector Enh
101355
101356 --
101357 -- set accounting attributes for the line type
101358 --
101359 l_entered_amt_idx := 3;
101360 l_accted_amt_idx := 8;
101361 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101362 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101363 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
101364 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101365 l_rec_acct_attrs.array_char_value(2) := p_source_6;
101366 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101367 l_rec_acct_attrs.array_num_value(3) := p_source_3;
101368 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101369 l_rec_acct_attrs.array_char_value(4) := p_source_7;
101370 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101371 l_rec_acct_attrs.array_date_value(5) := p_source_8;
101372 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101373 l_rec_acct_attrs.array_num_value(6) := p_source_9;
101374 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101375 l_rec_acct_attrs.array_char_value(7) := p_source_10;
101376 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101377 l_rec_acct_attrs.array_num_value(8) := p_source_11;
101378
101379 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101380 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101381
101382 ---------------------------------------------------------------------------------------------------------------
101383 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101384 ---------------------------------------------------------------------------------------------------------------
101385 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101386
101387 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101388 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101389
101390 IF xla_accounting_cache_pkg.GetValueChar
101391 (p_source_code => 'LEDGER_CATEGORY_CODE'
101392 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101393 AND l_bflow_method_code = 'PRIOR_ENTRY'
101394 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101395 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101396 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101397 )
101398 THEN
101399 xla_ae_lines_pkg.BflowUpgEntry
101400 (p_business_method_code => l_bflow_method_code
101401 ,p_business_class_code => l_bflow_class_code
101402 ,p_balance_type => l_balance_type_code);
101403 ELSE
101404 NULL;
101405 -- No business flow processing for business flow method of NONE.
101406 END IF;
101407
101408 --
101409 -- call analytical criteria
101410 --
101411
101412 --
101413 -- call description
101414 --
101415 -- No description or it is inherited.
101416 --
101417 -- call ADRs
101418 -- Bug 4922099
101419 --
101420 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101421 (NVL(l_actual_upg_option, 'N') = 'O') OR
101422 (NVL(l_enc_upg_option, 'N') = 'O')
101423 )
101424 THEN
101425 NULL;
101426 --
101427 --
101428
101429 l_ccid := AcctDerRule_29(
101430 p_application_id => p_application_id
101431 , p_ae_header_id => l_ae_header_id
101432 , p_source_1 => p_source_1
101433 , p_source_2 => p_source_2
101434 , x_transaction_coa_id => l_adr_transaction_coa_id
101435 , x_accounting_coa_id => l_adr_accounting_coa_id
101436 , x_value_type_code => l_adr_value_type_code
101437 , p_side => 'NA'
101438 );
101439
101440 xla_ae_lines_pkg.set_ccid(
101441 p_code_combination_id => l_ccid
101442 , p_value_type_code => l_adr_value_type_code
101443 , p_transaction_coa_id => l_adr_transaction_coa_id
101444 , p_accounting_coa_id => l_adr_accounting_coa_id
101445 , p_adr_code => 'OVH'
101446 , p_adr_type_code => 'S'
101447 , p_component_type => l_component_type
101448 , p_component_code => l_component_code
101449 , p_component_type_code => l_component_type_code
101453 );
101450 , p_component_appl_id => l_component_appl_id
101451 , p_amb_context_code => l_amb_context_code
101452 , p_side => 'NA'
101454
101455
101456 --
101457 --
101458 END IF;
101459 --
101460 -- Bug 4922099
101461 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101462 (NVL(l_enc_upg_option, 'N') = 'O')
101463 ) AND
101464 (l_bflow_method_code = 'PRIOR_ENTRY')
101465 )
101466 THEN
101467 IF
101468 --
101469 1 = 2
101470 --
101471 THEN
101472 xla_accounting_err_pkg.build_message
101473 (p_appli_s_name => 'XLA'
101474 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101475 ,p_token_1 => 'LINE_NUMBER'
101476 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
101477 ,p_token_2 => 'LINE_TYPE_NAME'
101478 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
101479 l_component_type
101480 ,l_component_code
101481 ,l_component_type_code
101482 ,l_component_appl_id
101483 ,l_amb_context_code
101484 ,l_entity_code
101485 ,l_event_class_code
101486 )
101487 ,p_token_3 => 'OWNER'
101488 ,p_value_3 => xla_lookups_pkg.get_meaning(
101489 p_lookup_type => 'XLA_OWNER_TYPE'
101490 ,p_lookup_code => l_component_type_code
101491 )
101492 ,p_token_4 => 'PRODUCT_NAME'
101493 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101494 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101495 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101496 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101497 ,p_ae_header_id => NULL
101498 );
101499
101500 IF (C_LEVEL_ERROR>= g_log_level) THEN
101501 trace
101502 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101503 ,p_level => C_LEVEL_ERROR
101504 ,p_module => l_log_module);
101505 END IF;
101506 END IF;
101507 END IF;
101508 --
101509 --
101510 ------------------------------------------------------------------------------------------------
101511 -- 4219869 Business Flow
101512 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101513 -- Prior Entry. Currently, the following code is always generated.
101514 ------------------------------------------------------------------------------------------------
101515 XLA_AE_LINES_PKG.ValidateCurrentLine;
101516
101517 ------------------------------------------------------------------------------------
101518 -- 4219869 Business Flow
101519 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101520 ------------------------------------------------------------------------------------
101521 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101522
101523 ----------------------------------------------------------------------------------
101524 -- 4219869 Business Flow
101525 -- Update journal entry status -- Need to generate this within IF <condition>
101526 ----------------------------------------------------------------------------------
101527 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101528 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101529 ,p_balance_type_code => l_balance_type_code
101530 );
101531
101532 -------------------------------------------------------------------------------------------
101533 -- 4262811 - Generate the Accrual Reversal lines
101534 -------------------------------------------------------------------------------------------
101535 BEGIN
101536 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101537 (g_array_event(p_event_id).array_value_num('header_index'));
101538 IF l_acc_rev_flag IS NULL THEN
101539 l_acc_rev_flag := 'N';
101540 END IF;
101541 EXCEPTION
101542 WHEN OTHERS THEN
101543 l_acc_rev_flag := 'N';
101544 END;
101545 --
101546 IF (l_acc_rev_flag = 'Y') THEN
101547
101551 ------------------------------------------------------------------------------------------
101548 -- 4645092 ------------------------------------------------------------------------------
101549 -- To allow MPA report to determine if it should generate report process
101550 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101552
101553 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101554 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101555 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
101556 -- call ADRs
101557 -- Bug 4922099
101558 --
101559 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101560 (NVL(l_actual_upg_option, 'N') = 'O') OR
101561 (NVL(l_enc_upg_option, 'N') = 'O')
101562 )
101563 THEN
101564 NULL;
101565 --
101566 --
101567
101568 l_ccid := AcctDerRule_29(
101569 p_application_id => p_application_id
101570 , p_ae_header_id => l_ae_header_id
101571 , p_source_1 => p_source_1
101572 , p_source_2 => p_source_2
101573 , x_transaction_coa_id => l_adr_transaction_coa_id
101574 , x_accounting_coa_id => l_adr_accounting_coa_id
101575 , x_value_type_code => l_adr_value_type_code
101576 , p_side => 'NA'
101577 );
101578
101579 xla_ae_lines_pkg.set_ccid(
101580 p_code_combination_id => l_ccid
101581 , p_value_type_code => l_adr_value_type_code
101582 , p_transaction_coa_id => l_adr_transaction_coa_id
101583 , p_accounting_coa_id => l_adr_accounting_coa_id
101584 , p_adr_code => 'OVH'
101585 , p_adr_type_code => 'S'
101586 , p_component_type => l_component_type
101587 , p_component_code => l_component_code
101588 , p_component_type_code => l_component_type_code
101589 , p_component_appl_id => l_component_appl_id
101590 , p_amb_context_code => l_amb_context_code
101591 , p_side => 'NA'
101592 );
101593
101594
101595 --
101596 --
101597 END IF;
101598
101599 --
101600 -- Update the line information that should be overwritten
101601 --
101602 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101603 p_header_num => 1);
101604 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
101605
101606 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101607
101608 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
101609 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101610 END IF;
101611
101612 --
101613 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101614 --
101615 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101616 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
101617 ELSE
101618 ---------------------------------------------------------------------------------------------------
101619 -- 4262811a Switch Sign
101620 ---------------------------------------------------------------------------------------------------
101621 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
101622 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101623 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101624 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101625 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101626 -- 5132302
101627 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101628 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101629
101630 END IF;
101631
101632 -- 4955764
101633 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101634 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101635
101636
101637 XLA_AE_LINES_PKG.ValidateCurrentLine;
101638 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101639
101640 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101641 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101642 ,p_balance_type_code => l_balance_type_code);
101643
101644 END IF;
101645
101646 -----------------------------------------------------------------------------------------
101647 -- 4262811 Multiperiod Accounting
101648 -----------------------------------------------------------------------------------------
101649 -- No MPA option is assigned.
101650
101651
101652 END IF;
101653 END IF;
101654 --
101655
101656 --
101657 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101658 trace
101659 (p_msg => 'END of AcctLineType_215'
101660 ,p_level => C_LEVEL_PROCEDURE
101661 ,p_module => l_log_module);
101662 END IF;
101663 --
101664 EXCEPTION
101668 xla_exceptions_pkg.raise_message
101665 WHEN xla_exceptions_pkg.application_exception THEN
101666 RAISE;
101667 WHEN OTHERS THEN
101669 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_215');
101670 END AcctLineType_215;
101671 --
101672
101673 ---------------------------------------
101674 --
101675 -- PRIVATE FUNCTION
101676 -- AcctLineType_216
101677 --
101678 ---------------------------------------
101679 PROCEDURE AcctLineType_216 (
101680 p_application_id IN NUMBER
101681 ,p_event_id IN NUMBER
101682 ,p_calculate_acctd_flag IN VARCHAR2
101683 ,p_calculate_g_l_flag IN VARCHAR2
101684 ,p_actual_flag IN OUT VARCHAR2
101685 ,p_balance_type_code OUT VARCHAR2
101686 ,p_gain_or_loss_ref OUT VARCHAR2
101687
101688 --Transaction Account
101689 , p_source_1 IN NUMBER
101690 --Journal Line Type
101691 , p_source_2 IN VARCHAR2
101692 --Entered Amount
101693 , p_source_3 IN NUMBER
101694 --First Distribution Identifier
101695 , p_source_5 IN NUMBER
101696 --Distribution Type
101697 , p_source_6 IN VARCHAR2
101698 --Currency Code
101699 , p_source_7 IN VARCHAR2
101700 --Currency Conversion Date
101701 , p_source_8 IN DATE
101702 --Currency Conversion Rate
101703 , p_source_9 IN NUMBER
101704 --Currency Conversion Type
101705 , p_source_10 IN VARCHAR2
101706 --Accounted Amount
101707 , p_source_11 IN NUMBER
101708 )
101709 IS
101710
101711 l_component_type VARCHAR2(80);
101712 l_component_code VARCHAR2(30);
101713 l_component_type_code VARCHAR2(1);
101714 l_component_appl_id INTEGER;
101715 l_amb_context_code VARCHAR2(30);
101716 l_entity_code VARCHAR2(30);
101717 l_event_class_code VARCHAR2(30);
101718 l_ae_header_id NUMBER;
101719 l_event_type_code VARCHAR2(30);
101720 l_line_definition_code VARCHAR2(30);
101721 l_line_definition_owner_code VARCHAR2(1);
101722 --
101723 -- adr variables
101724 l_segment VARCHAR2(30);
101725 l_ccid NUMBER;
101726 l_adr_transaction_coa_id NUMBER;
101727 l_adr_accounting_coa_id NUMBER;
101728 l_adr_flexfield_segment_code VARCHAR2(30);
101729 l_adr_flex_value_set_id NUMBER;
101730 l_adr_value_type_code VARCHAR2(30);
101731 l_adr_value_combination_id NUMBER;
101732 l_adr_value_segment_code VARCHAR2(30);
101733
101734 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
101735 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
101736 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
101737 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
101738
101739 -- 4262811 Variables ------------------------------------------------------------------------------------------
101740 l_entered_amt_idx NUMBER;
101741 l_accted_amt_idx NUMBER;
101742 l_acc_rev_flag VARCHAR2(1);
101743 l_accrual_line_num NUMBER;
101744 l_tmp_amt NUMBER;
101745 l_acc_rev_natural_side_code VARCHAR2(1);
101746
101747 l_num_entries NUMBER;
101748 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
101749 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
101750 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
101751 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
101752 l_recog_line_1 NUMBER;
101753 l_recog_line_2 NUMBER;
101754
101755 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
101756 l_bflow_applied_to_amt NUMBER; -- 5132302
101757 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
101758
101759 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101760
101761 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
101762 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
101763
101764 ---------------------------------------------------------------------------------------------------------------
101765
101766
101767 --
101768 -- bulk performance
101769 --
101770 l_balance_type_code VARCHAR2(1);
101771 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
101772 l_log_module VARCHAR2(240);
101773
101774 --
101775 -- Upgrade strategy
101776 --
101777 l_actual_upg_option VARCHAR2(1);
101778 l_enc_upg_option VARCHAR2(1);
101779
101780 --
101781 BEGIN
101782 --
101783 IF g_log_enabled THEN
101784 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_216';
101785 END IF;
101786 --
101787 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101788
101789 trace
101790 (p_msg => 'BEGIN of AcctLineType_216'
101791 ,p_level => C_LEVEL_PROCEDURE
101792 ,p_module => l_log_module);
101793
101794 END IF;
101795 --
101796 l_component_type := 'AMB_JLT';
101797 l_component_code := 'PIN';
101798 l_component_type_code := 'S';
101799 l_component_appl_id := 555;
101800 l_amb_context_code := 'DEFAULT';
101804 l_line_definition_owner_code := 'S';
101801 l_entity_code := 'INVENTORY';
101802 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
101803 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
101805 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
101806 --
101807 l_balance_type_code := 'A';
101808 l_segment := NULL;
101809 l_ccid := NULL;
101810 l_adr_transaction_coa_id := NULL;
101811 l_adr_accounting_coa_id := NULL;
101812 l_adr_flexfield_segment_code := NULL;
101813 l_adr_flex_value_set_id := NULL;
101814 l_adr_value_type_code := NULL;
101815 l_adr_value_combination_id := NULL;
101816 l_adr_value_segment_code := NULL;
101817
101818 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
101819 l_bflow_class_code := ''; -- 4219869 Business Flow
101820 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
101821 l_budgetary_control_flag := 'N';
101822
101823 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101824 l_bflow_applied_to_amt := NULL; -- 5132302
101825 l_entered_amt_idx := NULL; -- 4262811
101826 l_accted_amt_idx := NULL; -- 4262811
101827 l_acc_rev_flag := NULL; -- 4262811
101828 l_accrual_line_num := NULL; -- 4262811
101829 l_tmp_amt := NULL; -- 4262811
101830 --
101831
101832 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101833 l_balance_type_code <> 'B' THEN
101834 IF NVL(p_source_2,'
101835 ') = 'PIN'
101836 THEN
101837
101838 --
101839 XLA_AE_LINES_PKG.SetNewLine;
101840
101841 p_balance_type_code := l_balance_type_code;
101842 -- set the flag so later we will know whether the gain loss line needs to be created
101843
101844 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101845 p_actual_flag :='A';
101846 END IF;
101847
101848 --
101849 -- bulk performance
101850 --
101851 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101852 p_header_num => 0); -- 4262811
101853 --
101854 -- set accounting line options
101855 --
101856 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101857 p_natural_side_code => 'D'
101858 , p_gain_or_loss_flag => 'N'
101859 , p_gl_transfer_mode_code => 'D'
101860 , p_acct_entry_type_code => 'A'
101861 , p_switch_side_flag => 'Y'
101862 , p_merge_duplicate_code => 'W'
101863 );
101864 --
101865 l_acc_rev_natural_side_code := 'C'; -- 4262811
101866 --
101867 --
101868 -- set accounting line type info
101869 --
101870 xla_ae_lines_pkg.SetAcctLineType
101871 (p_component_type => l_component_type
101872 ,p_event_type_code => l_event_type_code
101873 ,p_line_definition_owner_code => l_line_definition_owner_code
101874 ,p_line_definition_code => l_line_definition_code
101875 ,p_accounting_line_code => l_component_code
101876 ,p_accounting_line_type_code => l_component_type_code
101877 ,p_accounting_line_appl_id => l_component_appl_id
101878 ,p_amb_context_code => l_amb_context_code
101879 ,p_entity_code => l_entity_code
101880 ,p_event_class_code => l_event_class_code);
101881 --
101882 -- set accounting class
101883 --
101884 xla_ae_lines_pkg.SetAcctClass(
101885 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
101886 , p_ae_header_id => l_ae_header_id
101887 );
101888
101889 --
101890 -- set rounding class
101891 --
101892 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101893 'PROFIT_IN_INVENTORY';
101894
101895 --
101896 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101897 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101898 --
101899 -- bulk performance
101900 --
101901 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101902
101903 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101904 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101905
101906 -- 4955764
101907 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101908 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101909
101910 -- 4458381 Public Sector Enh
101911
101912 --
101913 -- set accounting attributes for the line type
101914 --
101915 l_entered_amt_idx := 3;
101916 l_accted_amt_idx := 8;
101917 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101918 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101919 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
101920 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101921 l_rec_acct_attrs.array_char_value(2) := p_source_6;
101922 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101923 l_rec_acct_attrs.array_num_value(3) := p_source_3;
101927 l_rec_acct_attrs.array_date_value(5) := p_source_8;
101924 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101925 l_rec_acct_attrs.array_char_value(4) := p_source_7;
101926 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101928 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101929 l_rec_acct_attrs.array_num_value(6) := p_source_9;
101930 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101931 l_rec_acct_attrs.array_char_value(7) := p_source_10;
101932 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101933 l_rec_acct_attrs.array_num_value(8) := p_source_11;
101934
101935 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101936 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101937
101938 ---------------------------------------------------------------------------------------------------------------
101939 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101940 ---------------------------------------------------------------------------------------------------------------
101941 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101942
101943 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101944 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101945
101946 IF xla_accounting_cache_pkg.GetValueChar
101947 (p_source_code => 'LEDGER_CATEGORY_CODE'
101948 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101949 AND l_bflow_method_code = 'PRIOR_ENTRY'
101950 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101951 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101952 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101953 )
101954 THEN
101955 xla_ae_lines_pkg.BflowUpgEntry
101956 (p_business_method_code => l_bflow_method_code
101957 ,p_business_class_code => l_bflow_class_code
101958 ,p_balance_type => l_balance_type_code);
101959 ELSE
101960 NULL;
101961 -- No business flow processing for business flow method of NONE.
101962 END IF;
101963
101964 --
101965 -- call analytical criteria
101966 --
101967
101968 --
101969 -- call description
101970 --
101971 -- No description or it is inherited.
101972 --
101973 -- call ADRs
101974 -- Bug 4922099
101975 --
101976 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101977 (NVL(l_actual_upg_option, 'N') = 'O') OR
101978 (NVL(l_enc_upg_option, 'N') = 'O')
101979 )
101980 THEN
101981 NULL;
101982 --
101983 --
101984
101985 l_ccid := AcctDerRule_30(
101986 p_application_id => p_application_id
101987 , p_ae_header_id => l_ae_header_id
101988 , p_source_1 => p_source_1
101989 , p_source_2 => p_source_2
101990 , x_transaction_coa_id => l_adr_transaction_coa_id
101991 , x_accounting_coa_id => l_adr_accounting_coa_id
101992 , x_value_type_code => l_adr_value_type_code
101993 , p_side => 'NA'
101994 );
101995
101996 xla_ae_lines_pkg.set_ccid(
101997 p_code_combination_id => l_ccid
101998 , p_value_type_code => l_adr_value_type_code
101999 , p_transaction_coa_id => l_adr_transaction_coa_id
102000 , p_accounting_coa_id => l_adr_accounting_coa_id
102001 , p_adr_code => 'PIN'
102002 , p_adr_type_code => 'S'
102003 , p_component_type => l_component_type
102004 , p_component_code => l_component_code
102005 , p_component_type_code => l_component_type_code
102006 , p_component_appl_id => l_component_appl_id
102007 , p_amb_context_code => l_amb_context_code
102008 , p_side => 'NA'
102009 );
102010
102011
102012 --
102013 --
102014 END IF;
102015 --
102016 -- Bug 4922099
102017 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102018 (NVL(l_enc_upg_option, 'N') = 'O')
102019 ) AND
102020 (l_bflow_method_code = 'PRIOR_ENTRY')
102021 )
102022 THEN
102023 IF
102024 --
102025 1 = 2
102026 --
102027 THEN
102028 xla_accounting_err_pkg.build_message
102029 (p_appli_s_name => 'XLA'
102030 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102031 ,p_token_1 => 'LINE_NUMBER'
102032 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
102033 ,p_token_2 => 'LINE_TYPE_NAME'
102034 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
102035 l_component_type
102036 ,l_component_code
102037 ,l_component_type_code
102038 ,l_component_appl_id
102042 )
102039 ,l_amb_context_code
102040 ,l_entity_code
102041 ,l_event_class_code
102043 ,p_token_3 => 'OWNER'
102044 ,p_value_3 => xla_lookups_pkg.get_meaning(
102045 p_lookup_type => 'XLA_OWNER_TYPE'
102046 ,p_lookup_code => l_component_type_code
102047 )
102048 ,p_token_4 => 'PRODUCT_NAME'
102049 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102050 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102051 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102052 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102053 ,p_ae_header_id => NULL
102054 );
102055
102056 IF (C_LEVEL_ERROR>= g_log_level) THEN
102057 trace
102058 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102059 ,p_level => C_LEVEL_ERROR
102060 ,p_module => l_log_module);
102061 END IF;
102062 END IF;
102063 END IF;
102064 --
102065 --
102066 ------------------------------------------------------------------------------------------------
102067 -- 4219869 Business Flow
102068 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102069 -- Prior Entry. Currently, the following code is always generated.
102070 ------------------------------------------------------------------------------------------------
102071 XLA_AE_LINES_PKG.ValidateCurrentLine;
102072
102073 ------------------------------------------------------------------------------------
102074 -- 4219869 Business Flow
102075 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102076 ------------------------------------------------------------------------------------
102077 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102078
102079 ----------------------------------------------------------------------------------
102080 -- 4219869 Business Flow
102081 -- Update journal entry status -- Need to generate this within IF <condition>
102082 ----------------------------------------------------------------------------------
102083 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102084 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102085 ,p_balance_type_code => l_balance_type_code
102086 );
102087
102088 -------------------------------------------------------------------------------------------
102089 -- 4262811 - Generate the Accrual Reversal lines
102090 -------------------------------------------------------------------------------------------
102091 BEGIN
102092 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102093 (g_array_event(p_event_id).array_value_num('header_index'));
102094 IF l_acc_rev_flag IS NULL THEN
102095 l_acc_rev_flag := 'N';
102096 END IF;
102097 EXCEPTION
102098 WHEN OTHERS THEN
102099 l_acc_rev_flag := 'N';
102100 END;
102101 --
102102 IF (l_acc_rev_flag = 'Y') THEN
102103
102104 -- 4645092 ------------------------------------------------------------------------------
102105 -- To allow MPA report to determine if it should generate report process
102106 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102107 ------------------------------------------------------------------------------------------
102108
102109 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102110 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102111 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
102112 -- call ADRs
102113 -- Bug 4922099
102114 --
102115 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102116 (NVL(l_actual_upg_option, 'N') = 'O') OR
102117 (NVL(l_enc_upg_option, 'N') = 'O')
102118 )
102119 THEN
102120 NULL;
102121 --
102122 --
102123
102124 l_ccid := AcctDerRule_30(
102125 p_application_id => p_application_id
102126 , p_ae_header_id => l_ae_header_id
102127 , p_source_1 => p_source_1
102128 , p_source_2 => p_source_2
102129 , x_transaction_coa_id => l_adr_transaction_coa_id
102130 , x_accounting_coa_id => l_adr_accounting_coa_id
102131 , x_value_type_code => l_adr_value_type_code
102132 , p_side => 'NA'
102133 );
102134
102135 xla_ae_lines_pkg.set_ccid(
102136 p_code_combination_id => l_ccid
102137 , p_value_type_code => l_adr_value_type_code
102138 , p_transaction_coa_id => l_adr_transaction_coa_id
102142 , p_component_type => l_component_type
102139 , p_accounting_coa_id => l_adr_accounting_coa_id
102140 , p_adr_code => 'PIN'
102141 , p_adr_type_code => 'S'
102143 , p_component_code => l_component_code
102144 , p_component_type_code => l_component_type_code
102145 , p_component_appl_id => l_component_appl_id
102146 , p_amb_context_code => l_amb_context_code
102147 , p_side => 'NA'
102148 );
102149
102150
102151 --
102152 --
102153 END IF;
102154
102155 --
102156 -- Update the line information that should be overwritten
102157 --
102158 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102159 p_header_num => 1);
102160 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
102161
102162 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102163
102164 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
102165 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102166 END IF;
102167
102168 --
102169 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102170 --
102171 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102172 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
102173 ELSE
102174 ---------------------------------------------------------------------------------------------------
102175 -- 4262811a Switch Sign
102176 ---------------------------------------------------------------------------------------------------
102177 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
102178 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102179 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102180 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102181 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102182 -- 5132302
102183 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102184 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102185
102186 END IF;
102187
102188 -- 4955764
102189 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102190 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102191
102192
102193 XLA_AE_LINES_PKG.ValidateCurrentLine;
102194 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102195
102196 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102197 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102198 ,p_balance_type_code => l_balance_type_code);
102199
102200 END IF;
102201
102202 -----------------------------------------------------------------------------------------
102203 -- 4262811 Multiperiod Accounting
102204 -----------------------------------------------------------------------------------------
102205 -- No MPA option is assigned.
102206
102207
102208 END IF;
102209 END IF;
102210 --
102211
102212 --
102213 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102214 trace
102215 (p_msg => 'END of AcctLineType_216'
102216 ,p_level => C_LEVEL_PROCEDURE
102217 ,p_module => l_log_module);
102218 END IF;
102219 --
102220 EXCEPTION
102221 WHEN xla_exceptions_pkg.application_exception THEN
102222 RAISE;
102223 WHEN OTHERS THEN
102224 xla_exceptions_pkg.raise_message
102225 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_216');
102226 END AcctLineType_216;
102227 --
102228
102229 ---------------------------------------
102230 --
102231 -- PRIVATE FUNCTION
102232 -- AcctLineType_217
102233 --
102234 ---------------------------------------
102235 PROCEDURE AcctLineType_217 (
102236 p_application_id IN NUMBER
102237 ,p_event_id IN NUMBER
102238 ,p_calculate_acctd_flag IN VARCHAR2
102239 ,p_calculate_g_l_flag IN VARCHAR2
102240 ,p_actual_flag IN OUT VARCHAR2
102241 ,p_balance_type_code OUT VARCHAR2
102242 ,p_gain_or_loss_ref OUT VARCHAR2
102243
102244 --Transaction Account
102245 , p_source_1 IN NUMBER
102246 --Journal Line Type
102247 , p_source_2 IN VARCHAR2
102248 --Entered Amount
102249 , p_source_3 IN NUMBER
102250 --First Distribution Identifier
102251 , p_source_5 IN NUMBER
102252 --Distribution Type
102253 , p_source_6 IN VARCHAR2
102254 --Currency Code
102255 , p_source_7 IN VARCHAR2
102256 --Currency Conversion Date
102257 , p_source_8 IN DATE
102258 --Currency Conversion Rate
102259 , p_source_9 IN NUMBER
102260 --Currency Conversion Type
102261 , p_source_10 IN VARCHAR2
102262 --Accounted Amount
102266
102263 , p_source_11 IN NUMBER
102264 )
102265 IS
102267 l_component_type VARCHAR2(80);
102268 l_component_code VARCHAR2(30);
102269 l_component_type_code VARCHAR2(1);
102270 l_component_appl_id INTEGER;
102271 l_amb_context_code VARCHAR2(30);
102272 l_entity_code VARCHAR2(30);
102273 l_event_class_code VARCHAR2(30);
102274 l_ae_header_id NUMBER;
102275 l_event_type_code VARCHAR2(30);
102276 l_line_definition_code VARCHAR2(30);
102277 l_line_definition_owner_code VARCHAR2(1);
102278 --
102279 -- adr variables
102280 l_segment VARCHAR2(30);
102281 l_ccid NUMBER;
102282 l_adr_transaction_coa_id NUMBER;
102283 l_adr_accounting_coa_id NUMBER;
102284 l_adr_flexfield_segment_code VARCHAR2(30);
102285 l_adr_flex_value_set_id NUMBER;
102286 l_adr_value_type_code VARCHAR2(30);
102287 l_adr_value_combination_id NUMBER;
102288 l_adr_value_segment_code VARCHAR2(30);
102289
102290 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
102291 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
102292 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
102293 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
102294
102295 -- 4262811 Variables ------------------------------------------------------------------------------------------
102296 l_entered_amt_idx NUMBER;
102297 l_accted_amt_idx NUMBER;
102298 l_acc_rev_flag VARCHAR2(1);
102299 l_accrual_line_num NUMBER;
102300 l_tmp_amt NUMBER;
102301 l_acc_rev_natural_side_code VARCHAR2(1);
102302
102303 l_num_entries NUMBER;
102304 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
102305 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
102306 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
102307 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
102308 l_recog_line_1 NUMBER;
102309 l_recog_line_2 NUMBER;
102310
102311 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
102312 l_bflow_applied_to_amt NUMBER; -- 5132302
102313 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
102314
102315 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102316
102317 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
102318 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
102319
102320 ---------------------------------------------------------------------------------------------------------------
102321
102322
102323 --
102324 -- bulk performance
102325 --
102326 l_balance_type_code VARCHAR2(1);
102327 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
102328 l_log_module VARCHAR2(240);
102329
102330 --
102331 -- Upgrade strategy
102332 --
102333 l_actual_upg_option VARCHAR2(1);
102334 l_enc_upg_option VARCHAR2(1);
102335
102336 --
102337 BEGIN
102338 --
102339 IF g_log_enabled THEN
102340 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_217';
102341 END IF;
102342 --
102343 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102344
102345 trace
102346 (p_msg => 'BEGIN of AcctLineType_217'
102347 ,p_level => C_LEVEL_PROCEDURE
102348 ,p_module => l_log_module);
102349
102350 END IF;
102351 --
102352 l_component_type := 'AMB_JLT';
102353 l_component_code := 'PIN';
102354 l_component_type_code := 'S';
102355 l_component_appl_id := 555;
102356 l_amb_context_code := 'DEFAULT';
102357 l_entity_code := 'INVENTORY';
102358 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
102359 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
102360 l_line_definition_owner_code := 'S';
102361 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
102362 --
102363 l_balance_type_code := 'A';
102364 l_segment := NULL;
102365 l_ccid := NULL;
102366 l_adr_transaction_coa_id := NULL;
102367 l_adr_accounting_coa_id := NULL;
102368 l_adr_flexfield_segment_code := NULL;
102369 l_adr_flex_value_set_id := NULL;
102370 l_adr_value_type_code := NULL;
102371 l_adr_value_combination_id := NULL;
102372 l_adr_value_segment_code := NULL;
102373
102374 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
102375 l_bflow_class_code := ''; -- 4219869 Business Flow
102376 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
102377 l_budgetary_control_flag := 'N';
102378
102379 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102380 l_bflow_applied_to_amt := NULL; -- 5132302
102381 l_entered_amt_idx := NULL; -- 4262811
102382 l_accted_amt_idx := NULL; -- 4262811
102383 l_acc_rev_flag := NULL; -- 4262811
102384 l_accrual_line_num := NULL; -- 4262811
102385 l_tmp_amt := NULL; -- 4262811
102386 --
102387
102391 ') = 'PIN'
102388 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102389 l_balance_type_code <> 'B' THEN
102390 IF NVL(p_source_2,'
102392 THEN
102393
102394 --
102395 XLA_AE_LINES_PKG.SetNewLine;
102396
102397 p_balance_type_code := l_balance_type_code;
102398 -- set the flag so later we will know whether the gain loss line needs to be created
102399
102400 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102401 p_actual_flag :='A';
102402 END IF;
102403
102404 --
102405 -- bulk performance
102406 --
102407 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102408 p_header_num => 0); -- 4262811
102409 --
102410 -- set accounting line options
102411 --
102412 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102413 p_natural_side_code => 'D'
102414 , p_gain_or_loss_flag => 'N'
102415 , p_gl_transfer_mode_code => 'D'
102416 , p_acct_entry_type_code => 'A'
102417 , p_switch_side_flag => 'Y'
102418 , p_merge_duplicate_code => 'W'
102419 );
102420 --
102421 l_acc_rev_natural_side_code := 'C'; -- 4262811
102422 --
102423 --
102424 -- set accounting line type info
102425 --
102426 xla_ae_lines_pkg.SetAcctLineType
102427 (p_component_type => l_component_type
102428 ,p_event_type_code => l_event_type_code
102429 ,p_line_definition_owner_code => l_line_definition_owner_code
102430 ,p_line_definition_code => l_line_definition_code
102431 ,p_accounting_line_code => l_component_code
102432 ,p_accounting_line_type_code => l_component_type_code
102433 ,p_accounting_line_appl_id => l_component_appl_id
102434 ,p_amb_context_code => l_amb_context_code
102435 ,p_entity_code => l_entity_code
102436 ,p_event_class_code => l_event_class_code);
102437 --
102438 -- set accounting class
102439 --
102440 xla_ae_lines_pkg.SetAcctClass(
102441 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
102442 , p_ae_header_id => l_ae_header_id
102443 );
102444
102445 --
102446 -- set rounding class
102447 --
102448 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102449 'PROFIT_IN_INVENTORY';
102450
102451 --
102452 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102453 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102454 --
102455 -- bulk performance
102456 --
102457 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102458
102459 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102460 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102461
102462 -- 4955764
102463 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102464 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102465
102466 -- 4458381 Public Sector Enh
102467
102468 --
102469 -- set accounting attributes for the line type
102470 --
102471 l_entered_amt_idx := 3;
102472 l_accted_amt_idx := 8;
102473 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102474 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102475 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
102476 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102477 l_rec_acct_attrs.array_char_value(2) := p_source_6;
102478 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102479 l_rec_acct_attrs.array_num_value(3) := p_source_3;
102480 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102481 l_rec_acct_attrs.array_char_value(4) := p_source_7;
102482 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102483 l_rec_acct_attrs.array_date_value(5) := p_source_8;
102484 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102485 l_rec_acct_attrs.array_num_value(6) := p_source_9;
102486 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102487 l_rec_acct_attrs.array_char_value(7) := p_source_10;
102488 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102489 l_rec_acct_attrs.array_num_value(8) := p_source_11;
102490
102491 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102492 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102493
102494 ---------------------------------------------------------------------------------------------------------------
102495 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102496 ---------------------------------------------------------------------------------------------------------------
102497 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102498
102499 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102500 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102501
102502 IF xla_accounting_cache_pkg.GetValueChar
102506 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102503 (p_source_code => 'LEDGER_CATEGORY_CODE'
102504 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102505 AND l_bflow_method_code = 'PRIOR_ENTRY'
102507 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102508 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102509 )
102510 THEN
102511 xla_ae_lines_pkg.BflowUpgEntry
102512 (p_business_method_code => l_bflow_method_code
102513 ,p_business_class_code => l_bflow_class_code
102514 ,p_balance_type => l_balance_type_code);
102515 ELSE
102516 NULL;
102517 -- No business flow processing for business flow method of NONE.
102518 END IF;
102519
102520 --
102521 -- call analytical criteria
102522 --
102523
102524 --
102525 -- call description
102526 --
102527 -- No description or it is inherited.
102528 --
102529 -- call ADRs
102530 -- Bug 4922099
102531 --
102532 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102533 (NVL(l_actual_upg_option, 'N') = 'O') OR
102534 (NVL(l_enc_upg_option, 'N') = 'O')
102535 )
102536 THEN
102537 NULL;
102538 --
102539 --
102540
102541 l_ccid := AcctDerRule_30(
102542 p_application_id => p_application_id
102543 , p_ae_header_id => l_ae_header_id
102544 , p_source_1 => p_source_1
102545 , p_source_2 => p_source_2
102546 , x_transaction_coa_id => l_adr_transaction_coa_id
102547 , x_accounting_coa_id => l_adr_accounting_coa_id
102548 , x_value_type_code => l_adr_value_type_code
102549 , p_side => 'NA'
102550 );
102551
102552 xla_ae_lines_pkg.set_ccid(
102553 p_code_combination_id => l_ccid
102554 , p_value_type_code => l_adr_value_type_code
102555 , p_transaction_coa_id => l_adr_transaction_coa_id
102556 , p_accounting_coa_id => l_adr_accounting_coa_id
102557 , p_adr_code => 'PIN'
102558 , p_adr_type_code => 'S'
102559 , p_component_type => l_component_type
102560 , p_component_code => l_component_code
102561 , p_component_type_code => l_component_type_code
102562 , p_component_appl_id => l_component_appl_id
102563 , p_amb_context_code => l_amb_context_code
102564 , p_side => 'NA'
102565 );
102566
102567
102568 --
102569 --
102570 END IF;
102571 --
102572 -- Bug 4922099
102573 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102574 (NVL(l_enc_upg_option, 'N') = 'O')
102575 ) AND
102576 (l_bflow_method_code = 'PRIOR_ENTRY')
102577 )
102578 THEN
102579 IF
102580 --
102581 1 = 2
102582 --
102583 THEN
102584 xla_accounting_err_pkg.build_message
102585 (p_appli_s_name => 'XLA'
102586 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102587 ,p_token_1 => 'LINE_NUMBER'
102588 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
102589 ,p_token_2 => 'LINE_TYPE_NAME'
102590 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
102591 l_component_type
102592 ,l_component_code
102593 ,l_component_type_code
102594 ,l_component_appl_id
102595 ,l_amb_context_code
102596 ,l_entity_code
102597 ,l_event_class_code
102598 )
102599 ,p_token_3 => 'OWNER'
102600 ,p_value_3 => xla_lookups_pkg.get_meaning(
102601 p_lookup_type => 'XLA_OWNER_TYPE'
102602 ,p_lookup_code => l_component_type_code
102603 )
102604 ,p_token_4 => 'PRODUCT_NAME'
102605 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102606 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102607 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102608 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102609 ,p_ae_header_id => NULL
102610 );
102611
102612 IF (C_LEVEL_ERROR>= g_log_level) THEN
102613 trace
102617 END IF;
102614 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102615 ,p_level => C_LEVEL_ERROR
102616 ,p_module => l_log_module);
102618 END IF;
102619 END IF;
102620 --
102621 --
102622 ------------------------------------------------------------------------------------------------
102623 -- 4219869 Business Flow
102624 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102625 -- Prior Entry. Currently, the following code is always generated.
102626 ------------------------------------------------------------------------------------------------
102627 XLA_AE_LINES_PKG.ValidateCurrentLine;
102628
102629 ------------------------------------------------------------------------------------
102630 -- 4219869 Business Flow
102631 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102632 ------------------------------------------------------------------------------------
102633 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102634
102635 ----------------------------------------------------------------------------------
102636 -- 4219869 Business Flow
102637 -- Update journal entry status -- Need to generate this within IF <condition>
102638 ----------------------------------------------------------------------------------
102639 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102640 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102641 ,p_balance_type_code => l_balance_type_code
102642 );
102643
102644 -------------------------------------------------------------------------------------------
102645 -- 4262811 - Generate the Accrual Reversal lines
102646 -------------------------------------------------------------------------------------------
102647 BEGIN
102648 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102649 (g_array_event(p_event_id).array_value_num('header_index'));
102650 IF l_acc_rev_flag IS NULL THEN
102651 l_acc_rev_flag := 'N';
102652 END IF;
102653 EXCEPTION
102654 WHEN OTHERS THEN
102655 l_acc_rev_flag := 'N';
102656 END;
102657 --
102658 IF (l_acc_rev_flag = 'Y') THEN
102659
102660 -- 4645092 ------------------------------------------------------------------------------
102661 -- To allow MPA report to determine if it should generate report process
102662 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102663 ------------------------------------------------------------------------------------------
102664
102665 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102666 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102667 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
102668 -- call ADRs
102669 -- Bug 4922099
102670 --
102671 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102672 (NVL(l_actual_upg_option, 'N') = 'O') OR
102673 (NVL(l_enc_upg_option, 'N') = 'O')
102674 )
102675 THEN
102676 NULL;
102677 --
102678 --
102679
102680 l_ccid := AcctDerRule_30(
102681 p_application_id => p_application_id
102682 , p_ae_header_id => l_ae_header_id
102683 , p_source_1 => p_source_1
102684 , p_source_2 => p_source_2
102685 , x_transaction_coa_id => l_adr_transaction_coa_id
102686 , x_accounting_coa_id => l_adr_accounting_coa_id
102687 , x_value_type_code => l_adr_value_type_code
102688 , p_side => 'NA'
102689 );
102690
102691 xla_ae_lines_pkg.set_ccid(
102692 p_code_combination_id => l_ccid
102693 , p_value_type_code => l_adr_value_type_code
102694 , p_transaction_coa_id => l_adr_transaction_coa_id
102695 , p_accounting_coa_id => l_adr_accounting_coa_id
102696 , p_adr_code => 'PIN'
102697 , p_adr_type_code => 'S'
102698 , p_component_type => l_component_type
102699 , p_component_code => l_component_code
102700 , p_component_type_code => l_component_type_code
102701 , p_component_appl_id => l_component_appl_id
102702 , p_amb_context_code => l_amb_context_code
102703 , p_side => 'NA'
102704 );
102705
102706
102707 --
102708 --
102709 END IF;
102710
102711 --
102712 -- Update the line information that should be overwritten
102713 --
102714 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102715 p_header_num => 1);
102716 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
102717
102718 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102719
102720 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
102721 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102722 END IF;
102723
102724 --
102725 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102726 --
102727 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102731 -- 4262811a Switch Sign
102728 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
102729 ELSE
102730 ---------------------------------------------------------------------------------------------------
102732 ---------------------------------------------------------------------------------------------------
102733 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
102734 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102735 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102736 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102737 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102738 -- 5132302
102739 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102740 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102741
102742 END IF;
102743
102744 -- 4955764
102745 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102746 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102747
102748
102749 XLA_AE_LINES_PKG.ValidateCurrentLine;
102750 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102751
102752 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102753 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102754 ,p_balance_type_code => l_balance_type_code);
102755
102756 END IF;
102757
102758 -----------------------------------------------------------------------------------------
102759 -- 4262811 Multiperiod Accounting
102760 -----------------------------------------------------------------------------------------
102761 -- No MPA option is assigned.
102762
102763
102764 END IF;
102765 END IF;
102766 --
102767
102768 --
102769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102770 trace
102771 (p_msg => 'END of AcctLineType_217'
102772 ,p_level => C_LEVEL_PROCEDURE
102773 ,p_module => l_log_module);
102774 END IF;
102775 --
102776 EXCEPTION
102777 WHEN xla_exceptions_pkg.application_exception THEN
102778 RAISE;
102779 WHEN OTHERS THEN
102780 xla_exceptions_pkg.raise_message
102781 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_217');
102782 END AcctLineType_217;
102783 --
102784
102785 ---------------------------------------
102786 --
102787 -- PRIVATE FUNCTION
102788 -- AcctLineType_218
102789 --
102790 ---------------------------------------
102791 PROCEDURE AcctLineType_218 (
102792 p_application_id IN NUMBER
102793 ,p_event_id IN NUMBER
102794 ,p_calculate_acctd_flag IN VARCHAR2
102795 ,p_calculate_g_l_flag IN VARCHAR2
102796 ,p_actual_flag IN OUT VARCHAR2
102797 ,p_balance_type_code OUT VARCHAR2
102798 ,p_gain_or_loss_ref OUT VARCHAR2
102799
102800 --Transaction Account
102801 , p_source_1 IN NUMBER
102802 --Journal Line Type
102803 , p_source_2 IN VARCHAR2
102804 --Entered Amount
102805 , p_source_3 IN NUMBER
102806 --First Distribution Identifier
102807 , p_source_5 IN NUMBER
102808 --Distribution Type
102809 , p_source_6 IN VARCHAR2
102810 --Currency Code
102811 , p_source_7 IN VARCHAR2
102812 --Currency Conversion Date
102813 , p_source_8 IN DATE
102814 --Currency Conversion Rate
102815 , p_source_9 IN NUMBER
102816 --Currency Conversion Type
102817 , p_source_10 IN VARCHAR2
102818 --Accounted Amount
102819 , p_source_11 IN NUMBER
102820 )
102821 IS
102822
102823 l_component_type VARCHAR2(80);
102824 l_component_code VARCHAR2(30);
102825 l_component_type_code VARCHAR2(1);
102826 l_component_appl_id INTEGER;
102827 l_amb_context_code VARCHAR2(30);
102828 l_entity_code VARCHAR2(30);
102829 l_event_class_code VARCHAR2(30);
102830 l_ae_header_id NUMBER;
102831 l_event_type_code VARCHAR2(30);
102832 l_line_definition_code VARCHAR2(30);
102833 l_line_definition_owner_code VARCHAR2(1);
102834 --
102835 -- adr variables
102836 l_segment VARCHAR2(30);
102837 l_ccid NUMBER;
102838 l_adr_transaction_coa_id NUMBER;
102839 l_adr_accounting_coa_id NUMBER;
102840 l_adr_flexfield_segment_code VARCHAR2(30);
102841 l_adr_flex_value_set_id NUMBER;
102842 l_adr_value_type_code VARCHAR2(30);
102843 l_adr_value_combination_id NUMBER;
102844 l_adr_value_segment_code VARCHAR2(30);
102845
102846 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
102847 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
102848 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
102849 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
102850
102851 -- 4262811 Variables ------------------------------------------------------------------------------------------
102852 l_entered_amt_idx NUMBER;
102856 l_tmp_amt NUMBER;
102853 l_accted_amt_idx NUMBER;
102854 l_acc_rev_flag VARCHAR2(1);
102855 l_accrual_line_num NUMBER;
102857 l_acc_rev_natural_side_code VARCHAR2(1);
102858
102859 l_num_entries NUMBER;
102860 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
102861 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
102862 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
102863 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
102864 l_recog_line_1 NUMBER;
102865 l_recog_line_2 NUMBER;
102866
102867 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
102868 l_bflow_applied_to_amt NUMBER; -- 5132302
102869 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
102870
102871 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102872
102873 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
102874 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
102875
102876 ---------------------------------------------------------------------------------------------------------------
102877
102878
102879 --
102880 -- bulk performance
102881 --
102882 l_balance_type_code VARCHAR2(1);
102883 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
102884 l_log_module VARCHAR2(240);
102885
102886 --
102887 -- Upgrade strategy
102888 --
102889 l_actual_upg_option VARCHAR2(1);
102890 l_enc_upg_option VARCHAR2(1);
102891
102892 --
102893 BEGIN
102894 --
102895 IF g_log_enabled THEN
102896 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_218';
102897 END IF;
102898 --
102899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102900
102901 trace
102902 (p_msg => 'BEGIN of AcctLineType_218'
102903 ,p_level => C_LEVEL_PROCEDURE
102904 ,p_module => l_log_module);
102905
102906 END IF;
102907 --
102908 l_component_type := 'AMB_JLT';
102909 l_component_code := 'PPV';
102910 l_component_type_code := 'S';
102911 l_component_appl_id := 555;
102912 l_amb_context_code := 'DEFAULT';
102913 l_entity_code := 'INVENTORY';
102914 l_event_class_code := 'DIR_INTERORG_RCPT';
102915 l_event_type_code := 'DIR_INTERORG_RCPT_TP';
102916 l_line_definition_owner_code := 'S';
102917 l_line_definition_code := 'DIRECT_XFER_RECV_TP';
102918 --
102919 l_balance_type_code := 'A';
102920 l_segment := NULL;
102921 l_ccid := NULL;
102922 l_adr_transaction_coa_id := NULL;
102923 l_adr_accounting_coa_id := NULL;
102924 l_adr_flexfield_segment_code := NULL;
102925 l_adr_flex_value_set_id := NULL;
102926 l_adr_value_type_code := NULL;
102927 l_adr_value_combination_id := NULL;
102928 l_adr_value_segment_code := NULL;
102929
102930 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
102931 l_bflow_class_code := ''; -- 4219869 Business Flow
102932 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
102933 l_budgetary_control_flag := 'N';
102934
102935 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102936 l_bflow_applied_to_amt := NULL; -- 5132302
102937 l_entered_amt_idx := NULL; -- 4262811
102938 l_accted_amt_idx := NULL; -- 4262811
102939 l_acc_rev_flag := NULL; -- 4262811
102940 l_accrual_line_num := NULL; -- 4262811
102941 l_tmp_amt := NULL; -- 4262811
102942 --
102943
102944 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102945 l_balance_type_code <> 'B' THEN
102946 IF NVL(p_source_2,'
102947 ') = 'PPV'
102948 THEN
102949
102950 --
102951 XLA_AE_LINES_PKG.SetNewLine;
102952
102953 p_balance_type_code := l_balance_type_code;
102954 -- set the flag so later we will know whether the gain loss line needs to be created
102955
102956 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102957 p_actual_flag :='A';
102958 END IF;
102959
102960 --
102961 -- bulk performance
102962 --
102963 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102964 p_header_num => 0); -- 4262811
102965 --
102966 -- set accounting line options
102967 --
102968 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102969 p_natural_side_code => 'D'
102970 , p_gain_or_loss_flag => 'N'
102971 , p_gl_transfer_mode_code => 'D'
102972 , p_acct_entry_type_code => 'A'
102973 , p_switch_side_flag => 'Y'
102974 , p_merge_duplicate_code => 'W'
102975 );
102976 --
102977 l_acc_rev_natural_side_code := 'C'; -- 4262811
102978 --
102979 --
102980 -- set accounting line type info
102981 --
102982 xla_ae_lines_pkg.SetAcctLineType
102983 (p_component_type => l_component_type
102984 ,p_event_type_code => l_event_type_code
102985 ,p_line_definition_owner_code => l_line_definition_owner_code
102989 ,p_accounting_line_appl_id => l_component_appl_id
102986 ,p_line_definition_code => l_line_definition_code
102987 ,p_accounting_line_code => l_component_code
102988 ,p_accounting_line_type_code => l_component_type_code
102990 ,p_amb_context_code => l_amb_context_code
102991 ,p_entity_code => l_entity_code
102992 ,p_event_class_code => l_event_class_code);
102993 --
102994 -- set accounting class
102995 --
102996 xla_ae_lines_pkg.SetAcctClass(
102997 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
102998 , p_ae_header_id => l_ae_header_id
102999 );
103000
103001 --
103002 -- set rounding class
103003 --
103004 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103005 'PURCHASE_PRICE_VARIANCE';
103006
103007 --
103008 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103009 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103010 --
103011 -- bulk performance
103012 --
103013 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103014
103015 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103016 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103017
103018 -- 4955764
103019 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103020 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103021
103022 -- 4458381 Public Sector Enh
103023
103024 --
103025 -- set accounting attributes for the line type
103026 --
103027 l_entered_amt_idx := 3;
103028 l_accted_amt_idx := 8;
103029 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103030 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103031 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
103032 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103033 l_rec_acct_attrs.array_char_value(2) := p_source_6;
103034 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103035 l_rec_acct_attrs.array_num_value(3) := p_source_3;
103036 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103037 l_rec_acct_attrs.array_char_value(4) := p_source_7;
103038 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103039 l_rec_acct_attrs.array_date_value(5) := p_source_8;
103040 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103041 l_rec_acct_attrs.array_num_value(6) := p_source_9;
103042 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103043 l_rec_acct_attrs.array_char_value(7) := p_source_10;
103044 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103045 l_rec_acct_attrs.array_num_value(8) := p_source_11;
103046
103047 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103048 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103049
103050 ---------------------------------------------------------------------------------------------------------------
103051 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103052 ---------------------------------------------------------------------------------------------------------------
103053 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103054
103055 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103056 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103057
103058 IF xla_accounting_cache_pkg.GetValueChar
103059 (p_source_code => 'LEDGER_CATEGORY_CODE'
103060 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103061 AND l_bflow_method_code = 'PRIOR_ENTRY'
103062 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103063 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103064 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103065 )
103066 THEN
103067 xla_ae_lines_pkg.BflowUpgEntry
103068 (p_business_method_code => l_bflow_method_code
103069 ,p_business_class_code => l_bflow_class_code
103070 ,p_balance_type => l_balance_type_code);
103071 ELSE
103072 NULL;
103073 -- No business flow processing for business flow method of NONE.
103074 END IF;
103075
103076 --
103077 -- call analytical criteria
103078 --
103079
103080 --
103081 -- call description
103082 --
103083 -- No description or it is inherited.
103084 --
103085 -- call ADRs
103086 -- Bug 4922099
103087 --
103088 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103089 (NVL(l_actual_upg_option, 'N') = 'O') OR
103090 (NVL(l_enc_upg_option, 'N') = 'O')
103091 )
103092 THEN
103093 NULL;
103094 --
103095 --
103096
103097 l_ccid := AcctDerRule_31(
103098 p_application_id => p_application_id
103099 , p_ae_header_id => l_ae_header_id
103100 , p_source_1 => p_source_1
103101 , p_source_2 => p_source_2
103102 , x_transaction_coa_id => l_adr_transaction_coa_id
103106 );
103103 , x_accounting_coa_id => l_adr_accounting_coa_id
103104 , x_value_type_code => l_adr_value_type_code
103105 , p_side => 'NA'
103107
103108 xla_ae_lines_pkg.set_ccid(
103109 p_code_combination_id => l_ccid
103110 , p_value_type_code => l_adr_value_type_code
103111 , p_transaction_coa_id => l_adr_transaction_coa_id
103112 , p_accounting_coa_id => l_adr_accounting_coa_id
103113 , p_adr_code => 'PPV'
103114 , p_adr_type_code => 'S'
103115 , p_component_type => l_component_type
103116 , p_component_code => l_component_code
103117 , p_component_type_code => l_component_type_code
103118 , p_component_appl_id => l_component_appl_id
103119 , p_amb_context_code => l_amb_context_code
103120 , p_side => 'NA'
103121 );
103122
103123
103124 --
103125 --
103126 END IF;
103127 --
103128 -- Bug 4922099
103129 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103130 (NVL(l_enc_upg_option, 'N') = 'O')
103131 ) AND
103132 (l_bflow_method_code = 'PRIOR_ENTRY')
103133 )
103134 THEN
103135 IF
103136 --
103137 1 = 2
103138 --
103139 THEN
103140 xla_accounting_err_pkg.build_message
103141 (p_appli_s_name => 'XLA'
103142 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103143 ,p_token_1 => 'LINE_NUMBER'
103144 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
103145 ,p_token_2 => 'LINE_TYPE_NAME'
103146 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
103147 l_component_type
103148 ,l_component_code
103149 ,l_component_type_code
103150 ,l_component_appl_id
103151 ,l_amb_context_code
103152 ,l_entity_code
103153 ,l_event_class_code
103154 )
103155 ,p_token_3 => 'OWNER'
103156 ,p_value_3 => xla_lookups_pkg.get_meaning(
103157 p_lookup_type => 'XLA_OWNER_TYPE'
103158 ,p_lookup_code => l_component_type_code
103159 )
103160 ,p_token_4 => 'PRODUCT_NAME'
103161 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103162 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103163 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103164 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103165 ,p_ae_header_id => NULL
103166 );
103167
103168 IF (C_LEVEL_ERROR>= g_log_level) THEN
103169 trace
103170 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103171 ,p_level => C_LEVEL_ERROR
103172 ,p_module => l_log_module);
103173 END IF;
103174 END IF;
103175 END IF;
103176 --
103177 --
103178 ------------------------------------------------------------------------------------------------
103179 -- 4219869 Business Flow
103180 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103181 -- Prior Entry. Currently, the following code is always generated.
103182 ------------------------------------------------------------------------------------------------
103183 XLA_AE_LINES_PKG.ValidateCurrentLine;
103184
103185 ------------------------------------------------------------------------------------
103186 -- 4219869 Business Flow
103187 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103188 ------------------------------------------------------------------------------------
103189 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103190
103191 ----------------------------------------------------------------------------------
103192 -- 4219869 Business Flow
103193 -- Update journal entry status -- Need to generate this within IF <condition>
103194 ----------------------------------------------------------------------------------
103195 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103196 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103197 ,p_balance_type_code => l_balance_type_code
103198 );
103199
103203 BEGIN
103200 -------------------------------------------------------------------------------------------
103201 -- 4262811 - Generate the Accrual Reversal lines
103202 -------------------------------------------------------------------------------------------
103204 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103205 (g_array_event(p_event_id).array_value_num('header_index'));
103206 IF l_acc_rev_flag IS NULL THEN
103207 l_acc_rev_flag := 'N';
103208 END IF;
103209 EXCEPTION
103210 WHEN OTHERS THEN
103211 l_acc_rev_flag := 'N';
103212 END;
103213 --
103214 IF (l_acc_rev_flag = 'Y') THEN
103215
103216 -- 4645092 ------------------------------------------------------------------------------
103217 -- To allow MPA report to determine if it should generate report process
103218 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103219 ------------------------------------------------------------------------------------------
103220
103221 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103222 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103223 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
103224 -- call ADRs
103225 -- Bug 4922099
103226 --
103227 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103228 (NVL(l_actual_upg_option, 'N') = 'O') OR
103229 (NVL(l_enc_upg_option, 'N') = 'O')
103230 )
103231 THEN
103232 NULL;
103233 --
103234 --
103235
103236 l_ccid := AcctDerRule_31(
103237 p_application_id => p_application_id
103238 , p_ae_header_id => l_ae_header_id
103239 , p_source_1 => p_source_1
103240 , p_source_2 => p_source_2
103241 , x_transaction_coa_id => l_adr_transaction_coa_id
103242 , x_accounting_coa_id => l_adr_accounting_coa_id
103243 , x_value_type_code => l_adr_value_type_code
103244 , p_side => 'NA'
103245 );
103246
103247 xla_ae_lines_pkg.set_ccid(
103248 p_code_combination_id => l_ccid
103249 , p_value_type_code => l_adr_value_type_code
103250 , p_transaction_coa_id => l_adr_transaction_coa_id
103251 , p_accounting_coa_id => l_adr_accounting_coa_id
103252 , p_adr_code => 'PPV'
103253 , p_adr_type_code => 'S'
103254 , p_component_type => l_component_type
103255 , p_component_code => l_component_code
103256 , p_component_type_code => l_component_type_code
103257 , p_component_appl_id => l_component_appl_id
103258 , p_amb_context_code => l_amb_context_code
103259 , p_side => 'NA'
103260 );
103261
103262
103263 --
103264 --
103265 END IF;
103266
103267 --
103268 -- Update the line information that should be overwritten
103269 --
103270 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103271 p_header_num => 1);
103272 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
103273
103274 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103275
103276 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
103277 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103278 END IF;
103279
103280 --
103281 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103282 --
103283 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103284 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
103285 ELSE
103286 ---------------------------------------------------------------------------------------------------
103287 -- 4262811a Switch Sign
103288 ---------------------------------------------------------------------------------------------------
103289 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
103290 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103291 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103292 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103293 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103294 -- 5132302
103295 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103296 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103297
103298 END IF;
103299
103300 -- 4955764
103301 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103302 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103303
103304
103305 XLA_AE_LINES_PKG.ValidateCurrentLine;
103306 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103307
103308 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103312 END IF;
103309 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103310 ,p_balance_type_code => l_balance_type_code);
103311
103313
103314 -----------------------------------------------------------------------------------------
103315 -- 4262811 Multiperiod Accounting
103316 -----------------------------------------------------------------------------------------
103317 -- No MPA option is assigned.
103318
103319
103320 END IF;
103321 END IF;
103322 --
103323
103324 --
103325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103326 trace
103327 (p_msg => 'END of AcctLineType_218'
103328 ,p_level => C_LEVEL_PROCEDURE
103329 ,p_module => l_log_module);
103330 END IF;
103331 --
103332 EXCEPTION
103333 WHEN xla_exceptions_pkg.application_exception THEN
103334 RAISE;
103335 WHEN OTHERS THEN
103336 xla_exceptions_pkg.raise_message
103337 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_218');
103338 END AcctLineType_218;
103339 --
103340
103341 ---------------------------------------
103342 --
103343 -- PRIVATE FUNCTION
103344 -- AcctLineType_219
103345 --
103346 ---------------------------------------
103347 PROCEDURE AcctLineType_219 (
103348 p_application_id IN NUMBER
103349 ,p_event_id IN NUMBER
103350 ,p_calculate_acctd_flag IN VARCHAR2
103351 ,p_calculate_g_l_flag IN VARCHAR2
103352 ,p_actual_flag IN OUT VARCHAR2
103353 ,p_balance_type_code OUT VARCHAR2
103354 ,p_gain_or_loss_ref OUT VARCHAR2
103355
103356 --Transaction Account
103357 , p_source_1 IN NUMBER
103358 --Journal Line Type
103359 , p_source_2 IN VARCHAR2
103360 --Entered Amount
103361 , p_source_3 IN NUMBER
103362 --First Distribution Identifier
103363 , p_source_5 IN NUMBER
103364 --Distribution Type
103365 , p_source_6 IN VARCHAR2
103366 --Currency Code
103367 , p_source_7 IN VARCHAR2
103368 --Currency Conversion Date
103369 , p_source_8 IN DATE
103370 --Currency Conversion Rate
103371 , p_source_9 IN NUMBER
103372 --Currency Conversion Type
103373 , p_source_10 IN VARCHAR2
103374 --Accounted Amount
103375 , p_source_11 IN NUMBER
103376 )
103377 IS
103378
103379 l_component_type VARCHAR2(80);
103380 l_component_code VARCHAR2(30);
103381 l_component_type_code VARCHAR2(1);
103382 l_component_appl_id INTEGER;
103383 l_amb_context_code VARCHAR2(30);
103384 l_entity_code VARCHAR2(30);
103385 l_event_class_code VARCHAR2(30);
103386 l_ae_header_id NUMBER;
103387 l_event_type_code VARCHAR2(30);
103388 l_line_definition_code VARCHAR2(30);
103389 l_line_definition_owner_code VARCHAR2(1);
103390 --
103391 -- adr variables
103392 l_segment VARCHAR2(30);
103393 l_ccid NUMBER;
103394 l_adr_transaction_coa_id NUMBER;
103395 l_adr_accounting_coa_id NUMBER;
103396 l_adr_flexfield_segment_code VARCHAR2(30);
103397 l_adr_flex_value_set_id NUMBER;
103398 l_adr_value_type_code VARCHAR2(30);
103399 l_adr_value_combination_id NUMBER;
103400 l_adr_value_segment_code VARCHAR2(30);
103401
103402 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
103403 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
103404 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
103405 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
103406
103407 -- 4262811 Variables ------------------------------------------------------------------------------------------
103408 l_entered_amt_idx NUMBER;
103409 l_accted_amt_idx NUMBER;
103410 l_acc_rev_flag VARCHAR2(1);
103411 l_accrual_line_num NUMBER;
103412 l_tmp_amt NUMBER;
103413 l_acc_rev_natural_side_code VARCHAR2(1);
103414
103415 l_num_entries NUMBER;
103416 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
103417 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
103418 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
103419 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
103420 l_recog_line_1 NUMBER;
103421 l_recog_line_2 NUMBER;
103422
103423 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
103424 l_bflow_applied_to_amt NUMBER; -- 5132302
103425 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
103426
103427 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103428
103429 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
103430 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
103431
103432 ---------------------------------------------------------------------------------------------------------------
103433
103434
103435 --
103436 -- bulk performance
103437 --
103438 l_balance_type_code VARCHAR2(1);
103439 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
103440 l_log_module VARCHAR2(240);
103441
103442 --
103446 l_enc_upg_option VARCHAR2(1);
103443 -- Upgrade strategy
103444 --
103445 l_actual_upg_option VARCHAR2(1);
103447
103448 --
103449 BEGIN
103450 --
103451 IF g_log_enabled THEN
103452 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_219';
103453 END IF;
103454 --
103455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103456
103457 trace
103458 (p_msg => 'BEGIN of AcctLineType_219'
103459 ,p_level => C_LEVEL_PROCEDURE
103460 ,p_module => l_log_module);
103461
103462 END IF;
103463 --
103464 l_component_type := 'AMB_JLT';
103465 l_component_code := 'PPV';
103466 l_component_type_code := 'S';
103467 l_component_appl_id := 555;
103468 l_amb_context_code := 'DEFAULT';
103469 l_entity_code := 'PURCHASING';
103470 l_event_class_code := 'DELIVER';
103471 l_event_type_code := 'RET_TO_RECEIVING';
103472 l_line_definition_owner_code := 'S';
103473 l_line_definition_code := 'PO_RETURN';
103474 --
103475 l_balance_type_code := 'A';
103476 l_segment := NULL;
103477 l_ccid := NULL;
103478 l_adr_transaction_coa_id := NULL;
103479 l_adr_accounting_coa_id := NULL;
103480 l_adr_flexfield_segment_code := NULL;
103481 l_adr_flex_value_set_id := NULL;
103482 l_adr_value_type_code := NULL;
103483 l_adr_value_combination_id := NULL;
103484 l_adr_value_segment_code := NULL;
103485
103486 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
103487 l_bflow_class_code := ''; -- 4219869 Business Flow
103488 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
103489 l_budgetary_control_flag := 'N';
103490
103491 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103492 l_bflow_applied_to_amt := NULL; -- 5132302
103493 l_entered_amt_idx := NULL; -- 4262811
103494 l_accted_amt_idx := NULL; -- 4262811
103495 l_acc_rev_flag := NULL; -- 4262811
103496 l_accrual_line_num := NULL; -- 4262811
103497 l_tmp_amt := NULL; -- 4262811
103498 --
103499
103500 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103501 l_balance_type_code <> 'B' THEN
103502 IF NVL(p_source_2,'
103503 ') = 'PPV'
103504 THEN
103505
103506 --
103507 XLA_AE_LINES_PKG.SetNewLine;
103508
103509 p_balance_type_code := l_balance_type_code;
103510 -- set the flag so later we will know whether the gain loss line needs to be created
103511
103512 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103513 p_actual_flag :='A';
103514 END IF;
103515
103516 --
103517 -- bulk performance
103518 --
103519 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103520 p_header_num => 0); -- 4262811
103521 --
103522 -- set accounting line options
103523 --
103524 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103525 p_natural_side_code => 'D'
103526 , p_gain_or_loss_flag => 'N'
103527 , p_gl_transfer_mode_code => 'D'
103528 , p_acct_entry_type_code => 'A'
103529 , p_switch_side_flag => 'Y'
103530 , p_merge_duplicate_code => 'W'
103531 );
103532 --
103533 l_acc_rev_natural_side_code := 'C'; -- 4262811
103534 --
103535 --
103536 -- set accounting line type info
103537 --
103538 xla_ae_lines_pkg.SetAcctLineType
103539 (p_component_type => l_component_type
103540 ,p_event_type_code => l_event_type_code
103541 ,p_line_definition_owner_code => l_line_definition_owner_code
103542 ,p_line_definition_code => l_line_definition_code
103543 ,p_accounting_line_code => l_component_code
103544 ,p_accounting_line_type_code => l_component_type_code
103545 ,p_accounting_line_appl_id => l_component_appl_id
103546 ,p_amb_context_code => l_amb_context_code
103547 ,p_entity_code => l_entity_code
103548 ,p_event_class_code => l_event_class_code);
103549 --
103550 -- set accounting class
103551 --
103552 xla_ae_lines_pkg.SetAcctClass(
103553 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
103554 , p_ae_header_id => l_ae_header_id
103555 );
103556
103557 --
103558 -- set rounding class
103559 --
103560 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103561 'PURCHASE_PRICE_VARIANCE';
103562
103563 --
103564 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103565 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103566 --
103567 -- bulk performance
103568 --
103569 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103570
103571 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103572 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103573
103574 -- 4955764
103575 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103576 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103577
103581 -- set accounting attributes for the line type
103578 -- 4458381 Public Sector Enh
103579
103580 --
103582 --
103583 l_entered_amt_idx := 3;
103584 l_accted_amt_idx := 8;
103585 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103586 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103587 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
103588 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103589 l_rec_acct_attrs.array_char_value(2) := p_source_6;
103590 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103591 l_rec_acct_attrs.array_num_value(3) := p_source_3;
103592 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103593 l_rec_acct_attrs.array_char_value(4) := p_source_7;
103594 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103595 l_rec_acct_attrs.array_date_value(5) := p_source_8;
103596 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103597 l_rec_acct_attrs.array_num_value(6) := p_source_9;
103598 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103599 l_rec_acct_attrs.array_char_value(7) := p_source_10;
103600 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103601 l_rec_acct_attrs.array_num_value(8) := p_source_11;
103602
103603 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103604 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103605
103606 ---------------------------------------------------------------------------------------------------------------
103607 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103608 ---------------------------------------------------------------------------------------------------------------
103609 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103610
103611 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103612 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103613
103614 IF xla_accounting_cache_pkg.GetValueChar
103615 (p_source_code => 'LEDGER_CATEGORY_CODE'
103616 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103617 AND l_bflow_method_code = 'PRIOR_ENTRY'
103618 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103619 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103620 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103621 )
103622 THEN
103623 xla_ae_lines_pkg.BflowUpgEntry
103624 (p_business_method_code => l_bflow_method_code
103625 ,p_business_class_code => l_bflow_class_code
103626 ,p_balance_type => l_balance_type_code);
103627 ELSE
103628 NULL;
103629 -- No business flow processing for business flow method of NONE.
103630 END IF;
103631
103632 --
103633 -- call analytical criteria
103634 --
103635
103636 --
103637 -- call description
103638 --
103639 -- No description or it is inherited.
103640 --
103641 -- call ADRs
103642 -- Bug 4922099
103643 --
103644 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103645 (NVL(l_actual_upg_option, 'N') = 'O') OR
103646 (NVL(l_enc_upg_option, 'N') = 'O')
103647 )
103648 THEN
103649 NULL;
103650 --
103651 --
103652
103653 l_ccid := AcctDerRule_31(
103654 p_application_id => p_application_id
103655 , p_ae_header_id => l_ae_header_id
103656 , p_source_1 => p_source_1
103657 , p_source_2 => p_source_2
103658 , x_transaction_coa_id => l_adr_transaction_coa_id
103659 , x_accounting_coa_id => l_adr_accounting_coa_id
103660 , x_value_type_code => l_adr_value_type_code
103661 , p_side => 'NA'
103662 );
103663
103664 xla_ae_lines_pkg.set_ccid(
103665 p_code_combination_id => l_ccid
103666 , p_value_type_code => l_adr_value_type_code
103667 , p_transaction_coa_id => l_adr_transaction_coa_id
103668 , p_accounting_coa_id => l_adr_accounting_coa_id
103669 , p_adr_code => 'PPV'
103670 , p_adr_type_code => 'S'
103671 , p_component_type => l_component_type
103672 , p_component_code => l_component_code
103673 , p_component_type_code => l_component_type_code
103674 , p_component_appl_id => l_component_appl_id
103675 , p_amb_context_code => l_amb_context_code
103676 , p_side => 'NA'
103677 );
103678
103679
103680 --
103681 --
103682 END IF;
103683 --
103684 -- Bug 4922099
103685 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103686 (NVL(l_enc_upg_option, 'N') = 'O')
103687 ) AND
103688 (l_bflow_method_code = 'PRIOR_ENTRY')
103689 )
103690 THEN
103691 IF
103692 --
103693 1 = 2
103694 --
103695 THEN
103696 xla_accounting_err_pkg.build_message
103697 (p_appli_s_name => 'XLA'
103698 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103699 ,p_token_1 => 'LINE_NUMBER'
103703 l_component_type
103700 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
103701 ,p_token_2 => 'LINE_TYPE_NAME'
103702 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
103704 ,l_component_code
103705 ,l_component_type_code
103706 ,l_component_appl_id
103707 ,l_amb_context_code
103708 ,l_entity_code
103709 ,l_event_class_code
103710 )
103711 ,p_token_3 => 'OWNER'
103712 ,p_value_3 => xla_lookups_pkg.get_meaning(
103713 p_lookup_type => 'XLA_OWNER_TYPE'
103714 ,p_lookup_code => l_component_type_code
103715 )
103716 ,p_token_4 => 'PRODUCT_NAME'
103717 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103718 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103719 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103720 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103721 ,p_ae_header_id => NULL
103722 );
103723
103724 IF (C_LEVEL_ERROR>= g_log_level) THEN
103725 trace
103726 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103727 ,p_level => C_LEVEL_ERROR
103728 ,p_module => l_log_module);
103729 END IF;
103730 END IF;
103731 END IF;
103732 --
103733 --
103734 ------------------------------------------------------------------------------------------------
103735 -- 4219869 Business Flow
103736 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103737 -- Prior Entry. Currently, the following code is always generated.
103738 ------------------------------------------------------------------------------------------------
103739 XLA_AE_LINES_PKG.ValidateCurrentLine;
103740
103741 ------------------------------------------------------------------------------------
103742 -- 4219869 Business Flow
103743 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103744 ------------------------------------------------------------------------------------
103745 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103746
103747 ----------------------------------------------------------------------------------
103748 -- 4219869 Business Flow
103749 -- Update journal entry status -- Need to generate this within IF <condition>
103750 ----------------------------------------------------------------------------------
103751 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103752 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103753 ,p_balance_type_code => l_balance_type_code
103754 );
103755
103756 -------------------------------------------------------------------------------------------
103757 -- 4262811 - Generate the Accrual Reversal lines
103758 -------------------------------------------------------------------------------------------
103759 BEGIN
103760 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103761 (g_array_event(p_event_id).array_value_num('header_index'));
103762 IF l_acc_rev_flag IS NULL THEN
103763 l_acc_rev_flag := 'N';
103764 END IF;
103765 EXCEPTION
103766 WHEN OTHERS THEN
103767 l_acc_rev_flag := 'N';
103768 END;
103769 --
103770 IF (l_acc_rev_flag = 'Y') THEN
103771
103772 -- 4645092 ------------------------------------------------------------------------------
103773 -- To allow MPA report to determine if it should generate report process
103774 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103775 ------------------------------------------------------------------------------------------
103776
103777 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103778 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103779 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
103780 -- call ADRs
103781 -- Bug 4922099
103782 --
103783 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103784 (NVL(l_actual_upg_option, 'N') = 'O') OR
103785 (NVL(l_enc_upg_option, 'N') = 'O')
103786 )
103787 THEN
103788 NULL;
103789 --
103790 --
103791
103792 l_ccid := AcctDerRule_31(
103793 p_application_id => p_application_id
103797 , x_transaction_coa_id => l_adr_transaction_coa_id
103794 , p_ae_header_id => l_ae_header_id
103795 , p_source_1 => p_source_1
103796 , p_source_2 => p_source_2
103798 , x_accounting_coa_id => l_adr_accounting_coa_id
103799 , x_value_type_code => l_adr_value_type_code
103800 , p_side => 'NA'
103801 );
103802
103803 xla_ae_lines_pkg.set_ccid(
103804 p_code_combination_id => l_ccid
103805 , p_value_type_code => l_adr_value_type_code
103806 , p_transaction_coa_id => l_adr_transaction_coa_id
103807 , p_accounting_coa_id => l_adr_accounting_coa_id
103808 , p_adr_code => 'PPV'
103809 , p_adr_type_code => 'S'
103810 , p_component_type => l_component_type
103811 , p_component_code => l_component_code
103812 , p_component_type_code => l_component_type_code
103813 , p_component_appl_id => l_component_appl_id
103814 , p_amb_context_code => l_amb_context_code
103815 , p_side => 'NA'
103816 );
103817
103818
103819 --
103820 --
103821 END IF;
103822
103823 --
103824 -- Update the line information that should be overwritten
103825 --
103826 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103827 p_header_num => 1);
103828 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
103829
103830 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103831
103832 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
103833 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103834 END IF;
103835
103836 --
103837 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103838 --
103839 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103840 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
103841 ELSE
103842 ---------------------------------------------------------------------------------------------------
103843 -- 4262811a Switch Sign
103844 ---------------------------------------------------------------------------------------------------
103845 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
103846 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103847 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103848 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103849 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103850 -- 5132302
103851 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103852 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103853
103854 END IF;
103855
103856 -- 4955764
103857 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103858 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103859
103860
103861 XLA_AE_LINES_PKG.ValidateCurrentLine;
103862 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103863
103864 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103865 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103866 ,p_balance_type_code => l_balance_type_code);
103867
103868 END IF;
103869
103870 -----------------------------------------------------------------------------------------
103871 -- 4262811 Multiperiod Accounting
103872 -----------------------------------------------------------------------------------------
103873 -- No MPA option is assigned.
103874
103875
103876 END IF;
103877 END IF;
103878 --
103879
103880 --
103881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103882 trace
103883 (p_msg => 'END of AcctLineType_219'
103884 ,p_level => C_LEVEL_PROCEDURE
103885 ,p_module => l_log_module);
103886 END IF;
103887 --
103888 EXCEPTION
103889 WHEN xla_exceptions_pkg.application_exception THEN
103890 RAISE;
103891 WHEN OTHERS THEN
103892 xla_exceptions_pkg.raise_message
103893 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_219');
103894 END AcctLineType_219;
103895 --
103896
103897 ---------------------------------------
103898 --
103899 -- PRIVATE FUNCTION
103900 -- AcctLineType_220
103901 --
103902 ---------------------------------------
103903 PROCEDURE AcctLineType_220 (
103904 p_application_id IN NUMBER
103905 ,p_event_id IN NUMBER
103906 ,p_calculate_acctd_flag IN VARCHAR2
103907 ,p_calculate_g_l_flag IN VARCHAR2
103908 ,p_actual_flag IN OUT VARCHAR2
103909 ,p_balance_type_code OUT VARCHAR2
103910 ,p_gain_or_loss_ref OUT VARCHAR2
103911
103912 --Transaction Account
103916 --Entered Amount
103913 , p_source_1 IN NUMBER
103914 --Journal Line Type
103915 , p_source_2 IN VARCHAR2
103917 , p_source_3 IN NUMBER
103918 --First Distribution Identifier
103919 , p_source_5 IN NUMBER
103920 --Distribution Type
103921 , p_source_6 IN VARCHAR2
103922 --Currency Code
103923 , p_source_7 IN VARCHAR2
103924 --Currency Conversion Date
103925 , p_source_8 IN DATE
103926 --Currency Conversion Rate
103927 , p_source_9 IN NUMBER
103928 --Currency Conversion Type
103929 , p_source_10 IN VARCHAR2
103930 --Accounted Amount
103931 , p_source_11 IN NUMBER
103932 )
103933 IS
103934
103935 l_component_type VARCHAR2(80);
103936 l_component_code VARCHAR2(30);
103937 l_component_type_code VARCHAR2(1);
103938 l_component_appl_id INTEGER;
103939 l_amb_context_code VARCHAR2(30);
103940 l_entity_code VARCHAR2(30);
103941 l_event_class_code VARCHAR2(30);
103942 l_ae_header_id NUMBER;
103943 l_event_type_code VARCHAR2(30);
103944 l_line_definition_code VARCHAR2(30);
103945 l_line_definition_owner_code VARCHAR2(1);
103946 --
103947 -- adr variables
103948 l_segment VARCHAR2(30);
103949 l_ccid NUMBER;
103950 l_adr_transaction_coa_id NUMBER;
103951 l_adr_accounting_coa_id NUMBER;
103952 l_adr_flexfield_segment_code VARCHAR2(30);
103953 l_adr_flex_value_set_id NUMBER;
103954 l_adr_value_type_code VARCHAR2(30);
103955 l_adr_value_combination_id NUMBER;
103956 l_adr_value_segment_code VARCHAR2(30);
103957
103958 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
103959 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
103960 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
103961 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
103962
103963 -- 4262811 Variables ------------------------------------------------------------------------------------------
103964 l_entered_amt_idx NUMBER;
103965 l_accted_amt_idx NUMBER;
103966 l_acc_rev_flag VARCHAR2(1);
103967 l_accrual_line_num NUMBER;
103968 l_tmp_amt NUMBER;
103969 l_acc_rev_natural_side_code VARCHAR2(1);
103970
103971 l_num_entries NUMBER;
103972 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
103973 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
103974 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
103975 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
103976 l_recog_line_1 NUMBER;
103977 l_recog_line_2 NUMBER;
103978
103979 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
103980 l_bflow_applied_to_amt NUMBER; -- 5132302
103981 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
103982
103983 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103984
103985 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
103986 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
103987
103988 ---------------------------------------------------------------------------------------------------------------
103989
103990
103991 --
103992 -- bulk performance
103993 --
103994 l_balance_type_code VARCHAR2(1);
103995 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
103996 l_log_module VARCHAR2(240);
103997
103998 --
103999 -- Upgrade strategy
104000 --
104001 l_actual_upg_option VARCHAR2(1);
104002 l_enc_upg_option VARCHAR2(1);
104003
104004 --
104005 BEGIN
104006 --
104007 IF g_log_enabled THEN
104008 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_220';
104009 END IF;
104010 --
104011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104012
104013 trace
104014 (p_msg => 'BEGIN of AcctLineType_220'
104015 ,p_level => C_LEVEL_PROCEDURE
104016 ,p_module => l_log_module);
104017
104018 END IF;
104019 --
104020 l_component_type := 'AMB_JLT';
104021 l_component_code := 'PPV';
104022 l_component_type_code := 'S';
104023 l_component_appl_id := 555;
104024 l_amb_context_code := 'DEFAULT';
104025 l_entity_code := 'INVENTORY';
104026 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
104027 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
104028 l_line_definition_owner_code := 'S';
104029 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_TP';
104030 --
104031 l_balance_type_code := 'A';
104032 l_segment := NULL;
104033 l_ccid := NULL;
104034 l_adr_transaction_coa_id := NULL;
104035 l_adr_accounting_coa_id := NULL;
104036 l_adr_flexfield_segment_code := NULL;
104037 l_adr_flex_value_set_id := NULL;
104038 l_adr_value_type_code := NULL;
104039 l_adr_value_combination_id := NULL;
104040 l_adr_value_segment_code := NULL;
104041
104042 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
104043 l_bflow_class_code := ''; -- 4219869 Business Flow
104044 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
104048 l_bflow_applied_to_amt := NULL; -- 5132302
104045 l_budgetary_control_flag := 'N';
104046
104047 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104049 l_entered_amt_idx := NULL; -- 4262811
104050 l_accted_amt_idx := NULL; -- 4262811
104051 l_acc_rev_flag := NULL; -- 4262811
104052 l_accrual_line_num := NULL; -- 4262811
104053 l_tmp_amt := NULL; -- 4262811
104054 --
104055
104056 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104057 l_balance_type_code <> 'B' THEN
104058 IF NVL(p_source_2,'
104059 ') = 'PPV'
104060 THEN
104061
104062 --
104063 XLA_AE_LINES_PKG.SetNewLine;
104064
104065 p_balance_type_code := l_balance_type_code;
104066 -- set the flag so later we will know whether the gain loss line needs to be created
104067
104068 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104069 p_actual_flag :='A';
104070 END IF;
104071
104072 --
104073 -- bulk performance
104074 --
104075 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104076 p_header_num => 0); -- 4262811
104077 --
104078 -- set accounting line options
104079 --
104080 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104081 p_natural_side_code => 'D'
104082 , p_gain_or_loss_flag => 'N'
104083 , p_gl_transfer_mode_code => 'D'
104084 , p_acct_entry_type_code => 'A'
104085 , p_switch_side_flag => 'Y'
104086 , p_merge_duplicate_code => 'W'
104087 );
104088 --
104089 l_acc_rev_natural_side_code := 'C'; -- 4262811
104090 --
104091 --
104092 -- set accounting line type info
104093 --
104094 xla_ae_lines_pkg.SetAcctLineType
104095 (p_component_type => l_component_type
104096 ,p_event_type_code => l_event_type_code
104097 ,p_line_definition_owner_code => l_line_definition_owner_code
104098 ,p_line_definition_code => l_line_definition_code
104099 ,p_accounting_line_code => l_component_code
104100 ,p_accounting_line_type_code => l_component_type_code
104101 ,p_accounting_line_appl_id => l_component_appl_id
104102 ,p_amb_context_code => l_amb_context_code
104103 ,p_entity_code => l_entity_code
104104 ,p_event_class_code => l_event_class_code);
104105 --
104106 -- set accounting class
104107 --
104108 xla_ae_lines_pkg.SetAcctClass(
104109 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
104110 , p_ae_header_id => l_ae_header_id
104111 );
104112
104113 --
104114 -- set rounding class
104115 --
104116 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104117 'PURCHASE_PRICE_VARIANCE';
104118
104119 --
104120 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104121 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104122 --
104123 -- bulk performance
104124 --
104125 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104126
104127 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104128 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104129
104130 -- 4955764
104131 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104132 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104133
104134 -- 4458381 Public Sector Enh
104135
104136 --
104137 -- set accounting attributes for the line type
104138 --
104139 l_entered_amt_idx := 3;
104140 l_accted_amt_idx := 8;
104141 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104142 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104143 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
104144 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104145 l_rec_acct_attrs.array_char_value(2) := p_source_6;
104146 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104147 l_rec_acct_attrs.array_num_value(3) := p_source_3;
104148 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104149 l_rec_acct_attrs.array_char_value(4) := p_source_7;
104150 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104151 l_rec_acct_attrs.array_date_value(5) := p_source_8;
104152 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104153 l_rec_acct_attrs.array_num_value(6) := p_source_9;
104154 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104155 l_rec_acct_attrs.array_char_value(7) := p_source_10;
104156 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104157 l_rec_acct_attrs.array_num_value(8) := p_source_11;
104158
104159 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104160 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104161
104162 ---------------------------------------------------------------------------------------------------------------
104163 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104167 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104164 ---------------------------------------------------------------------------------------------------------------
104165 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104166
104168 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104169
104170 IF xla_accounting_cache_pkg.GetValueChar
104171 (p_source_code => 'LEDGER_CATEGORY_CODE'
104172 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104173 AND l_bflow_method_code = 'PRIOR_ENTRY'
104174 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104175 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104176 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104177 )
104178 THEN
104179 xla_ae_lines_pkg.BflowUpgEntry
104180 (p_business_method_code => l_bflow_method_code
104181 ,p_business_class_code => l_bflow_class_code
104182 ,p_balance_type => l_balance_type_code);
104183 ELSE
104184 NULL;
104185 -- No business flow processing for business flow method of NONE.
104186 END IF;
104187
104188 --
104189 -- call analytical criteria
104190 --
104191
104192 --
104193 -- call description
104194 --
104195 -- No description or it is inherited.
104196 --
104197 -- call ADRs
104198 -- Bug 4922099
104199 --
104200 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104201 (NVL(l_actual_upg_option, 'N') = 'O') OR
104202 (NVL(l_enc_upg_option, 'N') = 'O')
104203 )
104204 THEN
104205 NULL;
104206 --
104207 --
104208
104209 l_ccid := AcctDerRule_31(
104210 p_application_id => p_application_id
104211 , p_ae_header_id => l_ae_header_id
104212 , p_source_1 => p_source_1
104213 , p_source_2 => p_source_2
104214 , x_transaction_coa_id => l_adr_transaction_coa_id
104215 , x_accounting_coa_id => l_adr_accounting_coa_id
104216 , x_value_type_code => l_adr_value_type_code
104217 , p_side => 'NA'
104218 );
104219
104220 xla_ae_lines_pkg.set_ccid(
104221 p_code_combination_id => l_ccid
104222 , p_value_type_code => l_adr_value_type_code
104223 , p_transaction_coa_id => l_adr_transaction_coa_id
104224 , p_accounting_coa_id => l_adr_accounting_coa_id
104225 , p_adr_code => 'PPV'
104226 , p_adr_type_code => 'S'
104227 , p_component_type => l_component_type
104228 , p_component_code => l_component_code
104229 , p_component_type_code => l_component_type_code
104230 , p_component_appl_id => l_component_appl_id
104231 , p_amb_context_code => l_amb_context_code
104232 , p_side => 'NA'
104233 );
104234
104235
104236 --
104237 --
104238 END IF;
104239 --
104240 -- Bug 4922099
104241 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104242 (NVL(l_enc_upg_option, 'N') = 'O')
104243 ) AND
104244 (l_bflow_method_code = 'PRIOR_ENTRY')
104245 )
104246 THEN
104247 IF
104248 --
104249 1 = 2
104250 --
104251 THEN
104252 xla_accounting_err_pkg.build_message
104253 (p_appli_s_name => 'XLA'
104254 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104255 ,p_token_1 => 'LINE_NUMBER'
104256 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
104257 ,p_token_2 => 'LINE_TYPE_NAME'
104258 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
104259 l_component_type
104260 ,l_component_code
104261 ,l_component_type_code
104262 ,l_component_appl_id
104263 ,l_amb_context_code
104264 ,l_entity_code
104265 ,l_event_class_code
104266 )
104267 ,p_token_3 => 'OWNER'
104268 ,p_value_3 => xla_lookups_pkg.get_meaning(
104269 p_lookup_type => 'XLA_OWNER_TYPE'
104270 ,p_lookup_code => l_component_type_code
104271 )
104272 ,p_token_4 => 'PRODUCT_NAME'
104273 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104277 ,p_ae_header_id => NULL
104274 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104275 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104276 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104278 );
104279
104280 IF (C_LEVEL_ERROR>= g_log_level) THEN
104281 trace
104282 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104283 ,p_level => C_LEVEL_ERROR
104284 ,p_module => l_log_module);
104285 END IF;
104286 END IF;
104287 END IF;
104288 --
104289 --
104290 ------------------------------------------------------------------------------------------------
104291 -- 4219869 Business Flow
104292 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104293 -- Prior Entry. Currently, the following code is always generated.
104294 ------------------------------------------------------------------------------------------------
104295 XLA_AE_LINES_PKG.ValidateCurrentLine;
104296
104297 ------------------------------------------------------------------------------------
104298 -- 4219869 Business Flow
104299 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104300 ------------------------------------------------------------------------------------
104301 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104302
104303 ----------------------------------------------------------------------------------
104304 -- 4219869 Business Flow
104305 -- Update journal entry status -- Need to generate this within IF <condition>
104306 ----------------------------------------------------------------------------------
104307 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104308 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104309 ,p_balance_type_code => l_balance_type_code
104310 );
104311
104312 -------------------------------------------------------------------------------------------
104313 -- 4262811 - Generate the Accrual Reversal lines
104314 -------------------------------------------------------------------------------------------
104315 BEGIN
104316 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104317 (g_array_event(p_event_id).array_value_num('header_index'));
104318 IF l_acc_rev_flag IS NULL THEN
104319 l_acc_rev_flag := 'N';
104320 END IF;
104321 EXCEPTION
104322 WHEN OTHERS THEN
104323 l_acc_rev_flag := 'N';
104324 END;
104325 --
104326 IF (l_acc_rev_flag = 'Y') THEN
104327
104328 -- 4645092 ------------------------------------------------------------------------------
104329 -- To allow MPA report to determine if it should generate report process
104330 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104331 ------------------------------------------------------------------------------------------
104332
104333 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104334 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104335 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
104336 -- call ADRs
104337 -- Bug 4922099
104338 --
104339 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104340 (NVL(l_actual_upg_option, 'N') = 'O') OR
104341 (NVL(l_enc_upg_option, 'N') = 'O')
104342 )
104343 THEN
104344 NULL;
104345 --
104346 --
104347
104348 l_ccid := AcctDerRule_31(
104349 p_application_id => p_application_id
104350 , p_ae_header_id => l_ae_header_id
104351 , p_source_1 => p_source_1
104352 , p_source_2 => p_source_2
104353 , x_transaction_coa_id => l_adr_transaction_coa_id
104354 , x_accounting_coa_id => l_adr_accounting_coa_id
104355 , x_value_type_code => l_adr_value_type_code
104356 , p_side => 'NA'
104357 );
104358
104359 xla_ae_lines_pkg.set_ccid(
104360 p_code_combination_id => l_ccid
104361 , p_value_type_code => l_adr_value_type_code
104362 , p_transaction_coa_id => l_adr_transaction_coa_id
104363 , p_accounting_coa_id => l_adr_accounting_coa_id
104364 , p_adr_code => 'PPV'
104365 , p_adr_type_code => 'S'
104366 , p_component_type => l_component_type
104367 , p_component_code => l_component_code
104368 , p_component_type_code => l_component_type_code
104369 , p_component_appl_id => l_component_appl_id
104370 , p_amb_context_code => l_amb_context_code
104371 , p_side => 'NA'
104372 );
104373
104374
104375 --
104376 --
104377 END IF;
104378
104379 --
104380 -- Update the line information that should be overwritten
104381 --
104382 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104383 p_header_num => 1);
104384 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
104385
104389 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104386 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104387
104388 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
104390 END IF;
104391
104392 --
104393 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104394 --
104395 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104396 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
104397 ELSE
104398 ---------------------------------------------------------------------------------------------------
104399 -- 4262811a Switch Sign
104400 ---------------------------------------------------------------------------------------------------
104401 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
104402 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104403 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104404 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104405 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104406 -- 5132302
104407 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104408 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104409
104410 END IF;
104411
104412 -- 4955764
104413 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104414 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104415
104416
104417 XLA_AE_LINES_PKG.ValidateCurrentLine;
104418 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104419
104420 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104421 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104422 ,p_balance_type_code => l_balance_type_code);
104423
104424 END IF;
104425
104426 -----------------------------------------------------------------------------------------
104427 -- 4262811 Multiperiod Accounting
104428 -----------------------------------------------------------------------------------------
104429 -- No MPA option is assigned.
104430
104431
104432 END IF;
104433 END IF;
104434 --
104435
104436 --
104437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104438 trace
104439 (p_msg => 'END of AcctLineType_220'
104440 ,p_level => C_LEVEL_PROCEDURE
104441 ,p_module => l_log_module);
104442 END IF;
104443 --
104444 EXCEPTION
104445 WHEN xla_exceptions_pkg.application_exception THEN
104446 RAISE;
104447 WHEN OTHERS THEN
104448 xla_exceptions_pkg.raise_message
104449 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_220');
104450 END AcctLineType_220;
104451 --
104452
104453 ---------------------------------------
104454 --
104455 -- PRIVATE FUNCTION
104456 -- AcctLineType_221
104457 --
104458 ---------------------------------------
104459 PROCEDURE AcctLineType_221 (
104460 p_application_id IN NUMBER
104461 ,p_event_id IN NUMBER
104462 ,p_calculate_acctd_flag IN VARCHAR2
104463 ,p_calculate_g_l_flag IN VARCHAR2
104464 ,p_actual_flag IN OUT VARCHAR2
104465 ,p_balance_type_code OUT VARCHAR2
104466 ,p_gain_or_loss_ref OUT VARCHAR2
104467
104468 --Transaction Account
104469 , p_source_1 IN NUMBER
104470 --Journal Line Type
104471 , p_source_2 IN VARCHAR2
104472 --Entered Amount
104473 , p_source_3 IN NUMBER
104474 --First Distribution Identifier
104475 , p_source_5 IN NUMBER
104476 --Distribution Type
104477 , p_source_6 IN VARCHAR2
104478 --Currency Code
104479 , p_source_7 IN VARCHAR2
104480 --Currency Conversion Date
104481 , p_source_8 IN DATE
104482 --Currency Conversion Rate
104483 , p_source_9 IN NUMBER
104484 --Currency Conversion Type
104485 , p_source_10 IN VARCHAR2
104486 --Accounted Amount
104487 , p_source_11 IN NUMBER
104488 )
104489 IS
104490
104491 l_component_type VARCHAR2(80);
104492 l_component_code VARCHAR2(30);
104493 l_component_type_code VARCHAR2(1);
104494 l_component_appl_id INTEGER;
104495 l_amb_context_code VARCHAR2(30);
104496 l_entity_code VARCHAR2(30);
104497 l_event_class_code VARCHAR2(30);
104498 l_ae_header_id NUMBER;
104499 l_event_type_code VARCHAR2(30);
104500 l_line_definition_code VARCHAR2(30);
104501 l_line_definition_owner_code VARCHAR2(1);
104502 --
104503 -- adr variables
104504 l_segment VARCHAR2(30);
104505 l_ccid NUMBER;
104506 l_adr_transaction_coa_id NUMBER;
104507 l_adr_accounting_coa_id NUMBER;
104508 l_adr_flexfield_segment_code VARCHAR2(30);
104509 l_adr_flex_value_set_id NUMBER;
104510 l_adr_value_type_code VARCHAR2(30);
104514 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
104511 l_adr_value_combination_id NUMBER;
104512 l_adr_value_segment_code VARCHAR2(30);
104513
104515 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
104516 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
104517 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
104518
104519 -- 4262811 Variables ------------------------------------------------------------------------------------------
104520 l_entered_amt_idx NUMBER;
104521 l_accted_amt_idx NUMBER;
104522 l_acc_rev_flag VARCHAR2(1);
104523 l_accrual_line_num NUMBER;
104524 l_tmp_amt NUMBER;
104525 l_acc_rev_natural_side_code VARCHAR2(1);
104526
104527 l_num_entries NUMBER;
104528 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
104529 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
104530 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
104531 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
104532 l_recog_line_1 NUMBER;
104533 l_recog_line_2 NUMBER;
104534
104535 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
104536 l_bflow_applied_to_amt NUMBER; -- 5132302
104537 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
104538
104539 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104540
104541 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
104542 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
104543
104544 ---------------------------------------------------------------------------------------------------------------
104545
104546
104547 --
104548 -- bulk performance
104549 --
104550 l_balance_type_code VARCHAR2(1);
104551 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
104552 l_log_module VARCHAR2(240);
104553
104554 --
104555 -- Upgrade strategy
104556 --
104557 l_actual_upg_option VARCHAR2(1);
104558 l_enc_upg_option VARCHAR2(1);
104559
104560 --
104561 BEGIN
104562 --
104563 IF g_log_enabled THEN
104564 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_221';
104565 END IF;
104566 --
104567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104568
104569 trace
104570 (p_msg => 'BEGIN of AcctLineType_221'
104571 ,p_level => C_LEVEL_PROCEDURE
104572 ,p_module => l_log_module);
104573
104574 END IF;
104575 --
104576 l_component_type := 'AMB_JLT';
104577 l_component_code := 'PPV';
104578 l_component_type_code := 'S';
104579 l_component_appl_id := 555;
104580 l_amb_context_code := 'DEFAULT';
104581 l_entity_code := 'INVENTORY';
104582 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
104583 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
104584 l_line_definition_owner_code := 'S';
104585 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_TP';
104586 --
104587 l_balance_type_code := 'A';
104588 l_segment := NULL;
104589 l_ccid := NULL;
104590 l_adr_transaction_coa_id := NULL;
104591 l_adr_accounting_coa_id := NULL;
104592 l_adr_flexfield_segment_code := NULL;
104593 l_adr_flex_value_set_id := NULL;
104594 l_adr_value_type_code := NULL;
104595 l_adr_value_combination_id := NULL;
104596 l_adr_value_segment_code := NULL;
104597
104598 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
104599 l_bflow_class_code := ''; -- 4219869 Business Flow
104600 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
104601 l_budgetary_control_flag := 'N';
104602
104603 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104604 l_bflow_applied_to_amt := NULL; -- 5132302
104605 l_entered_amt_idx := NULL; -- 4262811
104606 l_accted_amt_idx := NULL; -- 4262811
104607 l_acc_rev_flag := NULL; -- 4262811
104608 l_accrual_line_num := NULL; -- 4262811
104609 l_tmp_amt := NULL; -- 4262811
104610 --
104611
104612 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104613 l_balance_type_code <> 'B' THEN
104614 IF NVL(p_source_2,'
104615 ') = 'PPV'
104616 THEN
104617
104618 --
104619 XLA_AE_LINES_PKG.SetNewLine;
104620
104621 p_balance_type_code := l_balance_type_code;
104622 -- set the flag so later we will know whether the gain loss line needs to be created
104623
104624 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104625 p_actual_flag :='A';
104626 END IF;
104627
104628 --
104629 -- bulk performance
104630 --
104631 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104632 p_header_num => 0); -- 4262811
104633 --
104634 -- set accounting line options
104635 --
104636 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104637 p_natural_side_code => 'D'
104638 , p_gain_or_loss_flag => 'N'
104639 , p_gl_transfer_mode_code => 'D'
104640 , p_acct_entry_type_code => 'A'
104644 --
104641 , p_switch_side_flag => 'Y'
104642 , p_merge_duplicate_code => 'W'
104643 );
104645 l_acc_rev_natural_side_code := 'C'; -- 4262811
104646 --
104647 --
104648 -- set accounting line type info
104649 --
104650 xla_ae_lines_pkg.SetAcctLineType
104651 (p_component_type => l_component_type
104652 ,p_event_type_code => l_event_type_code
104653 ,p_line_definition_owner_code => l_line_definition_owner_code
104654 ,p_line_definition_code => l_line_definition_code
104655 ,p_accounting_line_code => l_component_code
104656 ,p_accounting_line_type_code => l_component_type_code
104657 ,p_accounting_line_appl_id => l_component_appl_id
104658 ,p_amb_context_code => l_amb_context_code
104659 ,p_entity_code => l_entity_code
104660 ,p_event_class_code => l_event_class_code);
104661 --
104662 -- set accounting class
104663 --
104664 xla_ae_lines_pkg.SetAcctClass(
104665 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
104666 , p_ae_header_id => l_ae_header_id
104667 );
104668
104669 --
104670 -- set rounding class
104671 --
104672 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104673 'PURCHASE_PRICE_VARIANCE';
104674
104675 --
104676 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104677 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104678 --
104679 -- bulk performance
104680 --
104681 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104682
104683 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104684 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104685
104686 -- 4955764
104687 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104688 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104689
104690 -- 4458381 Public Sector Enh
104691
104692 --
104693 -- set accounting attributes for the line type
104694 --
104695 l_entered_amt_idx := 3;
104696 l_accted_amt_idx := 8;
104697 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104698 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
104699 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
104700 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
104701 l_rec_acct_attrs.array_char_value(2) := p_source_6;
104702 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
104703 l_rec_acct_attrs.array_num_value(3) := p_source_3;
104704 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
104705 l_rec_acct_attrs.array_char_value(4) := p_source_7;
104706 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
104707 l_rec_acct_attrs.array_date_value(5) := p_source_8;
104708 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
104709 l_rec_acct_attrs.array_num_value(6) := p_source_9;
104710 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
104711 l_rec_acct_attrs.array_char_value(7) := p_source_10;
104712 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
104713 l_rec_acct_attrs.array_num_value(8) := p_source_11;
104714
104715 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104716 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104717
104718 ---------------------------------------------------------------------------------------------------------------
104719 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104720 ---------------------------------------------------------------------------------------------------------------
104721 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104722
104723 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104724 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104725
104726 IF xla_accounting_cache_pkg.GetValueChar
104727 (p_source_code => 'LEDGER_CATEGORY_CODE'
104728 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104729 AND l_bflow_method_code = 'PRIOR_ENTRY'
104730 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104731 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104732 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104733 )
104734 THEN
104735 xla_ae_lines_pkg.BflowUpgEntry
104736 (p_business_method_code => l_bflow_method_code
104737 ,p_business_class_code => l_bflow_class_code
104738 ,p_balance_type => l_balance_type_code);
104739 ELSE
104740 NULL;
104741 -- No business flow processing for business flow method of NONE.
104742 END IF;
104743
104744 --
104745 -- call analytical criteria
104746 --
104747
104748 --
104749 -- call description
104750 --
104751 -- No description or it is inherited.
104752 --
104753 -- call ADRs
104754 -- Bug 4922099
104755 --
104759 )
104756 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104757 (NVL(l_actual_upg_option, 'N') = 'O') OR
104758 (NVL(l_enc_upg_option, 'N') = 'O')
104760 THEN
104761 NULL;
104762 --
104763 --
104764
104765 l_ccid := AcctDerRule_31(
104766 p_application_id => p_application_id
104767 , p_ae_header_id => l_ae_header_id
104768 , p_source_1 => p_source_1
104769 , p_source_2 => p_source_2
104770 , x_transaction_coa_id => l_adr_transaction_coa_id
104771 , x_accounting_coa_id => l_adr_accounting_coa_id
104772 , x_value_type_code => l_adr_value_type_code
104773 , p_side => 'NA'
104774 );
104775
104776 xla_ae_lines_pkg.set_ccid(
104777 p_code_combination_id => l_ccid
104778 , p_value_type_code => l_adr_value_type_code
104779 , p_transaction_coa_id => l_adr_transaction_coa_id
104780 , p_accounting_coa_id => l_adr_accounting_coa_id
104781 , p_adr_code => 'PPV'
104782 , p_adr_type_code => 'S'
104783 , p_component_type => l_component_type
104784 , p_component_code => l_component_code
104785 , p_component_type_code => l_component_type_code
104786 , p_component_appl_id => l_component_appl_id
104787 , p_amb_context_code => l_amb_context_code
104788 , p_side => 'NA'
104789 );
104790
104791
104792 --
104793 --
104794 END IF;
104795 --
104796 -- Bug 4922099
104797 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104798 (NVL(l_enc_upg_option, 'N') = 'O')
104799 ) AND
104800 (l_bflow_method_code = 'PRIOR_ENTRY')
104801 )
104802 THEN
104803 IF
104804 --
104805 1 = 2
104806 --
104807 THEN
104808 xla_accounting_err_pkg.build_message
104809 (p_appli_s_name => 'XLA'
104810 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104811 ,p_token_1 => 'LINE_NUMBER'
104812 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
104813 ,p_token_2 => 'LINE_TYPE_NAME'
104814 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
104815 l_component_type
104816 ,l_component_code
104817 ,l_component_type_code
104818 ,l_component_appl_id
104819 ,l_amb_context_code
104820 ,l_entity_code
104821 ,l_event_class_code
104822 )
104823 ,p_token_3 => 'OWNER'
104824 ,p_value_3 => xla_lookups_pkg.get_meaning(
104825 p_lookup_type => 'XLA_OWNER_TYPE'
104826 ,p_lookup_code => l_component_type_code
104827 )
104828 ,p_token_4 => 'PRODUCT_NAME'
104829 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104830 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104831 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104832 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104833 ,p_ae_header_id => NULL
104834 );
104835
104836 IF (C_LEVEL_ERROR>= g_log_level) THEN
104837 trace
104838 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104839 ,p_level => C_LEVEL_ERROR
104840 ,p_module => l_log_module);
104841 END IF;
104842 END IF;
104843 END IF;
104844 --
104845 --
104846 ------------------------------------------------------------------------------------------------
104847 -- 4219869 Business Flow
104848 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104849 -- Prior Entry. Currently, the following code is always generated.
104850 ------------------------------------------------------------------------------------------------
104851 XLA_AE_LINES_PKG.ValidateCurrentLine;
104852
104853 ------------------------------------------------------------------------------------
104854 -- 4219869 Business Flow
104855 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104856 ------------------------------------------------------------------------------------
104860 -- 4219869 Business Flow
104857 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104858
104859 ----------------------------------------------------------------------------------
104861 -- Update journal entry status -- Need to generate this within IF <condition>
104862 ----------------------------------------------------------------------------------
104863 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104864 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104865 ,p_balance_type_code => l_balance_type_code
104866 );
104867
104868 -------------------------------------------------------------------------------------------
104869 -- 4262811 - Generate the Accrual Reversal lines
104870 -------------------------------------------------------------------------------------------
104871 BEGIN
104872 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104873 (g_array_event(p_event_id).array_value_num('header_index'));
104874 IF l_acc_rev_flag IS NULL THEN
104875 l_acc_rev_flag := 'N';
104876 END IF;
104877 EXCEPTION
104878 WHEN OTHERS THEN
104879 l_acc_rev_flag := 'N';
104880 END;
104881 --
104882 IF (l_acc_rev_flag = 'Y') THEN
104883
104884 -- 4645092 ------------------------------------------------------------------------------
104885 -- To allow MPA report to determine if it should generate report process
104886 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104887 ------------------------------------------------------------------------------------------
104888
104889 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104890 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104891 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
104892 -- call ADRs
104893 -- Bug 4922099
104894 --
104895 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104896 (NVL(l_actual_upg_option, 'N') = 'O') OR
104897 (NVL(l_enc_upg_option, 'N') = 'O')
104898 )
104899 THEN
104900 NULL;
104901 --
104902 --
104903
104904 l_ccid := AcctDerRule_31(
104905 p_application_id => p_application_id
104906 , p_ae_header_id => l_ae_header_id
104907 , p_source_1 => p_source_1
104908 , p_source_2 => p_source_2
104909 , x_transaction_coa_id => l_adr_transaction_coa_id
104910 , x_accounting_coa_id => l_adr_accounting_coa_id
104911 , x_value_type_code => l_adr_value_type_code
104912 , p_side => 'NA'
104913 );
104914
104915 xla_ae_lines_pkg.set_ccid(
104916 p_code_combination_id => l_ccid
104917 , p_value_type_code => l_adr_value_type_code
104918 , p_transaction_coa_id => l_adr_transaction_coa_id
104919 , p_accounting_coa_id => l_adr_accounting_coa_id
104920 , p_adr_code => 'PPV'
104921 , p_adr_type_code => 'S'
104922 , p_component_type => l_component_type
104923 , p_component_code => l_component_code
104924 , p_component_type_code => l_component_type_code
104925 , p_component_appl_id => l_component_appl_id
104926 , p_amb_context_code => l_amb_context_code
104927 , p_side => 'NA'
104928 );
104929
104930
104931 --
104932 --
104933 END IF;
104934
104935 --
104936 -- Update the line information that should be overwritten
104937 --
104938 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104939 p_header_num => 1);
104940 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
104941
104942 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104943
104944 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
104945 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104946 END IF;
104947
104948 --
104949 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104950 --
104951 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104952 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
104953 ELSE
104954 ---------------------------------------------------------------------------------------------------
104955 -- 4262811a Switch Sign
104956 ---------------------------------------------------------------------------------------------------
104957 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
104958 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104959 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104960 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104961 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104962 -- 5132302
104963 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104967
104964 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104965
104966 END IF;
104968 -- 4955764
104969 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104970 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104971
104972
104973 XLA_AE_LINES_PKG.ValidateCurrentLine;
104974 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104975
104976 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104977 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104978 ,p_balance_type_code => l_balance_type_code);
104979
104980 END IF;
104981
104982 -----------------------------------------------------------------------------------------
104983 -- 4262811 Multiperiod Accounting
104984 -----------------------------------------------------------------------------------------
104985 -- No MPA option is assigned.
104986
104987
104988 END IF;
104989 END IF;
104990 --
104991
104992 --
104993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104994 trace
104995 (p_msg => 'END of AcctLineType_221'
104996 ,p_level => C_LEVEL_PROCEDURE
104997 ,p_module => l_log_module);
104998 END IF;
104999 --
105000 EXCEPTION
105001 WHEN xla_exceptions_pkg.application_exception THEN
105002 RAISE;
105003 WHEN OTHERS THEN
105004 xla_exceptions_pkg.raise_message
105005 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_221');
105006 END AcctLineType_221;
105007 --
105008
105009 ---------------------------------------
105010 --
105011 -- PRIVATE FUNCTION
105012 -- AcctLineType_222
105013 --
105014 ---------------------------------------
105015 PROCEDURE AcctLineType_222 (
105016 p_application_id IN NUMBER
105017 ,p_event_id IN NUMBER
105018 ,p_calculate_acctd_flag IN VARCHAR2
105019 ,p_calculate_g_l_flag IN VARCHAR2
105020 ,p_actual_flag IN OUT VARCHAR2
105021 ,p_balance_type_code OUT VARCHAR2
105022 ,p_gain_or_loss_ref OUT VARCHAR2
105023
105024 --Transaction Account
105025 , p_source_1 IN NUMBER
105026 --Journal Line Type
105027 , p_source_2 IN VARCHAR2
105028 --Entered Amount
105029 , p_source_3 IN NUMBER
105030 --First Distribution Identifier
105031 , p_source_5 IN NUMBER
105032 --Distribution Type
105033 , p_source_6 IN VARCHAR2
105034 --Currency Code
105035 , p_source_7 IN VARCHAR2
105036 --Currency Conversion Date
105037 , p_source_8 IN DATE
105038 --Currency Conversion Rate
105039 , p_source_9 IN NUMBER
105040 --Currency Conversion Type
105041 , p_source_10 IN VARCHAR2
105042 --Accounted Amount
105043 , p_source_11 IN NUMBER
105044 )
105045 IS
105046
105047 l_component_type VARCHAR2(80);
105048 l_component_code VARCHAR2(30);
105049 l_component_type_code VARCHAR2(1);
105050 l_component_appl_id INTEGER;
105051 l_amb_context_code VARCHAR2(30);
105052 l_entity_code VARCHAR2(30);
105053 l_event_class_code VARCHAR2(30);
105054 l_ae_header_id NUMBER;
105055 l_event_type_code VARCHAR2(30);
105056 l_line_definition_code VARCHAR2(30);
105057 l_line_definition_owner_code VARCHAR2(1);
105058 --
105059 -- adr variables
105060 l_segment VARCHAR2(30);
105061 l_ccid NUMBER;
105062 l_adr_transaction_coa_id NUMBER;
105063 l_adr_accounting_coa_id NUMBER;
105064 l_adr_flexfield_segment_code VARCHAR2(30);
105065 l_adr_flex_value_set_id NUMBER;
105066 l_adr_value_type_code VARCHAR2(30);
105067 l_adr_value_combination_id NUMBER;
105068 l_adr_value_segment_code VARCHAR2(30);
105069
105070 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
105071 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
105072 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
105073 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
105074
105075 -- 4262811 Variables ------------------------------------------------------------------------------------------
105076 l_entered_amt_idx NUMBER;
105077 l_accted_amt_idx NUMBER;
105078 l_acc_rev_flag VARCHAR2(1);
105079 l_accrual_line_num NUMBER;
105080 l_tmp_amt NUMBER;
105081 l_acc_rev_natural_side_code VARCHAR2(1);
105082
105083 l_num_entries NUMBER;
105084 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
105085 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
105086 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
105087 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
105088 l_recog_line_1 NUMBER;
105089 l_recog_line_2 NUMBER;
105090
105091 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
105092 l_bflow_applied_to_amt NUMBER; -- 5132302
105093 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
105094
105095 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105096
105097 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
105101
105098 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
105099
105100 ---------------------------------------------------------------------------------------------------------------
105102
105103 --
105104 -- bulk performance
105105 --
105106 l_balance_type_code VARCHAR2(1);
105107 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
105108 l_log_module VARCHAR2(240);
105109
105110 --
105111 -- Upgrade strategy
105112 --
105113 l_actual_upg_option VARCHAR2(1);
105114 l_enc_upg_option VARCHAR2(1);
105115
105116 --
105117 BEGIN
105118 --
105119 IF g_log_enabled THEN
105120 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_222';
105121 END IF;
105122 --
105123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105124
105125 trace
105126 (p_msg => 'BEGIN of AcctLineType_222'
105127 ,p_level => C_LEVEL_PROCEDURE
105128 ,p_module => l_log_module);
105129
105130 END IF;
105131 --
105132 l_component_type := 'AMB_JLT';
105133 l_component_code := 'PPV';
105134 l_component_type_code := 'S';
105135 l_component_appl_id := 555;
105136 l_amb_context_code := 'DEFAULT';
105137 l_entity_code := 'INVENTORY';
105138 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
105139 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
105140 l_line_definition_owner_code := 'S';
105141 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
105142 --
105143 l_balance_type_code := 'A';
105144 l_segment := NULL;
105145 l_ccid := NULL;
105146 l_adr_transaction_coa_id := NULL;
105147 l_adr_accounting_coa_id := NULL;
105148 l_adr_flexfield_segment_code := NULL;
105149 l_adr_flex_value_set_id := NULL;
105150 l_adr_value_type_code := NULL;
105151 l_adr_value_combination_id := NULL;
105152 l_adr_value_segment_code := NULL;
105153
105154 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
105155 l_bflow_class_code := ''; -- 4219869 Business Flow
105156 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
105157 l_budgetary_control_flag := 'N';
105158
105159 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105160 l_bflow_applied_to_amt := NULL; -- 5132302
105161 l_entered_amt_idx := NULL; -- 4262811
105162 l_accted_amt_idx := NULL; -- 4262811
105163 l_acc_rev_flag := NULL; -- 4262811
105164 l_accrual_line_num := NULL; -- 4262811
105165 l_tmp_amt := NULL; -- 4262811
105166 --
105167
105168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105169 l_balance_type_code <> 'B' THEN
105170 IF NVL(p_source_2,'
105171 ') = 'PPV'
105172 THEN
105173
105174 --
105175 XLA_AE_LINES_PKG.SetNewLine;
105176
105177 p_balance_type_code := l_balance_type_code;
105178 -- set the flag so later we will know whether the gain loss line needs to be created
105179
105180 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105181 p_actual_flag :='A';
105182 END IF;
105183
105184 --
105185 -- bulk performance
105186 --
105187 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105188 p_header_num => 0); -- 4262811
105189 --
105190 -- set accounting line options
105191 --
105192 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105193 p_natural_side_code => 'D'
105194 , p_gain_or_loss_flag => 'N'
105195 , p_gl_transfer_mode_code => 'D'
105196 , p_acct_entry_type_code => 'A'
105197 , p_switch_side_flag => 'Y'
105198 , p_merge_duplicate_code => 'W'
105199 );
105200 --
105201 l_acc_rev_natural_side_code := 'C'; -- 4262811
105202 --
105203 --
105204 -- set accounting line type info
105205 --
105206 xla_ae_lines_pkg.SetAcctLineType
105207 (p_component_type => l_component_type
105208 ,p_event_type_code => l_event_type_code
105209 ,p_line_definition_owner_code => l_line_definition_owner_code
105210 ,p_line_definition_code => l_line_definition_code
105211 ,p_accounting_line_code => l_component_code
105212 ,p_accounting_line_type_code => l_component_type_code
105213 ,p_accounting_line_appl_id => l_component_appl_id
105214 ,p_amb_context_code => l_amb_context_code
105215 ,p_entity_code => l_entity_code
105216 ,p_event_class_code => l_event_class_code);
105217 --
105218 -- set accounting class
105219 --
105220 xla_ae_lines_pkg.SetAcctClass(
105221 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
105222 , p_ae_header_id => l_ae_header_id
105223 );
105224
105225 --
105226 -- set rounding class
105227 --
105228 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105229 'PURCHASE_PRICE_VARIANCE';
105230
105231 --
105232 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105236 --
105233 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105234 --
105235 -- bulk performance
105237 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105238
105239 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105240 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105241
105242 -- 4955764
105243 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105244 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105245
105246 -- 4458381 Public Sector Enh
105247
105248 --
105249 -- set accounting attributes for the line type
105250 --
105251 l_entered_amt_idx := 3;
105252 l_accted_amt_idx := 8;
105253 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105254 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105255 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
105256 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105257 l_rec_acct_attrs.array_char_value(2) := p_source_6;
105258 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105259 l_rec_acct_attrs.array_num_value(3) := p_source_3;
105260 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105261 l_rec_acct_attrs.array_char_value(4) := p_source_7;
105262 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105263 l_rec_acct_attrs.array_date_value(5) := p_source_8;
105264 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105265 l_rec_acct_attrs.array_num_value(6) := p_source_9;
105266 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105267 l_rec_acct_attrs.array_char_value(7) := p_source_10;
105268 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105269 l_rec_acct_attrs.array_num_value(8) := p_source_11;
105270
105271 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105272 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105273
105274 ---------------------------------------------------------------------------------------------------------------
105275 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105276 ---------------------------------------------------------------------------------------------------------------
105277 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105278
105279 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105280 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105281
105282 IF xla_accounting_cache_pkg.GetValueChar
105283 (p_source_code => 'LEDGER_CATEGORY_CODE'
105284 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105285 AND l_bflow_method_code = 'PRIOR_ENTRY'
105286 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105287 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105288 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105289 )
105290 THEN
105291 xla_ae_lines_pkg.BflowUpgEntry
105292 (p_business_method_code => l_bflow_method_code
105293 ,p_business_class_code => l_bflow_class_code
105294 ,p_balance_type => l_balance_type_code);
105295 ELSE
105296 NULL;
105297 -- No business flow processing for business flow method of NONE.
105298 END IF;
105299
105300 --
105301 -- call analytical criteria
105302 --
105303
105304 --
105305 -- call description
105306 --
105307 -- No description or it is inherited.
105308 --
105309 -- call ADRs
105310 -- Bug 4922099
105311 --
105312 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105313 (NVL(l_actual_upg_option, 'N') = 'O') OR
105314 (NVL(l_enc_upg_option, 'N') = 'O')
105315 )
105316 THEN
105317 NULL;
105318 --
105319 --
105320
105321 l_ccid := AcctDerRule_31(
105322 p_application_id => p_application_id
105323 , p_ae_header_id => l_ae_header_id
105324 , p_source_1 => p_source_1
105325 , p_source_2 => p_source_2
105326 , x_transaction_coa_id => l_adr_transaction_coa_id
105327 , x_accounting_coa_id => l_adr_accounting_coa_id
105328 , x_value_type_code => l_adr_value_type_code
105329 , p_side => 'NA'
105330 );
105331
105332 xla_ae_lines_pkg.set_ccid(
105333 p_code_combination_id => l_ccid
105334 , p_value_type_code => l_adr_value_type_code
105335 , p_transaction_coa_id => l_adr_transaction_coa_id
105336 , p_accounting_coa_id => l_adr_accounting_coa_id
105337 , p_adr_code => 'PPV'
105338 , p_adr_type_code => 'S'
105339 , p_component_type => l_component_type
105340 , p_component_code => l_component_code
105341 , p_component_type_code => l_component_type_code
105342 , p_component_appl_id => l_component_appl_id
105343 , p_amb_context_code => l_amb_context_code
105344 , p_side => 'NA'
105345 );
105346
105347
105351 --
105348 --
105349 --
105350 END IF;
105352 -- Bug 4922099
105353 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105354 (NVL(l_enc_upg_option, 'N') = 'O')
105355 ) AND
105356 (l_bflow_method_code = 'PRIOR_ENTRY')
105357 )
105358 THEN
105359 IF
105360 --
105361 1 = 2
105362 --
105363 THEN
105364 xla_accounting_err_pkg.build_message
105365 (p_appli_s_name => 'XLA'
105366 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105367 ,p_token_1 => 'LINE_NUMBER'
105368 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
105369 ,p_token_2 => 'LINE_TYPE_NAME'
105370 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
105371 l_component_type
105372 ,l_component_code
105373 ,l_component_type_code
105374 ,l_component_appl_id
105375 ,l_amb_context_code
105376 ,l_entity_code
105377 ,l_event_class_code
105378 )
105379 ,p_token_3 => 'OWNER'
105380 ,p_value_3 => xla_lookups_pkg.get_meaning(
105381 p_lookup_type => 'XLA_OWNER_TYPE'
105382 ,p_lookup_code => l_component_type_code
105383 )
105384 ,p_token_4 => 'PRODUCT_NAME'
105385 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105386 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105387 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105388 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105389 ,p_ae_header_id => NULL
105390 );
105391
105392 IF (C_LEVEL_ERROR>= g_log_level) THEN
105393 trace
105394 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105395 ,p_level => C_LEVEL_ERROR
105396 ,p_module => l_log_module);
105397 END IF;
105398 END IF;
105399 END IF;
105400 --
105401 --
105402 ------------------------------------------------------------------------------------------------
105403 -- 4219869 Business Flow
105404 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105405 -- Prior Entry. Currently, the following code is always generated.
105406 ------------------------------------------------------------------------------------------------
105407 XLA_AE_LINES_PKG.ValidateCurrentLine;
105408
105409 ------------------------------------------------------------------------------------
105410 -- 4219869 Business Flow
105411 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105412 ------------------------------------------------------------------------------------
105413 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105414
105415 ----------------------------------------------------------------------------------
105416 -- 4219869 Business Flow
105417 -- Update journal entry status -- Need to generate this within IF <condition>
105418 ----------------------------------------------------------------------------------
105419 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105420 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105421 ,p_balance_type_code => l_balance_type_code
105422 );
105423
105424 -------------------------------------------------------------------------------------------
105425 -- 4262811 - Generate the Accrual Reversal lines
105426 -------------------------------------------------------------------------------------------
105427 BEGIN
105428 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105429 (g_array_event(p_event_id).array_value_num('header_index'));
105430 IF l_acc_rev_flag IS NULL THEN
105431 l_acc_rev_flag := 'N';
105432 END IF;
105433 EXCEPTION
105434 WHEN OTHERS THEN
105435 l_acc_rev_flag := 'N';
105436 END;
105437 --
105438 IF (l_acc_rev_flag = 'Y') THEN
105439
105440 -- 4645092 ------------------------------------------------------------------------------
105441 -- To allow MPA report to determine if it should generate report process
105445 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105442 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105443 ------------------------------------------------------------------------------------------
105444
105446 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105447 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
105448 -- call ADRs
105449 -- Bug 4922099
105450 --
105451 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105452 (NVL(l_actual_upg_option, 'N') = 'O') OR
105453 (NVL(l_enc_upg_option, 'N') = 'O')
105454 )
105455 THEN
105456 NULL;
105457 --
105458 --
105459
105460 l_ccid := AcctDerRule_31(
105461 p_application_id => p_application_id
105462 , p_ae_header_id => l_ae_header_id
105463 , p_source_1 => p_source_1
105464 , p_source_2 => p_source_2
105465 , x_transaction_coa_id => l_adr_transaction_coa_id
105466 , x_accounting_coa_id => l_adr_accounting_coa_id
105467 , x_value_type_code => l_adr_value_type_code
105468 , p_side => 'NA'
105469 );
105470
105471 xla_ae_lines_pkg.set_ccid(
105472 p_code_combination_id => l_ccid
105473 , p_value_type_code => l_adr_value_type_code
105474 , p_transaction_coa_id => l_adr_transaction_coa_id
105475 , p_accounting_coa_id => l_adr_accounting_coa_id
105476 , p_adr_code => 'PPV'
105477 , p_adr_type_code => 'S'
105478 , p_component_type => l_component_type
105479 , p_component_code => l_component_code
105480 , p_component_type_code => l_component_type_code
105481 , p_component_appl_id => l_component_appl_id
105482 , p_amb_context_code => l_amb_context_code
105483 , p_side => 'NA'
105484 );
105485
105486
105487 --
105488 --
105489 END IF;
105490
105491 --
105492 -- Update the line information that should be overwritten
105493 --
105494 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105495 p_header_num => 1);
105496 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
105497
105498 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105499
105500 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
105501 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105502 END IF;
105503
105504 --
105505 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105506 --
105507 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105508 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
105509 ELSE
105510 ---------------------------------------------------------------------------------------------------
105511 -- 4262811a Switch Sign
105512 ---------------------------------------------------------------------------------------------------
105513 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
105514 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105515 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105516 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105517 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105518 -- 5132302
105519 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105520 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105521
105522 END IF;
105523
105524 -- 4955764
105525 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105526 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105527
105528
105529 XLA_AE_LINES_PKG.ValidateCurrentLine;
105530 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105531
105532 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105533 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105534 ,p_balance_type_code => l_balance_type_code);
105535
105536 END IF;
105537
105538 -----------------------------------------------------------------------------------------
105539 -- 4262811 Multiperiod Accounting
105540 -----------------------------------------------------------------------------------------
105541 -- No MPA option is assigned.
105542
105543
105544 END IF;
105545 END IF;
105546 --
105547
105548 --
105549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105550 trace
105551 (p_msg => 'END of AcctLineType_222'
105552 ,p_level => C_LEVEL_PROCEDURE
105553 ,p_module => l_log_module);
105554 END IF;
105555 --
105556 EXCEPTION
105557 WHEN xla_exceptions_pkg.application_exception THEN
105558 RAISE;
105559 WHEN OTHERS THEN
105560 xla_exceptions_pkg.raise_message
105564
105561 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_222');
105562 END AcctLineType_222;
105563 --
105565 ---------------------------------------
105566 --
105567 -- PRIVATE FUNCTION
105568 -- AcctLineType_223
105569 --
105570 ---------------------------------------
105571 PROCEDURE AcctLineType_223 (
105572 p_application_id IN NUMBER
105573 ,p_event_id IN NUMBER
105574 ,p_calculate_acctd_flag IN VARCHAR2
105575 ,p_calculate_g_l_flag IN VARCHAR2
105576 ,p_actual_flag IN OUT VARCHAR2
105577 ,p_balance_type_code OUT VARCHAR2
105578 ,p_gain_or_loss_ref OUT VARCHAR2
105579
105580 --Transaction Account
105581 , p_source_1 IN NUMBER
105582 --Journal Line Type
105583 , p_source_2 IN VARCHAR2
105584 --Entered Amount
105585 , p_source_3 IN NUMBER
105586 --First Distribution Identifier
105587 , p_source_5 IN NUMBER
105588 --Distribution Type
105589 , p_source_6 IN VARCHAR2
105590 --Currency Code
105591 , p_source_7 IN VARCHAR2
105592 --Currency Conversion Date
105593 , p_source_8 IN DATE
105594 --Currency Conversion Rate
105595 , p_source_9 IN NUMBER
105596 --Currency Conversion Type
105597 , p_source_10 IN VARCHAR2
105598 --Accounted Amount
105599 , p_source_11 IN NUMBER
105600 )
105601 IS
105602
105603 l_component_type VARCHAR2(80);
105604 l_component_code VARCHAR2(30);
105605 l_component_type_code VARCHAR2(1);
105606 l_component_appl_id INTEGER;
105607 l_amb_context_code VARCHAR2(30);
105608 l_entity_code VARCHAR2(30);
105609 l_event_class_code VARCHAR2(30);
105610 l_ae_header_id NUMBER;
105611 l_event_type_code VARCHAR2(30);
105612 l_line_definition_code VARCHAR2(30);
105613 l_line_definition_owner_code VARCHAR2(1);
105614 --
105615 -- adr variables
105616 l_segment VARCHAR2(30);
105617 l_ccid NUMBER;
105618 l_adr_transaction_coa_id NUMBER;
105619 l_adr_accounting_coa_id NUMBER;
105620 l_adr_flexfield_segment_code VARCHAR2(30);
105621 l_adr_flex_value_set_id NUMBER;
105622 l_adr_value_type_code VARCHAR2(30);
105623 l_adr_value_combination_id NUMBER;
105624 l_adr_value_segment_code VARCHAR2(30);
105625
105626 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
105627 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
105628 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
105629 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
105630
105631 -- 4262811 Variables ------------------------------------------------------------------------------------------
105632 l_entered_amt_idx NUMBER;
105633 l_accted_amt_idx NUMBER;
105634 l_acc_rev_flag VARCHAR2(1);
105635 l_accrual_line_num NUMBER;
105636 l_tmp_amt NUMBER;
105637 l_acc_rev_natural_side_code VARCHAR2(1);
105638
105639 l_num_entries NUMBER;
105640 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
105641 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
105642 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
105643 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
105644 l_recog_line_1 NUMBER;
105645 l_recog_line_2 NUMBER;
105646
105647 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
105648 l_bflow_applied_to_amt NUMBER; -- 5132302
105649 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
105650
105651 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105652
105653 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
105654 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
105655
105656 ---------------------------------------------------------------------------------------------------------------
105657
105658
105659 --
105660 -- bulk performance
105661 --
105662 l_balance_type_code VARCHAR2(1);
105663 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
105664 l_log_module VARCHAR2(240);
105665
105666 --
105667 -- Upgrade strategy
105668 --
105669 l_actual_upg_option VARCHAR2(1);
105670 l_enc_upg_option VARCHAR2(1);
105671
105672 --
105673 BEGIN
105674 --
105675 IF g_log_enabled THEN
105676 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_223';
105677 END IF;
105678 --
105679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105680
105681 trace
105682 (p_msg => 'BEGIN of AcctLineType_223'
105683 ,p_level => C_LEVEL_PROCEDURE
105684 ,p_module => l_log_module);
105685
105686 END IF;
105687 --
105688 l_component_type := 'AMB_JLT';
105689 l_component_code := 'PPV';
105690 l_component_type_code := 'S';
105691 l_component_appl_id := 555;
105692 l_amb_context_code := 'DEFAULT';
105693 l_entity_code := 'PURCHASING';
105694 l_event_class_code := 'DELIVER';
105695 l_event_type_code := 'INT_REQ_RECEIPT_ADJ';
105696 l_line_definition_owner_code := 'S';
105697 l_line_definition_code := 'INT_REQ_RCPT_ADJ';
105701 l_ccid := NULL;
105698 --
105699 l_balance_type_code := 'A';
105700 l_segment := NULL;
105702 l_adr_transaction_coa_id := NULL;
105703 l_adr_accounting_coa_id := NULL;
105704 l_adr_flexfield_segment_code := NULL;
105705 l_adr_flex_value_set_id := NULL;
105706 l_adr_value_type_code := NULL;
105707 l_adr_value_combination_id := NULL;
105708 l_adr_value_segment_code := NULL;
105709
105710 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
105711 l_bflow_class_code := ''; -- 4219869 Business Flow
105712 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
105713 l_budgetary_control_flag := 'N';
105714
105715 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105716 l_bflow_applied_to_amt := NULL; -- 5132302
105717 l_entered_amt_idx := NULL; -- 4262811
105718 l_accted_amt_idx := NULL; -- 4262811
105719 l_acc_rev_flag := NULL; -- 4262811
105720 l_accrual_line_num := NULL; -- 4262811
105721 l_tmp_amt := NULL; -- 4262811
105722 --
105723
105724 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105725 l_balance_type_code <> 'B' THEN
105726 IF NVL(p_source_2,'
105727 ') = 'PPV'
105728 THEN
105729
105730 --
105731 XLA_AE_LINES_PKG.SetNewLine;
105732
105733 p_balance_type_code := l_balance_type_code;
105734 -- set the flag so later we will know whether the gain loss line needs to be created
105735
105736 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105737 p_actual_flag :='A';
105738 END IF;
105739
105740 --
105741 -- bulk performance
105742 --
105743 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105744 p_header_num => 0); -- 4262811
105745 --
105746 -- set accounting line options
105747 --
105748 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105749 p_natural_side_code => 'D'
105750 , p_gain_or_loss_flag => 'N'
105751 , p_gl_transfer_mode_code => 'D'
105752 , p_acct_entry_type_code => 'A'
105753 , p_switch_side_flag => 'Y'
105754 , p_merge_duplicate_code => 'W'
105755 );
105756 --
105757 l_acc_rev_natural_side_code := 'C'; -- 4262811
105758 --
105759 --
105760 -- set accounting line type info
105761 --
105762 xla_ae_lines_pkg.SetAcctLineType
105763 (p_component_type => l_component_type
105764 ,p_event_type_code => l_event_type_code
105765 ,p_line_definition_owner_code => l_line_definition_owner_code
105766 ,p_line_definition_code => l_line_definition_code
105767 ,p_accounting_line_code => l_component_code
105768 ,p_accounting_line_type_code => l_component_type_code
105769 ,p_accounting_line_appl_id => l_component_appl_id
105770 ,p_amb_context_code => l_amb_context_code
105771 ,p_entity_code => l_entity_code
105772 ,p_event_class_code => l_event_class_code);
105773 --
105774 -- set accounting class
105775 --
105776 xla_ae_lines_pkg.SetAcctClass(
105777 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
105778 , p_ae_header_id => l_ae_header_id
105779 );
105780
105781 --
105782 -- set rounding class
105783 --
105784 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105785 'PURCHASE_PRICE_VARIANCE';
105786
105787 --
105788 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105789 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105790 --
105791 -- bulk performance
105792 --
105793 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105794
105795 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105796 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105797
105798 -- 4955764
105799 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105800 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105801
105802 -- 4458381 Public Sector Enh
105803
105804 --
105805 -- set accounting attributes for the line type
105806 --
105807 l_entered_amt_idx := 3;
105808 l_accted_amt_idx := 8;
105809 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105810 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105811 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
105812 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105813 l_rec_acct_attrs.array_char_value(2) := p_source_6;
105814 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105815 l_rec_acct_attrs.array_num_value(3) := p_source_3;
105816 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105817 l_rec_acct_attrs.array_char_value(4) := p_source_7;
105818 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105819 l_rec_acct_attrs.array_date_value(5) := p_source_8;
105820 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105824 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105821 l_rec_acct_attrs.array_num_value(6) := p_source_9;
105822 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105823 l_rec_acct_attrs.array_char_value(7) := p_source_10;
105825 l_rec_acct_attrs.array_num_value(8) := p_source_11;
105826
105827 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105828 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105829
105830 ---------------------------------------------------------------------------------------------------------------
105831 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105832 ---------------------------------------------------------------------------------------------------------------
105833 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105834
105835 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105836 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105837
105838 IF xla_accounting_cache_pkg.GetValueChar
105839 (p_source_code => 'LEDGER_CATEGORY_CODE'
105840 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105841 AND l_bflow_method_code = 'PRIOR_ENTRY'
105842 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105843 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105844 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105845 )
105846 THEN
105847 xla_ae_lines_pkg.BflowUpgEntry
105848 (p_business_method_code => l_bflow_method_code
105849 ,p_business_class_code => l_bflow_class_code
105850 ,p_balance_type => l_balance_type_code);
105851 ELSE
105852 NULL;
105853 -- No business flow processing for business flow method of NONE.
105854 END IF;
105855
105856 --
105857 -- call analytical criteria
105858 --
105859
105860 --
105861 -- call description
105862 --
105863 -- No description or it is inherited.
105864 --
105865 -- call ADRs
105866 -- Bug 4922099
105867 --
105868 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105869 (NVL(l_actual_upg_option, 'N') = 'O') OR
105870 (NVL(l_enc_upg_option, 'N') = 'O')
105871 )
105872 THEN
105873 NULL;
105874 --
105875 --
105876
105877 l_ccid := AcctDerRule_31(
105878 p_application_id => p_application_id
105879 , p_ae_header_id => l_ae_header_id
105880 , p_source_1 => p_source_1
105881 , p_source_2 => p_source_2
105882 , x_transaction_coa_id => l_adr_transaction_coa_id
105883 , x_accounting_coa_id => l_adr_accounting_coa_id
105884 , x_value_type_code => l_adr_value_type_code
105885 , p_side => 'NA'
105886 );
105887
105888 xla_ae_lines_pkg.set_ccid(
105889 p_code_combination_id => l_ccid
105890 , p_value_type_code => l_adr_value_type_code
105891 , p_transaction_coa_id => l_adr_transaction_coa_id
105892 , p_accounting_coa_id => l_adr_accounting_coa_id
105893 , p_adr_code => 'PPV'
105894 , p_adr_type_code => 'S'
105895 , p_component_type => l_component_type
105896 , p_component_code => l_component_code
105897 , p_component_type_code => l_component_type_code
105898 , p_component_appl_id => l_component_appl_id
105899 , p_amb_context_code => l_amb_context_code
105900 , p_side => 'NA'
105901 );
105902
105903
105904 --
105905 --
105906 END IF;
105907 --
105908 -- Bug 4922099
105909 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105910 (NVL(l_enc_upg_option, 'N') = 'O')
105911 ) AND
105912 (l_bflow_method_code = 'PRIOR_ENTRY')
105913 )
105914 THEN
105915 IF
105916 --
105917 1 = 2
105918 --
105919 THEN
105920 xla_accounting_err_pkg.build_message
105921 (p_appli_s_name => 'XLA'
105922 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105923 ,p_token_1 => 'LINE_NUMBER'
105924 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
105925 ,p_token_2 => 'LINE_TYPE_NAME'
105926 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
105927 l_component_type
105928 ,l_component_code
105929 ,l_component_type_code
105930 ,l_component_appl_id
105931 ,l_amb_context_code
105932 ,l_entity_code
105933 ,l_event_class_code
105937 p_lookup_type => 'XLA_OWNER_TYPE'
105934 )
105935 ,p_token_3 => 'OWNER'
105936 ,p_value_3 => xla_lookups_pkg.get_meaning(
105938 ,p_lookup_code => l_component_type_code
105939 )
105940 ,p_token_4 => 'PRODUCT_NAME'
105941 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105942 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105943 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105944 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105945 ,p_ae_header_id => NULL
105946 );
105947
105948 IF (C_LEVEL_ERROR>= g_log_level) THEN
105949 trace
105950 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105951 ,p_level => C_LEVEL_ERROR
105952 ,p_module => l_log_module);
105953 END IF;
105954 END IF;
105955 END IF;
105956 --
105957 --
105958 ------------------------------------------------------------------------------------------------
105959 -- 4219869 Business Flow
105960 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105961 -- Prior Entry. Currently, the following code is always generated.
105962 ------------------------------------------------------------------------------------------------
105963 XLA_AE_LINES_PKG.ValidateCurrentLine;
105964
105965 ------------------------------------------------------------------------------------
105966 -- 4219869 Business Flow
105967 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105968 ------------------------------------------------------------------------------------
105969 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105970
105971 ----------------------------------------------------------------------------------
105972 -- 4219869 Business Flow
105973 -- Update journal entry status -- Need to generate this within IF <condition>
105974 ----------------------------------------------------------------------------------
105975 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105976 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105977 ,p_balance_type_code => l_balance_type_code
105978 );
105979
105980 -------------------------------------------------------------------------------------------
105981 -- 4262811 - Generate the Accrual Reversal lines
105982 -------------------------------------------------------------------------------------------
105983 BEGIN
105984 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105985 (g_array_event(p_event_id).array_value_num('header_index'));
105986 IF l_acc_rev_flag IS NULL THEN
105987 l_acc_rev_flag := 'N';
105988 END IF;
105989 EXCEPTION
105990 WHEN OTHERS THEN
105991 l_acc_rev_flag := 'N';
105992 END;
105993 --
105994 IF (l_acc_rev_flag = 'Y') THEN
105995
105996 -- 4645092 ------------------------------------------------------------------------------
105997 -- To allow MPA report to determine if it should generate report process
105998 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105999 ------------------------------------------------------------------------------------------
106000
106001 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106002 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106003 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
106004 -- call ADRs
106005 -- Bug 4922099
106006 --
106007 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106008 (NVL(l_actual_upg_option, 'N') = 'O') OR
106009 (NVL(l_enc_upg_option, 'N') = 'O')
106010 )
106011 THEN
106012 NULL;
106013 --
106014 --
106015
106016 l_ccid := AcctDerRule_31(
106017 p_application_id => p_application_id
106018 , p_ae_header_id => l_ae_header_id
106019 , p_source_1 => p_source_1
106020 , p_source_2 => p_source_2
106021 , x_transaction_coa_id => l_adr_transaction_coa_id
106022 , x_accounting_coa_id => l_adr_accounting_coa_id
106023 , x_value_type_code => l_adr_value_type_code
106024 , p_side => 'NA'
106025 );
106026
106027 xla_ae_lines_pkg.set_ccid(
106028 p_code_combination_id => l_ccid
106029 , p_value_type_code => l_adr_value_type_code
106030 , p_transaction_coa_id => l_adr_transaction_coa_id
106031 , p_accounting_coa_id => l_adr_accounting_coa_id
106032 , p_adr_code => 'PPV'
106033 , p_adr_type_code => 'S'
106034 , p_component_type => l_component_type
106035 , p_component_code => l_component_code
106039 , p_side => 'NA'
106036 , p_component_type_code => l_component_type_code
106037 , p_component_appl_id => l_component_appl_id
106038 , p_amb_context_code => l_amb_context_code
106040 );
106041
106042
106043 --
106044 --
106045 END IF;
106046
106047 --
106048 -- Update the line information that should be overwritten
106049 --
106050 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106051 p_header_num => 1);
106052 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
106053
106054 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106055
106056 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
106057 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106058 END IF;
106059
106060 --
106061 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106062 --
106063 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106064 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
106065 ELSE
106066 ---------------------------------------------------------------------------------------------------
106067 -- 4262811a Switch Sign
106068 ---------------------------------------------------------------------------------------------------
106069 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
106070 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106071 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106072 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106073 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106074 -- 5132302
106075 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106076 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106077
106078 END IF;
106079
106080 -- 4955764
106081 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106082 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106083
106084
106085 XLA_AE_LINES_PKG.ValidateCurrentLine;
106086 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106087
106088 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106089 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106090 ,p_balance_type_code => l_balance_type_code);
106091
106092 END IF;
106093
106094 -----------------------------------------------------------------------------------------
106095 -- 4262811 Multiperiod Accounting
106096 -----------------------------------------------------------------------------------------
106097 -- No MPA option is assigned.
106098
106099
106100 END IF;
106101 END IF;
106102 --
106103
106104 --
106105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106106 trace
106107 (p_msg => 'END of AcctLineType_223'
106108 ,p_level => C_LEVEL_PROCEDURE
106109 ,p_module => l_log_module);
106110 END IF;
106111 --
106112 EXCEPTION
106113 WHEN xla_exceptions_pkg.application_exception THEN
106114 RAISE;
106115 WHEN OTHERS THEN
106116 xla_exceptions_pkg.raise_message
106117 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_223');
106118 END AcctLineType_223;
106119 --
106120
106121 ---------------------------------------
106122 --
106123 -- PRIVATE FUNCTION
106124 -- AcctLineType_224
106125 --
106126 ---------------------------------------
106127 PROCEDURE AcctLineType_224 (
106128 p_application_id IN NUMBER
106129 ,p_event_id IN NUMBER
106130 ,p_calculate_acctd_flag IN VARCHAR2
106131 ,p_calculate_g_l_flag IN VARCHAR2
106132 ,p_actual_flag IN OUT VARCHAR2
106133 ,p_balance_type_code OUT VARCHAR2
106134 ,p_gain_or_loss_ref OUT VARCHAR2
106135
106136 --Transaction Account
106137 , p_source_1 IN NUMBER
106138 --Journal Line Type
106139 , p_source_2 IN VARCHAR2
106140 --Entered Amount
106141 , p_source_3 IN NUMBER
106142 --First Distribution Identifier
106143 , p_source_5 IN NUMBER
106144 --Distribution Type
106145 , p_source_6 IN VARCHAR2
106146 --Currency Code
106147 , p_source_7 IN VARCHAR2
106148 --Currency Conversion Date
106149 , p_source_8 IN DATE
106150 --Currency Conversion Rate
106151 , p_source_9 IN NUMBER
106152 --Currency Conversion Type
106153 , p_source_10 IN VARCHAR2
106154 --Accounted Amount
106155 , p_source_11 IN NUMBER
106156 )
106157 IS
106158
106159 l_component_type VARCHAR2(80);
106160 l_component_code VARCHAR2(30);
106161 l_component_type_code VARCHAR2(1);
106162 l_component_appl_id INTEGER;
106163 l_amb_context_code VARCHAR2(30);
106164 l_entity_code VARCHAR2(30);
106165 l_event_class_code VARCHAR2(30);
106169 l_line_definition_owner_code VARCHAR2(1);
106166 l_ae_header_id NUMBER;
106167 l_event_type_code VARCHAR2(30);
106168 l_line_definition_code VARCHAR2(30);
106170 --
106171 -- adr variables
106172 l_segment VARCHAR2(30);
106173 l_ccid NUMBER;
106174 l_adr_transaction_coa_id NUMBER;
106175 l_adr_accounting_coa_id NUMBER;
106176 l_adr_flexfield_segment_code VARCHAR2(30);
106177 l_adr_flex_value_set_id NUMBER;
106178 l_adr_value_type_code VARCHAR2(30);
106179 l_adr_value_combination_id NUMBER;
106180 l_adr_value_segment_code VARCHAR2(30);
106181
106182 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
106183 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
106184 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
106185 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
106186
106187 -- 4262811 Variables ------------------------------------------------------------------------------------------
106188 l_entered_amt_idx NUMBER;
106189 l_accted_amt_idx NUMBER;
106190 l_acc_rev_flag VARCHAR2(1);
106191 l_accrual_line_num NUMBER;
106192 l_tmp_amt NUMBER;
106193 l_acc_rev_natural_side_code VARCHAR2(1);
106194
106195 l_num_entries NUMBER;
106196 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
106197 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
106198 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
106199 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
106200 l_recog_line_1 NUMBER;
106201 l_recog_line_2 NUMBER;
106202
106203 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
106204 l_bflow_applied_to_amt NUMBER; -- 5132302
106205 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
106206
106207 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106208
106209 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
106210 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
106211
106212 ---------------------------------------------------------------------------------------------------------------
106213
106214
106215 --
106216 -- bulk performance
106217 --
106218 l_balance_type_code VARCHAR2(1);
106219 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
106220 l_log_module VARCHAR2(240);
106221
106222 --
106223 -- Upgrade strategy
106224 --
106225 l_actual_upg_option VARCHAR2(1);
106226 l_enc_upg_option VARCHAR2(1);
106227
106228 --
106229 BEGIN
106230 --
106231 IF g_log_enabled THEN
106232 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_224';
106233 END IF;
106234 --
106235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106236
106237 trace
106238 (p_msg => 'BEGIN of AcctLineType_224'
106239 ,p_level => C_LEVEL_PROCEDURE
106240 ,p_module => l_log_module);
106241
106242 END IF;
106243 --
106244 l_component_type := 'AMB_JLT';
106245 l_component_code := 'PPV';
106246 l_component_type_code := 'S';
106247 l_component_appl_id := 555;
106248 l_amb_context_code := 'DEFAULT';
106249 l_entity_code := 'INVENTORY';
106250 l_event_class_code := 'DIR_INTERORG_RCPT';
106251 l_event_type_code := 'DIR_INTERORG_RCPT';
106252 l_line_definition_owner_code := 'S';
106253 l_line_definition_code := 'DIRECT_XFER_RECV';
106254 --
106255 l_balance_type_code := 'A';
106256 l_segment := NULL;
106257 l_ccid := NULL;
106258 l_adr_transaction_coa_id := NULL;
106259 l_adr_accounting_coa_id := NULL;
106260 l_adr_flexfield_segment_code := NULL;
106261 l_adr_flex_value_set_id := NULL;
106262 l_adr_value_type_code := NULL;
106263 l_adr_value_combination_id := NULL;
106264 l_adr_value_segment_code := NULL;
106265
106266 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
106267 l_bflow_class_code := ''; -- 4219869 Business Flow
106268 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
106269 l_budgetary_control_flag := 'N';
106270
106271 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106272 l_bflow_applied_to_amt := NULL; -- 5132302
106273 l_entered_amt_idx := NULL; -- 4262811
106274 l_accted_amt_idx := NULL; -- 4262811
106275 l_acc_rev_flag := NULL; -- 4262811
106276 l_accrual_line_num := NULL; -- 4262811
106277 l_tmp_amt := NULL; -- 4262811
106278 --
106279
106280 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106281 l_balance_type_code <> 'B' THEN
106282 IF NVL(p_source_2,'
106283 ') = 'PPV'
106284 THEN
106285
106286 --
106287 XLA_AE_LINES_PKG.SetNewLine;
106288
106289 p_balance_type_code := l_balance_type_code;
106290 -- set the flag so later we will know whether the gain loss line needs to be created
106291
106292 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106293 p_actual_flag :='A';
106297 -- bulk performance
106294 END IF;
106295
106296 --
106298 --
106299 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106300 p_header_num => 0); -- 4262811
106301 --
106302 -- set accounting line options
106303 --
106304 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106305 p_natural_side_code => 'D'
106306 , p_gain_or_loss_flag => 'N'
106307 , p_gl_transfer_mode_code => 'D'
106308 , p_acct_entry_type_code => 'A'
106309 , p_switch_side_flag => 'Y'
106310 , p_merge_duplicate_code => 'W'
106311 );
106312 --
106313 l_acc_rev_natural_side_code := 'C'; -- 4262811
106314 --
106315 --
106316 -- set accounting line type info
106317 --
106318 xla_ae_lines_pkg.SetAcctLineType
106319 (p_component_type => l_component_type
106320 ,p_event_type_code => l_event_type_code
106321 ,p_line_definition_owner_code => l_line_definition_owner_code
106322 ,p_line_definition_code => l_line_definition_code
106323 ,p_accounting_line_code => l_component_code
106324 ,p_accounting_line_type_code => l_component_type_code
106325 ,p_accounting_line_appl_id => l_component_appl_id
106326 ,p_amb_context_code => l_amb_context_code
106327 ,p_entity_code => l_entity_code
106328 ,p_event_class_code => l_event_class_code);
106329 --
106330 -- set accounting class
106331 --
106332 xla_ae_lines_pkg.SetAcctClass(
106333 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
106334 , p_ae_header_id => l_ae_header_id
106335 );
106336
106337 --
106338 -- set rounding class
106339 --
106340 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106341 'PURCHASE_PRICE_VARIANCE';
106342
106343 --
106344 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106345 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106346 --
106347 -- bulk performance
106348 --
106349 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106350
106351 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106352 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106353
106354 -- 4955764
106355 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106356 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106357
106358 -- 4458381 Public Sector Enh
106359
106360 --
106361 -- set accounting attributes for the line type
106362 --
106363 l_entered_amt_idx := 3;
106364 l_accted_amt_idx := 8;
106365 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106366 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106367 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
106368 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106369 l_rec_acct_attrs.array_char_value(2) := p_source_6;
106370 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106371 l_rec_acct_attrs.array_num_value(3) := p_source_3;
106372 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106373 l_rec_acct_attrs.array_char_value(4) := p_source_7;
106374 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106375 l_rec_acct_attrs.array_date_value(5) := p_source_8;
106376 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106377 l_rec_acct_attrs.array_num_value(6) := p_source_9;
106378 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106379 l_rec_acct_attrs.array_char_value(7) := p_source_10;
106380 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106381 l_rec_acct_attrs.array_num_value(8) := p_source_11;
106382
106383 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106384 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106385
106386 ---------------------------------------------------------------------------------------------------------------
106387 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106388 ---------------------------------------------------------------------------------------------------------------
106389 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106390
106391 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106392 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106393
106394 IF xla_accounting_cache_pkg.GetValueChar
106395 (p_source_code => 'LEDGER_CATEGORY_CODE'
106396 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106397 AND l_bflow_method_code = 'PRIOR_ENTRY'
106398 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106399 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106400 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106401 )
106402 THEN
106406 ,p_balance_type => l_balance_type_code);
106403 xla_ae_lines_pkg.BflowUpgEntry
106404 (p_business_method_code => l_bflow_method_code
106405 ,p_business_class_code => l_bflow_class_code
106407 ELSE
106408 NULL;
106409 -- No business flow processing for business flow method of NONE.
106410 END IF;
106411
106412 --
106413 -- call analytical criteria
106414 --
106415
106416 --
106417 -- call description
106418 --
106419 -- No description or it is inherited.
106420 --
106421 -- call ADRs
106422 -- Bug 4922099
106423 --
106424 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106425 (NVL(l_actual_upg_option, 'N') = 'O') OR
106426 (NVL(l_enc_upg_option, 'N') = 'O')
106427 )
106428 THEN
106429 NULL;
106430 --
106431 --
106432
106433 l_ccid := AcctDerRule_31(
106434 p_application_id => p_application_id
106435 , p_ae_header_id => l_ae_header_id
106436 , p_source_1 => p_source_1
106437 , p_source_2 => p_source_2
106438 , x_transaction_coa_id => l_adr_transaction_coa_id
106439 , x_accounting_coa_id => l_adr_accounting_coa_id
106440 , x_value_type_code => l_adr_value_type_code
106441 , p_side => 'NA'
106442 );
106443
106444 xla_ae_lines_pkg.set_ccid(
106445 p_code_combination_id => l_ccid
106446 , p_value_type_code => l_adr_value_type_code
106447 , p_transaction_coa_id => l_adr_transaction_coa_id
106448 , p_accounting_coa_id => l_adr_accounting_coa_id
106449 , p_adr_code => 'PPV'
106450 , p_adr_type_code => 'S'
106451 , p_component_type => l_component_type
106452 , p_component_code => l_component_code
106453 , p_component_type_code => l_component_type_code
106454 , p_component_appl_id => l_component_appl_id
106455 , p_amb_context_code => l_amb_context_code
106456 , p_side => 'NA'
106457 );
106458
106459
106460 --
106461 --
106462 END IF;
106463 --
106464 -- Bug 4922099
106465 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106466 (NVL(l_enc_upg_option, 'N') = 'O')
106467 ) AND
106468 (l_bflow_method_code = 'PRIOR_ENTRY')
106469 )
106470 THEN
106471 IF
106472 --
106473 1 = 2
106474 --
106475 THEN
106476 xla_accounting_err_pkg.build_message
106477 (p_appli_s_name => 'XLA'
106478 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106479 ,p_token_1 => 'LINE_NUMBER'
106480 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
106481 ,p_token_2 => 'LINE_TYPE_NAME'
106482 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
106483 l_component_type
106484 ,l_component_code
106485 ,l_component_type_code
106486 ,l_component_appl_id
106487 ,l_amb_context_code
106488 ,l_entity_code
106489 ,l_event_class_code
106490 )
106491 ,p_token_3 => 'OWNER'
106492 ,p_value_3 => xla_lookups_pkg.get_meaning(
106493 p_lookup_type => 'XLA_OWNER_TYPE'
106494 ,p_lookup_code => l_component_type_code
106495 )
106496 ,p_token_4 => 'PRODUCT_NAME'
106497 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106498 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106499 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106500 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106501 ,p_ae_header_id => NULL
106502 );
106503
106504 IF (C_LEVEL_ERROR>= g_log_level) THEN
106505 trace
106506 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106507 ,p_level => C_LEVEL_ERROR
106508 ,p_module => l_log_module);
106509 END IF;
106510 END IF;
106511 END IF;
106512 --
106513 --
106517 -- Prior Entry. Currently, the following code is always generated.
106514 ------------------------------------------------------------------------------------------------
106515 -- 4219869 Business Flow
106516 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106518 ------------------------------------------------------------------------------------------------
106519 XLA_AE_LINES_PKG.ValidateCurrentLine;
106520
106521 ------------------------------------------------------------------------------------
106522 -- 4219869 Business Flow
106523 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106524 ------------------------------------------------------------------------------------
106525 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106526
106527 ----------------------------------------------------------------------------------
106528 -- 4219869 Business Flow
106529 -- Update journal entry status -- Need to generate this within IF <condition>
106530 ----------------------------------------------------------------------------------
106531 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106532 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106533 ,p_balance_type_code => l_balance_type_code
106534 );
106535
106536 -------------------------------------------------------------------------------------------
106537 -- 4262811 - Generate the Accrual Reversal lines
106538 -------------------------------------------------------------------------------------------
106539 BEGIN
106540 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
106541 (g_array_event(p_event_id).array_value_num('header_index'));
106542 IF l_acc_rev_flag IS NULL THEN
106543 l_acc_rev_flag := 'N';
106544 END IF;
106545 EXCEPTION
106546 WHEN OTHERS THEN
106547 l_acc_rev_flag := 'N';
106548 END;
106549 --
106550 IF (l_acc_rev_flag = 'Y') THEN
106551
106552 -- 4645092 ------------------------------------------------------------------------------
106553 -- To allow MPA report to determine if it should generate report process
106554 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
106555 ------------------------------------------------------------------------------------------
106556
106557 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106558 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106559 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
106560 -- call ADRs
106561 -- Bug 4922099
106562 --
106563 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106564 (NVL(l_actual_upg_option, 'N') = 'O') OR
106565 (NVL(l_enc_upg_option, 'N') = 'O')
106566 )
106567 THEN
106568 NULL;
106569 --
106570 --
106571
106572 l_ccid := AcctDerRule_31(
106573 p_application_id => p_application_id
106574 , p_ae_header_id => l_ae_header_id
106575 , p_source_1 => p_source_1
106576 , p_source_2 => p_source_2
106577 , x_transaction_coa_id => l_adr_transaction_coa_id
106578 , x_accounting_coa_id => l_adr_accounting_coa_id
106579 , x_value_type_code => l_adr_value_type_code
106580 , p_side => 'NA'
106581 );
106582
106583 xla_ae_lines_pkg.set_ccid(
106584 p_code_combination_id => l_ccid
106585 , p_value_type_code => l_adr_value_type_code
106586 , p_transaction_coa_id => l_adr_transaction_coa_id
106587 , p_accounting_coa_id => l_adr_accounting_coa_id
106588 , p_adr_code => 'PPV'
106589 , p_adr_type_code => 'S'
106590 , p_component_type => l_component_type
106591 , p_component_code => l_component_code
106592 , p_component_type_code => l_component_type_code
106593 , p_component_appl_id => l_component_appl_id
106594 , p_amb_context_code => l_amb_context_code
106595 , p_side => 'NA'
106596 );
106597
106598
106599 --
106600 --
106601 END IF;
106602
106603 --
106604 -- Update the line information that should be overwritten
106605 --
106606 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106607 p_header_num => 1);
106608 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
106609
106610 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106611
106612 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
106613 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106614 END IF;
106615
106616 --
106617 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106618 --
106619 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106620 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
106621 ELSE
106622 ---------------------------------------------------------------------------------------------------
106623 -- 4262811a Switch Sign
106624 ---------------------------------------------------------------------------------------------------
106628 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106625 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
106626 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106627 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106629 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106630 -- 5132302
106631 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106632 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106633
106634 END IF;
106635
106636 -- 4955764
106637 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106638 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106639
106640
106641 XLA_AE_LINES_PKG.ValidateCurrentLine;
106642 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106643
106644 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106645 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106646 ,p_balance_type_code => l_balance_type_code);
106647
106648 END IF;
106649
106650 -----------------------------------------------------------------------------------------
106651 -- 4262811 Multiperiod Accounting
106652 -----------------------------------------------------------------------------------------
106653 -- No MPA option is assigned.
106654
106655
106656 END IF;
106657 END IF;
106658 --
106659
106660 --
106661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106662 trace
106663 (p_msg => 'END of AcctLineType_224'
106664 ,p_level => C_LEVEL_PROCEDURE
106665 ,p_module => l_log_module);
106666 END IF;
106667 --
106668 EXCEPTION
106669 WHEN xla_exceptions_pkg.application_exception THEN
106670 RAISE;
106671 WHEN OTHERS THEN
106672 xla_exceptions_pkg.raise_message
106673 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_224');
106674 END AcctLineType_224;
106675 --
106676
106677 ---------------------------------------
106678 --
106679 -- PRIVATE FUNCTION
106680 -- AcctLineType_225
106681 --
106682 ---------------------------------------
106683 PROCEDURE AcctLineType_225 (
106684 p_application_id IN NUMBER
106685 ,p_event_id IN NUMBER
106686 ,p_calculate_acctd_flag IN VARCHAR2
106687 ,p_calculate_g_l_flag IN VARCHAR2
106688 ,p_actual_flag IN OUT VARCHAR2
106689 ,p_balance_type_code OUT VARCHAR2
106690 ,p_gain_or_loss_ref OUT VARCHAR2
106691
106692 --Transaction Account
106693 , p_source_1 IN NUMBER
106694 --Journal Line Type
106695 , p_source_2 IN VARCHAR2
106696 --Entered Amount
106697 , p_source_3 IN NUMBER
106698 --First Distribution Identifier
106699 , p_source_5 IN NUMBER
106700 --Distribution Type
106701 , p_source_6 IN VARCHAR2
106702 --Currency Code
106703 , p_source_7 IN VARCHAR2
106704 --Currency Conversion Date
106705 , p_source_8 IN DATE
106706 --Currency Conversion Rate
106707 , p_source_9 IN NUMBER
106708 --Currency Conversion Type
106709 , p_source_10 IN VARCHAR2
106710 --Accounted Amount
106711 , p_source_11 IN NUMBER
106712 )
106713 IS
106714
106715 l_component_type VARCHAR2(80);
106716 l_component_code VARCHAR2(30);
106717 l_component_type_code VARCHAR2(1);
106718 l_component_appl_id INTEGER;
106719 l_amb_context_code VARCHAR2(30);
106720 l_entity_code VARCHAR2(30);
106721 l_event_class_code VARCHAR2(30);
106722 l_ae_header_id NUMBER;
106723 l_event_type_code VARCHAR2(30);
106724 l_line_definition_code VARCHAR2(30);
106725 l_line_definition_owner_code VARCHAR2(1);
106726 --
106727 -- adr variables
106728 l_segment VARCHAR2(30);
106729 l_ccid NUMBER;
106730 l_adr_transaction_coa_id NUMBER;
106731 l_adr_accounting_coa_id NUMBER;
106732 l_adr_flexfield_segment_code VARCHAR2(30);
106733 l_adr_flex_value_set_id NUMBER;
106734 l_adr_value_type_code VARCHAR2(30);
106735 l_adr_value_combination_id NUMBER;
106736 l_adr_value_segment_code VARCHAR2(30);
106737
106738 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
106739 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
106740 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
106741 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
106742
106743 -- 4262811 Variables ------------------------------------------------------------------------------------------
106744 l_entered_amt_idx NUMBER;
106745 l_accted_amt_idx NUMBER;
106746 l_acc_rev_flag VARCHAR2(1);
106747 l_accrual_line_num NUMBER;
106748 l_tmp_amt NUMBER;
106749 l_acc_rev_natural_side_code VARCHAR2(1);
106750
106751 l_num_entries NUMBER;
106752 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
106753 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
106757 l_recog_line_2 NUMBER;
106754 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
106755 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
106756 l_recog_line_1 NUMBER;
106758
106759 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
106760 l_bflow_applied_to_amt NUMBER; -- 5132302
106761 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
106762
106763 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106764
106765 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
106766 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
106767
106768 ---------------------------------------------------------------------------------------------------------------
106769
106770
106771 --
106772 -- bulk performance
106773 --
106774 l_balance_type_code VARCHAR2(1);
106775 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
106776 l_log_module VARCHAR2(240);
106777
106778 --
106779 -- Upgrade strategy
106780 --
106781 l_actual_upg_option VARCHAR2(1);
106782 l_enc_upg_option VARCHAR2(1);
106783
106784 --
106785 BEGIN
106786 --
106787 IF g_log_enabled THEN
106788 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_225';
106789 END IF;
106790 --
106791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106792
106793 trace
106794 (p_msg => 'BEGIN of AcctLineType_225'
106795 ,p_level => C_LEVEL_PROCEDURE
106796 ,p_module => l_log_module);
106797
106798 END IF;
106799 --
106800 l_component_type := 'AMB_JLT';
106801 l_component_code := 'PPV';
106802 l_component_type_code := 'S';
106803 l_component_appl_id := 555;
106804 l_amb_context_code := 'DEFAULT';
106805 l_entity_code := 'PURCHASING';
106806 l_event_class_code := 'DELIVER';
106807 l_event_type_code := 'XFER_TO_REGULAR';
106808 l_line_definition_owner_code := 'S';
106809 l_line_definition_code := 'XFER_TO_REG';
106810 --
106811 l_balance_type_code := 'A';
106812 l_segment := NULL;
106813 l_ccid := NULL;
106814 l_adr_transaction_coa_id := NULL;
106815 l_adr_accounting_coa_id := NULL;
106816 l_adr_flexfield_segment_code := NULL;
106817 l_adr_flex_value_set_id := NULL;
106818 l_adr_value_type_code := NULL;
106819 l_adr_value_combination_id := NULL;
106820 l_adr_value_segment_code := NULL;
106821
106822 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
106823 l_bflow_class_code := ''; -- 4219869 Business Flow
106824 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
106825 l_budgetary_control_flag := 'N';
106826
106827 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106828 l_bflow_applied_to_amt := NULL; -- 5132302
106829 l_entered_amt_idx := NULL; -- 4262811
106830 l_accted_amt_idx := NULL; -- 4262811
106831 l_acc_rev_flag := NULL; -- 4262811
106832 l_accrual_line_num := NULL; -- 4262811
106833 l_tmp_amt := NULL; -- 4262811
106834 --
106835
106836 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106837 l_balance_type_code <> 'B' THEN
106838 IF NVL(p_source_2,'
106839 ') = 'PPV'
106840 THEN
106841
106842 --
106843 XLA_AE_LINES_PKG.SetNewLine;
106844
106845 p_balance_type_code := l_balance_type_code;
106846 -- set the flag so later we will know whether the gain loss line needs to be created
106847
106848 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106849 p_actual_flag :='A';
106850 END IF;
106851
106852 --
106853 -- bulk performance
106854 --
106855 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106856 p_header_num => 0); -- 4262811
106857 --
106858 -- set accounting line options
106859 --
106860 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106861 p_natural_side_code => 'D'
106862 , p_gain_or_loss_flag => 'N'
106863 , p_gl_transfer_mode_code => 'D'
106864 , p_acct_entry_type_code => 'A'
106865 , p_switch_side_flag => 'Y'
106866 , p_merge_duplicate_code => 'W'
106867 );
106868 --
106869 l_acc_rev_natural_side_code := 'C'; -- 4262811
106870 --
106871 --
106872 -- set accounting line type info
106873 --
106874 xla_ae_lines_pkg.SetAcctLineType
106875 (p_component_type => l_component_type
106876 ,p_event_type_code => l_event_type_code
106877 ,p_line_definition_owner_code => l_line_definition_owner_code
106878 ,p_line_definition_code => l_line_definition_code
106879 ,p_accounting_line_code => l_component_code
106880 ,p_accounting_line_type_code => l_component_type_code
106881 ,p_accounting_line_appl_id => l_component_appl_id
106882 ,p_amb_context_code => l_amb_context_code
106883 ,p_entity_code => l_entity_code
106884 ,p_event_class_code => l_event_class_code);
106885 --
106889 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
106886 -- set accounting class
106887 --
106888 xla_ae_lines_pkg.SetAcctClass(
106890 , p_ae_header_id => l_ae_header_id
106891 );
106892
106893 --
106894 -- set rounding class
106895 --
106896 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106897 'PURCHASE_PRICE_VARIANCE';
106898
106899 --
106900 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106901 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106902 --
106903 -- bulk performance
106904 --
106905 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106906
106907 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106908 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106909
106910 -- 4955764
106911 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106912 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106913
106914 -- 4458381 Public Sector Enh
106915
106916 --
106917 -- set accounting attributes for the line type
106918 --
106919 l_entered_amt_idx := 3;
106920 l_accted_amt_idx := 8;
106921 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106922 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106923 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
106924 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106925 l_rec_acct_attrs.array_char_value(2) := p_source_6;
106926 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106927 l_rec_acct_attrs.array_num_value(3) := p_source_3;
106928 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106929 l_rec_acct_attrs.array_char_value(4) := p_source_7;
106930 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106931 l_rec_acct_attrs.array_date_value(5) := p_source_8;
106932 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106933 l_rec_acct_attrs.array_num_value(6) := p_source_9;
106934 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106935 l_rec_acct_attrs.array_char_value(7) := p_source_10;
106936 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106937 l_rec_acct_attrs.array_num_value(8) := p_source_11;
106938
106939 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106940 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106941
106942 ---------------------------------------------------------------------------------------------------------------
106943 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106944 ---------------------------------------------------------------------------------------------------------------
106945 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106946
106947 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106948 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106949
106950 IF xla_accounting_cache_pkg.GetValueChar
106951 (p_source_code => 'LEDGER_CATEGORY_CODE'
106952 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106953 AND l_bflow_method_code = 'PRIOR_ENTRY'
106954 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106955 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106956 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106957 )
106958 THEN
106959 xla_ae_lines_pkg.BflowUpgEntry
106960 (p_business_method_code => l_bflow_method_code
106961 ,p_business_class_code => l_bflow_class_code
106962 ,p_balance_type => l_balance_type_code);
106963 ELSE
106964 NULL;
106965 -- No business flow processing for business flow method of NONE.
106966 END IF;
106967
106968 --
106969 -- call analytical criteria
106970 --
106971
106972 --
106973 -- call description
106974 --
106975 -- No description or it is inherited.
106976 --
106977 -- call ADRs
106978 -- Bug 4922099
106979 --
106980 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106981 (NVL(l_actual_upg_option, 'N') = 'O') OR
106982 (NVL(l_enc_upg_option, 'N') = 'O')
106983 )
106984 THEN
106985 NULL;
106986 --
106987 --
106988
106989 l_ccid := AcctDerRule_31(
106990 p_application_id => p_application_id
106991 , p_ae_header_id => l_ae_header_id
106992 , p_source_1 => p_source_1
106993 , p_source_2 => p_source_2
106994 , x_transaction_coa_id => l_adr_transaction_coa_id
106995 , x_accounting_coa_id => l_adr_accounting_coa_id
106996 , x_value_type_code => l_adr_value_type_code
106997 , p_side => 'NA'
106998 );
106999
107000 xla_ae_lines_pkg.set_ccid(
107001 p_code_combination_id => l_ccid
107002 , p_value_type_code => l_adr_value_type_code
107006 , p_adr_type_code => 'S'
107003 , p_transaction_coa_id => l_adr_transaction_coa_id
107004 , p_accounting_coa_id => l_adr_accounting_coa_id
107005 , p_adr_code => 'PPV'
107007 , p_component_type => l_component_type
107008 , p_component_code => l_component_code
107009 , p_component_type_code => l_component_type_code
107010 , p_component_appl_id => l_component_appl_id
107011 , p_amb_context_code => l_amb_context_code
107012 , p_side => 'NA'
107013 );
107014
107015
107016 --
107017 --
107018 END IF;
107019 --
107020 -- Bug 4922099
107021 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
107022 (NVL(l_enc_upg_option, 'N') = 'O')
107023 ) AND
107024 (l_bflow_method_code = 'PRIOR_ENTRY')
107025 )
107026 THEN
107027 IF
107028 --
107029 1 = 2
107030 --
107031 THEN
107032 xla_accounting_err_pkg.build_message
107033 (p_appli_s_name => 'XLA'
107034 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107035 ,p_token_1 => 'LINE_NUMBER'
107036 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
107037 ,p_token_2 => 'LINE_TYPE_NAME'
107038 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
107039 l_component_type
107040 ,l_component_code
107041 ,l_component_type_code
107042 ,l_component_appl_id
107043 ,l_amb_context_code
107044 ,l_entity_code
107045 ,l_event_class_code
107046 )
107047 ,p_token_3 => 'OWNER'
107048 ,p_value_3 => xla_lookups_pkg.get_meaning(
107049 p_lookup_type => 'XLA_OWNER_TYPE'
107050 ,p_lookup_code => l_component_type_code
107051 )
107052 ,p_token_4 => 'PRODUCT_NAME'
107053 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
107054 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
107055 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
107056 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
107057 ,p_ae_header_id => NULL
107058 );
107059
107060 IF (C_LEVEL_ERROR>= g_log_level) THEN
107061 trace
107062 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107063 ,p_level => C_LEVEL_ERROR
107064 ,p_module => l_log_module);
107065 END IF;
107066 END IF;
107067 END IF;
107068 --
107069 --
107070 ------------------------------------------------------------------------------------------------
107071 -- 4219869 Business Flow
107072 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
107073 -- Prior Entry. Currently, the following code is always generated.
107074 ------------------------------------------------------------------------------------------------
107075 XLA_AE_LINES_PKG.ValidateCurrentLine;
107076
107077 ------------------------------------------------------------------------------------
107078 -- 4219869 Business Flow
107079 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
107080 ------------------------------------------------------------------------------------
107081 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107082
107083 ----------------------------------------------------------------------------------
107084 -- 4219869 Business Flow
107085 -- Update journal entry status -- Need to generate this within IF <condition>
107086 ----------------------------------------------------------------------------------
107087 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107088 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
107089 ,p_balance_type_code => l_balance_type_code
107090 );
107091
107092 -------------------------------------------------------------------------------------------
107093 -- 4262811 - Generate the Accrual Reversal lines
107094 -------------------------------------------------------------------------------------------
107095 BEGIN
107096 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107100 END IF;
107097 (g_array_event(p_event_id).array_value_num('header_index'));
107098 IF l_acc_rev_flag IS NULL THEN
107099 l_acc_rev_flag := 'N';
107101 EXCEPTION
107102 WHEN OTHERS THEN
107103 l_acc_rev_flag := 'N';
107104 END;
107105 --
107106 IF (l_acc_rev_flag = 'Y') THEN
107107
107108 -- 4645092 ------------------------------------------------------------------------------
107109 -- To allow MPA report to determine if it should generate report process
107110 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107111 ------------------------------------------------------------------------------------------
107112
107113 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107114 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107115 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
107116 -- call ADRs
107117 -- Bug 4922099
107118 --
107119 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107120 (NVL(l_actual_upg_option, 'N') = 'O') OR
107121 (NVL(l_enc_upg_option, 'N') = 'O')
107122 )
107123 THEN
107124 NULL;
107125 --
107126 --
107127
107128 l_ccid := AcctDerRule_31(
107129 p_application_id => p_application_id
107130 , p_ae_header_id => l_ae_header_id
107131 , p_source_1 => p_source_1
107132 , p_source_2 => p_source_2
107133 , x_transaction_coa_id => l_adr_transaction_coa_id
107134 , x_accounting_coa_id => l_adr_accounting_coa_id
107135 , x_value_type_code => l_adr_value_type_code
107136 , p_side => 'NA'
107137 );
107138
107139 xla_ae_lines_pkg.set_ccid(
107140 p_code_combination_id => l_ccid
107141 , p_value_type_code => l_adr_value_type_code
107142 , p_transaction_coa_id => l_adr_transaction_coa_id
107143 , p_accounting_coa_id => l_adr_accounting_coa_id
107144 , p_adr_code => 'PPV'
107145 , p_adr_type_code => 'S'
107146 , p_component_type => l_component_type
107147 , p_component_code => l_component_code
107148 , p_component_type_code => l_component_type_code
107149 , p_component_appl_id => l_component_appl_id
107150 , p_amb_context_code => l_amb_context_code
107151 , p_side => 'NA'
107152 );
107153
107154
107155 --
107156 --
107157 END IF;
107158
107159 --
107160 -- Update the line information that should be overwritten
107161 --
107162 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107163 p_header_num => 1);
107164 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
107165
107166 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107167
107168 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
107169 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107170 END IF;
107171
107172 --
107173 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107174 --
107175 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107176 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
107177 ELSE
107178 ---------------------------------------------------------------------------------------------------
107179 -- 4262811a Switch Sign
107180 ---------------------------------------------------------------------------------------------------
107181 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
107182 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107183 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107184 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107185 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107186 -- 5132302
107187 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107188 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107189
107190 END IF;
107191
107192 -- 4955764
107193 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107194 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107195
107196
107197 XLA_AE_LINES_PKG.ValidateCurrentLine;
107198 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107199
107200 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107201 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107202 ,p_balance_type_code => l_balance_type_code);
107203
107204 END IF;
107205
107206 -----------------------------------------------------------------------------------------
107207 -- 4262811 Multiperiod Accounting
107208 -----------------------------------------------------------------------------------------
107209 -- No MPA option is assigned.
107210
107211
107215
107212 END IF;
107213 END IF;
107214 --
107216 --
107217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107218 trace
107219 (p_msg => 'END of AcctLineType_225'
107220 ,p_level => C_LEVEL_PROCEDURE
107221 ,p_module => l_log_module);
107222 END IF;
107223 --
107224 EXCEPTION
107225 WHEN xla_exceptions_pkg.application_exception THEN
107226 RAISE;
107227 WHEN OTHERS THEN
107228 xla_exceptions_pkg.raise_message
107229 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_225');
107230 END AcctLineType_225;
107231 --
107232
107233 ---------------------------------------
107234 --
107235 -- PRIVATE FUNCTION
107236 -- AcctLineType_226
107237 --
107238 ---------------------------------------
107239 PROCEDURE AcctLineType_226 (
107240 p_application_id IN NUMBER
107241 ,p_event_id IN NUMBER
107242 ,p_calculate_acctd_flag IN VARCHAR2
107243 ,p_calculate_g_l_flag IN VARCHAR2
107244 ,p_actual_flag IN OUT VARCHAR2
107245 ,p_balance_type_code OUT VARCHAR2
107246 ,p_gain_or_loss_ref OUT VARCHAR2
107247
107248 --Transaction Account
107249 , p_source_1 IN NUMBER
107250 --Journal Line Type
107251 , p_source_2 IN VARCHAR2
107252 --Entered Amount
107253 , p_source_3 IN NUMBER
107254 --First Distribution Identifier
107255 , p_source_5 IN NUMBER
107256 --Distribution Type
107257 , p_source_6 IN VARCHAR2
107258 --Currency Code
107259 , p_source_7 IN VARCHAR2
107260 --Currency Conversion Date
107261 , p_source_8 IN DATE
107262 --Currency Conversion Rate
107263 , p_source_9 IN NUMBER
107264 --Currency Conversion Type
107265 , p_source_10 IN VARCHAR2
107266 --Accounted Amount
107267 , p_source_11 IN NUMBER
107268 )
107269 IS
107270
107271 l_component_type VARCHAR2(80);
107272 l_component_code VARCHAR2(30);
107273 l_component_type_code VARCHAR2(1);
107274 l_component_appl_id INTEGER;
107275 l_amb_context_code VARCHAR2(30);
107276 l_entity_code VARCHAR2(30);
107277 l_event_class_code VARCHAR2(30);
107278 l_ae_header_id NUMBER;
107279 l_event_type_code VARCHAR2(30);
107280 l_line_definition_code VARCHAR2(30);
107281 l_line_definition_owner_code VARCHAR2(1);
107282 --
107283 -- adr variables
107284 l_segment VARCHAR2(30);
107285 l_ccid NUMBER;
107286 l_adr_transaction_coa_id NUMBER;
107287 l_adr_accounting_coa_id NUMBER;
107288 l_adr_flexfield_segment_code VARCHAR2(30);
107289 l_adr_flex_value_set_id NUMBER;
107290 l_adr_value_type_code VARCHAR2(30);
107291 l_adr_value_combination_id NUMBER;
107292 l_adr_value_segment_code VARCHAR2(30);
107293
107294 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
107295 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
107296 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
107297 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
107298
107299 -- 4262811 Variables ------------------------------------------------------------------------------------------
107300 l_entered_amt_idx NUMBER;
107301 l_accted_amt_idx NUMBER;
107302 l_acc_rev_flag VARCHAR2(1);
107303 l_accrual_line_num NUMBER;
107304 l_tmp_amt NUMBER;
107305 l_acc_rev_natural_side_code VARCHAR2(1);
107306
107307 l_num_entries NUMBER;
107308 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
107309 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
107310 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
107311 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
107312 l_recog_line_1 NUMBER;
107313 l_recog_line_2 NUMBER;
107314
107315 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
107316 l_bflow_applied_to_amt NUMBER; -- 5132302
107317 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
107318
107319 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107320
107321 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
107322 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
107323
107324 ---------------------------------------------------------------------------------------------------------------
107325
107326
107327 --
107328 -- bulk performance
107329 --
107330 l_balance_type_code VARCHAR2(1);
107331 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
107332 l_log_module VARCHAR2(240);
107333
107334 --
107335 -- Upgrade strategy
107336 --
107337 l_actual_upg_option VARCHAR2(1);
107338 l_enc_upg_option VARCHAR2(1);
107339
107340 --
107341 BEGIN
107342 --
107343 IF g_log_enabled THEN
107344 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_226';
107345 END IF;
107346 --
107347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107348
107349 trace
107350 (p_msg => 'BEGIN of AcctLineType_226'
107351 ,p_level => C_LEVEL_PROCEDURE
107352 ,p_module => l_log_module);
107356 l_component_type := 'AMB_JLT';
107353
107354 END IF;
107355 --
107357 l_component_code := 'PPV';
107358 l_component_type_code := 'S';
107359 l_component_appl_id := 555;
107360 l_amb_context_code := 'DEFAULT';
107361 l_entity_code := 'INVENTORY';
107362 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
107363 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
107364 l_line_definition_owner_code := 'S';
107365 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
107366 --
107367 l_balance_type_code := 'A';
107368 l_segment := NULL;
107369 l_ccid := NULL;
107370 l_adr_transaction_coa_id := NULL;
107371 l_adr_accounting_coa_id := NULL;
107372 l_adr_flexfield_segment_code := NULL;
107373 l_adr_flex_value_set_id := NULL;
107374 l_adr_value_type_code := NULL;
107375 l_adr_value_combination_id := NULL;
107376 l_adr_value_segment_code := NULL;
107377
107378 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
107379 l_bflow_class_code := ''; -- 4219869 Business Flow
107380 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
107381 l_budgetary_control_flag := 'N';
107382
107383 l_bflow_applied_to_amt_idx := NULL; -- 5132302
107384 l_bflow_applied_to_amt := NULL; -- 5132302
107385 l_entered_amt_idx := NULL; -- 4262811
107386 l_accted_amt_idx := NULL; -- 4262811
107387 l_acc_rev_flag := NULL; -- 4262811
107388 l_accrual_line_num := NULL; -- 4262811
107389 l_tmp_amt := NULL; -- 4262811
107390 --
107391
107392 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107393 l_balance_type_code <> 'B' THEN
107394 IF NVL(p_source_2,'
107395 ') = 'PPV'
107396 THEN
107397
107398 --
107399 XLA_AE_LINES_PKG.SetNewLine;
107400
107401 p_balance_type_code := l_balance_type_code;
107402 -- set the flag so later we will know whether the gain loss line needs to be created
107403
107404 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107405 p_actual_flag :='A';
107406 END IF;
107407
107408 --
107409 -- bulk performance
107410 --
107411 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107412 p_header_num => 0); -- 4262811
107413 --
107414 -- set accounting line options
107415 --
107416 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107417 p_natural_side_code => 'D'
107418 , p_gain_or_loss_flag => 'N'
107419 , p_gl_transfer_mode_code => 'D'
107420 , p_acct_entry_type_code => 'A'
107421 , p_switch_side_flag => 'Y'
107422 , p_merge_duplicate_code => 'W'
107423 );
107424 --
107425 l_acc_rev_natural_side_code := 'C'; -- 4262811
107426 --
107427 --
107428 -- set accounting line type info
107429 --
107430 xla_ae_lines_pkg.SetAcctLineType
107431 (p_component_type => l_component_type
107432 ,p_event_type_code => l_event_type_code
107433 ,p_line_definition_owner_code => l_line_definition_owner_code
107434 ,p_line_definition_code => l_line_definition_code
107435 ,p_accounting_line_code => l_component_code
107436 ,p_accounting_line_type_code => l_component_type_code
107437 ,p_accounting_line_appl_id => l_component_appl_id
107438 ,p_amb_context_code => l_amb_context_code
107439 ,p_entity_code => l_entity_code
107440 ,p_event_class_code => l_event_class_code);
107441 --
107442 -- set accounting class
107443 --
107444 xla_ae_lines_pkg.SetAcctClass(
107445 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
107446 , p_ae_header_id => l_ae_header_id
107447 );
107448
107449 --
107450 -- set rounding class
107451 --
107452 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
107453 'PURCHASE_PRICE_VARIANCE';
107454
107455 --
107456 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
107457 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
107458 --
107459 -- bulk performance
107460 --
107461 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
107462
107463 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
107464 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
107465
107466 -- 4955764
107467 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107468 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
107469
107470 -- 4458381 Public Sector Enh
107471
107472 --
107473 -- set accounting attributes for the line type
107474 --
107475 l_entered_amt_idx := 3;
107476 l_accted_amt_idx := 8;
107477 l_bflow_applied_to_amt_idx := NULL; -- 5132302
107478 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
107482 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
107479 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
107480 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
107481 l_rec_acct_attrs.array_char_value(2) := p_source_6;
107483 l_rec_acct_attrs.array_num_value(3) := p_source_3;
107484 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
107485 l_rec_acct_attrs.array_char_value(4) := p_source_7;
107486 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
107487 l_rec_acct_attrs.array_date_value(5) := p_source_8;
107488 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
107489 l_rec_acct_attrs.array_num_value(6) := p_source_9;
107490 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
107491 l_rec_acct_attrs.array_char_value(7) := p_source_10;
107492 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
107493 l_rec_acct_attrs.array_num_value(8) := p_source_11;
107494
107495 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
107496 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
107497
107498 ---------------------------------------------------------------------------------------------------------------
107499 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
107500 ---------------------------------------------------------------------------------------------------------------
107501 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
107502
107503 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107504 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
107505
107506 IF xla_accounting_cache_pkg.GetValueChar
107507 (p_source_code => 'LEDGER_CATEGORY_CODE'
107508 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
107509 AND l_bflow_method_code = 'PRIOR_ENTRY'
107510 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
107511 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
107512 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
107513 )
107514 THEN
107515 xla_ae_lines_pkg.BflowUpgEntry
107516 (p_business_method_code => l_bflow_method_code
107517 ,p_business_class_code => l_bflow_class_code
107518 ,p_balance_type => l_balance_type_code);
107519 ELSE
107520 NULL;
107521 -- No business flow processing for business flow method of NONE.
107522 END IF;
107523
107524 --
107525 -- call analytical criteria
107526 --
107527
107528 --
107529 -- call description
107530 --
107531 -- No description or it is inherited.
107532 --
107533 -- call ADRs
107534 -- Bug 4922099
107535 --
107536 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107537 (NVL(l_actual_upg_option, 'N') = 'O') OR
107538 (NVL(l_enc_upg_option, 'N') = 'O')
107539 )
107540 THEN
107541 NULL;
107542 --
107543 --
107544
107545 l_ccid := AcctDerRule_31(
107546 p_application_id => p_application_id
107547 , p_ae_header_id => l_ae_header_id
107548 , p_source_1 => p_source_1
107549 , p_source_2 => p_source_2
107550 , x_transaction_coa_id => l_adr_transaction_coa_id
107551 , x_accounting_coa_id => l_adr_accounting_coa_id
107552 , x_value_type_code => l_adr_value_type_code
107553 , p_side => 'NA'
107554 );
107555
107556 xla_ae_lines_pkg.set_ccid(
107557 p_code_combination_id => l_ccid
107558 , p_value_type_code => l_adr_value_type_code
107559 , p_transaction_coa_id => l_adr_transaction_coa_id
107560 , p_accounting_coa_id => l_adr_accounting_coa_id
107561 , p_adr_code => 'PPV'
107562 , p_adr_type_code => 'S'
107563 , p_component_type => l_component_type
107564 , p_component_code => l_component_code
107565 , p_component_type_code => l_component_type_code
107566 , p_component_appl_id => l_component_appl_id
107567 , p_amb_context_code => l_amb_context_code
107568 , p_side => 'NA'
107569 );
107570
107571
107572 --
107573 --
107574 END IF;
107575 --
107576 -- Bug 4922099
107577 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
107578 (NVL(l_enc_upg_option, 'N') = 'O')
107579 ) AND
107580 (l_bflow_method_code = 'PRIOR_ENTRY')
107581 )
107582 THEN
107583 IF
107584 --
107585 1 = 2
107586 --
107587 THEN
107588 xla_accounting_err_pkg.build_message
107589 (p_appli_s_name => 'XLA'
107590 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107591 ,p_token_1 => 'LINE_NUMBER'
107592 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
107593 ,p_token_2 => 'LINE_TYPE_NAME'
107594 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
107598 ,l_component_appl_id
107595 l_component_type
107596 ,l_component_code
107597 ,l_component_type_code
107599 ,l_amb_context_code
107600 ,l_entity_code
107601 ,l_event_class_code
107602 )
107603 ,p_token_3 => 'OWNER'
107604 ,p_value_3 => xla_lookups_pkg.get_meaning(
107605 p_lookup_type => 'XLA_OWNER_TYPE'
107606 ,p_lookup_code => l_component_type_code
107607 )
107608 ,p_token_4 => 'PRODUCT_NAME'
107609 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
107610 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
107611 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
107612 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
107613 ,p_ae_header_id => NULL
107614 );
107615
107616 IF (C_LEVEL_ERROR>= g_log_level) THEN
107617 trace
107618 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
107619 ,p_level => C_LEVEL_ERROR
107620 ,p_module => l_log_module);
107621 END IF;
107622 END IF;
107623 END IF;
107624 --
107625 --
107626 ------------------------------------------------------------------------------------------------
107627 -- 4219869 Business Flow
107628 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
107629 -- Prior Entry. Currently, the following code is always generated.
107630 ------------------------------------------------------------------------------------------------
107631 XLA_AE_LINES_PKG.ValidateCurrentLine;
107632
107633 ------------------------------------------------------------------------------------
107634 -- 4219869 Business Flow
107635 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
107636 ------------------------------------------------------------------------------------
107637 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107638
107639 ----------------------------------------------------------------------------------
107640 -- 4219869 Business Flow
107641 -- Update journal entry status -- Need to generate this within IF <condition>
107642 ----------------------------------------------------------------------------------
107643 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107644 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
107645 ,p_balance_type_code => l_balance_type_code
107646 );
107647
107648 -------------------------------------------------------------------------------------------
107649 -- 4262811 - Generate the Accrual Reversal lines
107650 -------------------------------------------------------------------------------------------
107651 BEGIN
107652 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107653 (g_array_event(p_event_id).array_value_num('header_index'));
107654 IF l_acc_rev_flag IS NULL THEN
107655 l_acc_rev_flag := 'N';
107656 END IF;
107657 EXCEPTION
107658 WHEN OTHERS THEN
107659 l_acc_rev_flag := 'N';
107660 END;
107661 --
107662 IF (l_acc_rev_flag = 'Y') THEN
107663
107664 -- 4645092 ------------------------------------------------------------------------------
107665 -- To allow MPA report to determine if it should generate report process
107666 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107667 ------------------------------------------------------------------------------------------
107668
107669 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107670 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107671 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
107672 -- call ADRs
107673 -- Bug 4922099
107674 --
107675 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107676 (NVL(l_actual_upg_option, 'N') = 'O') OR
107677 (NVL(l_enc_upg_option, 'N') = 'O')
107678 )
107679 THEN
107680 NULL;
107681 --
107682 --
107683
107684 l_ccid := AcctDerRule_31(
107685 p_application_id => p_application_id
107686 , p_ae_header_id => l_ae_header_id
107687 , p_source_1 => p_source_1
107688 , p_source_2 => p_source_2
107689 , x_transaction_coa_id => l_adr_transaction_coa_id
107690 , x_accounting_coa_id => l_adr_accounting_coa_id
107691 , x_value_type_code => l_adr_value_type_code
107692 , p_side => 'NA'
107696 p_code_combination_id => l_ccid
107693 );
107694
107695 xla_ae_lines_pkg.set_ccid(
107697 , p_value_type_code => l_adr_value_type_code
107698 , p_transaction_coa_id => l_adr_transaction_coa_id
107699 , p_accounting_coa_id => l_adr_accounting_coa_id
107700 , p_adr_code => 'PPV'
107701 , p_adr_type_code => 'S'
107702 , p_component_type => l_component_type
107703 , p_component_code => l_component_code
107704 , p_component_type_code => l_component_type_code
107705 , p_component_appl_id => l_component_appl_id
107706 , p_amb_context_code => l_amb_context_code
107707 , p_side => 'NA'
107708 );
107709
107710
107711 --
107712 --
107713 END IF;
107714
107715 --
107716 -- Update the line information that should be overwritten
107717 --
107718 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107719 p_header_num => 1);
107720 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
107721
107722 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107723
107724 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
107725 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107726 END IF;
107727
107728 --
107729 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107730 --
107731 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107732 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
107733 ELSE
107734 ---------------------------------------------------------------------------------------------------
107735 -- 4262811a Switch Sign
107736 ---------------------------------------------------------------------------------------------------
107737 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
107738 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107739 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107740 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107741 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107742 -- 5132302
107743 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107744 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107745
107746 END IF;
107747
107748 -- 4955764
107749 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107750 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107751
107752
107753 XLA_AE_LINES_PKG.ValidateCurrentLine;
107754 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107755
107756 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107757 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107758 ,p_balance_type_code => l_balance_type_code);
107759
107760 END IF;
107761
107762 -----------------------------------------------------------------------------------------
107763 -- 4262811 Multiperiod Accounting
107764 -----------------------------------------------------------------------------------------
107765 -- No MPA option is assigned.
107766
107767
107768 END IF;
107769 END IF;
107770 --
107771
107772 --
107773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107774 trace
107775 (p_msg => 'END of AcctLineType_226'
107776 ,p_level => C_LEVEL_PROCEDURE
107777 ,p_module => l_log_module);
107778 END IF;
107779 --
107780 EXCEPTION
107781 WHEN xla_exceptions_pkg.application_exception THEN
107782 RAISE;
107783 WHEN OTHERS THEN
107784 xla_exceptions_pkg.raise_message
107785 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_226');
107786 END AcctLineType_226;
107787 --
107788
107789 ---------------------------------------
107790 --
107791 -- PRIVATE FUNCTION
107792 -- AcctLineType_227
107793 --
107794 ---------------------------------------
107795 PROCEDURE AcctLineType_227 (
107796 p_application_id IN NUMBER
107797 ,p_event_id IN NUMBER
107798 ,p_calculate_acctd_flag IN VARCHAR2
107799 ,p_calculate_g_l_flag IN VARCHAR2
107800 ,p_actual_flag IN OUT VARCHAR2
107801 ,p_balance_type_code OUT VARCHAR2
107802 ,p_gain_or_loss_ref OUT VARCHAR2
107803
107804 --Transaction Account
107805 , p_source_1 IN NUMBER
107806 --Journal Line Type
107807 , p_source_2 IN VARCHAR2
107808 --Entered Amount
107809 , p_source_3 IN NUMBER
107810 --First Distribution Identifier
107811 , p_source_5 IN NUMBER
107812 --Distribution Type
107813 , p_source_6 IN VARCHAR2
107814 --Currency Code
107815 , p_source_7 IN VARCHAR2
107816 --Currency Conversion Date
107817 , p_source_8 IN DATE
107821 , p_source_10 IN VARCHAR2
107818 --Currency Conversion Rate
107819 , p_source_9 IN NUMBER
107820 --Currency Conversion Type
107822 --Accounted Amount
107823 , p_source_11 IN NUMBER
107824 )
107825 IS
107826
107827 l_component_type VARCHAR2(80);
107828 l_component_code VARCHAR2(30);
107829 l_component_type_code VARCHAR2(1);
107830 l_component_appl_id INTEGER;
107831 l_amb_context_code VARCHAR2(30);
107832 l_entity_code VARCHAR2(30);
107833 l_event_class_code VARCHAR2(30);
107834 l_ae_header_id NUMBER;
107835 l_event_type_code VARCHAR2(30);
107836 l_line_definition_code VARCHAR2(30);
107837 l_line_definition_owner_code VARCHAR2(1);
107838 --
107839 -- adr variables
107840 l_segment VARCHAR2(30);
107841 l_ccid NUMBER;
107842 l_adr_transaction_coa_id NUMBER;
107843 l_adr_accounting_coa_id NUMBER;
107844 l_adr_flexfield_segment_code VARCHAR2(30);
107845 l_adr_flex_value_set_id NUMBER;
107846 l_adr_value_type_code VARCHAR2(30);
107847 l_adr_value_combination_id NUMBER;
107848 l_adr_value_segment_code VARCHAR2(30);
107849
107850 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
107851 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
107852 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
107853 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
107854
107855 -- 4262811 Variables ------------------------------------------------------------------------------------------
107856 l_entered_amt_idx NUMBER;
107857 l_accted_amt_idx NUMBER;
107858 l_acc_rev_flag VARCHAR2(1);
107859 l_accrual_line_num NUMBER;
107860 l_tmp_amt NUMBER;
107861 l_acc_rev_natural_side_code VARCHAR2(1);
107862
107863 l_num_entries NUMBER;
107864 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
107865 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
107866 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
107867 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
107868 l_recog_line_1 NUMBER;
107869 l_recog_line_2 NUMBER;
107870
107871 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
107872 l_bflow_applied_to_amt NUMBER; -- 5132302
107873 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
107874
107875 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
107876
107877 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
107878 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
107879
107880 ---------------------------------------------------------------------------------------------------------------
107881
107882
107883 --
107884 -- bulk performance
107885 --
107886 l_balance_type_code VARCHAR2(1);
107887 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
107888 l_log_module VARCHAR2(240);
107889
107890 --
107891 -- Upgrade strategy
107892 --
107893 l_actual_upg_option VARCHAR2(1);
107894 l_enc_upg_option VARCHAR2(1);
107895
107896 --
107897 BEGIN
107898 --
107899 IF g_log_enabled THEN
107900 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_227';
107901 END IF;
107902 --
107903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107904
107905 trace
107906 (p_msg => 'BEGIN of AcctLineType_227'
107907 ,p_level => C_LEVEL_PROCEDURE
107908 ,p_module => l_log_module);
107909
107910 END IF;
107911 --
107912 l_component_type := 'AMB_JLT';
107913 l_component_code := 'PPV';
107914 l_component_type_code := 'S';
107915 l_component_appl_id := 555;
107916 l_amb_context_code := 'DEFAULT';
107917 l_entity_code := 'PURCHASING';
107918 l_event_class_code := 'DELIVER';
107919 l_event_type_code := 'PO_RECEIPT_ADJ';
107920 l_line_definition_owner_code := 'S';
107921 l_line_definition_code := 'PO_RECEIPT_ADJ';
107922 --
107923 l_balance_type_code := 'A';
107924 l_segment := NULL;
107925 l_ccid := NULL;
107926 l_adr_transaction_coa_id := NULL;
107927 l_adr_accounting_coa_id := NULL;
107928 l_adr_flexfield_segment_code := NULL;
107929 l_adr_flex_value_set_id := NULL;
107930 l_adr_value_type_code := NULL;
107931 l_adr_value_combination_id := NULL;
107932 l_adr_value_segment_code := NULL;
107933
107934 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
107935 l_bflow_class_code := ''; -- 4219869 Business Flow
107936 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
107937 l_budgetary_control_flag := 'N';
107938
107939 l_bflow_applied_to_amt_idx := NULL; -- 5132302
107940 l_bflow_applied_to_amt := NULL; -- 5132302
107941 l_entered_amt_idx := NULL; -- 4262811
107942 l_accted_amt_idx := NULL; -- 4262811
107943 l_acc_rev_flag := NULL; -- 4262811
107944 l_accrual_line_num := NULL; -- 4262811
107945 l_tmp_amt := NULL; -- 4262811
107949 l_balance_type_code <> 'B' THEN
107946 --
107947
107948 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
107950 IF NVL(p_source_2,'
107951 ') = 'PPV'
107952 THEN
107953
107954 --
107955 XLA_AE_LINES_PKG.SetNewLine;
107956
107957 p_balance_type_code := l_balance_type_code;
107958 -- set the flag so later we will know whether the gain loss line needs to be created
107959
107960 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
107961 p_actual_flag :='A';
107962 END IF;
107963
107964 --
107965 -- bulk performance
107966 --
107967 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
107968 p_header_num => 0); -- 4262811
107969 --
107970 -- set accounting line options
107971 --
107972 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
107973 p_natural_side_code => 'D'
107974 , p_gain_or_loss_flag => 'N'
107975 , p_gl_transfer_mode_code => 'D'
107976 , p_acct_entry_type_code => 'A'
107977 , p_switch_side_flag => 'Y'
107978 , p_merge_duplicate_code => 'W'
107979 );
107980 --
107981 l_acc_rev_natural_side_code := 'C'; -- 4262811
107982 --
107983 --
107984 -- set accounting line type info
107985 --
107986 xla_ae_lines_pkg.SetAcctLineType
107987 (p_component_type => l_component_type
107988 ,p_event_type_code => l_event_type_code
107989 ,p_line_definition_owner_code => l_line_definition_owner_code
107990 ,p_line_definition_code => l_line_definition_code
107991 ,p_accounting_line_code => l_component_code
107992 ,p_accounting_line_type_code => l_component_type_code
107993 ,p_accounting_line_appl_id => l_component_appl_id
107994 ,p_amb_context_code => l_amb_context_code
107995 ,p_entity_code => l_entity_code
107996 ,p_event_class_code => l_event_class_code);
107997 --
107998 -- set accounting class
107999 --
108000 xla_ae_lines_pkg.SetAcctClass(
108001 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
108002 , p_ae_header_id => l_ae_header_id
108003 );
108004
108005 --
108006 -- set rounding class
108007 --
108008 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
108009 'PURCHASE_PRICE_VARIANCE';
108010
108011 --
108012 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
108013 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
108014 --
108015 -- bulk performance
108016 --
108017 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
108018
108019 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
108020 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
108021
108022 -- 4955764
108023 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108024 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
108025
108026 -- 4458381 Public Sector Enh
108027
108028 --
108029 -- set accounting attributes for the line type
108030 --
108031 l_entered_amt_idx := 3;
108032 l_accted_amt_idx := 8;
108033 l_bflow_applied_to_amt_idx := NULL; -- 5132302
108034 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
108035 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
108036 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
108037 l_rec_acct_attrs.array_char_value(2) := p_source_6;
108038 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
108039 l_rec_acct_attrs.array_num_value(3) := p_source_3;
108040 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
108041 l_rec_acct_attrs.array_char_value(4) := p_source_7;
108042 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
108043 l_rec_acct_attrs.array_date_value(5) := p_source_8;
108044 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
108045 l_rec_acct_attrs.array_num_value(6) := p_source_9;
108046 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
108047 l_rec_acct_attrs.array_char_value(7) := p_source_10;
108048 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
108049 l_rec_acct_attrs.array_num_value(8) := p_source_11;
108050
108051 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
108052 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
108053
108054 ---------------------------------------------------------------------------------------------------------------
108055 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
108056 ---------------------------------------------------------------------------------------------------------------
108057 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
108058
108059 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108063 (p_source_code => 'LEDGER_CATEGORY_CODE'
108060 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108061
108062 IF xla_accounting_cache_pkg.GetValueChar
108064 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
108065 AND l_bflow_method_code = 'PRIOR_ENTRY'
108066 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
108067 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
108068 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
108069 )
108070 THEN
108071 xla_ae_lines_pkg.BflowUpgEntry
108072 (p_business_method_code => l_bflow_method_code
108073 ,p_business_class_code => l_bflow_class_code
108074 ,p_balance_type => l_balance_type_code);
108075 ELSE
108076 NULL;
108077 -- No business flow processing for business flow method of NONE.
108078 END IF;
108079
108080 --
108081 -- call analytical criteria
108082 --
108083
108084 --
108085 -- call description
108086 --
108087 -- No description or it is inherited.
108088 --
108089 -- call ADRs
108090 -- Bug 4922099
108091 --
108092 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108093 (NVL(l_actual_upg_option, 'N') = 'O') OR
108094 (NVL(l_enc_upg_option, 'N') = 'O')
108095 )
108096 THEN
108097 NULL;
108098 --
108099 --
108100
108101 l_ccid := AcctDerRule_31(
108102 p_application_id => p_application_id
108103 , p_ae_header_id => l_ae_header_id
108104 , p_source_1 => p_source_1
108105 , p_source_2 => p_source_2
108106 , x_transaction_coa_id => l_adr_transaction_coa_id
108107 , x_accounting_coa_id => l_adr_accounting_coa_id
108108 , x_value_type_code => l_adr_value_type_code
108109 , p_side => 'NA'
108110 );
108111
108112 xla_ae_lines_pkg.set_ccid(
108113 p_code_combination_id => l_ccid
108114 , p_value_type_code => l_adr_value_type_code
108115 , p_transaction_coa_id => l_adr_transaction_coa_id
108116 , p_accounting_coa_id => l_adr_accounting_coa_id
108117 , p_adr_code => 'PPV'
108118 , p_adr_type_code => 'S'
108119 , p_component_type => l_component_type
108120 , p_component_code => l_component_code
108121 , p_component_type_code => l_component_type_code
108122 , p_component_appl_id => l_component_appl_id
108123 , p_amb_context_code => l_amb_context_code
108124 , p_side => 'NA'
108125 );
108126
108127
108128 --
108129 --
108130 END IF;
108131 --
108132 -- Bug 4922099
108133 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108134 (NVL(l_enc_upg_option, 'N') = 'O')
108135 ) AND
108136 (l_bflow_method_code = 'PRIOR_ENTRY')
108137 )
108138 THEN
108139 IF
108140 --
108141 1 = 2
108142 --
108143 THEN
108144 xla_accounting_err_pkg.build_message
108145 (p_appli_s_name => 'XLA'
108146 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108147 ,p_token_1 => 'LINE_NUMBER'
108148 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
108149 ,p_token_2 => 'LINE_TYPE_NAME'
108150 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
108151 l_component_type
108152 ,l_component_code
108153 ,l_component_type_code
108154 ,l_component_appl_id
108155 ,l_amb_context_code
108156 ,l_entity_code
108157 ,l_event_class_code
108158 )
108159 ,p_token_3 => 'OWNER'
108160 ,p_value_3 => xla_lookups_pkg.get_meaning(
108161 p_lookup_type => 'XLA_OWNER_TYPE'
108162 ,p_lookup_code => l_component_type_code
108163 )
108164 ,p_token_4 => 'PRODUCT_NAME'
108165 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108166 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108167 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108168 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108172 IF (C_LEVEL_ERROR>= g_log_level) THEN
108169 ,p_ae_header_id => NULL
108170 );
108171
108173 trace
108174 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108175 ,p_level => C_LEVEL_ERROR
108176 ,p_module => l_log_module);
108177 END IF;
108178 END IF;
108179 END IF;
108180 --
108181 --
108182 ------------------------------------------------------------------------------------------------
108183 -- 4219869 Business Flow
108184 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108185 -- Prior Entry. Currently, the following code is always generated.
108186 ------------------------------------------------------------------------------------------------
108187 XLA_AE_LINES_PKG.ValidateCurrentLine;
108188
108189 ------------------------------------------------------------------------------------
108190 -- 4219869 Business Flow
108191 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108192 ------------------------------------------------------------------------------------
108193 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108194
108195 ----------------------------------------------------------------------------------
108196 -- 4219869 Business Flow
108197 -- Update journal entry status -- Need to generate this within IF <condition>
108198 ----------------------------------------------------------------------------------
108199 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108200 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108201 ,p_balance_type_code => l_balance_type_code
108202 );
108203
108204 -------------------------------------------------------------------------------------------
108205 -- 4262811 - Generate the Accrual Reversal lines
108206 -------------------------------------------------------------------------------------------
108207 BEGIN
108208 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108209 (g_array_event(p_event_id).array_value_num('header_index'));
108210 IF l_acc_rev_flag IS NULL THEN
108211 l_acc_rev_flag := 'N';
108212 END IF;
108213 EXCEPTION
108214 WHEN OTHERS THEN
108215 l_acc_rev_flag := 'N';
108216 END;
108217 --
108218 IF (l_acc_rev_flag = 'Y') THEN
108219
108220 -- 4645092 ------------------------------------------------------------------------------
108221 -- To allow MPA report to determine if it should generate report process
108222 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108223 ------------------------------------------------------------------------------------------
108224
108225 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108226 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108227 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
108228 -- call ADRs
108229 -- Bug 4922099
108230 --
108231 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108232 (NVL(l_actual_upg_option, 'N') = 'O') OR
108233 (NVL(l_enc_upg_option, 'N') = 'O')
108234 )
108235 THEN
108236 NULL;
108237 --
108238 --
108239
108240 l_ccid := AcctDerRule_31(
108241 p_application_id => p_application_id
108242 , p_ae_header_id => l_ae_header_id
108243 , p_source_1 => p_source_1
108244 , p_source_2 => p_source_2
108245 , x_transaction_coa_id => l_adr_transaction_coa_id
108246 , x_accounting_coa_id => l_adr_accounting_coa_id
108247 , x_value_type_code => l_adr_value_type_code
108248 , p_side => 'NA'
108249 );
108250
108251 xla_ae_lines_pkg.set_ccid(
108252 p_code_combination_id => l_ccid
108253 , p_value_type_code => l_adr_value_type_code
108254 , p_transaction_coa_id => l_adr_transaction_coa_id
108255 , p_accounting_coa_id => l_adr_accounting_coa_id
108256 , p_adr_code => 'PPV'
108257 , p_adr_type_code => 'S'
108258 , p_component_type => l_component_type
108259 , p_component_code => l_component_code
108260 , p_component_type_code => l_component_type_code
108261 , p_component_appl_id => l_component_appl_id
108262 , p_amb_context_code => l_amb_context_code
108263 , p_side => 'NA'
108264 );
108265
108266
108267 --
108268 --
108269 END IF;
108270
108271 --
108272 -- Update the line information that should be overwritten
108273 --
108274 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108275 p_header_num => 1);
108276 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
108277
108278 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108279
108280 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
108281 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108282 END IF;
108283
108284 --
108288 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
108285 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108286 --
108287 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108289 ELSE
108290 ---------------------------------------------------------------------------------------------------
108291 -- 4262811a Switch Sign
108292 ---------------------------------------------------------------------------------------------------
108293 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
108294 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108295 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108296 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108297 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108298 -- 5132302
108299 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108300 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108301
108302 END IF;
108303
108304 -- 4955764
108305 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108306 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108307
108308
108309 XLA_AE_LINES_PKG.ValidateCurrentLine;
108310 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108311
108312 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108313 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108314 ,p_balance_type_code => l_balance_type_code);
108315
108316 END IF;
108317
108318 -----------------------------------------------------------------------------------------
108319 -- 4262811 Multiperiod Accounting
108320 -----------------------------------------------------------------------------------------
108321 -- No MPA option is assigned.
108322
108323
108324 END IF;
108325 END IF;
108326 --
108327
108328 --
108329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108330 trace
108331 (p_msg => 'END of AcctLineType_227'
108332 ,p_level => C_LEVEL_PROCEDURE
108333 ,p_module => l_log_module);
108334 END IF;
108335 --
108336 EXCEPTION
108337 WHEN xla_exceptions_pkg.application_exception THEN
108338 RAISE;
108339 WHEN OTHERS THEN
108340 xla_exceptions_pkg.raise_message
108341 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_227');
108342 END AcctLineType_227;
108343 --
108344
108345 ---------------------------------------
108346 --
108347 -- PRIVATE FUNCTION
108348 -- AcctLineType_228
108349 --
108350 ---------------------------------------
108351 PROCEDURE AcctLineType_228 (
108352 p_application_id IN NUMBER
108353 ,p_event_id IN NUMBER
108354 ,p_calculate_acctd_flag IN VARCHAR2
108355 ,p_calculate_g_l_flag IN VARCHAR2
108356 ,p_actual_flag IN OUT VARCHAR2
108357 ,p_balance_type_code OUT VARCHAR2
108358 ,p_gain_or_loss_ref OUT VARCHAR2
108359
108360 --Transaction Account
108361 , p_source_1 IN NUMBER
108362 --Journal Line Type
108363 , p_source_2 IN VARCHAR2
108364 --Entered Amount
108365 , p_source_3 IN NUMBER
108366 --First Distribution Identifier
108367 , p_source_5 IN NUMBER
108368 --Distribution Type
108369 , p_source_6 IN VARCHAR2
108370 --Currency Code
108371 , p_source_7 IN VARCHAR2
108372 --Currency Conversion Date
108373 , p_source_8 IN DATE
108374 --Currency Conversion Rate
108375 , p_source_9 IN NUMBER
108376 --Currency Conversion Type
108377 , p_source_10 IN VARCHAR2
108378 --Accounted Amount
108379 , p_source_11 IN NUMBER
108380 )
108381 IS
108382
108383 l_component_type VARCHAR2(80);
108384 l_component_code VARCHAR2(30);
108385 l_component_type_code VARCHAR2(1);
108386 l_component_appl_id INTEGER;
108387 l_amb_context_code VARCHAR2(30);
108388 l_entity_code VARCHAR2(30);
108389 l_event_class_code VARCHAR2(30);
108390 l_ae_header_id NUMBER;
108391 l_event_type_code VARCHAR2(30);
108392 l_line_definition_code VARCHAR2(30);
108393 l_line_definition_owner_code VARCHAR2(1);
108394 --
108395 -- adr variables
108396 l_segment VARCHAR2(30);
108397 l_ccid NUMBER;
108398 l_adr_transaction_coa_id NUMBER;
108399 l_adr_accounting_coa_id NUMBER;
108400 l_adr_flexfield_segment_code VARCHAR2(30);
108401 l_adr_flex_value_set_id NUMBER;
108402 l_adr_value_type_code VARCHAR2(30);
108403 l_adr_value_combination_id NUMBER;
108404 l_adr_value_segment_code VARCHAR2(30);
108405
108406 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
108407 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
108408 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
108409 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
108410
108414 l_acc_rev_flag VARCHAR2(1);
108411 -- 4262811 Variables ------------------------------------------------------------------------------------------
108412 l_entered_amt_idx NUMBER;
108413 l_accted_amt_idx NUMBER;
108415 l_accrual_line_num NUMBER;
108416 l_tmp_amt NUMBER;
108417 l_acc_rev_natural_side_code VARCHAR2(1);
108418
108419 l_num_entries NUMBER;
108420 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
108421 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
108422 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
108423 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
108424 l_recog_line_1 NUMBER;
108425 l_recog_line_2 NUMBER;
108426
108427 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
108428 l_bflow_applied_to_amt NUMBER; -- 5132302
108429 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
108430
108431 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108432
108433 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
108434 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
108435
108436 ---------------------------------------------------------------------------------------------------------------
108437
108438
108439 --
108440 -- bulk performance
108441 --
108442 l_balance_type_code VARCHAR2(1);
108443 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
108444 l_log_module VARCHAR2(240);
108445
108446 --
108447 -- Upgrade strategy
108448 --
108449 l_actual_upg_option VARCHAR2(1);
108450 l_enc_upg_option VARCHAR2(1);
108451
108452 --
108453 BEGIN
108454 --
108455 IF g_log_enabled THEN
108456 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_228';
108457 END IF;
108458 --
108459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108460
108461 trace
108462 (p_msg => 'BEGIN of AcctLineType_228'
108463 ,p_level => C_LEVEL_PROCEDURE
108464 ,p_module => l_log_module);
108465
108466 END IF;
108467 --
108468 l_component_type := 'AMB_JLT';
108469 l_component_code := 'PPV';
108470 l_component_type_code := 'S';
108471 l_component_appl_id := 555;
108472 l_amb_context_code := 'DEFAULT';
108473 l_entity_code := 'PURCHASING';
108474 l_event_class_code := 'DELIVER';
108475 l_event_type_code := 'PO_RECEIPT';
108476 l_line_definition_owner_code := 'S';
108477 l_line_definition_code := 'DELIVER';
108478 --
108479 l_balance_type_code := 'A';
108480 l_segment := NULL;
108481 l_ccid := NULL;
108482 l_adr_transaction_coa_id := NULL;
108483 l_adr_accounting_coa_id := NULL;
108484 l_adr_flexfield_segment_code := NULL;
108485 l_adr_flex_value_set_id := NULL;
108486 l_adr_value_type_code := NULL;
108487 l_adr_value_combination_id := NULL;
108488 l_adr_value_segment_code := NULL;
108489
108490 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
108491 l_bflow_class_code := ''; -- 4219869 Business Flow
108492 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
108493 l_budgetary_control_flag := 'N';
108494
108495 l_bflow_applied_to_amt_idx := NULL; -- 5132302
108496 l_bflow_applied_to_amt := NULL; -- 5132302
108497 l_entered_amt_idx := NULL; -- 4262811
108498 l_accted_amt_idx := NULL; -- 4262811
108499 l_acc_rev_flag := NULL; -- 4262811
108500 l_accrual_line_num := NULL; -- 4262811
108501 l_tmp_amt := NULL; -- 4262811
108502 --
108503
108504 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
108505 l_balance_type_code <> 'B' THEN
108506 IF NVL(p_source_2,'
108507 ') = 'PPV'
108508 THEN
108509
108510 --
108511 XLA_AE_LINES_PKG.SetNewLine;
108512
108513 p_balance_type_code := l_balance_type_code;
108514 -- set the flag so later we will know whether the gain loss line needs to be created
108515
108516 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
108517 p_actual_flag :='A';
108518 END IF;
108519
108520 --
108521 -- bulk performance
108522 --
108523 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
108524 p_header_num => 0); -- 4262811
108525 --
108526 -- set accounting line options
108527 --
108528 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
108529 p_natural_side_code => 'D'
108530 , p_gain_or_loss_flag => 'N'
108531 , p_gl_transfer_mode_code => 'D'
108532 , p_acct_entry_type_code => 'A'
108533 , p_switch_side_flag => 'Y'
108534 , p_merge_duplicate_code => 'W'
108535 );
108536 --
108537 l_acc_rev_natural_side_code := 'C'; -- 4262811
108538 --
108539 --
108540 -- set accounting line type info
108541 --
108542 xla_ae_lines_pkg.SetAcctLineType
108546 ,p_line_definition_code => l_line_definition_code
108543 (p_component_type => l_component_type
108544 ,p_event_type_code => l_event_type_code
108545 ,p_line_definition_owner_code => l_line_definition_owner_code
108547 ,p_accounting_line_code => l_component_code
108548 ,p_accounting_line_type_code => l_component_type_code
108549 ,p_accounting_line_appl_id => l_component_appl_id
108550 ,p_amb_context_code => l_amb_context_code
108551 ,p_entity_code => l_entity_code
108552 ,p_event_class_code => l_event_class_code);
108553 --
108554 -- set accounting class
108555 --
108556 xla_ae_lines_pkg.SetAcctClass(
108557 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
108558 , p_ae_header_id => l_ae_header_id
108559 );
108560
108561 --
108562 -- set rounding class
108563 --
108564 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
108565 'PURCHASE_PRICE_VARIANCE';
108566
108567 --
108568 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
108569 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
108570 --
108571 -- bulk performance
108572 --
108573 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
108574
108575 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
108576 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
108577
108578 -- 4955764
108579 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108580 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
108581
108582 -- 4458381 Public Sector Enh
108583
108584 --
108585 -- set accounting attributes for the line type
108586 --
108587 l_entered_amt_idx := 3;
108588 l_accted_amt_idx := 8;
108589 l_bflow_applied_to_amt_idx := NULL; -- 5132302
108590 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
108591 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
108592 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
108593 l_rec_acct_attrs.array_char_value(2) := p_source_6;
108594 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
108595 l_rec_acct_attrs.array_num_value(3) := p_source_3;
108596 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
108597 l_rec_acct_attrs.array_char_value(4) := p_source_7;
108598 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
108599 l_rec_acct_attrs.array_date_value(5) := p_source_8;
108600 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
108601 l_rec_acct_attrs.array_num_value(6) := p_source_9;
108602 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
108603 l_rec_acct_attrs.array_char_value(7) := p_source_10;
108604 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
108605 l_rec_acct_attrs.array_num_value(8) := p_source_11;
108606
108607 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
108608 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
108609
108610 ---------------------------------------------------------------------------------------------------------------
108611 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
108612 ---------------------------------------------------------------------------------------------------------------
108613 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
108614
108615 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108616 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
108617
108618 IF xla_accounting_cache_pkg.GetValueChar
108619 (p_source_code => 'LEDGER_CATEGORY_CODE'
108620 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
108621 AND l_bflow_method_code = 'PRIOR_ENTRY'
108622 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
108623 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
108624 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
108625 )
108626 THEN
108627 xla_ae_lines_pkg.BflowUpgEntry
108628 (p_business_method_code => l_bflow_method_code
108629 ,p_business_class_code => l_bflow_class_code
108630 ,p_balance_type => l_balance_type_code);
108631 ELSE
108632 NULL;
108633 -- No business flow processing for business flow method of NONE.
108634 END IF;
108635
108636 --
108637 -- call analytical criteria
108638 --
108639
108640 --
108641 -- call description
108642 --
108643 -- No description or it is inherited.
108644 --
108645 -- call ADRs
108646 -- Bug 4922099
108647 --
108648 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108649 (NVL(l_actual_upg_option, 'N') = 'O') OR
108650 (NVL(l_enc_upg_option, 'N') = 'O')
108651 )
108652 THEN
108653 NULL;
108654 --
108655 --
108656
108657 l_ccid := AcctDerRule_31(
108661 , p_source_2 => p_source_2
108658 p_application_id => p_application_id
108659 , p_ae_header_id => l_ae_header_id
108660 , p_source_1 => p_source_1
108662 , x_transaction_coa_id => l_adr_transaction_coa_id
108663 , x_accounting_coa_id => l_adr_accounting_coa_id
108664 , x_value_type_code => l_adr_value_type_code
108665 , p_side => 'NA'
108666 );
108667
108668 xla_ae_lines_pkg.set_ccid(
108669 p_code_combination_id => l_ccid
108670 , p_value_type_code => l_adr_value_type_code
108671 , p_transaction_coa_id => l_adr_transaction_coa_id
108672 , p_accounting_coa_id => l_adr_accounting_coa_id
108673 , p_adr_code => 'PPV'
108674 , p_adr_type_code => 'S'
108675 , p_component_type => l_component_type
108676 , p_component_code => l_component_code
108677 , p_component_type_code => l_component_type_code
108678 , p_component_appl_id => l_component_appl_id
108679 , p_amb_context_code => l_amb_context_code
108680 , p_side => 'NA'
108681 );
108682
108683
108684 --
108685 --
108686 END IF;
108687 --
108688 -- Bug 4922099
108689 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
108690 (NVL(l_enc_upg_option, 'N') = 'O')
108691 ) AND
108692 (l_bflow_method_code = 'PRIOR_ENTRY')
108693 )
108694 THEN
108695 IF
108696 --
108697 1 = 2
108698 --
108699 THEN
108700 xla_accounting_err_pkg.build_message
108701 (p_appli_s_name => 'XLA'
108702 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108703 ,p_token_1 => 'LINE_NUMBER'
108704 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
108705 ,p_token_2 => 'LINE_TYPE_NAME'
108706 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
108707 l_component_type
108708 ,l_component_code
108709 ,l_component_type_code
108710 ,l_component_appl_id
108711 ,l_amb_context_code
108712 ,l_entity_code
108713 ,l_event_class_code
108714 )
108715 ,p_token_3 => 'OWNER'
108716 ,p_value_3 => xla_lookups_pkg.get_meaning(
108717 p_lookup_type => 'XLA_OWNER_TYPE'
108718 ,p_lookup_code => l_component_type_code
108719 )
108720 ,p_token_4 => 'PRODUCT_NAME'
108721 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
108722 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
108723 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
108724 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
108725 ,p_ae_header_id => NULL
108726 );
108727
108728 IF (C_LEVEL_ERROR>= g_log_level) THEN
108729 trace
108730 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
108731 ,p_level => C_LEVEL_ERROR
108732 ,p_module => l_log_module);
108733 END IF;
108734 END IF;
108735 END IF;
108736 --
108737 --
108738 ------------------------------------------------------------------------------------------------
108739 -- 4219869 Business Flow
108740 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
108741 -- Prior Entry. Currently, the following code is always generated.
108742 ------------------------------------------------------------------------------------------------
108743 XLA_AE_LINES_PKG.ValidateCurrentLine;
108744
108745 ------------------------------------------------------------------------------------
108746 -- 4219869 Business Flow
108747 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
108748 ------------------------------------------------------------------------------------
108749 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108750
108751 ----------------------------------------------------------------------------------
108752 -- 4219869 Business Flow
108753 -- Update journal entry status -- Need to generate this within IF <condition>
108754 ----------------------------------------------------------------------------------
108755 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108759
108756 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
108757 ,p_balance_type_code => l_balance_type_code
108758 );
108760 -------------------------------------------------------------------------------------------
108761 -- 4262811 - Generate the Accrual Reversal lines
108762 -------------------------------------------------------------------------------------------
108763 BEGIN
108764 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
108765 (g_array_event(p_event_id).array_value_num('header_index'));
108766 IF l_acc_rev_flag IS NULL THEN
108767 l_acc_rev_flag := 'N';
108768 END IF;
108769 EXCEPTION
108770 WHEN OTHERS THEN
108771 l_acc_rev_flag := 'N';
108772 END;
108773 --
108774 IF (l_acc_rev_flag = 'Y') THEN
108775
108776 -- 4645092 ------------------------------------------------------------------------------
108777 -- To allow MPA report to determine if it should generate report process
108778 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
108779 ------------------------------------------------------------------------------------------
108780
108781 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
108782 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
108783 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
108784 -- call ADRs
108785 -- Bug 4922099
108786 --
108787 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
108788 (NVL(l_actual_upg_option, 'N') = 'O') OR
108789 (NVL(l_enc_upg_option, 'N') = 'O')
108790 )
108791 THEN
108792 NULL;
108793 --
108794 --
108795
108796 l_ccid := AcctDerRule_31(
108797 p_application_id => p_application_id
108798 , p_ae_header_id => l_ae_header_id
108799 , p_source_1 => p_source_1
108800 , p_source_2 => p_source_2
108801 , x_transaction_coa_id => l_adr_transaction_coa_id
108802 , x_accounting_coa_id => l_adr_accounting_coa_id
108803 , x_value_type_code => l_adr_value_type_code
108804 , p_side => 'NA'
108805 );
108806
108807 xla_ae_lines_pkg.set_ccid(
108808 p_code_combination_id => l_ccid
108809 , p_value_type_code => l_adr_value_type_code
108810 , p_transaction_coa_id => l_adr_transaction_coa_id
108811 , p_accounting_coa_id => l_adr_accounting_coa_id
108812 , p_adr_code => 'PPV'
108813 , p_adr_type_code => 'S'
108814 , p_component_type => l_component_type
108815 , p_component_code => l_component_code
108816 , p_component_type_code => l_component_type_code
108817 , p_component_appl_id => l_component_appl_id
108818 , p_amb_context_code => l_amb_context_code
108819 , p_side => 'NA'
108820 );
108821
108822
108823 --
108824 --
108825 END IF;
108826
108827 --
108828 -- Update the line information that should be overwritten
108829 --
108830 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
108831 p_header_num => 1);
108832 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
108833
108834 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
108835
108836 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
108837 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
108838 END IF;
108839
108840 --
108841 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
108842 --
108843 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
108844 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
108845 ELSE
108846 ---------------------------------------------------------------------------------------------------
108847 -- 4262811a Switch Sign
108848 ---------------------------------------------------------------------------------------------------
108849 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
108850 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108851 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108852 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
108853 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108854 -- 5132302
108855 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
108856 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
108857
108858 END IF;
108859
108860 -- 4955764
108861 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
108862 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
108863
108864
108865 XLA_AE_LINES_PKG.ValidateCurrentLine;
108869 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
108866 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
108867
108868 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
108870 ,p_balance_type_code => l_balance_type_code);
108871
108872 END IF;
108873
108874 -----------------------------------------------------------------------------------------
108875 -- 4262811 Multiperiod Accounting
108876 -----------------------------------------------------------------------------------------
108877 -- No MPA option is assigned.
108878
108879
108880 END IF;
108881 END IF;
108882 --
108883
108884 --
108885 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108886 trace
108887 (p_msg => 'END of AcctLineType_228'
108888 ,p_level => C_LEVEL_PROCEDURE
108889 ,p_module => l_log_module);
108890 END IF;
108891 --
108892 EXCEPTION
108893 WHEN xla_exceptions_pkg.application_exception THEN
108894 RAISE;
108895 WHEN OTHERS THEN
108896 xla_exceptions_pkg.raise_message
108897 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_228');
108898 END AcctLineType_228;
108899 --
108900
108901 ---------------------------------------
108902 --
108903 -- PRIVATE FUNCTION
108904 -- AcctLineType_229
108905 --
108906 ---------------------------------------
108907 PROCEDURE AcctLineType_229 (
108908 p_application_id IN NUMBER
108909 ,p_event_id IN NUMBER
108910 ,p_calculate_acctd_flag IN VARCHAR2
108911 ,p_calculate_g_l_flag IN VARCHAR2
108912 ,p_actual_flag IN OUT VARCHAR2
108913 ,p_balance_type_code OUT VARCHAR2
108914 ,p_gain_or_loss_ref OUT VARCHAR2
108915
108916 --Transaction Account
108917 , p_source_1 IN NUMBER
108918 --Journal Line Type
108919 , p_source_2 IN VARCHAR2
108920 --Entered Amount
108921 , p_source_3 IN NUMBER
108922 --First Distribution Identifier
108923 , p_source_5 IN NUMBER
108924 --Distribution Type
108925 , p_source_6 IN VARCHAR2
108926 --Currency Code
108927 , p_source_7 IN VARCHAR2
108928 --Currency Conversion Date
108929 , p_source_8 IN DATE
108930 --Currency Conversion Rate
108931 , p_source_9 IN NUMBER
108932 --Currency Conversion Type
108933 , p_source_10 IN VARCHAR2
108934 --Accounted Amount
108935 , p_source_11 IN NUMBER
108936 )
108937 IS
108938
108939 l_component_type VARCHAR2(80);
108940 l_component_code VARCHAR2(30);
108941 l_component_type_code VARCHAR2(1);
108942 l_component_appl_id INTEGER;
108943 l_amb_context_code VARCHAR2(30);
108944 l_entity_code VARCHAR2(30);
108945 l_event_class_code VARCHAR2(30);
108946 l_ae_header_id NUMBER;
108947 l_event_type_code VARCHAR2(30);
108948 l_line_definition_code VARCHAR2(30);
108949 l_line_definition_owner_code VARCHAR2(1);
108950 --
108951 -- adr variables
108952 l_segment VARCHAR2(30);
108953 l_ccid NUMBER;
108954 l_adr_transaction_coa_id NUMBER;
108955 l_adr_accounting_coa_id NUMBER;
108956 l_adr_flexfield_segment_code VARCHAR2(30);
108957 l_adr_flex_value_set_id NUMBER;
108958 l_adr_value_type_code VARCHAR2(30);
108959 l_adr_value_combination_id NUMBER;
108960 l_adr_value_segment_code VARCHAR2(30);
108961
108962 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
108963 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
108964 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
108965 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
108966
108967 -- 4262811 Variables ------------------------------------------------------------------------------------------
108968 l_entered_amt_idx NUMBER;
108969 l_accted_amt_idx NUMBER;
108970 l_acc_rev_flag VARCHAR2(1);
108971 l_accrual_line_num NUMBER;
108972 l_tmp_amt NUMBER;
108973 l_acc_rev_natural_side_code VARCHAR2(1);
108974
108975 l_num_entries NUMBER;
108976 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
108977 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
108978 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
108979 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
108980 l_recog_line_1 NUMBER;
108981 l_recog_line_2 NUMBER;
108982
108983 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
108984 l_bflow_applied_to_amt NUMBER; -- 5132302
108985 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
108986
108987 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
108988
108989 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
108990 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
108991
108992 ---------------------------------------------------------------------------------------------------------------
108993
108994
108995 --
108996 -- bulk performance
108997 --
108998 l_balance_type_code VARCHAR2(1);
109002 --
108999 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
109000 l_log_module VARCHAR2(240);
109001
109003 -- Upgrade strategy
109004 --
109005 l_actual_upg_option VARCHAR2(1);
109006 l_enc_upg_option VARCHAR2(1);
109007
109008 --
109009 BEGIN
109010 --
109011 IF g_log_enabled THEN
109012 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_229';
109013 END IF;
109014 --
109015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109016
109017 trace
109018 (p_msg => 'BEGIN of AcctLineType_229'
109019 ,p_level => C_LEVEL_PROCEDURE
109020 ,p_module => l_log_module);
109021
109022 END IF;
109023 --
109024 l_component_type := 'AMB_JLT';
109025 l_component_code := 'PPV';
109026 l_component_type_code := 'S';
109027 l_component_appl_id := 555;
109028 l_amb_context_code := 'DEFAULT';
109029 l_entity_code := 'PURCHASING';
109030 l_event_class_code := 'DELIVER';
109031 l_event_type_code := 'XFER_TO_CONSIGNED';
109032 l_line_definition_owner_code := 'S';
109033 l_line_definition_code := 'XFER_TO_CONSIGN';
109034 --
109035 l_balance_type_code := 'A';
109036 l_segment := NULL;
109037 l_ccid := NULL;
109038 l_adr_transaction_coa_id := NULL;
109039 l_adr_accounting_coa_id := NULL;
109040 l_adr_flexfield_segment_code := NULL;
109041 l_adr_flex_value_set_id := NULL;
109042 l_adr_value_type_code := NULL;
109043 l_adr_value_combination_id := NULL;
109044 l_adr_value_segment_code := NULL;
109045
109046 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
109047 l_bflow_class_code := ''; -- 4219869 Business Flow
109048 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
109049 l_budgetary_control_flag := 'N';
109050
109051 l_bflow_applied_to_amt_idx := NULL; -- 5132302
109052 l_bflow_applied_to_amt := NULL; -- 5132302
109053 l_entered_amt_idx := NULL; -- 4262811
109054 l_accted_amt_idx := NULL; -- 4262811
109055 l_acc_rev_flag := NULL; -- 4262811
109056 l_accrual_line_num := NULL; -- 4262811
109057 l_tmp_amt := NULL; -- 4262811
109058 --
109059
109060 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
109061 l_balance_type_code <> 'B' THEN
109062 IF NVL(p_source_2,'
109063 ') = 'PPV'
109064 THEN
109065
109066 --
109067 XLA_AE_LINES_PKG.SetNewLine;
109068
109069 p_balance_type_code := l_balance_type_code;
109070 -- set the flag so later we will know whether the gain loss line needs to be created
109071
109072 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
109073 p_actual_flag :='A';
109074 END IF;
109075
109076 --
109077 -- bulk performance
109078 --
109079 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
109080 p_header_num => 0); -- 4262811
109081 --
109082 -- set accounting line options
109083 --
109084 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
109085 p_natural_side_code => 'D'
109086 , p_gain_or_loss_flag => 'N'
109087 , p_gl_transfer_mode_code => 'D'
109088 , p_acct_entry_type_code => 'A'
109089 , p_switch_side_flag => 'Y'
109090 , p_merge_duplicate_code => 'W'
109091 );
109092 --
109093 l_acc_rev_natural_side_code := 'C'; -- 4262811
109094 --
109095 --
109096 -- set accounting line type info
109097 --
109098 xla_ae_lines_pkg.SetAcctLineType
109099 (p_component_type => l_component_type
109100 ,p_event_type_code => l_event_type_code
109101 ,p_line_definition_owner_code => l_line_definition_owner_code
109102 ,p_line_definition_code => l_line_definition_code
109103 ,p_accounting_line_code => l_component_code
109104 ,p_accounting_line_type_code => l_component_type_code
109105 ,p_accounting_line_appl_id => l_component_appl_id
109106 ,p_amb_context_code => l_amb_context_code
109107 ,p_entity_code => l_entity_code
109108 ,p_event_class_code => l_event_class_code);
109109 --
109110 -- set accounting class
109111 --
109112 xla_ae_lines_pkg.SetAcctClass(
109113 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
109114 , p_ae_header_id => l_ae_header_id
109115 );
109116
109117 --
109118 -- set rounding class
109119 --
109120 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109121 'PURCHASE_PRICE_VARIANCE';
109122
109123 --
109124 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109125 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109126 --
109127 -- bulk performance
109128 --
109129 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109130
109131 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109135 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109132 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109133
109134 -- 4955764
109136 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109137
109138 -- 4458381 Public Sector Enh
109139
109140 --
109141 -- set accounting attributes for the line type
109142 --
109143 l_entered_amt_idx := 3;
109144 l_accted_amt_idx := 8;
109145 l_bflow_applied_to_amt_idx := NULL; -- 5132302
109146 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109147 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
109148 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109149 l_rec_acct_attrs.array_char_value(2) := p_source_6;
109150 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109151 l_rec_acct_attrs.array_num_value(3) := p_source_3;
109152 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109153 l_rec_acct_attrs.array_char_value(4) := p_source_7;
109154 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109155 l_rec_acct_attrs.array_date_value(5) := p_source_8;
109156 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109157 l_rec_acct_attrs.array_num_value(6) := p_source_9;
109158 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109159 l_rec_acct_attrs.array_char_value(7) := p_source_10;
109160 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109161 l_rec_acct_attrs.array_num_value(8) := p_source_11;
109162
109163 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109164 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109165
109166 ---------------------------------------------------------------------------------------------------------------
109167 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109168 ---------------------------------------------------------------------------------------------------------------
109169 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109170
109171 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109172 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109173
109174 IF xla_accounting_cache_pkg.GetValueChar
109175 (p_source_code => 'LEDGER_CATEGORY_CODE'
109176 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109177 AND l_bflow_method_code = 'PRIOR_ENTRY'
109178 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109179 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109180 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109181 )
109182 THEN
109183 xla_ae_lines_pkg.BflowUpgEntry
109184 (p_business_method_code => l_bflow_method_code
109185 ,p_business_class_code => l_bflow_class_code
109186 ,p_balance_type => l_balance_type_code);
109187 ELSE
109188 NULL;
109189 -- No business flow processing for business flow method of NONE.
109190 END IF;
109191
109192 --
109193 -- call analytical criteria
109194 --
109195
109196 --
109197 -- call description
109198 --
109199 -- No description or it is inherited.
109200 --
109201 -- call ADRs
109202 -- Bug 4922099
109203 --
109204 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109205 (NVL(l_actual_upg_option, 'N') = 'O') OR
109206 (NVL(l_enc_upg_option, 'N') = 'O')
109207 )
109208 THEN
109209 NULL;
109210 --
109211 --
109212
109213 l_ccid := AcctDerRule_31(
109214 p_application_id => p_application_id
109215 , p_ae_header_id => l_ae_header_id
109216 , p_source_1 => p_source_1
109217 , p_source_2 => p_source_2
109218 , x_transaction_coa_id => l_adr_transaction_coa_id
109219 , x_accounting_coa_id => l_adr_accounting_coa_id
109220 , x_value_type_code => l_adr_value_type_code
109221 , p_side => 'NA'
109222 );
109223
109224 xla_ae_lines_pkg.set_ccid(
109225 p_code_combination_id => l_ccid
109226 , p_value_type_code => l_adr_value_type_code
109227 , p_transaction_coa_id => l_adr_transaction_coa_id
109228 , p_accounting_coa_id => l_adr_accounting_coa_id
109229 , p_adr_code => 'PPV'
109230 , p_adr_type_code => 'S'
109231 , p_component_type => l_component_type
109232 , p_component_code => l_component_code
109233 , p_component_type_code => l_component_type_code
109234 , p_component_appl_id => l_component_appl_id
109235 , p_amb_context_code => l_amb_context_code
109236 , p_side => 'NA'
109237 );
109238
109239
109240 --
109241 --
109242 END IF;
109243 --
109244 -- Bug 4922099
109245 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109246 (NVL(l_enc_upg_option, 'N') = 'O')
109247 ) AND
109248 (l_bflow_method_code = 'PRIOR_ENTRY')
109249 )
109250 THEN
109251 IF
109252 --
109253 1 = 2
109254 --
109255 THEN
109259 ,p_token_1 => 'LINE_NUMBER'
109256 xla_accounting_err_pkg.build_message
109257 (p_appli_s_name => 'XLA'
109258 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109260 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
109261 ,p_token_2 => 'LINE_TYPE_NAME'
109262 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
109263 l_component_type
109264 ,l_component_code
109265 ,l_component_type_code
109266 ,l_component_appl_id
109267 ,l_amb_context_code
109268 ,l_entity_code
109269 ,l_event_class_code
109270 )
109271 ,p_token_3 => 'OWNER'
109272 ,p_value_3 => xla_lookups_pkg.get_meaning(
109273 p_lookup_type => 'XLA_OWNER_TYPE'
109274 ,p_lookup_code => l_component_type_code
109275 )
109276 ,p_token_4 => 'PRODUCT_NAME'
109277 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109278 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109279 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109280 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109281 ,p_ae_header_id => NULL
109282 );
109283
109284 IF (C_LEVEL_ERROR>= g_log_level) THEN
109285 trace
109286 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109287 ,p_level => C_LEVEL_ERROR
109288 ,p_module => l_log_module);
109289 END IF;
109290 END IF;
109291 END IF;
109292 --
109293 --
109294 ------------------------------------------------------------------------------------------------
109295 -- 4219869 Business Flow
109296 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109297 -- Prior Entry. Currently, the following code is always generated.
109298 ------------------------------------------------------------------------------------------------
109299 XLA_AE_LINES_PKG.ValidateCurrentLine;
109300
109301 ------------------------------------------------------------------------------------
109302 -- 4219869 Business Flow
109303 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109304 ------------------------------------------------------------------------------------
109305 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109306
109307 ----------------------------------------------------------------------------------
109308 -- 4219869 Business Flow
109309 -- Update journal entry status -- Need to generate this within IF <condition>
109310 ----------------------------------------------------------------------------------
109311 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109312 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109313 ,p_balance_type_code => l_balance_type_code
109314 );
109315
109316 -------------------------------------------------------------------------------------------
109317 -- 4262811 - Generate the Accrual Reversal lines
109318 -------------------------------------------------------------------------------------------
109319 BEGIN
109320 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109321 (g_array_event(p_event_id).array_value_num('header_index'));
109322 IF l_acc_rev_flag IS NULL THEN
109323 l_acc_rev_flag := 'N';
109324 END IF;
109325 EXCEPTION
109326 WHEN OTHERS THEN
109327 l_acc_rev_flag := 'N';
109328 END;
109329 --
109330 IF (l_acc_rev_flag = 'Y') THEN
109331
109332 -- 4645092 ------------------------------------------------------------------------------
109333 -- To allow MPA report to determine if it should generate report process
109334 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109335 ------------------------------------------------------------------------------------------
109336
109337 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109338 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109339 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
109340 -- call ADRs
109341 -- Bug 4922099
109342 --
109343 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109344 (NVL(l_actual_upg_option, 'N') = 'O') OR
109348 NULL;
109345 (NVL(l_enc_upg_option, 'N') = 'O')
109346 )
109347 THEN
109349 --
109350 --
109351
109352 l_ccid := AcctDerRule_31(
109353 p_application_id => p_application_id
109354 , p_ae_header_id => l_ae_header_id
109355 , p_source_1 => p_source_1
109356 , p_source_2 => p_source_2
109357 , x_transaction_coa_id => l_adr_transaction_coa_id
109358 , x_accounting_coa_id => l_adr_accounting_coa_id
109359 , x_value_type_code => l_adr_value_type_code
109360 , p_side => 'NA'
109361 );
109362
109363 xla_ae_lines_pkg.set_ccid(
109364 p_code_combination_id => l_ccid
109365 , p_value_type_code => l_adr_value_type_code
109366 , p_transaction_coa_id => l_adr_transaction_coa_id
109367 , p_accounting_coa_id => l_adr_accounting_coa_id
109368 , p_adr_code => 'PPV'
109369 , p_adr_type_code => 'S'
109370 , p_component_type => l_component_type
109371 , p_component_code => l_component_code
109372 , p_component_type_code => l_component_type_code
109373 , p_component_appl_id => l_component_appl_id
109374 , p_amb_context_code => l_amb_context_code
109375 , p_side => 'NA'
109376 );
109377
109378
109379 --
109380 --
109381 END IF;
109382
109383 --
109384 -- Update the line information that should be overwritten
109385 --
109386 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109387 p_header_num => 1);
109388 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
109389
109390 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109391
109392 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
109393 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109394 END IF;
109395
109396 --
109397 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109398 --
109399 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109400 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
109401 ELSE
109402 ---------------------------------------------------------------------------------------------------
109403 -- 4262811a Switch Sign
109404 ---------------------------------------------------------------------------------------------------
109405 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
109406 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109407 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109408 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109409 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109410 -- 5132302
109411 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109412 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109413
109414 END IF;
109415
109416 -- 4955764
109417 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109418 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109419
109420
109421 XLA_AE_LINES_PKG.ValidateCurrentLine;
109422 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109423
109424 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109425 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109426 ,p_balance_type_code => l_balance_type_code);
109427
109428 END IF;
109429
109430 -----------------------------------------------------------------------------------------
109431 -- 4262811 Multiperiod Accounting
109432 -----------------------------------------------------------------------------------------
109433 -- No MPA option is assigned.
109434
109435
109436 END IF;
109437 END IF;
109438 --
109439
109440 --
109441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109442 trace
109443 (p_msg => 'END of AcctLineType_229'
109444 ,p_level => C_LEVEL_PROCEDURE
109445 ,p_module => l_log_module);
109446 END IF;
109447 --
109448 EXCEPTION
109449 WHEN xla_exceptions_pkg.application_exception THEN
109450 RAISE;
109451 WHEN OTHERS THEN
109452 xla_exceptions_pkg.raise_message
109453 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_229');
109454 END AcctLineType_229;
109455 --
109456
109457 ---------------------------------------
109458 --
109459 -- PRIVATE FUNCTION
109460 -- AcctLineType_230
109461 --
109462 ---------------------------------------
109463 PROCEDURE AcctLineType_230 (
109464 p_application_id IN NUMBER
109465 ,p_event_id IN NUMBER
109466 ,p_calculate_acctd_flag IN VARCHAR2
109467 ,p_calculate_g_l_flag IN VARCHAR2
109468 ,p_actual_flag IN OUT VARCHAR2
109472 --Transaction Account
109469 ,p_balance_type_code OUT VARCHAR2
109470 ,p_gain_or_loss_ref OUT VARCHAR2
109471
109473 , p_source_1 IN NUMBER
109474 --Journal Line Type
109475 , p_source_2 IN VARCHAR2
109476 --Entered Amount
109477 , p_source_3 IN NUMBER
109478 --First Distribution Identifier
109479 , p_source_5 IN NUMBER
109480 --Distribution Type
109481 , p_source_6 IN VARCHAR2
109482 --Currency Code
109483 , p_source_7 IN VARCHAR2
109484 --Currency Conversion Date
109485 , p_source_8 IN DATE
109486 --Currency Conversion Rate
109487 , p_source_9 IN NUMBER
109488 --Currency Conversion Type
109489 , p_source_10 IN VARCHAR2
109490 --Accounted Amount
109491 , p_source_11 IN NUMBER
109492 )
109493 IS
109494
109495 l_component_type VARCHAR2(80);
109496 l_component_code VARCHAR2(30);
109497 l_component_type_code VARCHAR2(1);
109498 l_component_appl_id INTEGER;
109499 l_amb_context_code VARCHAR2(30);
109500 l_entity_code VARCHAR2(30);
109501 l_event_class_code VARCHAR2(30);
109502 l_ae_header_id NUMBER;
109503 l_event_type_code VARCHAR2(30);
109504 l_line_definition_code VARCHAR2(30);
109505 l_line_definition_owner_code VARCHAR2(1);
109506 --
109507 -- adr variables
109508 l_segment VARCHAR2(30);
109509 l_ccid NUMBER;
109510 l_adr_transaction_coa_id NUMBER;
109511 l_adr_accounting_coa_id NUMBER;
109512 l_adr_flexfield_segment_code VARCHAR2(30);
109513 l_adr_flex_value_set_id NUMBER;
109514 l_adr_value_type_code VARCHAR2(30);
109515 l_adr_value_combination_id NUMBER;
109516 l_adr_value_segment_code VARCHAR2(30);
109517
109518 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
109519 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
109520 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
109521 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
109522
109523 -- 4262811 Variables ------------------------------------------------------------------------------------------
109524 l_entered_amt_idx NUMBER;
109525 l_accted_amt_idx NUMBER;
109526 l_acc_rev_flag VARCHAR2(1);
109527 l_accrual_line_num NUMBER;
109528 l_tmp_amt NUMBER;
109529 l_acc_rev_natural_side_code VARCHAR2(1);
109530
109531 l_num_entries NUMBER;
109532 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
109533 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
109534 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
109535 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
109536 l_recog_line_1 NUMBER;
109537 l_recog_line_2 NUMBER;
109538
109539 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
109540 l_bflow_applied_to_amt NUMBER; -- 5132302
109541 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
109542
109543 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
109544
109545 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
109546 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
109547
109548 ---------------------------------------------------------------------------------------------------------------
109549
109550
109551 --
109552 -- bulk performance
109553 --
109554 l_balance_type_code VARCHAR2(1);
109555 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
109556 l_log_module VARCHAR2(240);
109557
109558 --
109559 -- Upgrade strategy
109560 --
109561 l_actual_upg_option VARCHAR2(1);
109562 l_enc_upg_option VARCHAR2(1);
109563
109564 --
109565 BEGIN
109566 --
109567 IF g_log_enabled THEN
109568 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_230';
109569 END IF;
109570 --
109571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109572
109573 trace
109574 (p_msg => 'BEGIN of AcctLineType_230'
109575 ,p_level => C_LEVEL_PROCEDURE
109576 ,p_module => l_log_module);
109577
109578 END IF;
109579 --
109580 l_component_type := 'AMB_JLT';
109581 l_component_code := 'RCA';
109582 l_component_type_code := 'S';
109583 l_component_appl_id := 555;
109584 l_amb_context_code := 'DEFAULT';
109585 l_entity_code := 'PRODUCTION';
109586 l_event_class_code := 'BATCH_MATERIAL';
109587 l_event_type_code := 'CERT';
109588 l_line_definition_owner_code := 'S';
109589 l_line_definition_code := 'BATCH_COMPLETION';
109590 --
109591 l_balance_type_code := 'A';
109592 l_segment := NULL;
109593 l_ccid := NULL;
109594 l_adr_transaction_coa_id := NULL;
109595 l_adr_accounting_coa_id := NULL;
109596 l_adr_flexfield_segment_code := NULL;
109597 l_adr_flex_value_set_id := NULL;
109598 l_adr_value_type_code := NULL;
109599 l_adr_value_combination_id := NULL;
109600 l_adr_value_segment_code := NULL;
109601
109605 l_budgetary_control_flag := 'N';
109602 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
109603 l_bflow_class_code := ''; -- 4219869 Business Flow
109604 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
109606
109607 l_bflow_applied_to_amt_idx := NULL; -- 5132302
109608 l_bflow_applied_to_amt := NULL; -- 5132302
109609 l_entered_amt_idx := NULL; -- 4262811
109610 l_accted_amt_idx := NULL; -- 4262811
109611 l_acc_rev_flag := NULL; -- 4262811
109612 l_accrual_line_num := NULL; -- 4262811
109613 l_tmp_amt := NULL; -- 4262811
109614 --
109615
109616 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
109617 l_balance_type_code <> 'B' THEN
109618 IF NVL(p_source_2,'
109619 ') = 'RCA'
109620 THEN
109621
109622 --
109623 XLA_AE_LINES_PKG.SetNewLine;
109624
109625 p_balance_type_code := l_balance_type_code;
109626 -- set the flag so later we will know whether the gain loss line needs to be created
109627
109628 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
109629 p_actual_flag :='A';
109630 END IF;
109631
109632 --
109633 -- bulk performance
109634 --
109635 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
109636 p_header_num => 0); -- 4262811
109637 --
109638 -- set accounting line options
109639 --
109640 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
109641 p_natural_side_code => 'D'
109642 , p_gain_or_loss_flag => 'N'
109643 , p_gl_transfer_mode_code => 'D'
109644 , p_acct_entry_type_code => 'A'
109645 , p_switch_side_flag => 'Y'
109646 , p_merge_duplicate_code => 'W'
109647 );
109648 --
109649 l_acc_rev_natural_side_code := 'C'; -- 4262811
109650 --
109651 --
109652 -- set accounting line type info
109653 --
109654 xla_ae_lines_pkg.SetAcctLineType
109655 (p_component_type => l_component_type
109656 ,p_event_type_code => l_event_type_code
109657 ,p_line_definition_owner_code => l_line_definition_owner_code
109658 ,p_line_definition_code => l_line_definition_code
109659 ,p_accounting_line_code => l_component_code
109660 ,p_accounting_line_type_code => l_component_type_code
109661 ,p_accounting_line_appl_id => l_component_appl_id
109662 ,p_amb_context_code => l_amb_context_code
109663 ,p_entity_code => l_entity_code
109664 ,p_event_class_code => l_event_class_code);
109665 --
109666 -- set accounting class
109667 --
109668 xla_ae_lines_pkg.SetAcctClass(
109669 p_accounting_class_code => 'RCA'
109670 , p_ae_header_id => l_ae_header_id
109671 );
109672
109673 --
109674 -- set rounding class
109675 --
109676 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
109677 'RCA';
109678
109679 --
109680 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
109681 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
109682 --
109683 -- bulk performance
109684 --
109685 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
109686
109687 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
109688 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
109689
109690 -- 4955764
109691 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109692 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
109693
109694 -- 4458381 Public Sector Enh
109695
109696 --
109697 -- set accounting attributes for the line type
109698 --
109699 l_entered_amt_idx := 3;
109700 l_accted_amt_idx := 8;
109701 l_bflow_applied_to_amt_idx := NULL; -- 5132302
109702 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
109703 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
109704 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
109705 l_rec_acct_attrs.array_char_value(2) := p_source_6;
109706 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
109707 l_rec_acct_attrs.array_num_value(3) := p_source_3;
109708 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
109709 l_rec_acct_attrs.array_char_value(4) := p_source_7;
109710 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
109711 l_rec_acct_attrs.array_date_value(5) := p_source_8;
109712 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
109713 l_rec_acct_attrs.array_num_value(6) := p_source_9;
109714 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
109715 l_rec_acct_attrs.array_char_value(7) := p_source_10;
109716 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
109717 l_rec_acct_attrs.array_num_value(8) := p_source_11;
109718
109719 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
109723 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
109720 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
109721
109722 ---------------------------------------------------------------------------------------------------------------
109724 ---------------------------------------------------------------------------------------------------------------
109725 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
109726
109727 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109728 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
109729
109730 IF xla_accounting_cache_pkg.GetValueChar
109731 (p_source_code => 'LEDGER_CATEGORY_CODE'
109732 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
109733 AND l_bflow_method_code = 'PRIOR_ENTRY'
109734 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
109735 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
109736 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
109737 )
109738 THEN
109739 xla_ae_lines_pkg.BflowUpgEntry
109740 (p_business_method_code => l_bflow_method_code
109741 ,p_business_class_code => l_bflow_class_code
109742 ,p_balance_type => l_balance_type_code);
109743 ELSE
109744 NULL;
109745 -- No business flow processing for business flow method of NONE.
109746 END IF;
109747
109748 --
109749 -- call analytical criteria
109750 --
109751
109752 --
109753 -- call description
109754 --
109755 -- No description or it is inherited.
109756 --
109757 -- call ADRs
109758 -- Bug 4922099
109759 --
109760 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109761 (NVL(l_actual_upg_option, 'N') = 'O') OR
109762 (NVL(l_enc_upg_option, 'N') = 'O')
109763 )
109764 THEN
109765 NULL;
109766 --
109767 --
109768
109769 l_ccid := AcctDerRule_32(
109770 p_application_id => p_application_id
109771 , p_ae_header_id => l_ae_header_id
109772 , p_source_1 => p_source_1
109773 , p_source_2 => p_source_2
109774 , x_transaction_coa_id => l_adr_transaction_coa_id
109775 , x_accounting_coa_id => l_adr_accounting_coa_id
109776 , x_value_type_code => l_adr_value_type_code
109777 , p_side => 'NA'
109778 );
109779
109780 xla_ae_lines_pkg.set_ccid(
109781 p_code_combination_id => l_ccid
109782 , p_value_type_code => l_adr_value_type_code
109783 , p_transaction_coa_id => l_adr_transaction_coa_id
109784 , p_accounting_coa_id => l_adr_accounting_coa_id
109785 , p_adr_code => 'RCA'
109786 , p_adr_type_code => 'S'
109787 , p_component_type => l_component_type
109788 , p_component_code => l_component_code
109789 , p_component_type_code => l_component_type_code
109790 , p_component_appl_id => l_component_appl_id
109791 , p_amb_context_code => l_amb_context_code
109792 , p_side => 'NA'
109793 );
109794
109795
109796 --
109797 --
109798 END IF;
109799 --
109800 -- Bug 4922099
109801 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
109802 (NVL(l_enc_upg_option, 'N') = 'O')
109803 ) AND
109804 (l_bflow_method_code = 'PRIOR_ENTRY')
109805 )
109806 THEN
109807 IF
109808 --
109809 1 = 2
109810 --
109811 THEN
109812 xla_accounting_err_pkg.build_message
109813 (p_appli_s_name => 'XLA'
109814 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109815 ,p_token_1 => 'LINE_NUMBER'
109816 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
109817 ,p_token_2 => 'LINE_TYPE_NAME'
109818 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
109819 l_component_type
109820 ,l_component_code
109821 ,l_component_type_code
109822 ,l_component_appl_id
109823 ,l_amb_context_code
109824 ,l_entity_code
109825 ,l_event_class_code
109826 )
109827 ,p_token_3 => 'OWNER'
109828 ,p_value_3 => xla_lookups_pkg.get_meaning(
109829 p_lookup_type => 'XLA_OWNER_TYPE'
109830 ,p_lookup_code => l_component_type_code
109834 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
109831 )
109832 ,p_token_4 => 'PRODUCT_NAME'
109833 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
109835 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
109836 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
109837 ,p_ae_header_id => NULL
109838 );
109839
109840 IF (C_LEVEL_ERROR>= g_log_level) THEN
109841 trace
109842 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
109843 ,p_level => C_LEVEL_ERROR
109844 ,p_module => l_log_module);
109845 END IF;
109846 END IF;
109847 END IF;
109848 --
109849 --
109850 ------------------------------------------------------------------------------------------------
109851 -- 4219869 Business Flow
109852 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
109853 -- Prior Entry. Currently, the following code is always generated.
109854 ------------------------------------------------------------------------------------------------
109855 XLA_AE_LINES_PKG.ValidateCurrentLine;
109856
109857 ------------------------------------------------------------------------------------
109858 -- 4219869 Business Flow
109859 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
109860 ------------------------------------------------------------------------------------
109861 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109862
109863 ----------------------------------------------------------------------------------
109864 -- 4219869 Business Flow
109865 -- Update journal entry status -- Need to generate this within IF <condition>
109866 ----------------------------------------------------------------------------------
109867 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109868 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
109869 ,p_balance_type_code => l_balance_type_code
109870 );
109871
109872 -------------------------------------------------------------------------------------------
109873 -- 4262811 - Generate the Accrual Reversal lines
109874 -------------------------------------------------------------------------------------------
109875 BEGIN
109876 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
109877 (g_array_event(p_event_id).array_value_num('header_index'));
109878 IF l_acc_rev_flag IS NULL THEN
109879 l_acc_rev_flag := 'N';
109880 END IF;
109881 EXCEPTION
109882 WHEN OTHERS THEN
109883 l_acc_rev_flag := 'N';
109884 END;
109885 --
109886 IF (l_acc_rev_flag = 'Y') THEN
109887
109888 -- 4645092 ------------------------------------------------------------------------------
109889 -- To allow MPA report to determine if it should generate report process
109890 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
109891 ------------------------------------------------------------------------------------------
109892
109893 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
109894 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
109895 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
109896 -- call ADRs
109897 -- Bug 4922099
109898 --
109899 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
109900 (NVL(l_actual_upg_option, 'N') = 'O') OR
109901 (NVL(l_enc_upg_option, 'N') = 'O')
109902 )
109903 THEN
109904 NULL;
109905 --
109906 --
109907
109908 l_ccid := AcctDerRule_32(
109909 p_application_id => p_application_id
109910 , p_ae_header_id => l_ae_header_id
109911 , p_source_1 => p_source_1
109912 , p_source_2 => p_source_2
109913 , x_transaction_coa_id => l_adr_transaction_coa_id
109914 , x_accounting_coa_id => l_adr_accounting_coa_id
109915 , x_value_type_code => l_adr_value_type_code
109916 , p_side => 'NA'
109917 );
109918
109919 xla_ae_lines_pkg.set_ccid(
109920 p_code_combination_id => l_ccid
109921 , p_value_type_code => l_adr_value_type_code
109922 , p_transaction_coa_id => l_adr_transaction_coa_id
109923 , p_accounting_coa_id => l_adr_accounting_coa_id
109924 , p_adr_code => 'RCA'
109925 , p_adr_type_code => 'S'
109926 , p_component_type => l_component_type
109927 , p_component_code => l_component_code
109928 , p_component_type_code => l_component_type_code
109929 , p_component_appl_id => l_component_appl_id
109930 , p_amb_context_code => l_amb_context_code
109931 , p_side => 'NA'
109932 );
109933
109934
109935 --
109936 --
109937 END IF;
109938
109939 --
109940 -- Update the line information that should be overwritten
109941 --
109942 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
109946 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
109943 p_header_num => 1);
109944 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
109945
109947
109948 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
109949 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
109950 END IF;
109951
109952 --
109953 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
109954 --
109955 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
109956 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
109957 ELSE
109958 ---------------------------------------------------------------------------------------------------
109959 -- 4262811a Switch Sign
109960 ---------------------------------------------------------------------------------------------------
109961 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
109962 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109963 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109964 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
109965 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109966 -- 5132302
109967 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
109968 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
109969
109970 END IF;
109971
109972 -- 4955764
109973 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
109974 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
109975
109976
109977 XLA_AE_LINES_PKG.ValidateCurrentLine;
109978 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
109979
109980 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
109981 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
109982 ,p_balance_type_code => l_balance_type_code);
109983
109984 END IF;
109985
109986 -----------------------------------------------------------------------------------------
109987 -- 4262811 Multiperiod Accounting
109988 -----------------------------------------------------------------------------------------
109989 -- No MPA option is assigned.
109990
109991
109992 END IF;
109993 END IF;
109994 --
109995
109996 --
109997 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
109998 trace
109999 (p_msg => 'END of AcctLineType_230'
110000 ,p_level => C_LEVEL_PROCEDURE
110001 ,p_module => l_log_module);
110002 END IF;
110003 --
110004 EXCEPTION
110005 WHEN xla_exceptions_pkg.application_exception THEN
110006 RAISE;
110007 WHEN OTHERS THEN
110008 xla_exceptions_pkg.raise_message
110009 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_230');
110010 END AcctLineType_230;
110011 --
110012
110013 ---------------------------------------
110014 --
110015 -- PRIVATE FUNCTION
110016 -- AcctLineType_231
110017 --
110018 ---------------------------------------
110019 PROCEDURE AcctLineType_231 (
110020 p_application_id IN NUMBER
110021 ,p_event_id IN NUMBER
110022 ,p_calculate_acctd_flag IN VARCHAR2
110023 ,p_calculate_g_l_flag IN VARCHAR2
110024 ,p_actual_flag IN OUT VARCHAR2
110025 ,p_balance_type_code OUT VARCHAR2
110026 ,p_gain_or_loss_ref OUT VARCHAR2
110027
110028 --Transaction Account
110029 , p_source_1 IN NUMBER
110030 --Journal Line Type
110031 , p_source_2 IN VARCHAR2
110032 --Entered Amount
110033 , p_source_3 IN NUMBER
110034 --First Distribution Identifier
110035 , p_source_5 IN NUMBER
110036 --Distribution Type
110037 , p_source_6 IN VARCHAR2
110038 --Currency Code
110039 , p_source_7 IN VARCHAR2
110040 --Currency Conversion Date
110041 , p_source_8 IN DATE
110042 --Currency Conversion Rate
110043 , p_source_9 IN NUMBER
110044 --Currency Conversion Type
110045 , p_source_10 IN VARCHAR2
110046 --Accounted Amount
110047 , p_source_11 IN NUMBER
110048 )
110049 IS
110050
110051 l_component_type VARCHAR2(80);
110052 l_component_code VARCHAR2(30);
110053 l_component_type_code VARCHAR2(1);
110054 l_component_appl_id INTEGER;
110055 l_amb_context_code VARCHAR2(30);
110056 l_entity_code VARCHAR2(30);
110057 l_event_class_code VARCHAR2(30);
110058 l_ae_header_id NUMBER;
110059 l_event_type_code VARCHAR2(30);
110060 l_line_definition_code VARCHAR2(30);
110061 l_line_definition_owner_code VARCHAR2(1);
110062 --
110063 -- adr variables
110064 l_segment VARCHAR2(30);
110065 l_ccid NUMBER;
110066 l_adr_transaction_coa_id NUMBER;
110067 l_adr_accounting_coa_id NUMBER;
110071 l_adr_value_combination_id NUMBER;
110068 l_adr_flexfield_segment_code VARCHAR2(30);
110069 l_adr_flex_value_set_id NUMBER;
110070 l_adr_value_type_code VARCHAR2(30);
110072 l_adr_value_segment_code VARCHAR2(30);
110073
110074 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
110075 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
110076 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
110077 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
110078
110079 -- 4262811 Variables ------------------------------------------------------------------------------------------
110080 l_entered_amt_idx NUMBER;
110081 l_accted_amt_idx NUMBER;
110082 l_acc_rev_flag VARCHAR2(1);
110083 l_accrual_line_num NUMBER;
110084 l_tmp_amt NUMBER;
110085 l_acc_rev_natural_side_code VARCHAR2(1);
110086
110087 l_num_entries NUMBER;
110088 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
110089 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
110090 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
110091 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
110092 l_recog_line_1 NUMBER;
110093 l_recog_line_2 NUMBER;
110094
110095 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
110096 l_bflow_applied_to_amt NUMBER; -- 5132302
110097 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
110098
110099 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
110100
110101 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
110102 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
110103
110104 ---------------------------------------------------------------------------------------------------------------
110105
110106
110107 --
110108 -- bulk performance
110109 --
110110 l_balance_type_code VARCHAR2(1);
110111 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
110112 l_log_module VARCHAR2(240);
110113
110114 --
110115 -- Upgrade strategy
110116 --
110117 l_actual_upg_option VARCHAR2(1);
110118 l_enc_upg_option VARCHAR2(1);
110119
110120 --
110121 BEGIN
110122 --
110123 IF g_log_enabled THEN
110124 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_231';
110125 END IF;
110126 --
110127 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110128
110129 trace
110130 (p_msg => 'BEGIN of AcctLineType_231'
110131 ,p_level => C_LEVEL_PROCEDURE
110132 ,p_module => l_log_module);
110133
110134 END IF;
110135 --
110136 l_component_type := 'AMB_JLT';
110137 l_component_code := 'RCA';
110138 l_component_type_code := 'S';
110139 l_component_appl_id := 555;
110140 l_amb_context_code := 'DEFAULT';
110141 l_entity_code := 'PRODUCTION';
110142 l_event_class_code := 'BATCH_RESOURCE';
110143 l_event_type_code := 'STEP';
110144 l_line_definition_owner_code := 'S';
110145 l_line_definition_code := 'BATCH_STEP';
110146 --
110147 l_balance_type_code := 'A';
110148 l_segment := NULL;
110149 l_ccid := NULL;
110150 l_adr_transaction_coa_id := NULL;
110151 l_adr_accounting_coa_id := NULL;
110152 l_adr_flexfield_segment_code := NULL;
110153 l_adr_flex_value_set_id := NULL;
110154 l_adr_value_type_code := NULL;
110155 l_adr_value_combination_id := NULL;
110156 l_adr_value_segment_code := NULL;
110157
110158 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
110159 l_bflow_class_code := ''; -- 4219869 Business Flow
110160 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
110161 l_budgetary_control_flag := 'N';
110162
110163 l_bflow_applied_to_amt_idx := NULL; -- 5132302
110164 l_bflow_applied_to_amt := NULL; -- 5132302
110165 l_entered_amt_idx := NULL; -- 4262811
110166 l_accted_amt_idx := NULL; -- 4262811
110167 l_acc_rev_flag := NULL; -- 4262811
110168 l_accrual_line_num := NULL; -- 4262811
110169 l_tmp_amt := NULL; -- 4262811
110170 --
110171
110172 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110173 l_balance_type_code <> 'B' THEN
110174 IF NVL(p_source_2,'
110175 ') = 'RCA'
110176 THEN
110177
110178 --
110179 XLA_AE_LINES_PKG.SetNewLine;
110180
110181 p_balance_type_code := l_balance_type_code;
110182 -- set the flag so later we will know whether the gain loss line needs to be created
110183
110184 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110185 p_actual_flag :='A';
110186 END IF;
110187
110188 --
110189 -- bulk performance
110190 --
110191 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110192 p_header_num => 0); -- 4262811
110193 --
110194 -- set accounting line options
110195 --
110196 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110200 , p_acct_entry_type_code => 'A'
110197 p_natural_side_code => 'D'
110198 , p_gain_or_loss_flag => 'N'
110199 , p_gl_transfer_mode_code => 'D'
110201 , p_switch_side_flag => 'Y'
110202 , p_merge_duplicate_code => 'W'
110203 );
110204 --
110205 l_acc_rev_natural_side_code := 'C'; -- 4262811
110206 --
110207 --
110208 -- set accounting line type info
110209 --
110210 xla_ae_lines_pkg.SetAcctLineType
110211 (p_component_type => l_component_type
110212 ,p_event_type_code => l_event_type_code
110213 ,p_line_definition_owner_code => l_line_definition_owner_code
110214 ,p_line_definition_code => l_line_definition_code
110215 ,p_accounting_line_code => l_component_code
110216 ,p_accounting_line_type_code => l_component_type_code
110217 ,p_accounting_line_appl_id => l_component_appl_id
110218 ,p_amb_context_code => l_amb_context_code
110219 ,p_entity_code => l_entity_code
110220 ,p_event_class_code => l_event_class_code);
110221 --
110222 -- set accounting class
110223 --
110224 xla_ae_lines_pkg.SetAcctClass(
110225 p_accounting_class_code => 'RCA'
110226 , p_ae_header_id => l_ae_header_id
110227 );
110228
110229 --
110230 -- set rounding class
110231 --
110232 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110233 'RCA';
110234
110235 --
110236 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110237 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110238 --
110239 -- bulk performance
110240 --
110241 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110242
110243 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110244 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110245
110246 -- 4955764
110247 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110248 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110249
110250 -- 4458381 Public Sector Enh
110251
110252 --
110253 -- set accounting attributes for the line type
110254 --
110255 l_entered_amt_idx := 3;
110256 l_accted_amt_idx := 8;
110257 l_bflow_applied_to_amt_idx := NULL; -- 5132302
110258 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
110259 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
110260 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
110261 l_rec_acct_attrs.array_char_value(2) := p_source_6;
110262 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
110263 l_rec_acct_attrs.array_num_value(3) := p_source_3;
110264 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
110265 l_rec_acct_attrs.array_char_value(4) := p_source_7;
110266 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
110267 l_rec_acct_attrs.array_date_value(5) := p_source_8;
110268 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
110269 l_rec_acct_attrs.array_num_value(6) := p_source_9;
110270 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
110271 l_rec_acct_attrs.array_char_value(7) := p_source_10;
110272 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
110273 l_rec_acct_attrs.array_num_value(8) := p_source_11;
110274
110275 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110276 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110277
110278 ---------------------------------------------------------------------------------------------------------------
110279 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110280 ---------------------------------------------------------------------------------------------------------------
110281 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110282
110283 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110284 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110285
110286 IF xla_accounting_cache_pkg.GetValueChar
110287 (p_source_code => 'LEDGER_CATEGORY_CODE'
110288 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110289 AND l_bflow_method_code = 'PRIOR_ENTRY'
110290 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110291 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110292 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110293 )
110294 THEN
110295 xla_ae_lines_pkg.BflowUpgEntry
110296 (p_business_method_code => l_bflow_method_code
110297 ,p_business_class_code => l_bflow_class_code
110298 ,p_balance_type => l_balance_type_code);
110299 ELSE
110300 NULL;
110301 -- No business flow processing for business flow method of NONE.
110302 END IF;
110303
110304 --
110305 -- call analytical criteria
110306 --
110307
110308 --
110309 -- call description
110310 --
110314 -- Bug 4922099
110311 -- No description or it is inherited.
110312 --
110313 -- call ADRs
110315 --
110316 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110317 (NVL(l_actual_upg_option, 'N') = 'O') OR
110318 (NVL(l_enc_upg_option, 'N') = 'O')
110319 )
110320 THEN
110321 NULL;
110322 --
110323 --
110324
110325 l_ccid := AcctDerRule_32(
110326 p_application_id => p_application_id
110327 , p_ae_header_id => l_ae_header_id
110328 , p_source_1 => p_source_1
110329 , p_source_2 => p_source_2
110330 , x_transaction_coa_id => l_adr_transaction_coa_id
110331 , x_accounting_coa_id => l_adr_accounting_coa_id
110332 , x_value_type_code => l_adr_value_type_code
110333 , p_side => 'NA'
110334 );
110335
110336 xla_ae_lines_pkg.set_ccid(
110337 p_code_combination_id => l_ccid
110338 , p_value_type_code => l_adr_value_type_code
110339 , p_transaction_coa_id => l_adr_transaction_coa_id
110340 , p_accounting_coa_id => l_adr_accounting_coa_id
110341 , p_adr_code => 'RCA'
110342 , p_adr_type_code => 'S'
110343 , p_component_type => l_component_type
110344 , p_component_code => l_component_code
110345 , p_component_type_code => l_component_type_code
110346 , p_component_appl_id => l_component_appl_id
110347 , p_amb_context_code => l_amb_context_code
110348 , p_side => 'NA'
110349 );
110350
110351
110352 --
110353 --
110354 END IF;
110355 --
110356 -- Bug 4922099
110357 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110358 (NVL(l_enc_upg_option, 'N') = 'O')
110359 ) AND
110360 (l_bflow_method_code = 'PRIOR_ENTRY')
110361 )
110362 THEN
110363 IF
110364 --
110365 1 = 2
110366 --
110367 THEN
110368 xla_accounting_err_pkg.build_message
110369 (p_appli_s_name => 'XLA'
110370 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110371 ,p_token_1 => 'LINE_NUMBER'
110372 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
110373 ,p_token_2 => 'LINE_TYPE_NAME'
110374 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
110375 l_component_type
110376 ,l_component_code
110377 ,l_component_type_code
110378 ,l_component_appl_id
110379 ,l_amb_context_code
110380 ,l_entity_code
110381 ,l_event_class_code
110382 )
110383 ,p_token_3 => 'OWNER'
110384 ,p_value_3 => xla_lookups_pkg.get_meaning(
110385 p_lookup_type => 'XLA_OWNER_TYPE'
110386 ,p_lookup_code => l_component_type_code
110387 )
110388 ,p_token_4 => 'PRODUCT_NAME'
110389 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110390 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110391 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110392 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110393 ,p_ae_header_id => NULL
110394 );
110395
110396 IF (C_LEVEL_ERROR>= g_log_level) THEN
110397 trace
110398 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110399 ,p_level => C_LEVEL_ERROR
110400 ,p_module => l_log_module);
110401 END IF;
110402 END IF;
110403 END IF;
110404 --
110405 --
110406 ------------------------------------------------------------------------------------------------
110407 -- 4219869 Business Flow
110408 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110409 -- Prior Entry. Currently, the following code is always generated.
110410 ------------------------------------------------------------------------------------------------
110411 XLA_AE_LINES_PKG.ValidateCurrentLine;
110412
110413 ------------------------------------------------------------------------------------
110414 -- 4219869 Business Flow
110415 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110419 ----------------------------------------------------------------------------------
110416 ------------------------------------------------------------------------------------
110417 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110418
110420 -- 4219869 Business Flow
110421 -- Update journal entry status -- Need to generate this within IF <condition>
110422 ----------------------------------------------------------------------------------
110423 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110424 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110425 ,p_balance_type_code => l_balance_type_code
110426 );
110427
110428 -------------------------------------------------------------------------------------------
110429 -- 4262811 - Generate the Accrual Reversal lines
110430 -------------------------------------------------------------------------------------------
110431 BEGIN
110432 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110433 (g_array_event(p_event_id).array_value_num('header_index'));
110434 IF l_acc_rev_flag IS NULL THEN
110435 l_acc_rev_flag := 'N';
110436 END IF;
110437 EXCEPTION
110438 WHEN OTHERS THEN
110439 l_acc_rev_flag := 'N';
110440 END;
110441 --
110442 IF (l_acc_rev_flag = 'Y') THEN
110443
110444 -- 4645092 ------------------------------------------------------------------------------
110445 -- To allow MPA report to determine if it should generate report process
110446 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
110447 ------------------------------------------------------------------------------------------
110448
110449 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
110450 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
110451 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
110452 -- call ADRs
110453 -- Bug 4922099
110454 --
110455 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110456 (NVL(l_actual_upg_option, 'N') = 'O') OR
110457 (NVL(l_enc_upg_option, 'N') = 'O')
110458 )
110459 THEN
110460 NULL;
110461 --
110462 --
110463
110464 l_ccid := AcctDerRule_32(
110465 p_application_id => p_application_id
110466 , p_ae_header_id => l_ae_header_id
110467 , p_source_1 => p_source_1
110468 , p_source_2 => p_source_2
110469 , x_transaction_coa_id => l_adr_transaction_coa_id
110470 , x_accounting_coa_id => l_adr_accounting_coa_id
110471 , x_value_type_code => l_adr_value_type_code
110472 , p_side => 'NA'
110473 );
110474
110475 xla_ae_lines_pkg.set_ccid(
110476 p_code_combination_id => l_ccid
110477 , p_value_type_code => l_adr_value_type_code
110478 , p_transaction_coa_id => l_adr_transaction_coa_id
110479 , p_accounting_coa_id => l_adr_accounting_coa_id
110480 , p_adr_code => 'RCA'
110481 , p_adr_type_code => 'S'
110482 , p_component_type => l_component_type
110483 , p_component_code => l_component_code
110484 , p_component_type_code => l_component_type_code
110485 , p_component_appl_id => l_component_appl_id
110486 , p_amb_context_code => l_amb_context_code
110487 , p_side => 'NA'
110488 );
110489
110490
110491 --
110492 --
110493 END IF;
110494
110495 --
110496 -- Update the line information that should be overwritten
110497 --
110498 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
110499 p_header_num => 1);
110500 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
110501
110502 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
110503
110504 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
110505 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
110506 END IF;
110507
110508 --
110509 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
110510 --
110511 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
110512 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
110513 ELSE
110514 ---------------------------------------------------------------------------------------------------
110515 -- 4262811a Switch Sign
110516 ---------------------------------------------------------------------------------------------------
110517 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
110518 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110519 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110520 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
110521 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110522 -- 5132302
110523 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
110527
110524 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
110525
110526 END IF;
110528 -- 4955764
110529 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110530 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
110531
110532
110533 XLA_AE_LINES_PKG.ValidateCurrentLine;
110534 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110535
110536 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110537 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
110538 ,p_balance_type_code => l_balance_type_code);
110539
110540 END IF;
110541
110542 -----------------------------------------------------------------------------------------
110543 -- 4262811 Multiperiod Accounting
110544 -----------------------------------------------------------------------------------------
110545 -- No MPA option is assigned.
110546
110547
110548 END IF;
110549 END IF;
110550 --
110551
110552 --
110553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110554 trace
110555 (p_msg => 'END of AcctLineType_231'
110556 ,p_level => C_LEVEL_PROCEDURE
110557 ,p_module => l_log_module);
110558 END IF;
110559 --
110560 EXCEPTION
110561 WHEN xla_exceptions_pkg.application_exception THEN
110562 RAISE;
110563 WHEN OTHERS THEN
110564 xla_exceptions_pkg.raise_message
110565 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_231');
110566 END AcctLineType_231;
110567 --
110568
110569 ---------------------------------------
110570 --
110571 -- PRIVATE FUNCTION
110572 -- AcctLineType_232
110573 --
110574 ---------------------------------------
110575 PROCEDURE AcctLineType_232 (
110576 p_application_id IN NUMBER
110577 ,p_event_id IN NUMBER
110578 ,p_calculate_acctd_flag IN VARCHAR2
110579 ,p_calculate_g_l_flag IN VARCHAR2
110580 ,p_actual_flag IN OUT VARCHAR2
110581 ,p_balance_type_code OUT VARCHAR2
110582 ,p_gain_or_loss_ref OUT VARCHAR2
110583
110584 --Transaction Account
110585 , p_source_1 IN NUMBER
110586 --Journal Line Type
110587 , p_source_2 IN VARCHAR2
110588 --Entered Amount
110589 , p_source_3 IN NUMBER
110590 --First Distribution Identifier
110591 , p_source_5 IN NUMBER
110592 --Distribution Type
110593 , p_source_6 IN VARCHAR2
110594 --Currency Code
110595 , p_source_7 IN VARCHAR2
110596 --Currency Conversion Date
110597 , p_source_8 IN DATE
110598 --Currency Conversion Rate
110599 , p_source_9 IN NUMBER
110600 --Currency Conversion Type
110601 , p_source_10 IN VARCHAR2
110602 --Accounted Amount
110603 , p_source_11 IN NUMBER
110604 )
110605 IS
110606
110607 l_component_type VARCHAR2(80);
110608 l_component_code VARCHAR2(30);
110609 l_component_type_code VARCHAR2(1);
110610 l_component_appl_id INTEGER;
110611 l_amb_context_code VARCHAR2(30);
110612 l_entity_code VARCHAR2(30);
110613 l_event_class_code VARCHAR2(30);
110614 l_ae_header_id NUMBER;
110615 l_event_type_code VARCHAR2(30);
110616 l_line_definition_code VARCHAR2(30);
110617 l_line_definition_owner_code VARCHAR2(1);
110618 --
110619 -- adr variables
110620 l_segment VARCHAR2(30);
110621 l_ccid NUMBER;
110622 l_adr_transaction_coa_id NUMBER;
110623 l_adr_accounting_coa_id NUMBER;
110624 l_adr_flexfield_segment_code VARCHAR2(30);
110625 l_adr_flex_value_set_id NUMBER;
110626 l_adr_value_type_code VARCHAR2(30);
110627 l_adr_value_combination_id NUMBER;
110628 l_adr_value_segment_code VARCHAR2(30);
110629
110630 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
110631 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
110632 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
110633 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
110634
110635 -- 4262811 Variables ------------------------------------------------------------------------------------------
110636 l_entered_amt_idx NUMBER;
110637 l_accted_amt_idx NUMBER;
110638 l_acc_rev_flag VARCHAR2(1);
110639 l_accrual_line_num NUMBER;
110640 l_tmp_amt NUMBER;
110641 l_acc_rev_natural_side_code VARCHAR2(1);
110642
110643 l_num_entries NUMBER;
110644 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
110645 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
110646 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
110647 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
110648 l_recog_line_1 NUMBER;
110649 l_recog_line_2 NUMBER;
110650
110651 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
110652 l_bflow_applied_to_amt NUMBER; -- 5132302
110653 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
110654
110658 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
110655 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
110656
110657 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
110659
110660 ---------------------------------------------------------------------------------------------------------------
110661
110662
110663 --
110664 -- bulk performance
110665 --
110666 l_balance_type_code VARCHAR2(1);
110667 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
110668 l_log_module VARCHAR2(240);
110669
110670 --
110671 -- Upgrade strategy
110672 --
110673 l_actual_upg_option VARCHAR2(1);
110674 l_enc_upg_option VARCHAR2(1);
110675
110676 --
110677 BEGIN
110678 --
110679 IF g_log_enabled THEN
110680 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_232';
110681 END IF;
110682 --
110683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
110684
110685 trace
110686 (p_msg => 'BEGIN of AcctLineType_232'
110687 ,p_level => C_LEVEL_PROCEDURE
110688 ,p_module => l_log_module);
110689
110690 END IF;
110691 --
110692 l_component_type := 'AMB_JLT';
110693 l_component_code := 'RMV';
110694 l_component_type_code := 'S';
110695 l_component_appl_id := 555;
110696 l_amb_context_code := 'DEFAULT';
110697 l_entity_code := 'PRODUCTION';
110698 l_event_class_code := 'BATCH_CLOSE';
110699 l_event_type_code := 'CLOS';
110700 l_line_definition_owner_code := 'S';
110701 l_line_definition_code := 'BATCH_CLOSE';
110702 --
110703 l_balance_type_code := 'A';
110704 l_segment := NULL;
110705 l_ccid := NULL;
110706 l_adr_transaction_coa_id := NULL;
110707 l_adr_accounting_coa_id := NULL;
110708 l_adr_flexfield_segment_code := NULL;
110709 l_adr_flex_value_set_id := NULL;
110710 l_adr_value_type_code := NULL;
110711 l_adr_value_combination_id := NULL;
110712 l_adr_value_segment_code := NULL;
110713
110714 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
110715 l_bflow_class_code := ''; -- 4219869 Business Flow
110716 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
110717 l_budgetary_control_flag := 'N';
110718
110719 l_bflow_applied_to_amt_idx := NULL; -- 5132302
110720 l_bflow_applied_to_amt := NULL; -- 5132302
110721 l_entered_amt_idx := NULL; -- 4262811
110722 l_accted_amt_idx := NULL; -- 4262811
110723 l_acc_rev_flag := NULL; -- 4262811
110724 l_accrual_line_num := NULL; -- 4262811
110725 l_tmp_amt := NULL; -- 4262811
110726 --
110727
110728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
110729 l_balance_type_code <> 'B' THEN
110730 IF NVL(p_source_2,'
110731 ') = 'RMV'
110732 THEN
110733
110734 --
110735 XLA_AE_LINES_PKG.SetNewLine;
110736
110737 p_balance_type_code := l_balance_type_code;
110738 -- set the flag so later we will know whether the gain loss line needs to be created
110739
110740 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
110741 p_actual_flag :='A';
110742 END IF;
110743
110744 --
110745 -- bulk performance
110746 --
110747 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
110748 p_header_num => 0); -- 4262811
110749 --
110750 -- set accounting line options
110751 --
110752 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
110753 p_natural_side_code => 'D'
110754 , p_gain_or_loss_flag => 'N'
110755 , p_gl_transfer_mode_code => 'D'
110756 , p_acct_entry_type_code => 'A'
110757 , p_switch_side_flag => 'Y'
110758 , p_merge_duplicate_code => 'W'
110759 );
110760 --
110761 l_acc_rev_natural_side_code := 'C'; -- 4262811
110762 --
110763 --
110764 -- set accounting line type info
110765 --
110766 xla_ae_lines_pkg.SetAcctLineType
110767 (p_component_type => l_component_type
110768 ,p_event_type_code => l_event_type_code
110769 ,p_line_definition_owner_code => l_line_definition_owner_code
110770 ,p_line_definition_code => l_line_definition_code
110771 ,p_accounting_line_code => l_component_code
110772 ,p_accounting_line_type_code => l_component_type_code
110773 ,p_accounting_line_appl_id => l_component_appl_id
110774 ,p_amb_context_code => l_amb_context_code
110775 ,p_entity_code => l_entity_code
110776 ,p_event_class_code => l_event_class_code);
110777 --
110778 -- set accounting class
110779 --
110780 xla_ae_lines_pkg.SetAcctClass(
110781 p_accounting_class_code => 'RMV'
110782 , p_ae_header_id => l_ae_header_id
110783 );
110784
110785 --
110786 -- set rounding class
110787 --
110788 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
110789 'RMV';
110790
110791 --
110795 -- bulk performance
110792 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
110793 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
110794 --
110796 --
110797 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
110798
110799 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
110800 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
110801
110802 -- 4955764
110803 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
110804 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
110805
110806 -- 4458381 Public Sector Enh
110807
110808 --
110809 -- set accounting attributes for the line type
110810 --
110811 l_entered_amt_idx := 3;
110812 l_accted_amt_idx := 8;
110813 l_bflow_applied_to_amt_idx := NULL; -- 5132302
110814 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
110815 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
110816 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
110817 l_rec_acct_attrs.array_char_value(2) := p_source_6;
110818 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
110819 l_rec_acct_attrs.array_num_value(3) := p_source_3;
110820 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
110821 l_rec_acct_attrs.array_char_value(4) := p_source_7;
110822 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
110823 l_rec_acct_attrs.array_date_value(5) := p_source_8;
110824 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
110825 l_rec_acct_attrs.array_num_value(6) := p_source_9;
110826 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
110827 l_rec_acct_attrs.array_char_value(7) := p_source_10;
110828 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
110829 l_rec_acct_attrs.array_num_value(8) := p_source_11;
110830
110831 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
110832 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
110833
110834 ---------------------------------------------------------------------------------------------------------------
110835 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
110836 ---------------------------------------------------------------------------------------------------------------
110837 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
110838
110839 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110840 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
110841
110842 IF xla_accounting_cache_pkg.GetValueChar
110843 (p_source_code => 'LEDGER_CATEGORY_CODE'
110844 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
110845 AND l_bflow_method_code = 'PRIOR_ENTRY'
110846 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
110847 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
110848 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
110849 )
110850 THEN
110851 xla_ae_lines_pkg.BflowUpgEntry
110852 (p_business_method_code => l_bflow_method_code
110853 ,p_business_class_code => l_bflow_class_code
110854 ,p_balance_type => l_balance_type_code);
110855 ELSE
110856 NULL;
110857 -- No business flow processing for business flow method of NONE.
110858 END IF;
110859
110860 --
110861 -- call analytical criteria
110862 --
110863
110864 --
110865 -- call description
110866 --
110867 -- No description or it is inherited.
110868 --
110869 -- call ADRs
110870 -- Bug 4922099
110871 --
110872 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
110873 (NVL(l_actual_upg_option, 'N') = 'O') OR
110874 (NVL(l_enc_upg_option, 'N') = 'O')
110875 )
110876 THEN
110877 NULL;
110878 --
110879 --
110880
110881 l_ccid := AcctDerRule_33(
110882 p_application_id => p_application_id
110883 , p_ae_header_id => l_ae_header_id
110884 , p_source_1 => p_source_1
110885 , p_source_2 => p_source_2
110886 , x_transaction_coa_id => l_adr_transaction_coa_id
110887 , x_accounting_coa_id => l_adr_accounting_coa_id
110888 , x_value_type_code => l_adr_value_type_code
110889 , p_side => 'NA'
110890 );
110891
110892 xla_ae_lines_pkg.set_ccid(
110893 p_code_combination_id => l_ccid
110894 , p_value_type_code => l_adr_value_type_code
110895 , p_transaction_coa_id => l_adr_transaction_coa_id
110896 , p_accounting_coa_id => l_adr_accounting_coa_id
110897 , p_adr_code => 'RMV'
110898 , p_adr_type_code => 'S'
110899 , p_component_type => l_component_type
110900 , p_component_code => l_component_code
110901 , p_component_type_code => l_component_type_code
110902 , p_component_appl_id => l_component_appl_id
110903 , p_amb_context_code => l_amb_context_code
110904 , p_side => 'NA'
110908 --
110905 );
110906
110907
110909 --
110910 END IF;
110911 --
110912 -- Bug 4922099
110913 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
110914 (NVL(l_enc_upg_option, 'N') = 'O')
110915 ) AND
110916 (l_bflow_method_code = 'PRIOR_ENTRY')
110917 )
110918 THEN
110919 IF
110920 --
110921 1 = 2
110922 --
110923 THEN
110924 xla_accounting_err_pkg.build_message
110925 (p_appli_s_name => 'XLA'
110926 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110927 ,p_token_1 => 'LINE_NUMBER'
110928 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
110929 ,p_token_2 => 'LINE_TYPE_NAME'
110930 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
110931 l_component_type
110932 ,l_component_code
110933 ,l_component_type_code
110934 ,l_component_appl_id
110935 ,l_amb_context_code
110936 ,l_entity_code
110937 ,l_event_class_code
110938 )
110939 ,p_token_3 => 'OWNER'
110940 ,p_value_3 => xla_lookups_pkg.get_meaning(
110941 p_lookup_type => 'XLA_OWNER_TYPE'
110942 ,p_lookup_code => l_component_type_code
110943 )
110944 ,p_token_4 => 'PRODUCT_NAME'
110945 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
110946 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
110947 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
110948 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
110949 ,p_ae_header_id => NULL
110950 );
110951
110952 IF (C_LEVEL_ERROR>= g_log_level) THEN
110953 trace
110954 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
110955 ,p_level => C_LEVEL_ERROR
110956 ,p_module => l_log_module);
110957 END IF;
110958 END IF;
110959 END IF;
110960 --
110961 --
110962 ------------------------------------------------------------------------------------------------
110963 -- 4219869 Business Flow
110964 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
110965 -- Prior Entry. Currently, the following code is always generated.
110966 ------------------------------------------------------------------------------------------------
110967 XLA_AE_LINES_PKG.ValidateCurrentLine;
110968
110969 ------------------------------------------------------------------------------------
110970 -- 4219869 Business Flow
110971 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
110972 ------------------------------------------------------------------------------------
110973 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
110974
110975 ----------------------------------------------------------------------------------
110976 -- 4219869 Business Flow
110977 -- Update journal entry status -- Need to generate this within IF <condition>
110978 ----------------------------------------------------------------------------------
110979 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
110980 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
110981 ,p_balance_type_code => l_balance_type_code
110982 );
110983
110984 -------------------------------------------------------------------------------------------
110985 -- 4262811 - Generate the Accrual Reversal lines
110986 -------------------------------------------------------------------------------------------
110987 BEGIN
110988 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
110989 (g_array_event(p_event_id).array_value_num('header_index'));
110990 IF l_acc_rev_flag IS NULL THEN
110991 l_acc_rev_flag := 'N';
110992 END IF;
110993 EXCEPTION
110994 WHEN OTHERS THEN
110995 l_acc_rev_flag := 'N';
110996 END;
110997 --
110998 IF (l_acc_rev_flag = 'Y') THEN
110999
111000 -- 4645092 ------------------------------------------------------------------------------
111001 -- To allow MPA report to determine if it should generate report process
111002 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111003 ------------------------------------------------------------------------------------------
111007 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
111004
111005 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111006 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111008 -- call ADRs
111009 -- Bug 4922099
111010 --
111011 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111012 (NVL(l_actual_upg_option, 'N') = 'O') OR
111013 (NVL(l_enc_upg_option, 'N') = 'O')
111014 )
111015 THEN
111016 NULL;
111017 --
111018 --
111019
111020 l_ccid := AcctDerRule_33(
111021 p_application_id => p_application_id
111022 , p_ae_header_id => l_ae_header_id
111023 , p_source_1 => p_source_1
111024 , p_source_2 => p_source_2
111025 , x_transaction_coa_id => l_adr_transaction_coa_id
111026 , x_accounting_coa_id => l_adr_accounting_coa_id
111027 , x_value_type_code => l_adr_value_type_code
111028 , p_side => 'NA'
111029 );
111030
111031 xla_ae_lines_pkg.set_ccid(
111032 p_code_combination_id => l_ccid
111033 , p_value_type_code => l_adr_value_type_code
111034 , p_transaction_coa_id => l_adr_transaction_coa_id
111035 , p_accounting_coa_id => l_adr_accounting_coa_id
111036 , p_adr_code => 'RMV'
111037 , p_adr_type_code => 'S'
111038 , p_component_type => l_component_type
111039 , p_component_code => l_component_code
111040 , p_component_type_code => l_component_type_code
111041 , p_component_appl_id => l_component_appl_id
111042 , p_amb_context_code => l_amb_context_code
111043 , p_side => 'NA'
111044 );
111045
111046
111047 --
111048 --
111049 END IF;
111050
111051 --
111052 -- Update the line information that should be overwritten
111053 --
111054 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111055 p_header_num => 1);
111056 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
111057
111058 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111059
111060 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
111061 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111062 END IF;
111063
111064 --
111065 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111066 --
111067 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111068 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
111069 ELSE
111070 ---------------------------------------------------------------------------------------------------
111071 -- 4262811a Switch Sign
111072 ---------------------------------------------------------------------------------------------------
111073 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
111074 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111075 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111076 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111077 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111078 -- 5132302
111079 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111080 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111081
111082 END IF;
111083
111084 -- 4955764
111085 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111086 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111087
111088
111089 XLA_AE_LINES_PKG.ValidateCurrentLine;
111090 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111091
111092 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111093 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111094 ,p_balance_type_code => l_balance_type_code);
111095
111096 END IF;
111097
111098 -----------------------------------------------------------------------------------------
111099 -- 4262811 Multiperiod Accounting
111100 -----------------------------------------------------------------------------------------
111101 -- No MPA option is assigned.
111102
111103
111104 END IF;
111105 END IF;
111106 --
111107
111108 --
111109 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111110 trace
111111 (p_msg => 'END of AcctLineType_232'
111112 ,p_level => C_LEVEL_PROCEDURE
111113 ,p_module => l_log_module);
111114 END IF;
111115 --
111116 EXCEPTION
111117 WHEN xla_exceptions_pkg.application_exception THEN
111118 RAISE;
111119 WHEN OTHERS THEN
111120 xla_exceptions_pkg.raise_message
111121 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_232');
111125 ---------------------------------------
111122 END AcctLineType_232;
111123 --
111124
111126 --
111127 -- PRIVATE FUNCTION
111128 -- AcctLineType_233
111129 --
111130 ---------------------------------------
111131 PROCEDURE AcctLineType_233 (
111132 p_application_id IN NUMBER
111133 ,p_event_id IN NUMBER
111134 ,p_calculate_acctd_flag IN VARCHAR2
111135 ,p_calculate_g_l_flag IN VARCHAR2
111136 ,p_actual_flag IN OUT VARCHAR2
111137 ,p_balance_type_code OUT VARCHAR2
111138 ,p_gain_or_loss_ref OUT VARCHAR2
111139
111140 --Transaction Account
111141 , p_source_1 IN NUMBER
111142 --Journal Line Type
111143 , p_source_2 IN VARCHAR2
111144 --Entered Amount
111145 , p_source_3 IN NUMBER
111146 --First Distribution Identifier
111147 , p_source_5 IN NUMBER
111148 --Distribution Type
111149 , p_source_6 IN VARCHAR2
111150 --Currency Code
111151 , p_source_7 IN VARCHAR2
111152 --Currency Conversion Date
111153 , p_source_8 IN DATE
111154 --Currency Conversion Rate
111155 , p_source_9 IN NUMBER
111156 --Currency Conversion Type
111157 , p_source_10 IN VARCHAR2
111158 --Accounted Amount
111159 , p_source_11 IN NUMBER
111160 )
111161 IS
111162
111163 l_component_type VARCHAR2(80);
111164 l_component_code VARCHAR2(30);
111165 l_component_type_code VARCHAR2(1);
111166 l_component_appl_id INTEGER;
111167 l_amb_context_code VARCHAR2(30);
111168 l_entity_code VARCHAR2(30);
111169 l_event_class_code VARCHAR2(30);
111170 l_ae_header_id NUMBER;
111171 l_event_type_code VARCHAR2(30);
111172 l_line_definition_code VARCHAR2(30);
111173 l_line_definition_owner_code VARCHAR2(1);
111174 --
111175 -- adr variables
111176 l_segment VARCHAR2(30);
111177 l_ccid NUMBER;
111178 l_adr_transaction_coa_id NUMBER;
111179 l_adr_accounting_coa_id NUMBER;
111180 l_adr_flexfield_segment_code VARCHAR2(30);
111181 l_adr_flex_value_set_id NUMBER;
111182 l_adr_value_type_code VARCHAR2(30);
111183 l_adr_value_combination_id NUMBER;
111184 l_adr_value_segment_code VARCHAR2(30);
111185
111186 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
111187 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
111188 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
111189 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
111190
111191 -- 4262811 Variables ------------------------------------------------------------------------------------------
111192 l_entered_amt_idx NUMBER;
111193 l_accted_amt_idx NUMBER;
111194 l_acc_rev_flag VARCHAR2(1);
111195 l_accrual_line_num NUMBER;
111196 l_tmp_amt NUMBER;
111197 l_acc_rev_natural_side_code VARCHAR2(1);
111198
111199 l_num_entries NUMBER;
111200 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
111201 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
111202 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
111203 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
111204 l_recog_line_1 NUMBER;
111205 l_recog_line_2 NUMBER;
111206
111207 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
111208 l_bflow_applied_to_amt NUMBER; -- 5132302
111209 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
111210
111211 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111212
111213 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
111214 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
111215
111216 ---------------------------------------------------------------------------------------------------------------
111217
111218
111219 --
111220 -- bulk performance
111221 --
111222 l_balance_type_code VARCHAR2(1);
111223 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
111224 l_log_module VARCHAR2(240);
111225
111226 --
111227 -- Upgrade strategy
111228 --
111229 l_actual_upg_option VARCHAR2(1);
111230 l_enc_upg_option VARCHAR2(1);
111231
111232 --
111233 BEGIN
111234 --
111235 IF g_log_enabled THEN
111236 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_233';
111237 END IF;
111238 --
111239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111240
111241 trace
111242 (p_msg => 'BEGIN of AcctLineType_233'
111243 ,p_level => C_LEVEL_PROCEDURE
111244 ,p_module => l_log_module);
111245
111246 END IF;
111247 --
111248 l_component_type := 'AMB_JLT';
111249 l_component_code := 'RPADJ';
111250 l_component_type_code := 'S';
111251 l_component_appl_id := 555;
111252 l_amb_context_code := 'DEFAULT';
111253 l_entity_code := 'PURCHASING';
111254 l_event_class_code := 'DELIVER';
111255 l_event_type_code := 'RETRO_PRICE_UPD';
111256 l_line_definition_owner_code := 'S';
111257 l_line_definition_code := 'RETRO_PRICE_UPD';
111258 --
111262 l_adr_transaction_coa_id := NULL;
111259 l_balance_type_code := 'A';
111260 l_segment := NULL;
111261 l_ccid := NULL;
111263 l_adr_accounting_coa_id := NULL;
111264 l_adr_flexfield_segment_code := NULL;
111265 l_adr_flex_value_set_id := NULL;
111266 l_adr_value_type_code := NULL;
111267 l_adr_value_combination_id := NULL;
111268 l_adr_value_segment_code := NULL;
111269
111270 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
111271 l_bflow_class_code := ''; -- 4219869 Business Flow
111272 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
111273 l_budgetary_control_flag := 'N';
111274
111275 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111276 l_bflow_applied_to_amt := NULL; -- 5132302
111277 l_entered_amt_idx := NULL; -- 4262811
111278 l_accted_amt_idx := NULL; -- 4262811
111279 l_acc_rev_flag := NULL; -- 4262811
111280 l_accrual_line_num := NULL; -- 4262811
111281 l_tmp_amt := NULL; -- 4262811
111282 --
111283
111284 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111285 l_balance_type_code <> 'B' THEN
111286 IF NVL(p_source_2,'
111287 ') = 'RPADJ'
111288 THEN
111289
111290 --
111291 XLA_AE_LINES_PKG.SetNewLine;
111292
111293 p_balance_type_code := l_balance_type_code;
111294 -- set the flag so later we will know whether the gain loss line needs to be created
111295
111296 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111297 p_actual_flag :='A';
111298 END IF;
111299
111300 --
111301 -- bulk performance
111302 --
111303 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111304 p_header_num => 0); -- 4262811
111305 --
111306 -- set accounting line options
111307 --
111308 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111309 p_natural_side_code => 'D'
111310 , p_gain_or_loss_flag => 'N'
111311 , p_gl_transfer_mode_code => 'D'
111312 , p_acct_entry_type_code => 'A'
111313 , p_switch_side_flag => 'Y'
111314 , p_merge_duplicate_code => 'W'
111315 );
111316 --
111317 l_acc_rev_natural_side_code := 'C'; -- 4262811
111318 --
111319 --
111320 -- set accounting line type info
111321 --
111322 xla_ae_lines_pkg.SetAcctLineType
111323 (p_component_type => l_component_type
111324 ,p_event_type_code => l_event_type_code
111325 ,p_line_definition_owner_code => l_line_definition_owner_code
111326 ,p_line_definition_code => l_line_definition_code
111327 ,p_accounting_line_code => l_component_code
111328 ,p_accounting_line_type_code => l_component_type_code
111329 ,p_accounting_line_appl_id => l_component_appl_id
111330 ,p_amb_context_code => l_amb_context_code
111331 ,p_entity_code => l_entity_code
111332 ,p_event_class_code => l_event_class_code);
111333 --
111334 -- set accounting class
111335 --
111336 xla_ae_lines_pkg.SetAcctClass(
111337 p_accounting_class_code => 'RETROACTIVE_PRICE_ADJUSTMENT'
111338 , p_ae_header_id => l_ae_header_id
111339 );
111340
111341 --
111342 -- set rounding class
111343 --
111344 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111345 'RETROACTIVE_PRICE_ADJUSTMENT';
111346
111347 --
111348 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111349 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111350 --
111351 -- bulk performance
111352 --
111353 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111354
111355 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111356 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111357
111358 -- 4955764
111359 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111360 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111361
111362 -- 4458381 Public Sector Enh
111363
111364 --
111365 -- set accounting attributes for the line type
111366 --
111367 l_entered_amt_idx := 3;
111368 l_accted_amt_idx := 8;
111369 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111370 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111371 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
111372 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111373 l_rec_acct_attrs.array_char_value(2) := p_source_6;
111374 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111375 l_rec_acct_attrs.array_num_value(3) := p_source_3;
111376 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111377 l_rec_acct_attrs.array_char_value(4) := p_source_7;
111378 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111379 l_rec_acct_attrs.array_date_value(5) := p_source_8;
111380 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111381 l_rec_acct_attrs.array_num_value(6) := p_source_9;
111385 l_rec_acct_attrs.array_num_value(8) := p_source_11;
111382 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111383 l_rec_acct_attrs.array_char_value(7) := p_source_10;
111384 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111386
111387 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111388 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111389
111390 ---------------------------------------------------------------------------------------------------------------
111391 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111392 ---------------------------------------------------------------------------------------------------------------
111393 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111394
111395 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111396 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111397
111398 IF xla_accounting_cache_pkg.GetValueChar
111399 (p_source_code => 'LEDGER_CATEGORY_CODE'
111400 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111401 AND l_bflow_method_code = 'PRIOR_ENTRY'
111402 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111403 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111404 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111405 )
111406 THEN
111407 xla_ae_lines_pkg.BflowUpgEntry
111408 (p_business_method_code => l_bflow_method_code
111409 ,p_business_class_code => l_bflow_class_code
111410 ,p_balance_type => l_balance_type_code);
111411 ELSE
111412 NULL;
111413 -- No business flow processing for business flow method of NONE.
111414 END IF;
111415
111416 --
111417 -- call analytical criteria
111418 --
111419
111420 --
111421 -- call description
111422 --
111423 -- No description or it is inherited.
111424 --
111425 -- call ADRs
111426 -- Bug 4922099
111427 --
111428 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111429 (NVL(l_actual_upg_option, 'N') = 'O') OR
111430 (NVL(l_enc_upg_option, 'N') = 'O')
111431 )
111432 THEN
111433 NULL;
111434 --
111435 --
111436
111437 l_ccid := AcctDerRule_34(
111438 p_application_id => p_application_id
111439 , p_ae_header_id => l_ae_header_id
111440 , p_source_1 => p_source_1
111441 , p_source_2 => p_source_2
111442 , x_transaction_coa_id => l_adr_transaction_coa_id
111443 , x_accounting_coa_id => l_adr_accounting_coa_id
111444 , x_value_type_code => l_adr_value_type_code
111445 , p_side => 'NA'
111446 );
111447
111448 xla_ae_lines_pkg.set_ccid(
111449 p_code_combination_id => l_ccid
111450 , p_value_type_code => l_adr_value_type_code
111451 , p_transaction_coa_id => l_adr_transaction_coa_id
111452 , p_accounting_coa_id => l_adr_accounting_coa_id
111453 , p_adr_code => 'RPADJ'
111454 , p_adr_type_code => 'S'
111455 , p_component_type => l_component_type
111456 , p_component_code => l_component_code
111457 , p_component_type_code => l_component_type_code
111458 , p_component_appl_id => l_component_appl_id
111459 , p_amb_context_code => l_amb_context_code
111460 , p_side => 'NA'
111461 );
111462
111463
111464 --
111465 --
111466 END IF;
111467 --
111468 -- Bug 4922099
111469 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111470 (NVL(l_enc_upg_option, 'N') = 'O')
111471 ) AND
111472 (l_bflow_method_code = 'PRIOR_ENTRY')
111473 )
111474 THEN
111475 IF
111476 --
111477 1 = 2
111478 --
111479 THEN
111480 xla_accounting_err_pkg.build_message
111481 (p_appli_s_name => 'XLA'
111482 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111483 ,p_token_1 => 'LINE_NUMBER'
111484 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
111485 ,p_token_2 => 'LINE_TYPE_NAME'
111486 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
111487 l_component_type
111488 ,l_component_code
111489 ,l_component_type_code
111490 ,l_component_appl_id
111491 ,l_amb_context_code
111492 ,l_entity_code
111493 ,l_event_class_code
111494 )
111498 ,p_lookup_code => l_component_type_code
111495 ,p_token_3 => 'OWNER'
111496 ,p_value_3 => xla_lookups_pkg.get_meaning(
111497 p_lookup_type => 'XLA_OWNER_TYPE'
111499 )
111500 ,p_token_4 => 'PRODUCT_NAME'
111501 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111502 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111503 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111504 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111505 ,p_ae_header_id => NULL
111506 );
111507
111508 IF (C_LEVEL_ERROR>= g_log_level) THEN
111509 trace
111510 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111511 ,p_level => C_LEVEL_ERROR
111512 ,p_module => l_log_module);
111513 END IF;
111514 END IF;
111515 END IF;
111516 --
111517 --
111518 ------------------------------------------------------------------------------------------------
111519 -- 4219869 Business Flow
111520 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111521 -- Prior Entry. Currently, the following code is always generated.
111522 ------------------------------------------------------------------------------------------------
111523 XLA_AE_LINES_PKG.ValidateCurrentLine;
111524
111525 ------------------------------------------------------------------------------------
111526 -- 4219869 Business Flow
111527 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111528 ------------------------------------------------------------------------------------
111529 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111530
111531 ----------------------------------------------------------------------------------
111532 -- 4219869 Business Flow
111533 -- Update journal entry status -- Need to generate this within IF <condition>
111534 ----------------------------------------------------------------------------------
111535 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111536 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111537 ,p_balance_type_code => l_balance_type_code
111538 );
111539
111540 -------------------------------------------------------------------------------------------
111541 -- 4262811 - Generate the Accrual Reversal lines
111542 -------------------------------------------------------------------------------------------
111543 BEGIN
111544 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111545 (g_array_event(p_event_id).array_value_num('header_index'));
111546 IF l_acc_rev_flag IS NULL THEN
111547 l_acc_rev_flag := 'N';
111548 END IF;
111549 EXCEPTION
111550 WHEN OTHERS THEN
111551 l_acc_rev_flag := 'N';
111552 END;
111553 --
111554 IF (l_acc_rev_flag = 'Y') THEN
111555
111556 -- 4645092 ------------------------------------------------------------------------------
111557 -- To allow MPA report to determine if it should generate report process
111558 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111559 ------------------------------------------------------------------------------------------
111560
111561 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111562 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111563 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
111564 -- call ADRs
111565 -- Bug 4922099
111566 --
111567 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111568 (NVL(l_actual_upg_option, 'N') = 'O') OR
111569 (NVL(l_enc_upg_option, 'N') = 'O')
111570 )
111571 THEN
111572 NULL;
111573 --
111574 --
111575
111576 l_ccid := AcctDerRule_34(
111577 p_application_id => p_application_id
111578 , p_ae_header_id => l_ae_header_id
111579 , p_source_1 => p_source_1
111580 , p_source_2 => p_source_2
111581 , x_transaction_coa_id => l_adr_transaction_coa_id
111582 , x_accounting_coa_id => l_adr_accounting_coa_id
111583 , x_value_type_code => l_adr_value_type_code
111584 , p_side => 'NA'
111585 );
111586
111587 xla_ae_lines_pkg.set_ccid(
111588 p_code_combination_id => l_ccid
111589 , p_value_type_code => l_adr_value_type_code
111590 , p_transaction_coa_id => l_adr_transaction_coa_id
111591 , p_accounting_coa_id => l_adr_accounting_coa_id
111592 , p_adr_code => 'RPADJ'
111593 , p_adr_type_code => 'S'
111594 , p_component_type => l_component_type
111595 , p_component_code => l_component_code
111599 , p_side => 'NA'
111596 , p_component_type_code => l_component_type_code
111597 , p_component_appl_id => l_component_appl_id
111598 , p_amb_context_code => l_amb_context_code
111600 );
111601
111602
111603 --
111604 --
111605 END IF;
111606
111607 --
111608 -- Update the line information that should be overwritten
111609 --
111610 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111611 p_header_num => 1);
111612 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
111613
111614 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111615
111616 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
111617 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111618 END IF;
111619
111620 --
111621 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111622 --
111623 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111624 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
111625 ELSE
111626 ---------------------------------------------------------------------------------------------------
111627 -- 4262811a Switch Sign
111628 ---------------------------------------------------------------------------------------------------
111629 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
111630 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111631 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111632 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111633 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111634 -- 5132302
111635 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111636 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111637
111638 END IF;
111639
111640 -- 4955764
111641 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111642 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111643
111644
111645 XLA_AE_LINES_PKG.ValidateCurrentLine;
111646 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111647
111648 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111649 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111650 ,p_balance_type_code => l_balance_type_code);
111651
111652 END IF;
111653
111654 -----------------------------------------------------------------------------------------
111655 -- 4262811 Multiperiod Accounting
111656 -----------------------------------------------------------------------------------------
111657 -- No MPA option is assigned.
111658
111659
111660 END IF;
111661 END IF;
111662 --
111663
111664 --
111665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111666 trace
111667 (p_msg => 'END of AcctLineType_233'
111668 ,p_level => C_LEVEL_PROCEDURE
111669 ,p_module => l_log_module);
111670 END IF;
111671 --
111672 EXCEPTION
111673 WHEN xla_exceptions_pkg.application_exception THEN
111674 RAISE;
111675 WHEN OTHERS THEN
111676 xla_exceptions_pkg.raise_message
111677 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_233');
111678 END AcctLineType_233;
111679 --
111680
111681 ---------------------------------------
111682 --
111683 -- PRIVATE FUNCTION
111684 -- AcctLineType_234
111685 --
111686 ---------------------------------------
111687 PROCEDURE AcctLineType_234 (
111688 p_application_id IN NUMBER
111689 ,p_event_id IN NUMBER
111690 ,p_calculate_acctd_flag IN VARCHAR2
111691 ,p_calculate_g_l_flag IN VARCHAR2
111692 ,p_actual_flag IN OUT VARCHAR2
111693 ,p_balance_type_code OUT VARCHAR2
111694 ,p_gain_or_loss_ref OUT VARCHAR2
111695
111696 --Transaction Account
111697 , p_source_1 IN NUMBER
111698 --Journal Line Type
111699 , p_source_2 IN VARCHAR2
111700 --Entered Amount
111701 , p_source_3 IN NUMBER
111702 --First Distribution Identifier
111703 , p_source_5 IN NUMBER
111704 --Distribution Type
111705 , p_source_6 IN VARCHAR2
111706 --Currency Code
111707 , p_source_7 IN VARCHAR2
111708 --Currency Conversion Date
111709 , p_source_8 IN DATE
111710 --Currency Conversion Rate
111711 , p_source_9 IN NUMBER
111712 --Currency Conversion Type
111713 , p_source_10 IN VARCHAR2
111714 --Accounted Amount
111715 , p_source_11 IN NUMBER
111716 )
111717 IS
111718
111719 l_component_type VARCHAR2(80);
111720 l_component_code VARCHAR2(30);
111721 l_component_type_code VARCHAR2(1);
111722 l_component_appl_id INTEGER;
111726 l_ae_header_id NUMBER;
111723 l_amb_context_code VARCHAR2(30);
111724 l_entity_code VARCHAR2(30);
111725 l_event_class_code VARCHAR2(30);
111727 l_event_type_code VARCHAR2(30);
111728 l_line_definition_code VARCHAR2(30);
111729 l_line_definition_owner_code VARCHAR2(1);
111730 --
111731 -- adr variables
111732 l_segment VARCHAR2(30);
111733 l_ccid NUMBER;
111734 l_adr_transaction_coa_id NUMBER;
111735 l_adr_accounting_coa_id NUMBER;
111736 l_adr_flexfield_segment_code VARCHAR2(30);
111737 l_adr_flex_value_set_id NUMBER;
111738 l_adr_value_type_code VARCHAR2(30);
111739 l_adr_value_combination_id NUMBER;
111740 l_adr_value_segment_code VARCHAR2(30);
111741
111742 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
111743 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
111744 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
111745 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
111746
111747 -- 4262811 Variables ------------------------------------------------------------------------------------------
111748 l_entered_amt_idx NUMBER;
111749 l_accted_amt_idx NUMBER;
111750 l_acc_rev_flag VARCHAR2(1);
111751 l_accrual_line_num NUMBER;
111752 l_tmp_amt NUMBER;
111753 l_acc_rev_natural_side_code VARCHAR2(1);
111754
111755 l_num_entries NUMBER;
111756 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
111757 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
111758 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
111759 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
111760 l_recog_line_1 NUMBER;
111761 l_recog_line_2 NUMBER;
111762
111763 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
111764 l_bflow_applied_to_amt NUMBER; -- 5132302
111765 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
111766
111767 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111768
111769 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
111770 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
111771
111772 ---------------------------------------------------------------------------------------------------------------
111773
111774
111775 --
111776 -- bulk performance
111777 --
111778 l_balance_type_code VARCHAR2(1);
111779 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
111780 l_log_module VARCHAR2(240);
111781
111782 --
111783 -- Upgrade strategy
111784 --
111785 l_actual_upg_option VARCHAR2(1);
111786 l_enc_upg_option VARCHAR2(1);
111787
111788 --
111789 BEGIN
111790 --
111791 IF g_log_enabled THEN
111792 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_234';
111793 END IF;
111794 --
111795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111796
111797 trace
111798 (p_msg => 'BEGIN of AcctLineType_234'
111799 ,p_level => C_LEVEL_PROCEDURE
111800 ,p_module => l_log_module);
111801
111802 END IF;
111803 --
111804 l_component_type := 'AMB_JLT';
111805 l_component_code := 'RPADJ';
111806 l_component_type_code := 'S';
111807 l_component_appl_id := 555;
111808 l_amb_context_code := 'DEFAULT';
111809 l_entity_code := 'PURCHASING';
111810 l_event_class_code := 'RECEIVE';
111811 l_event_type_code := 'ADJUST_DELIVER';
111812 l_line_definition_owner_code := 'S';
111813 l_line_definition_code := 'ADJUST_DELIVER';
111814 --
111815 l_balance_type_code := 'A';
111816 l_segment := NULL;
111817 l_ccid := NULL;
111818 l_adr_transaction_coa_id := NULL;
111819 l_adr_accounting_coa_id := NULL;
111820 l_adr_flexfield_segment_code := NULL;
111821 l_adr_flex_value_set_id := NULL;
111822 l_adr_value_type_code := NULL;
111823 l_adr_value_combination_id := NULL;
111824 l_adr_value_segment_code := NULL;
111825
111826 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
111827 l_bflow_class_code := ''; -- 4219869 Business Flow
111828 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
111829 l_budgetary_control_flag := 'N';
111830
111831 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111832 l_bflow_applied_to_amt := NULL; -- 5132302
111833 l_entered_amt_idx := NULL; -- 4262811
111834 l_accted_amt_idx := NULL; -- 4262811
111835 l_acc_rev_flag := NULL; -- 4262811
111836 l_accrual_line_num := NULL; -- 4262811
111837 l_tmp_amt := NULL; -- 4262811
111838 --
111839
111840 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111841 l_balance_type_code <> 'B' THEN
111842 IF NVL(p_source_2,'
111843 ') = 'RPADJ'
111844 THEN
111845
111846 --
111847 XLA_AE_LINES_PKG.SetNewLine;
111848
111849 p_balance_type_code := l_balance_type_code;
111850 -- set the flag so later we will know whether the gain loss line needs to be created
111851
111852 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111856 --
111853 p_actual_flag :='A';
111854 END IF;
111855
111857 -- bulk performance
111858 --
111859 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111860 p_header_num => 0); -- 4262811
111861 --
111862 -- set accounting line options
111863 --
111864 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111865 p_natural_side_code => 'D'
111866 , p_gain_or_loss_flag => 'N'
111867 , p_gl_transfer_mode_code => 'D'
111868 , p_acct_entry_type_code => 'A'
111869 , p_switch_side_flag => 'Y'
111870 , p_merge_duplicate_code => 'W'
111871 );
111872 --
111873 l_acc_rev_natural_side_code := 'C'; -- 4262811
111874 --
111875 --
111876 -- set accounting line type info
111877 --
111878 xla_ae_lines_pkg.SetAcctLineType
111879 (p_component_type => l_component_type
111880 ,p_event_type_code => l_event_type_code
111881 ,p_line_definition_owner_code => l_line_definition_owner_code
111882 ,p_line_definition_code => l_line_definition_code
111883 ,p_accounting_line_code => l_component_code
111884 ,p_accounting_line_type_code => l_component_type_code
111885 ,p_accounting_line_appl_id => l_component_appl_id
111886 ,p_amb_context_code => l_amb_context_code
111887 ,p_entity_code => l_entity_code
111888 ,p_event_class_code => l_event_class_code);
111889 --
111890 -- set accounting class
111891 --
111892 xla_ae_lines_pkg.SetAcctClass(
111893 p_accounting_class_code => 'RETROACTIVE_PRICE_ADJUSTMENT'
111894 , p_ae_header_id => l_ae_header_id
111895 );
111896
111897 --
111898 -- set rounding class
111899 --
111900 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111901 'RETROACTIVE_PRICE_ADJUSTMENT';
111902
111903 --
111904 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111905 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111906 --
111907 -- bulk performance
111908 --
111909 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111910
111911 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111912 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111913
111914 -- 4955764
111915 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111916 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111917
111918 -- 4458381 Public Sector Enh
111919
111920 --
111921 -- set accounting attributes for the line type
111922 --
111923 l_entered_amt_idx := 3;
111924 l_accted_amt_idx := 8;
111925 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111926 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111927 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
111928 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111929 l_rec_acct_attrs.array_char_value(2) := p_source_6;
111930 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111931 l_rec_acct_attrs.array_num_value(3) := p_source_3;
111932 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111933 l_rec_acct_attrs.array_char_value(4) := p_source_7;
111934 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111935 l_rec_acct_attrs.array_date_value(5) := p_source_8;
111936 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111937 l_rec_acct_attrs.array_num_value(6) := p_source_9;
111938 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111939 l_rec_acct_attrs.array_char_value(7) := p_source_10;
111940 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111941 l_rec_acct_attrs.array_num_value(8) := p_source_11;
111942
111943 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111944 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111945
111946 ---------------------------------------------------------------------------------------------------------------
111947 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111948 ---------------------------------------------------------------------------------------------------------------
111949 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111950
111951 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111952 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111953
111954 IF xla_accounting_cache_pkg.GetValueChar
111955 (p_source_code => 'LEDGER_CATEGORY_CODE'
111956 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111957 AND l_bflow_method_code = 'PRIOR_ENTRY'
111958 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111959 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111960 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111961 )
111962 THEN
111963 xla_ae_lines_pkg.BflowUpgEntry
111967 ELSE
111964 (p_business_method_code => l_bflow_method_code
111965 ,p_business_class_code => l_bflow_class_code
111966 ,p_balance_type => l_balance_type_code);
111968 NULL;
111969 -- No business flow processing for business flow method of NONE.
111970 END IF;
111971
111972 --
111973 -- call analytical criteria
111974 --
111975
111976 --
111977 -- call description
111978 --
111979 -- No description or it is inherited.
111980 --
111981 -- call ADRs
111982 -- Bug 4922099
111983 --
111984 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111985 (NVL(l_actual_upg_option, 'N') = 'O') OR
111986 (NVL(l_enc_upg_option, 'N') = 'O')
111987 )
111988 THEN
111989 NULL;
111990 --
111991 --
111992
111993 l_ccid := AcctDerRule_34(
111994 p_application_id => p_application_id
111995 , p_ae_header_id => l_ae_header_id
111996 , p_source_1 => p_source_1
111997 , p_source_2 => p_source_2
111998 , x_transaction_coa_id => l_adr_transaction_coa_id
111999 , x_accounting_coa_id => l_adr_accounting_coa_id
112000 , x_value_type_code => l_adr_value_type_code
112001 , p_side => 'NA'
112002 );
112003
112004 xla_ae_lines_pkg.set_ccid(
112005 p_code_combination_id => l_ccid
112006 , p_value_type_code => l_adr_value_type_code
112007 , p_transaction_coa_id => l_adr_transaction_coa_id
112008 , p_accounting_coa_id => l_adr_accounting_coa_id
112009 , p_adr_code => 'RPADJ'
112010 , p_adr_type_code => 'S'
112011 , p_component_type => l_component_type
112012 , p_component_code => l_component_code
112013 , p_component_type_code => l_component_type_code
112014 , p_component_appl_id => l_component_appl_id
112015 , p_amb_context_code => l_amb_context_code
112016 , p_side => 'NA'
112017 );
112018
112019
112020 --
112021 --
112022 END IF;
112023 --
112024 -- Bug 4922099
112025 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112026 (NVL(l_enc_upg_option, 'N') = 'O')
112027 ) AND
112028 (l_bflow_method_code = 'PRIOR_ENTRY')
112029 )
112030 THEN
112031 IF
112032 --
112033 1 = 2
112034 --
112035 THEN
112036 xla_accounting_err_pkg.build_message
112037 (p_appli_s_name => 'XLA'
112038 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112039 ,p_token_1 => 'LINE_NUMBER'
112040 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
112041 ,p_token_2 => 'LINE_TYPE_NAME'
112042 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
112043 l_component_type
112044 ,l_component_code
112045 ,l_component_type_code
112046 ,l_component_appl_id
112047 ,l_amb_context_code
112048 ,l_entity_code
112049 ,l_event_class_code
112050 )
112051 ,p_token_3 => 'OWNER'
112052 ,p_value_3 => xla_lookups_pkg.get_meaning(
112053 p_lookup_type => 'XLA_OWNER_TYPE'
112054 ,p_lookup_code => l_component_type_code
112055 )
112056 ,p_token_4 => 'PRODUCT_NAME'
112057 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112058 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112059 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112060 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112061 ,p_ae_header_id => NULL
112062 );
112063
112064 IF (C_LEVEL_ERROR>= g_log_level) THEN
112065 trace
112066 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112067 ,p_level => C_LEVEL_ERROR
112068 ,p_module => l_log_module);
112069 END IF;
112070 END IF;
112071 END IF;
112072 --
112073 --
112074 ------------------------------------------------------------------------------------------------
112075 -- 4219869 Business Flow
112079 XLA_AE_LINES_PKG.ValidateCurrentLine;
112076 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112077 -- Prior Entry. Currently, the following code is always generated.
112078 ------------------------------------------------------------------------------------------------
112080
112081 ------------------------------------------------------------------------------------
112082 -- 4219869 Business Flow
112083 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112084 ------------------------------------------------------------------------------------
112085 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112086
112087 ----------------------------------------------------------------------------------
112088 -- 4219869 Business Flow
112089 -- Update journal entry status -- Need to generate this within IF <condition>
112090 ----------------------------------------------------------------------------------
112091 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112092 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112093 ,p_balance_type_code => l_balance_type_code
112094 );
112095
112096 -------------------------------------------------------------------------------------------
112097 -- 4262811 - Generate the Accrual Reversal lines
112098 -------------------------------------------------------------------------------------------
112099 BEGIN
112100 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112101 (g_array_event(p_event_id).array_value_num('header_index'));
112102 IF l_acc_rev_flag IS NULL THEN
112103 l_acc_rev_flag := 'N';
112104 END IF;
112105 EXCEPTION
112106 WHEN OTHERS THEN
112107 l_acc_rev_flag := 'N';
112108 END;
112109 --
112110 IF (l_acc_rev_flag = 'Y') THEN
112111
112112 -- 4645092 ------------------------------------------------------------------------------
112113 -- To allow MPA report to determine if it should generate report process
112114 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112115 ------------------------------------------------------------------------------------------
112116
112117 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112118 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112119 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
112120 -- call ADRs
112121 -- Bug 4922099
112122 --
112123 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112124 (NVL(l_actual_upg_option, 'N') = 'O') OR
112125 (NVL(l_enc_upg_option, 'N') = 'O')
112126 )
112127 THEN
112128 NULL;
112129 --
112130 --
112131
112132 l_ccid := AcctDerRule_34(
112133 p_application_id => p_application_id
112134 , p_ae_header_id => l_ae_header_id
112135 , p_source_1 => p_source_1
112136 , p_source_2 => p_source_2
112137 , x_transaction_coa_id => l_adr_transaction_coa_id
112138 , x_accounting_coa_id => l_adr_accounting_coa_id
112139 , x_value_type_code => l_adr_value_type_code
112140 , p_side => 'NA'
112141 );
112142
112143 xla_ae_lines_pkg.set_ccid(
112144 p_code_combination_id => l_ccid
112145 , p_value_type_code => l_adr_value_type_code
112146 , p_transaction_coa_id => l_adr_transaction_coa_id
112147 , p_accounting_coa_id => l_adr_accounting_coa_id
112148 , p_adr_code => 'RPADJ'
112149 , p_adr_type_code => 'S'
112150 , p_component_type => l_component_type
112151 , p_component_code => l_component_code
112152 , p_component_type_code => l_component_type_code
112153 , p_component_appl_id => l_component_appl_id
112154 , p_amb_context_code => l_amb_context_code
112155 , p_side => 'NA'
112156 );
112157
112158
112159 --
112160 --
112161 END IF;
112162
112163 --
112164 -- Update the line information that should be overwritten
112165 --
112166 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112167 p_header_num => 1);
112168 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
112169
112170 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112171
112172 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
112173 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112174 END IF;
112175
112176 --
112177 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112178 --
112179 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112180 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
112181 ELSE
112182 ---------------------------------------------------------------------------------------------------
112183 -- 4262811a Switch Sign
112184 ---------------------------------------------------------------------------------------------------
112188 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112185 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
112186 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112187 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112189 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112190 -- 5132302
112191 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112192 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112193
112194 END IF;
112195
112196 -- 4955764
112197 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112198 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112199
112200
112201 XLA_AE_LINES_PKG.ValidateCurrentLine;
112202 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112203
112204 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112205 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112206 ,p_balance_type_code => l_balance_type_code);
112207
112208 END IF;
112209
112210 -----------------------------------------------------------------------------------------
112211 -- 4262811 Multiperiod Accounting
112212 -----------------------------------------------------------------------------------------
112213 -- No MPA option is assigned.
112214
112215
112216 END IF;
112217 END IF;
112218 --
112219
112220 --
112221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112222 trace
112223 (p_msg => 'END of AcctLineType_234'
112224 ,p_level => C_LEVEL_PROCEDURE
112225 ,p_module => l_log_module);
112226 END IF;
112227 --
112228 EXCEPTION
112229 WHEN xla_exceptions_pkg.application_exception THEN
112230 RAISE;
112231 WHEN OTHERS THEN
112232 xla_exceptions_pkg.raise_message
112233 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_234');
112234 END AcctLineType_234;
112235 --
112236
112237 ---------------------------------------
112238 --
112239 -- PRIVATE FUNCTION
112240 -- AcctLineType_235
112241 --
112242 ---------------------------------------
112243 PROCEDURE AcctLineType_235 (
112244 p_application_id IN NUMBER
112245 ,p_event_id IN NUMBER
112246 ,p_calculate_acctd_flag IN VARCHAR2
112247 ,p_calculate_g_l_flag IN VARCHAR2
112248 ,p_actual_flag IN OUT VARCHAR2
112249 ,p_balance_type_code OUT VARCHAR2
112250 ,p_gain_or_loss_ref OUT VARCHAR2
112251
112252 --Transaction Account
112253 , p_source_1 IN NUMBER
112254 --Journal Line Type
112255 , p_source_2 IN VARCHAR2
112256 --Entered Amount
112257 , p_source_3 IN NUMBER
112258 --First Distribution Identifier
112259 , p_source_5 IN NUMBER
112260 --Distribution Type
112261 , p_source_6 IN VARCHAR2
112262 --Currency Code
112263 , p_source_7 IN VARCHAR2
112264 --Currency Conversion Date
112265 , p_source_8 IN DATE
112266 --Currency Conversion Rate
112267 , p_source_9 IN NUMBER
112268 --Currency Conversion Type
112269 , p_source_10 IN VARCHAR2
112270 --Accounted Amount
112271 , p_source_11 IN NUMBER
112272 )
112273 IS
112274
112275 l_component_type VARCHAR2(80);
112276 l_component_code VARCHAR2(30);
112277 l_component_type_code VARCHAR2(1);
112278 l_component_appl_id INTEGER;
112279 l_amb_context_code VARCHAR2(30);
112280 l_entity_code VARCHAR2(30);
112281 l_event_class_code VARCHAR2(30);
112282 l_ae_header_id NUMBER;
112283 l_event_type_code VARCHAR2(30);
112284 l_line_definition_code VARCHAR2(30);
112285 l_line_definition_owner_code VARCHAR2(1);
112286 --
112287 -- adr variables
112288 l_segment VARCHAR2(30);
112289 l_ccid NUMBER;
112290 l_adr_transaction_coa_id NUMBER;
112291 l_adr_accounting_coa_id NUMBER;
112292 l_adr_flexfield_segment_code VARCHAR2(30);
112293 l_adr_flex_value_set_id NUMBER;
112294 l_adr_value_type_code VARCHAR2(30);
112295 l_adr_value_combination_id NUMBER;
112296 l_adr_value_segment_code VARCHAR2(30);
112297
112298 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
112299 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
112300 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
112301 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
112302
112303 -- 4262811 Variables ------------------------------------------------------------------------------------------
112304 l_entered_amt_idx NUMBER;
112305 l_accted_amt_idx NUMBER;
112306 l_acc_rev_flag VARCHAR2(1);
112307 l_accrual_line_num NUMBER;
112308 l_tmp_amt NUMBER;
112309 l_acc_rev_natural_side_code VARCHAR2(1);
112310
112311 l_num_entries NUMBER;
112312 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
112313 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
112317 l_recog_line_2 NUMBER;
112314 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
112315 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
112316 l_recog_line_1 NUMBER;
112318
112319 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
112320 l_bflow_applied_to_amt NUMBER; -- 5132302
112321 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
112322
112323 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112324
112325 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
112326 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
112327
112328 ---------------------------------------------------------------------------------------------------------------
112329
112330
112331 --
112332 -- bulk performance
112333 --
112334 l_balance_type_code VARCHAR2(1);
112335 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
112336 l_log_module VARCHAR2(240);
112337
112338 --
112339 -- Upgrade strategy
112340 --
112341 l_actual_upg_option VARCHAR2(1);
112342 l_enc_upg_option VARCHAR2(1);
112343
112344 --
112345 BEGIN
112346 --
112347 IF g_log_enabled THEN
112348 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_235';
112349 END IF;
112350 --
112351 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112352
112353 trace
112354 (p_msg => 'BEGIN of AcctLineType_235'
112355 ,p_level => C_LEVEL_PROCEDURE
112356 ,p_module => l_log_module);
112357
112358 END IF;
112359 --
112360 l_component_type := 'AMB_JLT';
112361 l_component_code := 'RSV';
112362 l_component_type_code := 'S';
112363 l_component_appl_id := 555;
112364 l_amb_context_code := 'DEFAULT';
112365 l_entity_code := 'PRODUCTION';
112366 l_event_class_code := 'BATCH_CLOSE';
112367 l_event_type_code := 'CLOS';
112368 l_line_definition_owner_code := 'S';
112369 l_line_definition_code := 'BATCH_CLOSE';
112370 --
112371 l_balance_type_code := 'A';
112372 l_segment := NULL;
112373 l_ccid := NULL;
112374 l_adr_transaction_coa_id := NULL;
112375 l_adr_accounting_coa_id := NULL;
112376 l_adr_flexfield_segment_code := NULL;
112377 l_adr_flex_value_set_id := NULL;
112378 l_adr_value_type_code := NULL;
112379 l_adr_value_combination_id := NULL;
112380 l_adr_value_segment_code := NULL;
112381
112382 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
112383 l_bflow_class_code := ''; -- 4219869 Business Flow
112384 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
112385 l_budgetary_control_flag := 'N';
112386
112387 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112388 l_bflow_applied_to_amt := NULL; -- 5132302
112389 l_entered_amt_idx := NULL; -- 4262811
112390 l_accted_amt_idx := NULL; -- 4262811
112391 l_acc_rev_flag := NULL; -- 4262811
112392 l_accrual_line_num := NULL; -- 4262811
112393 l_tmp_amt := NULL; -- 4262811
112394 --
112395
112396 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112397 l_balance_type_code <> 'B' THEN
112398 IF NVL(p_source_2,'
112399 ') = 'RSV'
112400 THEN
112401
112402 --
112403 XLA_AE_LINES_PKG.SetNewLine;
112404
112405 p_balance_type_code := l_balance_type_code;
112406 -- set the flag so later we will know whether the gain loss line needs to be created
112407
112408 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112409 p_actual_flag :='A';
112410 END IF;
112411
112412 --
112413 -- bulk performance
112414 --
112415 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112416 p_header_num => 0); -- 4262811
112417 --
112418 -- set accounting line options
112419 --
112420 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112421 p_natural_side_code => 'D'
112422 , p_gain_or_loss_flag => 'N'
112423 , p_gl_transfer_mode_code => 'D'
112424 , p_acct_entry_type_code => 'A'
112425 , p_switch_side_flag => 'Y'
112426 , p_merge_duplicate_code => 'W'
112427 );
112428 --
112429 l_acc_rev_natural_side_code := 'C'; -- 4262811
112430 --
112431 --
112432 -- set accounting line type info
112433 --
112434 xla_ae_lines_pkg.SetAcctLineType
112435 (p_component_type => l_component_type
112436 ,p_event_type_code => l_event_type_code
112437 ,p_line_definition_owner_code => l_line_definition_owner_code
112438 ,p_line_definition_code => l_line_definition_code
112439 ,p_accounting_line_code => l_component_code
112440 ,p_accounting_line_type_code => l_component_type_code
112441 ,p_accounting_line_appl_id => l_component_appl_id
112442 ,p_amb_context_code => l_amb_context_code
112443 ,p_entity_code => l_entity_code
112444 ,p_event_class_code => l_event_class_code);
112445 --
112446 -- set accounting class
112447 --
112451 );
112448 xla_ae_lines_pkg.SetAcctClass(
112449 p_accounting_class_code => 'RSV'
112450 , p_ae_header_id => l_ae_header_id
112452
112453 --
112454 -- set rounding class
112455 --
112456 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112457 'RSV';
112458
112459 --
112460 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112461 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112462 --
112463 -- bulk performance
112464 --
112465 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112466
112467 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112468 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112469
112470 -- 4955764
112471 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112472 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112473
112474 -- 4458381 Public Sector Enh
112475
112476 --
112477 -- set accounting attributes for the line type
112478 --
112479 l_entered_amt_idx := 3;
112480 l_accted_amt_idx := 8;
112481 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112482 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
112483 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
112484 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
112485 l_rec_acct_attrs.array_char_value(2) := p_source_6;
112486 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
112487 l_rec_acct_attrs.array_num_value(3) := p_source_3;
112488 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
112489 l_rec_acct_attrs.array_char_value(4) := p_source_7;
112490 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
112491 l_rec_acct_attrs.array_date_value(5) := p_source_8;
112492 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
112493 l_rec_acct_attrs.array_num_value(6) := p_source_9;
112494 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
112495 l_rec_acct_attrs.array_char_value(7) := p_source_10;
112496 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
112497 l_rec_acct_attrs.array_num_value(8) := p_source_11;
112498
112499 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112500 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112501
112502 ---------------------------------------------------------------------------------------------------------------
112503 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112504 ---------------------------------------------------------------------------------------------------------------
112505 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112506
112507 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112508 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112509
112510 IF xla_accounting_cache_pkg.GetValueChar
112511 (p_source_code => 'LEDGER_CATEGORY_CODE'
112512 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112513 AND l_bflow_method_code = 'PRIOR_ENTRY'
112514 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112515 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112516 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112517 )
112518 THEN
112519 xla_ae_lines_pkg.BflowUpgEntry
112520 (p_business_method_code => l_bflow_method_code
112521 ,p_business_class_code => l_bflow_class_code
112522 ,p_balance_type => l_balance_type_code);
112523 ELSE
112524 NULL;
112525 -- No business flow processing for business flow method of NONE.
112526 END IF;
112527
112528 --
112529 -- call analytical criteria
112530 --
112531
112532 --
112533 -- call description
112534 --
112535 -- No description or it is inherited.
112536 --
112537 -- call ADRs
112538 -- Bug 4922099
112539 --
112540 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112541 (NVL(l_actual_upg_option, 'N') = 'O') OR
112542 (NVL(l_enc_upg_option, 'N') = 'O')
112543 )
112544 THEN
112545 NULL;
112546 --
112547 --
112548
112549 l_ccid := AcctDerRule_35(
112550 p_application_id => p_application_id
112551 , p_ae_header_id => l_ae_header_id
112552 , p_source_1 => p_source_1
112553 , p_source_2 => p_source_2
112554 , x_transaction_coa_id => l_adr_transaction_coa_id
112555 , x_accounting_coa_id => l_adr_accounting_coa_id
112556 , x_value_type_code => l_adr_value_type_code
112557 , p_side => 'NA'
112558 );
112559
112560 xla_ae_lines_pkg.set_ccid(
112561 p_code_combination_id => l_ccid
112562 , p_value_type_code => l_adr_value_type_code
112563 , p_transaction_coa_id => l_adr_transaction_coa_id
112564 , p_accounting_coa_id => l_adr_accounting_coa_id
112568 , p_component_code => l_component_code
112565 , p_adr_code => 'RSV'
112566 , p_adr_type_code => 'S'
112567 , p_component_type => l_component_type
112569 , p_component_type_code => l_component_type_code
112570 , p_component_appl_id => l_component_appl_id
112571 , p_amb_context_code => l_amb_context_code
112572 , p_side => 'NA'
112573 );
112574
112575
112576 --
112577 --
112578 END IF;
112579 --
112580 -- Bug 4922099
112581 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112582 (NVL(l_enc_upg_option, 'N') = 'O')
112583 ) AND
112584 (l_bflow_method_code = 'PRIOR_ENTRY')
112585 )
112586 THEN
112587 IF
112588 --
112589 1 = 2
112590 --
112591 THEN
112592 xla_accounting_err_pkg.build_message
112593 (p_appli_s_name => 'XLA'
112594 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112595 ,p_token_1 => 'LINE_NUMBER'
112596 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
112597 ,p_token_2 => 'LINE_TYPE_NAME'
112598 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
112599 l_component_type
112600 ,l_component_code
112601 ,l_component_type_code
112602 ,l_component_appl_id
112603 ,l_amb_context_code
112604 ,l_entity_code
112605 ,l_event_class_code
112606 )
112607 ,p_token_3 => 'OWNER'
112608 ,p_value_3 => xla_lookups_pkg.get_meaning(
112609 p_lookup_type => 'XLA_OWNER_TYPE'
112610 ,p_lookup_code => l_component_type_code
112611 )
112612 ,p_token_4 => 'PRODUCT_NAME'
112613 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112614 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112615 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112616 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112617 ,p_ae_header_id => NULL
112618 );
112619
112620 IF (C_LEVEL_ERROR>= g_log_level) THEN
112621 trace
112622 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112623 ,p_level => C_LEVEL_ERROR
112624 ,p_module => l_log_module);
112625 END IF;
112626 END IF;
112627 END IF;
112628 --
112629 --
112630 ------------------------------------------------------------------------------------------------
112631 -- 4219869 Business Flow
112632 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112633 -- Prior Entry. Currently, the following code is always generated.
112634 ------------------------------------------------------------------------------------------------
112635 XLA_AE_LINES_PKG.ValidateCurrentLine;
112636
112637 ------------------------------------------------------------------------------------
112638 -- 4219869 Business Flow
112639 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112640 ------------------------------------------------------------------------------------
112641 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112642
112643 ----------------------------------------------------------------------------------
112644 -- 4219869 Business Flow
112645 -- Update journal entry status -- Need to generate this within IF <condition>
112646 ----------------------------------------------------------------------------------
112647 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112648 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112649 ,p_balance_type_code => l_balance_type_code
112650 );
112651
112652 -------------------------------------------------------------------------------------------
112653 -- 4262811 - Generate the Accrual Reversal lines
112654 -------------------------------------------------------------------------------------------
112655 BEGIN
112656 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112657 (g_array_event(p_event_id).array_value_num('header_index'));
112661 EXCEPTION
112658 IF l_acc_rev_flag IS NULL THEN
112659 l_acc_rev_flag := 'N';
112660 END IF;
112662 WHEN OTHERS THEN
112663 l_acc_rev_flag := 'N';
112664 END;
112665 --
112666 IF (l_acc_rev_flag = 'Y') THEN
112667
112668 -- 4645092 ------------------------------------------------------------------------------
112669 -- To allow MPA report to determine if it should generate report process
112670 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112671 ------------------------------------------------------------------------------------------
112672
112673 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112674 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112675 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
112676 -- call ADRs
112677 -- Bug 4922099
112678 --
112679 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112680 (NVL(l_actual_upg_option, 'N') = 'O') OR
112681 (NVL(l_enc_upg_option, 'N') = 'O')
112682 )
112683 THEN
112684 NULL;
112685 --
112686 --
112687
112688 l_ccid := AcctDerRule_35(
112689 p_application_id => p_application_id
112690 , p_ae_header_id => l_ae_header_id
112691 , p_source_1 => p_source_1
112692 , p_source_2 => p_source_2
112693 , x_transaction_coa_id => l_adr_transaction_coa_id
112694 , x_accounting_coa_id => l_adr_accounting_coa_id
112695 , x_value_type_code => l_adr_value_type_code
112696 , p_side => 'NA'
112697 );
112698
112699 xla_ae_lines_pkg.set_ccid(
112700 p_code_combination_id => l_ccid
112701 , p_value_type_code => l_adr_value_type_code
112702 , p_transaction_coa_id => l_adr_transaction_coa_id
112703 , p_accounting_coa_id => l_adr_accounting_coa_id
112704 , p_adr_code => 'RSV'
112705 , p_adr_type_code => 'S'
112706 , p_component_type => l_component_type
112707 , p_component_code => l_component_code
112708 , p_component_type_code => l_component_type_code
112709 , p_component_appl_id => l_component_appl_id
112710 , p_amb_context_code => l_amb_context_code
112711 , p_side => 'NA'
112712 );
112713
112714
112715 --
112716 --
112717 END IF;
112718
112719 --
112720 -- Update the line information that should be overwritten
112721 --
112722 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112723 p_header_num => 1);
112724 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
112725
112726 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112727
112728 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
112729 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112730 END IF;
112731
112732 --
112733 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112734 --
112735 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112736 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
112737 ELSE
112738 ---------------------------------------------------------------------------------------------------
112739 -- 4262811a Switch Sign
112740 ---------------------------------------------------------------------------------------------------
112741 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
112742 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112743 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112744 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112745 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112746 -- 5132302
112747 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112748 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112749
112750 END IF;
112751
112752 -- 4955764
112753 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112754 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112755
112756
112757 XLA_AE_LINES_PKG.ValidateCurrentLine;
112758 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112759
112760 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112761 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112762 ,p_balance_type_code => l_balance_type_code);
112763
112764 END IF;
112765
112766 -----------------------------------------------------------------------------------------
112767 -- 4262811 Multiperiod Accounting
112768 -----------------------------------------------------------------------------------------
112769 -- No MPA option is assigned.
112770
112771
112775
112772 END IF;
112773 END IF;
112774 --
112776 --
112777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112778 trace
112779 (p_msg => 'END of AcctLineType_235'
112780 ,p_level => C_LEVEL_PROCEDURE
112781 ,p_module => l_log_module);
112782 END IF;
112783 --
112784 EXCEPTION
112785 WHEN xla_exceptions_pkg.application_exception THEN
112786 RAISE;
112787 WHEN OTHERS THEN
112788 xla_exceptions_pkg.raise_message
112789 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_235');
112790 END AcctLineType_235;
112791 --
112792
112793 ---------------------------------------
112794 --
112795 -- PRIVATE FUNCTION
112796 -- AcctLineType_236
112797 --
112798 ---------------------------------------
112799 PROCEDURE AcctLineType_236 (
112800 p_application_id IN NUMBER
112801 ,p_event_id IN NUMBER
112802 ,p_calculate_acctd_flag IN VARCHAR2
112803 ,p_calculate_g_l_flag IN VARCHAR2
112804 ,p_actual_flag IN OUT VARCHAR2
112805 ,p_balance_type_code OUT VARCHAR2
112806 ,p_gain_or_loss_ref OUT VARCHAR2
112807
112808 --Transaction Account
112809 , p_source_1 IN NUMBER
112810 --Journal Line Type
112811 , p_source_2 IN VARCHAR2
112812 --Entered Amount
112813 , p_source_3 IN NUMBER
112814 --First Distribution Identifier
112815 , p_source_5 IN NUMBER
112816 --Distribution Type
112817 , p_source_6 IN VARCHAR2
112818 --Currency Code
112819 , p_source_7 IN VARCHAR2
112820 --Currency Conversion Date
112821 , p_source_8 IN DATE
112822 --Currency Conversion Rate
112823 , p_source_9 IN NUMBER
112824 --Currency Conversion Type
112825 , p_source_10 IN VARCHAR2
112826 --Accounted Amount
112827 , p_source_11 IN NUMBER
112828 )
112829 IS
112830
112831 l_component_type VARCHAR2(80);
112832 l_component_code VARCHAR2(30);
112833 l_component_type_code VARCHAR2(1);
112834 l_component_appl_id INTEGER;
112835 l_amb_context_code VARCHAR2(30);
112836 l_entity_code VARCHAR2(30);
112837 l_event_class_code VARCHAR2(30);
112838 l_ae_header_id NUMBER;
112839 l_event_type_code VARCHAR2(30);
112840 l_line_definition_code VARCHAR2(30);
112841 l_line_definition_owner_code VARCHAR2(1);
112842 --
112843 -- adr variables
112844 l_segment VARCHAR2(30);
112845 l_ccid NUMBER;
112846 l_adr_transaction_coa_id NUMBER;
112847 l_adr_accounting_coa_id NUMBER;
112848 l_adr_flexfield_segment_code VARCHAR2(30);
112849 l_adr_flex_value_set_id NUMBER;
112850 l_adr_value_type_code VARCHAR2(30);
112851 l_adr_value_combination_id NUMBER;
112852 l_adr_value_segment_code VARCHAR2(30);
112853
112854 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
112855 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
112856 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
112857 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
112858
112859 -- 4262811 Variables ------------------------------------------------------------------------------------------
112860 l_entered_amt_idx NUMBER;
112861 l_accted_amt_idx NUMBER;
112862 l_acc_rev_flag VARCHAR2(1);
112863 l_accrual_line_num NUMBER;
112864 l_tmp_amt NUMBER;
112865 l_acc_rev_natural_side_code VARCHAR2(1);
112866
112867 l_num_entries NUMBER;
112868 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
112869 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
112870 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
112871 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
112872 l_recog_line_1 NUMBER;
112873 l_recog_line_2 NUMBER;
112874
112875 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
112876 l_bflow_applied_to_amt NUMBER; -- 5132302
112877 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
112878
112879 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112880
112881 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
112882 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
112883
112884 ---------------------------------------------------------------------------------------------------------------
112885
112886
112887 --
112888 -- bulk performance
112889 --
112890 l_balance_type_code VARCHAR2(1);
112891 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
112892 l_log_module VARCHAR2(240);
112893
112894 --
112895 -- Upgrade strategy
112896 --
112897 l_actual_upg_option VARCHAR2(1);
112898 l_enc_upg_option VARCHAR2(1);
112899
112900 --
112901 BEGIN
112902 --
112903 IF g_log_enabled THEN
112904 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_236';
112905 END IF;
112906 --
112907 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112908
112909 trace
112910 (p_msg => 'BEGIN of AcctLineType_236'
112911 ,p_level => C_LEVEL_PROCEDURE
112912 ,p_module => l_log_module);
112913
112914 END IF;
112915 --
112919 l_component_appl_id := 555;
112916 l_component_type := 'AMB_JLT';
112917 l_component_code := 'RUV';
112918 l_component_type_code := 'S';
112920 l_amb_context_code := 'DEFAULT';
112921 l_entity_code := 'PRODUCTION';
112922 l_event_class_code := 'BATCH_CLOSE';
112923 l_event_type_code := 'CLOS';
112924 l_line_definition_owner_code := 'S';
112925 l_line_definition_code := 'BATCH_CLOSE';
112926 --
112927 l_balance_type_code := 'A';
112928 l_segment := NULL;
112929 l_ccid := NULL;
112930 l_adr_transaction_coa_id := NULL;
112931 l_adr_accounting_coa_id := NULL;
112932 l_adr_flexfield_segment_code := NULL;
112933 l_adr_flex_value_set_id := NULL;
112934 l_adr_value_type_code := NULL;
112935 l_adr_value_combination_id := NULL;
112936 l_adr_value_segment_code := NULL;
112937
112938 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
112939 l_bflow_class_code := ''; -- 4219869 Business Flow
112940 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
112941 l_budgetary_control_flag := 'N';
112942
112943 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112944 l_bflow_applied_to_amt := NULL; -- 5132302
112945 l_entered_amt_idx := NULL; -- 4262811
112946 l_accted_amt_idx := NULL; -- 4262811
112947 l_acc_rev_flag := NULL; -- 4262811
112948 l_accrual_line_num := NULL; -- 4262811
112949 l_tmp_amt := NULL; -- 4262811
112950 --
112951
112952 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112953 l_balance_type_code <> 'B' THEN
112954 IF NVL(p_source_2,'
112955 ') = 'RUV'
112956 THEN
112957
112958 --
112959 XLA_AE_LINES_PKG.SetNewLine;
112960
112961 p_balance_type_code := l_balance_type_code;
112962 -- set the flag so later we will know whether the gain loss line needs to be created
112963
112964 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112965 p_actual_flag :='A';
112966 END IF;
112967
112968 --
112969 -- bulk performance
112970 --
112971 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112972 p_header_num => 0); -- 4262811
112973 --
112974 -- set accounting line options
112975 --
112976 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112977 p_natural_side_code => 'D'
112978 , p_gain_or_loss_flag => 'N'
112979 , p_gl_transfer_mode_code => 'D'
112980 , p_acct_entry_type_code => 'A'
112981 , p_switch_side_flag => 'Y'
112982 , p_merge_duplicate_code => 'W'
112983 );
112984 --
112985 l_acc_rev_natural_side_code := 'C'; -- 4262811
112986 --
112987 --
112988 -- set accounting line type info
112989 --
112990 xla_ae_lines_pkg.SetAcctLineType
112991 (p_component_type => l_component_type
112992 ,p_event_type_code => l_event_type_code
112993 ,p_line_definition_owner_code => l_line_definition_owner_code
112994 ,p_line_definition_code => l_line_definition_code
112995 ,p_accounting_line_code => l_component_code
112996 ,p_accounting_line_type_code => l_component_type_code
112997 ,p_accounting_line_appl_id => l_component_appl_id
112998 ,p_amb_context_code => l_amb_context_code
112999 ,p_entity_code => l_entity_code
113000 ,p_event_class_code => l_event_class_code);
113001 --
113002 -- set accounting class
113003 --
113004 xla_ae_lines_pkg.SetAcctClass(
113005 p_accounting_class_code => 'RUV'
113006 , p_ae_header_id => l_ae_header_id
113007 );
113008
113009 --
113010 -- set rounding class
113011 --
113012 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113013 'RUV';
113014
113015 --
113016 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113017 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113018 --
113019 -- bulk performance
113020 --
113021 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113022
113023 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113024 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113025
113026 -- 4955764
113027 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113028 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113029
113030 -- 4458381 Public Sector Enh
113031
113032 --
113033 -- set accounting attributes for the line type
113034 --
113035 l_entered_amt_idx := 3;
113036 l_accted_amt_idx := 8;
113037 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113038 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113039 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
113040 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113041 l_rec_acct_attrs.array_char_value(2) := p_source_6;
113045 l_rec_acct_attrs.array_char_value(4) := p_source_7;
113042 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113043 l_rec_acct_attrs.array_num_value(3) := p_source_3;
113044 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113046 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113047 l_rec_acct_attrs.array_date_value(5) := p_source_8;
113048 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113049 l_rec_acct_attrs.array_num_value(6) := p_source_9;
113050 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113051 l_rec_acct_attrs.array_char_value(7) := p_source_10;
113052 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113053 l_rec_acct_attrs.array_num_value(8) := p_source_11;
113054
113055 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113056 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113057
113058 ---------------------------------------------------------------------------------------------------------------
113059 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113060 ---------------------------------------------------------------------------------------------------------------
113061 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113062
113063 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113064 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113065
113066 IF xla_accounting_cache_pkg.GetValueChar
113067 (p_source_code => 'LEDGER_CATEGORY_CODE'
113068 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113069 AND l_bflow_method_code = 'PRIOR_ENTRY'
113070 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113071 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113072 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113073 )
113074 THEN
113075 xla_ae_lines_pkg.BflowUpgEntry
113076 (p_business_method_code => l_bflow_method_code
113077 ,p_business_class_code => l_bflow_class_code
113078 ,p_balance_type => l_balance_type_code);
113079 ELSE
113080 NULL;
113081 -- No business flow processing for business flow method of NONE.
113082 END IF;
113083
113084 --
113085 -- call analytical criteria
113086 --
113087
113088 --
113089 -- call description
113090 --
113091 -- No description or it is inherited.
113092 --
113093 -- call ADRs
113094 -- Bug 4922099
113095 --
113096 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113097 (NVL(l_actual_upg_option, 'N') = 'O') OR
113098 (NVL(l_enc_upg_option, 'N') = 'O')
113099 )
113100 THEN
113101 NULL;
113102 --
113103 --
113104
113105 l_ccid := AcctDerRule_36(
113106 p_application_id => p_application_id
113107 , p_ae_header_id => l_ae_header_id
113108 , p_source_1 => p_source_1
113109 , p_source_2 => p_source_2
113110 , x_transaction_coa_id => l_adr_transaction_coa_id
113111 , x_accounting_coa_id => l_adr_accounting_coa_id
113112 , x_value_type_code => l_adr_value_type_code
113113 , p_side => 'NA'
113114 );
113115
113116 xla_ae_lines_pkg.set_ccid(
113117 p_code_combination_id => l_ccid
113118 , p_value_type_code => l_adr_value_type_code
113119 , p_transaction_coa_id => l_adr_transaction_coa_id
113120 , p_accounting_coa_id => l_adr_accounting_coa_id
113121 , p_adr_code => 'RUV'
113122 , p_adr_type_code => 'S'
113123 , p_component_type => l_component_type
113124 , p_component_code => l_component_code
113125 , p_component_type_code => l_component_type_code
113126 , p_component_appl_id => l_component_appl_id
113127 , p_amb_context_code => l_amb_context_code
113128 , p_side => 'NA'
113129 );
113130
113131
113132 --
113133 --
113134 END IF;
113135 --
113136 -- Bug 4922099
113137 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113138 (NVL(l_enc_upg_option, 'N') = 'O')
113139 ) AND
113140 (l_bflow_method_code = 'PRIOR_ENTRY')
113141 )
113142 THEN
113143 IF
113144 --
113145 1 = 2
113146 --
113147 THEN
113148 xla_accounting_err_pkg.build_message
113149 (p_appli_s_name => 'XLA'
113150 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113151 ,p_token_1 => 'LINE_NUMBER'
113152 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
113153 ,p_token_2 => 'LINE_TYPE_NAME'
113154 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
113155 l_component_type
113156 ,l_component_code
113160 ,l_entity_code
113157 ,l_component_type_code
113158 ,l_component_appl_id
113159 ,l_amb_context_code
113161 ,l_event_class_code
113162 )
113163 ,p_token_3 => 'OWNER'
113164 ,p_value_3 => xla_lookups_pkg.get_meaning(
113165 p_lookup_type => 'XLA_OWNER_TYPE'
113166 ,p_lookup_code => l_component_type_code
113167 )
113168 ,p_token_4 => 'PRODUCT_NAME'
113169 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113170 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113171 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113172 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113173 ,p_ae_header_id => NULL
113174 );
113175
113176 IF (C_LEVEL_ERROR>= g_log_level) THEN
113177 trace
113178 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113179 ,p_level => C_LEVEL_ERROR
113180 ,p_module => l_log_module);
113181 END IF;
113182 END IF;
113183 END IF;
113184 --
113185 --
113186 ------------------------------------------------------------------------------------------------
113187 -- 4219869 Business Flow
113188 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113189 -- Prior Entry. Currently, the following code is always generated.
113190 ------------------------------------------------------------------------------------------------
113191 XLA_AE_LINES_PKG.ValidateCurrentLine;
113192
113193 ------------------------------------------------------------------------------------
113194 -- 4219869 Business Flow
113195 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113196 ------------------------------------------------------------------------------------
113197 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113198
113199 ----------------------------------------------------------------------------------
113200 -- 4219869 Business Flow
113201 -- Update journal entry status -- Need to generate this within IF <condition>
113202 ----------------------------------------------------------------------------------
113203 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113204 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113205 ,p_balance_type_code => l_balance_type_code
113206 );
113207
113208 -------------------------------------------------------------------------------------------
113209 -- 4262811 - Generate the Accrual Reversal lines
113210 -------------------------------------------------------------------------------------------
113211 BEGIN
113212 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113213 (g_array_event(p_event_id).array_value_num('header_index'));
113214 IF l_acc_rev_flag IS NULL THEN
113215 l_acc_rev_flag := 'N';
113216 END IF;
113217 EXCEPTION
113218 WHEN OTHERS THEN
113219 l_acc_rev_flag := 'N';
113220 END;
113221 --
113222 IF (l_acc_rev_flag = 'Y') THEN
113223
113224 -- 4645092 ------------------------------------------------------------------------------
113225 -- To allow MPA report to determine if it should generate report process
113226 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113227 ------------------------------------------------------------------------------------------
113228
113229 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113230 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113231 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
113232 -- call ADRs
113233 -- Bug 4922099
113234 --
113235 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113236 (NVL(l_actual_upg_option, 'N') = 'O') OR
113237 (NVL(l_enc_upg_option, 'N') = 'O')
113238 )
113239 THEN
113240 NULL;
113241 --
113242 --
113243
113244 l_ccid := AcctDerRule_36(
113245 p_application_id => p_application_id
113246 , p_ae_header_id => l_ae_header_id
113247 , p_source_1 => p_source_1
113248 , p_source_2 => p_source_2
113249 , x_transaction_coa_id => l_adr_transaction_coa_id
113250 , x_accounting_coa_id => l_adr_accounting_coa_id
113251 , x_value_type_code => l_adr_value_type_code
113252 , p_side => 'NA'
113253 );
113254
113258 , p_transaction_coa_id => l_adr_transaction_coa_id
113255 xla_ae_lines_pkg.set_ccid(
113256 p_code_combination_id => l_ccid
113257 , p_value_type_code => l_adr_value_type_code
113259 , p_accounting_coa_id => l_adr_accounting_coa_id
113260 , p_adr_code => 'RUV'
113261 , p_adr_type_code => 'S'
113262 , p_component_type => l_component_type
113263 , p_component_code => l_component_code
113264 , p_component_type_code => l_component_type_code
113265 , p_component_appl_id => l_component_appl_id
113266 , p_amb_context_code => l_amb_context_code
113267 , p_side => 'NA'
113268 );
113269
113270
113271 --
113272 --
113273 END IF;
113274
113275 --
113276 -- Update the line information that should be overwritten
113277 --
113278 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113279 p_header_num => 1);
113280 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
113281
113282 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113283
113284 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
113285 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113286 END IF;
113287
113288 --
113289 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113290 --
113291 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113292 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
113293 ELSE
113294 ---------------------------------------------------------------------------------------------------
113295 -- 4262811a Switch Sign
113296 ---------------------------------------------------------------------------------------------------
113297 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
113298 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113299 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113300 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113301 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113302 -- 5132302
113303 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113304 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113305
113306 END IF;
113307
113308 -- 4955764
113309 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113310 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113311
113312
113313 XLA_AE_LINES_PKG.ValidateCurrentLine;
113314 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113315
113316 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113317 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113318 ,p_balance_type_code => l_balance_type_code);
113319
113320 END IF;
113321
113322 -----------------------------------------------------------------------------------------
113323 -- 4262811 Multiperiod Accounting
113324 -----------------------------------------------------------------------------------------
113325 -- No MPA option is assigned.
113326
113327
113328 END IF;
113329 END IF;
113330 --
113331
113332 --
113333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113334 trace
113335 (p_msg => 'END of AcctLineType_236'
113336 ,p_level => C_LEVEL_PROCEDURE
113337 ,p_module => l_log_module);
113338 END IF;
113339 --
113340 EXCEPTION
113341 WHEN xla_exceptions_pkg.application_exception THEN
113342 RAISE;
113343 WHEN OTHERS THEN
113344 xla_exceptions_pkg.raise_message
113345 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_236');
113346 END AcctLineType_236;
113347 --
113348
113349 ---------------------------------------
113350 --
113351 -- PRIVATE FUNCTION
113352 -- AcctLineType_237
113353 --
113354 ---------------------------------------
113355 PROCEDURE AcctLineType_237 (
113356 p_application_id IN NUMBER
113357 ,p_event_id IN NUMBER
113358 ,p_calculate_acctd_flag IN VARCHAR2
113359 ,p_calculate_g_l_flag IN VARCHAR2
113360 ,p_actual_flag IN OUT VARCHAR2
113361 ,p_balance_type_code OUT VARCHAR2
113362 ,p_gain_or_loss_ref OUT VARCHAR2
113363
113364 --Transaction Account
113365 , p_source_1 IN NUMBER
113366 --Journal Line Type
113367 , p_source_2 IN VARCHAR2
113368 --Entered Amount
113369 , p_source_3 IN NUMBER
113370 --First Distribution Identifier
113371 , p_source_5 IN NUMBER
113372 --Distribution Type
113373 , p_source_6 IN VARCHAR2
113374 --Currency Code
113375 , p_source_7 IN VARCHAR2
113376 --Currency Conversion Date
113377 , p_source_8 IN DATE
113378 --Currency Conversion Rate
113379 , p_source_9 IN NUMBER
113383 , p_source_11 IN NUMBER
113380 --Currency Conversion Type
113381 , p_source_10 IN VARCHAR2
113382 --Accounted Amount
113384 )
113385 IS
113386
113387 l_component_type VARCHAR2(80);
113388 l_component_code VARCHAR2(30);
113389 l_component_type_code VARCHAR2(1);
113390 l_component_appl_id INTEGER;
113391 l_amb_context_code VARCHAR2(30);
113392 l_entity_code VARCHAR2(30);
113393 l_event_class_code VARCHAR2(30);
113394 l_ae_header_id NUMBER;
113395 l_event_type_code VARCHAR2(30);
113396 l_line_definition_code VARCHAR2(30);
113397 l_line_definition_owner_code VARCHAR2(1);
113398 --
113399 -- adr variables
113400 l_segment VARCHAR2(30);
113401 l_ccid NUMBER;
113402 l_adr_transaction_coa_id NUMBER;
113403 l_adr_accounting_coa_id NUMBER;
113404 l_adr_flexfield_segment_code VARCHAR2(30);
113405 l_adr_flex_value_set_id NUMBER;
113406 l_adr_value_type_code VARCHAR2(30);
113407 l_adr_value_combination_id NUMBER;
113408 l_adr_value_segment_code VARCHAR2(30);
113409
113410 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
113411 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
113412 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
113413 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
113414
113415 -- 4262811 Variables ------------------------------------------------------------------------------------------
113416 l_entered_amt_idx NUMBER;
113417 l_accted_amt_idx NUMBER;
113418 l_acc_rev_flag VARCHAR2(1);
113419 l_accrual_line_num NUMBER;
113420 l_tmp_amt NUMBER;
113421 l_acc_rev_natural_side_code VARCHAR2(1);
113422
113423 l_num_entries NUMBER;
113424 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
113425 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
113426 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
113427 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
113428 l_recog_line_1 NUMBER;
113429 l_recog_line_2 NUMBER;
113430
113431 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
113432 l_bflow_applied_to_amt NUMBER; -- 5132302
113433 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
113434
113435 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113436
113437 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
113438 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
113439
113440 ---------------------------------------------------------------------------------------------------------------
113441
113442
113443 --
113444 -- bulk performance
113445 --
113446 l_balance_type_code VARCHAR2(1);
113447 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
113448 l_log_module VARCHAR2(240);
113449
113450 --
113451 -- Upgrade strategy
113452 --
113453 l_actual_upg_option VARCHAR2(1);
113454 l_enc_upg_option VARCHAR2(1);
113455
113456 --
113457 BEGIN
113458 --
113459 IF g_log_enabled THEN
113460 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_237';
113461 END IF;
113462 --
113463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113464
113465 trace
113466 (p_msg => 'BEGIN of AcctLineType_237'
113467 ,p_level => C_LEVEL_PROCEDURE
113468 ,p_module => l_log_module);
113469
113470 END IF;
113471 --
113472 l_component_type := 'AMB_JLT';
113473 l_component_code := 'SUB';
113474 l_component_type_code := 'S';
113475 l_component_appl_id := 555;
113476 l_amb_context_code := 'DEFAULT';
113477 l_entity_code := 'PRODUCTION';
113478 l_event_class_code := 'BATCH_CLOSE';
113479 l_event_type_code := 'CLOS';
113480 l_line_definition_owner_code := 'S';
113481 l_line_definition_code := 'BATCH_CLOSE';
113482 --
113483 l_balance_type_code := 'A';
113484 l_segment := NULL;
113485 l_ccid := NULL;
113486 l_adr_transaction_coa_id := NULL;
113487 l_adr_accounting_coa_id := NULL;
113488 l_adr_flexfield_segment_code := NULL;
113489 l_adr_flex_value_set_id := NULL;
113490 l_adr_value_type_code := NULL;
113491 l_adr_value_combination_id := NULL;
113492 l_adr_value_segment_code := NULL;
113493
113494 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
113495 l_bflow_class_code := ''; -- 4219869 Business Flow
113496 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
113497 l_budgetary_control_flag := 'N';
113498
113499 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113500 l_bflow_applied_to_amt := NULL; -- 5132302
113501 l_entered_amt_idx := NULL; -- 4262811
113502 l_accted_amt_idx := NULL; -- 4262811
113503 l_acc_rev_flag := NULL; -- 4262811
113504 l_accrual_line_num := NULL; -- 4262811
113505 l_tmp_amt := NULL; -- 4262811
113506 --
113507
113511 ') = 'SUB'
113508 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113509 l_balance_type_code <> 'B' THEN
113510 IF NVL(p_source_2,'
113512 THEN
113513
113514 --
113515 XLA_AE_LINES_PKG.SetNewLine;
113516
113517 p_balance_type_code := l_balance_type_code;
113518 -- set the flag so later we will know whether the gain loss line needs to be created
113519
113520 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113521 p_actual_flag :='A';
113522 END IF;
113523
113524 --
113525 -- bulk performance
113526 --
113527 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113528 p_header_num => 0); -- 4262811
113529 --
113530 -- set accounting line options
113531 --
113532 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113533 p_natural_side_code => 'D'
113534 , p_gain_or_loss_flag => 'N'
113535 , p_gl_transfer_mode_code => 'D'
113536 , p_acct_entry_type_code => 'A'
113537 , p_switch_side_flag => 'Y'
113538 , p_merge_duplicate_code => 'W'
113539 );
113540 --
113541 l_acc_rev_natural_side_code := 'C'; -- 4262811
113542 --
113543 --
113544 -- set accounting line type info
113545 --
113546 xla_ae_lines_pkg.SetAcctLineType
113547 (p_component_type => l_component_type
113548 ,p_event_type_code => l_event_type_code
113549 ,p_line_definition_owner_code => l_line_definition_owner_code
113550 ,p_line_definition_code => l_line_definition_code
113551 ,p_accounting_line_code => l_component_code
113552 ,p_accounting_line_type_code => l_component_type_code
113553 ,p_accounting_line_appl_id => l_component_appl_id
113554 ,p_amb_context_code => l_amb_context_code
113555 ,p_entity_code => l_entity_code
113556 ,p_event_class_code => l_event_class_code);
113557 --
113558 -- set accounting class
113559 --
113560 xla_ae_lines_pkg.SetAcctClass(
113561 p_accounting_class_code => 'SUB'
113562 , p_ae_header_id => l_ae_header_id
113563 );
113564
113565 --
113566 -- set rounding class
113567 --
113568 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113569 'SUB';
113570
113571 --
113572 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113573 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113574 --
113575 -- bulk performance
113576 --
113577 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113578
113579 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113580 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113581
113582 -- 4955764
113583 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113584 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113585
113586 -- 4458381 Public Sector Enh
113587
113588 --
113589 -- set accounting attributes for the line type
113590 --
113591 l_entered_amt_idx := 3;
113592 l_accted_amt_idx := 8;
113593 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113594 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113595 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
113596 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113597 l_rec_acct_attrs.array_char_value(2) := p_source_6;
113598 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113599 l_rec_acct_attrs.array_num_value(3) := p_source_3;
113600 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113601 l_rec_acct_attrs.array_char_value(4) := p_source_7;
113602 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113603 l_rec_acct_attrs.array_date_value(5) := p_source_8;
113604 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113605 l_rec_acct_attrs.array_num_value(6) := p_source_9;
113606 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113607 l_rec_acct_attrs.array_char_value(7) := p_source_10;
113608 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113609 l_rec_acct_attrs.array_num_value(8) := p_source_11;
113610
113611 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113612 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113613
113614 ---------------------------------------------------------------------------------------------------------------
113615 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113616 ---------------------------------------------------------------------------------------------------------------
113617 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113618
113619 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113620 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113621
113625 AND l_bflow_method_code = 'PRIOR_ENTRY'
113622 IF xla_accounting_cache_pkg.GetValueChar
113623 (p_source_code => 'LEDGER_CATEGORY_CODE'
113624 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113626 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113627 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113628 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113629 )
113630 THEN
113631 xla_ae_lines_pkg.BflowUpgEntry
113632 (p_business_method_code => l_bflow_method_code
113633 ,p_business_class_code => l_bflow_class_code
113634 ,p_balance_type => l_balance_type_code);
113635 ELSE
113636 NULL;
113637 -- No business flow processing for business flow method of NONE.
113638 END IF;
113639
113640 --
113641 -- call analytical criteria
113642 --
113643
113644 --
113645 -- call description
113646 --
113647 -- No description or it is inherited.
113648 --
113649 -- call ADRs
113650 -- Bug 4922099
113651 --
113652 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113653 (NVL(l_actual_upg_option, 'N') = 'O') OR
113654 (NVL(l_enc_upg_option, 'N') = 'O')
113655 )
113656 THEN
113657 NULL;
113658 --
113659 --
113660
113661 l_ccid := AcctDerRule_37(
113662 p_application_id => p_application_id
113663 , p_ae_header_id => l_ae_header_id
113664 , p_source_1 => p_source_1
113665 , p_source_2 => p_source_2
113666 , x_transaction_coa_id => l_adr_transaction_coa_id
113667 , x_accounting_coa_id => l_adr_accounting_coa_id
113668 , x_value_type_code => l_adr_value_type_code
113669 , p_side => 'NA'
113670 );
113671
113672 xla_ae_lines_pkg.set_ccid(
113673 p_code_combination_id => l_ccid
113674 , p_value_type_code => l_adr_value_type_code
113675 , p_transaction_coa_id => l_adr_transaction_coa_id
113676 , p_accounting_coa_id => l_adr_accounting_coa_id
113677 , p_adr_code => 'SUB'
113678 , p_adr_type_code => 'S'
113679 , p_component_type => l_component_type
113680 , p_component_code => l_component_code
113681 , p_component_type_code => l_component_type_code
113682 , p_component_appl_id => l_component_appl_id
113683 , p_amb_context_code => l_amb_context_code
113684 , p_side => 'NA'
113685 );
113686
113687
113688 --
113689 --
113690 END IF;
113691 --
113692 -- Bug 4922099
113693 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113694 (NVL(l_enc_upg_option, 'N') = 'O')
113695 ) AND
113696 (l_bflow_method_code = 'PRIOR_ENTRY')
113697 )
113698 THEN
113699 IF
113700 --
113701 1 = 2
113702 --
113703 THEN
113704 xla_accounting_err_pkg.build_message
113705 (p_appli_s_name => 'XLA'
113706 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113707 ,p_token_1 => 'LINE_NUMBER'
113708 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
113709 ,p_token_2 => 'LINE_TYPE_NAME'
113710 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
113711 l_component_type
113712 ,l_component_code
113713 ,l_component_type_code
113714 ,l_component_appl_id
113715 ,l_amb_context_code
113716 ,l_entity_code
113717 ,l_event_class_code
113718 )
113719 ,p_token_3 => 'OWNER'
113720 ,p_value_3 => xla_lookups_pkg.get_meaning(
113721 p_lookup_type => 'XLA_OWNER_TYPE'
113722 ,p_lookup_code => l_component_type_code
113723 )
113724 ,p_token_4 => 'PRODUCT_NAME'
113725 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113726 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113727 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113728 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113729 ,p_ae_header_id => NULL
113730 );
113731
113735 ,p_level => C_LEVEL_ERROR
113732 IF (C_LEVEL_ERROR>= g_log_level) THEN
113733 trace
113734 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113736 ,p_module => l_log_module);
113737 END IF;
113738 END IF;
113739 END IF;
113740 --
113741 --
113742 ------------------------------------------------------------------------------------------------
113743 -- 4219869 Business Flow
113744 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113745 -- Prior Entry. Currently, the following code is always generated.
113746 ------------------------------------------------------------------------------------------------
113747 XLA_AE_LINES_PKG.ValidateCurrentLine;
113748
113749 ------------------------------------------------------------------------------------
113750 -- 4219869 Business Flow
113751 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113752 ------------------------------------------------------------------------------------
113753 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113754
113755 ----------------------------------------------------------------------------------
113756 -- 4219869 Business Flow
113757 -- Update journal entry status -- Need to generate this within IF <condition>
113758 ----------------------------------------------------------------------------------
113759 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113760 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113761 ,p_balance_type_code => l_balance_type_code
113762 );
113763
113764 -------------------------------------------------------------------------------------------
113765 -- 4262811 - Generate the Accrual Reversal lines
113766 -------------------------------------------------------------------------------------------
113767 BEGIN
113768 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113769 (g_array_event(p_event_id).array_value_num('header_index'));
113770 IF l_acc_rev_flag IS NULL THEN
113771 l_acc_rev_flag := 'N';
113772 END IF;
113773 EXCEPTION
113774 WHEN OTHERS THEN
113775 l_acc_rev_flag := 'N';
113776 END;
113777 --
113778 IF (l_acc_rev_flag = 'Y') THEN
113779
113780 -- 4645092 ------------------------------------------------------------------------------
113781 -- To allow MPA report to determine if it should generate report process
113782 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113783 ------------------------------------------------------------------------------------------
113784
113785 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113786 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113787 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
113788 -- call ADRs
113789 -- Bug 4922099
113790 --
113791 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113792 (NVL(l_actual_upg_option, 'N') = 'O') OR
113793 (NVL(l_enc_upg_option, 'N') = 'O')
113794 )
113795 THEN
113796 NULL;
113797 --
113798 --
113799
113800 l_ccid := AcctDerRule_37(
113801 p_application_id => p_application_id
113802 , p_ae_header_id => l_ae_header_id
113803 , p_source_1 => p_source_1
113804 , p_source_2 => p_source_2
113805 , x_transaction_coa_id => l_adr_transaction_coa_id
113806 , x_accounting_coa_id => l_adr_accounting_coa_id
113807 , x_value_type_code => l_adr_value_type_code
113808 , p_side => 'NA'
113809 );
113810
113811 xla_ae_lines_pkg.set_ccid(
113812 p_code_combination_id => l_ccid
113813 , p_value_type_code => l_adr_value_type_code
113814 , p_transaction_coa_id => l_adr_transaction_coa_id
113815 , p_accounting_coa_id => l_adr_accounting_coa_id
113816 , p_adr_code => 'SUB'
113817 , p_adr_type_code => 'S'
113818 , p_component_type => l_component_type
113819 , p_component_code => l_component_code
113820 , p_component_type_code => l_component_type_code
113821 , p_component_appl_id => l_component_appl_id
113822 , p_amb_context_code => l_amb_context_code
113823 , p_side => 'NA'
113824 );
113825
113826
113827 --
113828 --
113829 END IF;
113830
113831 --
113832 -- Update the line information that should be overwritten
113833 --
113834 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113835 p_header_num => 1);
113836 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
113837
113838 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113839
113840 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
113841 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113842 END IF;
113843
113844 --
113845 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113846 --
113850 ---------------------------------------------------------------------------------------------------
113847 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113848 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
113849 ELSE
113851 -- 4262811a Switch Sign
113852 ---------------------------------------------------------------------------------------------------
113853 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
113854 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113855 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113856 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113857 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113858 -- 5132302
113859 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113860 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113861
113862 END IF;
113863
113864 -- 4955764
113865 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113866 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113867
113868
113869 XLA_AE_LINES_PKG.ValidateCurrentLine;
113870 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113871
113872 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113873 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113874 ,p_balance_type_code => l_balance_type_code);
113875
113876 END IF;
113877
113878 -----------------------------------------------------------------------------------------
113879 -- 4262811 Multiperiod Accounting
113880 -----------------------------------------------------------------------------------------
113881 -- No MPA option is assigned.
113882
113883
113884 END IF;
113885 END IF;
113886 --
113887
113888 --
113889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113890 trace
113891 (p_msg => 'END of AcctLineType_237'
113892 ,p_level => C_LEVEL_PROCEDURE
113893 ,p_module => l_log_module);
113894 END IF;
113895 --
113896 EXCEPTION
113897 WHEN xla_exceptions_pkg.application_exception THEN
113898 RAISE;
113899 WHEN OTHERS THEN
113900 xla_exceptions_pkg.raise_message
113901 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_237');
113902 END AcctLineType_237;
113903 --
113904
113905 ---------------------------------------
113906 --
113907 -- PRIVATE FUNCTION
113908 -- AcctLineType_238
113909 --
113910 ---------------------------------------
113911 PROCEDURE AcctLineType_238 (
113912 p_application_id IN NUMBER
113913 ,p_event_id IN NUMBER
113914 ,p_calculate_acctd_flag IN VARCHAR2
113915 ,p_calculate_g_l_flag IN VARCHAR2
113916 ,p_actual_flag IN OUT VARCHAR2
113917 ,p_balance_type_code OUT VARCHAR2
113918 ,p_gain_or_loss_ref OUT VARCHAR2
113919
113920 --Transaction Account
113921 , p_source_1 IN NUMBER
113922 --Journal Line Type
113923 , p_source_2 IN VARCHAR2
113924 --Entered Amount
113925 , p_source_3 IN NUMBER
113926 --First Distribution Identifier
113927 , p_source_5 IN NUMBER
113928 --Distribution Type
113929 , p_source_6 IN VARCHAR2
113930 --Currency Code
113931 , p_source_7 IN VARCHAR2
113932 --Currency Conversion Date
113933 , p_source_8 IN DATE
113934 --Currency Conversion Rate
113935 , p_source_9 IN NUMBER
113936 --Currency Conversion Type
113937 , p_source_10 IN VARCHAR2
113938 --Accounted Amount
113939 , p_source_11 IN NUMBER
113940 )
113941 IS
113942
113943 l_component_type VARCHAR2(80);
113944 l_component_code VARCHAR2(30);
113945 l_component_type_code VARCHAR2(1);
113946 l_component_appl_id INTEGER;
113947 l_amb_context_code VARCHAR2(30);
113948 l_entity_code VARCHAR2(30);
113949 l_event_class_code VARCHAR2(30);
113950 l_ae_header_id NUMBER;
113951 l_event_type_code VARCHAR2(30);
113952 l_line_definition_code VARCHAR2(30);
113953 l_line_definition_owner_code VARCHAR2(1);
113954 --
113955 -- adr variables
113956 l_segment VARCHAR2(30);
113957 l_ccid NUMBER;
113958 l_adr_transaction_coa_id NUMBER;
113959 l_adr_accounting_coa_id NUMBER;
113960 l_adr_flexfield_segment_code VARCHAR2(30);
113961 l_adr_flex_value_set_id NUMBER;
113962 l_adr_value_type_code VARCHAR2(30);
113963 l_adr_value_combination_id NUMBER;
113964 l_adr_value_segment_code VARCHAR2(30);
113965
113966 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
113967 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
113968 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
113969 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
113970
113971 -- 4262811 Variables ------------------------------------------------------------------------------------------
113972 l_entered_amt_idx NUMBER;
113976 l_tmp_amt NUMBER;
113973 l_accted_amt_idx NUMBER;
113974 l_acc_rev_flag VARCHAR2(1);
113975 l_accrual_line_num NUMBER;
113977 l_acc_rev_natural_side_code VARCHAR2(1);
113978
113979 l_num_entries NUMBER;
113980 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
113981 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
113982 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
113983 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
113984 l_recog_line_1 NUMBER;
113985 l_recog_line_2 NUMBER;
113986
113987 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
113988 l_bflow_applied_to_amt NUMBER; -- 5132302
113989 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
113990
113991 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113992
113993 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
113994 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
113995
113996 ---------------------------------------------------------------------------------------------------------------
113997
113998
113999 --
114000 -- bulk performance
114001 --
114002 l_balance_type_code VARCHAR2(1);
114003 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
114004 l_log_module VARCHAR2(240);
114005
114006 --
114007 -- Upgrade strategy
114008 --
114009 l_actual_upg_option VARCHAR2(1);
114010 l_enc_upg_option VARCHAR2(1);
114011
114012 --
114013 BEGIN
114014 --
114015 IF g_log_enabled THEN
114016 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_238';
114017 END IF;
114018 --
114019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114020
114021 trace
114022 (p_msg => 'BEGIN of AcctLineType_238'
114023 ,p_level => C_LEVEL_PROCEDURE
114024 ,p_module => l_log_module);
114025
114026 END IF;
114027 --
114028 l_component_type := 'AMB_JLT';
114029 l_component_code := 'USG';
114030 l_component_type_code := 'S';
114031 l_component_appl_id := 555;
114032 l_amb_context_code := 'DEFAULT';
114033 l_entity_code := 'PRODUCTION';
114034 l_event_class_code := 'BATCH_CLOSE';
114035 l_event_type_code := 'CLOS';
114036 l_line_definition_owner_code := 'S';
114037 l_line_definition_code := 'BATCH_CLOSE';
114038 --
114039 l_balance_type_code := 'A';
114040 l_segment := NULL;
114041 l_ccid := NULL;
114042 l_adr_transaction_coa_id := NULL;
114043 l_adr_accounting_coa_id := NULL;
114044 l_adr_flexfield_segment_code := NULL;
114045 l_adr_flex_value_set_id := NULL;
114046 l_adr_value_type_code := NULL;
114047 l_adr_value_combination_id := NULL;
114048 l_adr_value_segment_code := NULL;
114049
114050 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
114051 l_bflow_class_code := ''; -- 4219869 Business Flow
114052 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
114053 l_budgetary_control_flag := 'N';
114054
114055 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114056 l_bflow_applied_to_amt := NULL; -- 5132302
114057 l_entered_amt_idx := NULL; -- 4262811
114058 l_accted_amt_idx := NULL; -- 4262811
114059 l_acc_rev_flag := NULL; -- 4262811
114060 l_accrual_line_num := NULL; -- 4262811
114061 l_tmp_amt := NULL; -- 4262811
114062 --
114063
114064 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114065 l_balance_type_code <> 'B' THEN
114066 IF NVL(p_source_2,'
114067 ') = 'USG'
114068 THEN
114069
114070 --
114071 XLA_AE_LINES_PKG.SetNewLine;
114072
114073 p_balance_type_code := l_balance_type_code;
114074 -- set the flag so later we will know whether the gain loss line needs to be created
114075
114076 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114077 p_actual_flag :='A';
114078 END IF;
114079
114080 --
114081 -- bulk performance
114082 --
114083 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114084 p_header_num => 0); -- 4262811
114085 --
114086 -- set accounting line options
114087 --
114088 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114089 p_natural_side_code => 'D'
114090 , p_gain_or_loss_flag => 'N'
114091 , p_gl_transfer_mode_code => 'D'
114092 , p_acct_entry_type_code => 'A'
114093 , p_switch_side_flag => 'Y'
114094 , p_merge_duplicate_code => 'W'
114095 );
114096 --
114097 l_acc_rev_natural_side_code := 'C'; -- 4262811
114098 --
114099 --
114100 -- set accounting line type info
114101 --
114102 xla_ae_lines_pkg.SetAcctLineType
114103 (p_component_type => l_component_type
114104 ,p_event_type_code => l_event_type_code
114105 ,p_line_definition_owner_code => l_line_definition_owner_code
114109 ,p_accounting_line_appl_id => l_component_appl_id
114106 ,p_line_definition_code => l_line_definition_code
114107 ,p_accounting_line_code => l_component_code
114108 ,p_accounting_line_type_code => l_component_type_code
114110 ,p_amb_context_code => l_amb_context_code
114111 ,p_entity_code => l_entity_code
114112 ,p_event_class_code => l_event_class_code);
114113 --
114114 -- set accounting class
114115 --
114116 xla_ae_lines_pkg.SetAcctClass(
114117 p_accounting_class_code => 'USG'
114118 , p_ae_header_id => l_ae_header_id
114119 );
114120
114121 --
114122 -- set rounding class
114123 --
114124 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114125 'USG';
114126
114127 --
114128 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114129 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114130 --
114131 -- bulk performance
114132 --
114133 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114134
114135 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114136 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114137
114138 -- 4955764
114139 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114140 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114141
114142 -- 4458381 Public Sector Enh
114143
114144 --
114145 -- set accounting attributes for the line type
114146 --
114147 l_entered_amt_idx := 3;
114148 l_accted_amt_idx := 8;
114149 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114150 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114151 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
114152 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114153 l_rec_acct_attrs.array_char_value(2) := p_source_6;
114154 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114155 l_rec_acct_attrs.array_num_value(3) := p_source_3;
114156 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114157 l_rec_acct_attrs.array_char_value(4) := p_source_7;
114158 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114159 l_rec_acct_attrs.array_date_value(5) := p_source_8;
114160 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114161 l_rec_acct_attrs.array_num_value(6) := p_source_9;
114162 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114163 l_rec_acct_attrs.array_char_value(7) := p_source_10;
114164 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114165 l_rec_acct_attrs.array_num_value(8) := p_source_11;
114166
114167 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114168 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114169
114170 ---------------------------------------------------------------------------------------------------------------
114171 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114172 ---------------------------------------------------------------------------------------------------------------
114173 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114174
114175 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114176 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114177
114178 IF xla_accounting_cache_pkg.GetValueChar
114179 (p_source_code => 'LEDGER_CATEGORY_CODE'
114180 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114181 AND l_bflow_method_code = 'PRIOR_ENTRY'
114182 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114183 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114184 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114185 )
114186 THEN
114187 xla_ae_lines_pkg.BflowUpgEntry
114188 (p_business_method_code => l_bflow_method_code
114189 ,p_business_class_code => l_bflow_class_code
114190 ,p_balance_type => l_balance_type_code);
114191 ELSE
114192 NULL;
114193 -- No business flow processing for business flow method of NONE.
114194 END IF;
114195
114196 --
114197 -- call analytical criteria
114198 --
114199
114200 --
114201 -- call description
114202 --
114203 -- No description or it is inherited.
114204 --
114205 -- call ADRs
114206 -- Bug 4922099
114207 --
114208 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114209 (NVL(l_actual_upg_option, 'N') = 'O') OR
114210 (NVL(l_enc_upg_option, 'N') = 'O')
114211 )
114212 THEN
114213 NULL;
114214 --
114215 --
114216
114217 l_ccid := AcctDerRule_38(
114218 p_application_id => p_application_id
114219 , p_ae_header_id => l_ae_header_id
114220 , p_source_1 => p_source_1
114221 , p_source_2 => p_source_2
114225 , p_side => 'NA'
114222 , x_transaction_coa_id => l_adr_transaction_coa_id
114223 , x_accounting_coa_id => l_adr_accounting_coa_id
114224 , x_value_type_code => l_adr_value_type_code
114226 );
114227
114228 xla_ae_lines_pkg.set_ccid(
114229 p_code_combination_id => l_ccid
114230 , p_value_type_code => l_adr_value_type_code
114231 , p_transaction_coa_id => l_adr_transaction_coa_id
114232 , p_accounting_coa_id => l_adr_accounting_coa_id
114233 , p_adr_code => 'USG'
114234 , p_adr_type_code => 'S'
114235 , p_component_type => l_component_type
114236 , p_component_code => l_component_code
114237 , p_component_type_code => l_component_type_code
114238 , p_component_appl_id => l_component_appl_id
114239 , p_amb_context_code => l_amb_context_code
114240 , p_side => 'NA'
114241 );
114242
114243
114244 --
114245 --
114246 END IF;
114247 --
114248 -- Bug 4922099
114249 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114250 (NVL(l_enc_upg_option, 'N') = 'O')
114251 ) AND
114252 (l_bflow_method_code = 'PRIOR_ENTRY')
114253 )
114254 THEN
114255 IF
114256 --
114257 1 = 2
114258 --
114259 THEN
114260 xla_accounting_err_pkg.build_message
114261 (p_appli_s_name => 'XLA'
114262 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114263 ,p_token_1 => 'LINE_NUMBER'
114264 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
114265 ,p_token_2 => 'LINE_TYPE_NAME'
114266 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
114267 l_component_type
114268 ,l_component_code
114269 ,l_component_type_code
114270 ,l_component_appl_id
114271 ,l_amb_context_code
114272 ,l_entity_code
114273 ,l_event_class_code
114274 )
114275 ,p_token_3 => 'OWNER'
114276 ,p_value_3 => xla_lookups_pkg.get_meaning(
114277 p_lookup_type => 'XLA_OWNER_TYPE'
114278 ,p_lookup_code => l_component_type_code
114279 )
114280 ,p_token_4 => 'PRODUCT_NAME'
114281 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114282 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114283 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114284 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114285 ,p_ae_header_id => NULL
114286 );
114287
114288 IF (C_LEVEL_ERROR>= g_log_level) THEN
114289 trace
114290 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114291 ,p_level => C_LEVEL_ERROR
114292 ,p_module => l_log_module);
114293 END IF;
114294 END IF;
114295 END IF;
114296 --
114297 --
114298 ------------------------------------------------------------------------------------------------
114299 -- 4219869 Business Flow
114300 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114301 -- Prior Entry. Currently, the following code is always generated.
114302 ------------------------------------------------------------------------------------------------
114303 XLA_AE_LINES_PKG.ValidateCurrentLine;
114304
114305 ------------------------------------------------------------------------------------
114306 -- 4219869 Business Flow
114307 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114308 ------------------------------------------------------------------------------------
114309 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114310
114311 ----------------------------------------------------------------------------------
114312 -- 4219869 Business Flow
114313 -- Update journal entry status -- Need to generate this within IF <condition>
114314 ----------------------------------------------------------------------------------
114315 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114316 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114320 -------------------------------------------------------------------------------------------
114317 ,p_balance_type_code => l_balance_type_code
114318 );
114319
114321 -- 4262811 - Generate the Accrual Reversal lines
114322 -------------------------------------------------------------------------------------------
114323 BEGIN
114324 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114325 (g_array_event(p_event_id).array_value_num('header_index'));
114326 IF l_acc_rev_flag IS NULL THEN
114327 l_acc_rev_flag := 'N';
114328 END IF;
114329 EXCEPTION
114330 WHEN OTHERS THEN
114331 l_acc_rev_flag := 'N';
114332 END;
114333 --
114334 IF (l_acc_rev_flag = 'Y') THEN
114335
114336 -- 4645092 ------------------------------------------------------------------------------
114337 -- To allow MPA report to determine if it should generate report process
114338 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114339 ------------------------------------------------------------------------------------------
114340
114341 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114342 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114343 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
114344 -- call ADRs
114345 -- Bug 4922099
114346 --
114347 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114348 (NVL(l_actual_upg_option, 'N') = 'O') OR
114349 (NVL(l_enc_upg_option, 'N') = 'O')
114350 )
114351 THEN
114352 NULL;
114353 --
114354 --
114355
114356 l_ccid := AcctDerRule_38(
114357 p_application_id => p_application_id
114358 , p_ae_header_id => l_ae_header_id
114359 , p_source_1 => p_source_1
114360 , p_source_2 => p_source_2
114361 , x_transaction_coa_id => l_adr_transaction_coa_id
114362 , x_accounting_coa_id => l_adr_accounting_coa_id
114363 , x_value_type_code => l_adr_value_type_code
114364 , p_side => 'NA'
114365 );
114366
114367 xla_ae_lines_pkg.set_ccid(
114368 p_code_combination_id => l_ccid
114369 , p_value_type_code => l_adr_value_type_code
114370 , p_transaction_coa_id => l_adr_transaction_coa_id
114371 , p_accounting_coa_id => l_adr_accounting_coa_id
114372 , p_adr_code => 'USG'
114373 , p_adr_type_code => 'S'
114374 , p_component_type => l_component_type
114375 , p_component_code => l_component_code
114376 , p_component_type_code => l_component_type_code
114377 , p_component_appl_id => l_component_appl_id
114378 , p_amb_context_code => l_amb_context_code
114379 , p_side => 'NA'
114380 );
114381
114382
114383 --
114384 --
114385 END IF;
114386
114387 --
114388 -- Update the line information that should be overwritten
114389 --
114390 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114391 p_header_num => 1);
114392 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
114393
114394 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114395
114396 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
114397 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114398 END IF;
114399
114400 --
114401 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114402 --
114403 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114404 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
114405 ELSE
114406 ---------------------------------------------------------------------------------------------------
114407 -- 4262811a Switch Sign
114408 ---------------------------------------------------------------------------------------------------
114409 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
114410 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114411 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114412 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114413 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114414 -- 5132302
114415 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114416 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114417
114418 END IF;
114419
114420 -- 4955764
114421 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114422 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114423
114424
114425 XLA_AE_LINES_PKG.ValidateCurrentLine;
114426 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114427
114428 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114432 END IF;
114429 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114430 ,p_balance_type_code => l_balance_type_code);
114431
114433
114434 -----------------------------------------------------------------------------------------
114435 -- 4262811 Multiperiod Accounting
114436 -----------------------------------------------------------------------------------------
114437 -- No MPA option is assigned.
114438
114439
114440 END IF;
114441 END IF;
114442 --
114443
114444 --
114445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114446 trace
114447 (p_msg => 'END of AcctLineType_238'
114448 ,p_level => C_LEVEL_PROCEDURE
114449 ,p_module => l_log_module);
114450 END IF;
114451 --
114452 EXCEPTION
114453 WHEN xla_exceptions_pkg.application_exception THEN
114454 RAISE;
114455 WHEN OTHERS THEN
114456 xla_exceptions_pkg.raise_message
114457 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_238');
114458 END AcctLineType_238;
114459 --
114460
114461 ---------------------------------------
114462 --
114463 -- PRIVATE FUNCTION
114464 -- AcctLineType_239
114465 --
114466 ---------------------------------------
114467 PROCEDURE AcctLineType_239 (
114468 p_application_id IN NUMBER
114469 ,p_event_id IN NUMBER
114470 ,p_calculate_acctd_flag IN VARCHAR2
114471 ,p_calculate_g_l_flag IN VARCHAR2
114472 ,p_actual_flag IN OUT VARCHAR2
114473 ,p_balance_type_code OUT VARCHAR2
114474 ,p_gain_or_loss_ref OUT VARCHAR2
114475
114476 --Transaction Account
114477 , p_source_1 IN NUMBER
114478 --Journal Line Type
114479 , p_source_2 IN VARCHAR2
114480 --Entered Amount
114481 , p_source_3 IN NUMBER
114482 --First Distribution Identifier
114483 , p_source_5 IN NUMBER
114484 --Distribution Type
114485 , p_source_6 IN VARCHAR2
114486 --Currency Code
114487 , p_source_7 IN VARCHAR2
114488 --Currency Conversion Date
114489 , p_source_8 IN DATE
114490 --Currency Conversion Rate
114491 , p_source_9 IN NUMBER
114492 --Currency Conversion Type
114493 , p_source_10 IN VARCHAR2
114494 --Accounted Amount
114495 , p_source_11 IN NUMBER
114496 )
114497 IS
114498
114499 l_component_type VARCHAR2(80);
114500 l_component_code VARCHAR2(30);
114501 l_component_type_code VARCHAR2(1);
114502 l_component_appl_id INTEGER;
114503 l_amb_context_code VARCHAR2(30);
114504 l_entity_code VARCHAR2(30);
114505 l_event_class_code VARCHAR2(30);
114506 l_ae_header_id NUMBER;
114507 l_event_type_code VARCHAR2(30);
114508 l_line_definition_code VARCHAR2(30);
114509 l_line_definition_owner_code VARCHAR2(1);
114510 --
114511 -- adr variables
114512 l_segment VARCHAR2(30);
114513 l_ccid NUMBER;
114514 l_adr_transaction_coa_id NUMBER;
114515 l_adr_accounting_coa_id NUMBER;
114516 l_adr_flexfield_segment_code VARCHAR2(30);
114517 l_adr_flex_value_set_id NUMBER;
114518 l_adr_value_type_code VARCHAR2(30);
114519 l_adr_value_combination_id NUMBER;
114520 l_adr_value_segment_code VARCHAR2(30);
114521
114522 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
114523 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
114524 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
114525 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
114526
114527 -- 4262811 Variables ------------------------------------------------------------------------------------------
114528 l_entered_amt_idx NUMBER;
114529 l_accted_amt_idx NUMBER;
114530 l_acc_rev_flag VARCHAR2(1);
114531 l_accrual_line_num NUMBER;
114532 l_tmp_amt NUMBER;
114533 l_acc_rev_natural_side_code VARCHAR2(1);
114534
114535 l_num_entries NUMBER;
114536 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
114537 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
114538 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
114539 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
114540 l_recog_line_1 NUMBER;
114541 l_recog_line_2 NUMBER;
114542
114543 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
114544 l_bflow_applied_to_amt NUMBER; -- 5132302
114545 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
114546
114547 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
114548
114549 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
114550 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
114551
114552 ---------------------------------------------------------------------------------------------------------------
114553
114554
114555 --
114556 -- bulk performance
114557 --
114558 l_balance_type_code VARCHAR2(1);
114559 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
114560 l_log_module VARCHAR2(240);
114561
114562 --
114563 -- Upgrade strategy
114564 --
114568 --
114565 l_actual_upg_option VARCHAR2(1);
114566 l_enc_upg_option VARCHAR2(1);
114567
114569 BEGIN
114570 --
114571 IF g_log_enabled THEN
114572 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_239';
114573 END IF;
114574 --
114575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114576
114577 trace
114578 (p_msg => 'BEGIN of AcctLineType_239'
114579 ,p_level => C_LEVEL_PROCEDURE
114580 ,p_module => l_log_module);
114581
114582 END IF;
114583 --
114584 l_component_type := 'AMB_JLT';
114585 l_component_code := 'WIP';
114586 l_component_type_code := 'S';
114587 l_component_appl_id := 555;
114588 l_amb_context_code := 'DEFAULT';
114589 l_entity_code := 'PRODUCTION';
114590 l_event_class_code := 'BATCH_MATERIAL';
114591 l_event_type_code := 'CERT';
114592 l_line_definition_owner_code := 'S';
114593 l_line_definition_code := 'BATCH_COMPLETION';
114594 --
114595 l_balance_type_code := 'A';
114596 l_segment := NULL;
114597 l_ccid := NULL;
114598 l_adr_transaction_coa_id := NULL;
114599 l_adr_accounting_coa_id := NULL;
114600 l_adr_flexfield_segment_code := NULL;
114601 l_adr_flex_value_set_id := NULL;
114602 l_adr_value_type_code := NULL;
114603 l_adr_value_combination_id := NULL;
114604 l_adr_value_segment_code := NULL;
114605
114606 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
114607 l_bflow_class_code := ''; -- 4219869 Business Flow
114608 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
114609 l_budgetary_control_flag := 'N';
114610
114611 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114612 l_bflow_applied_to_amt := NULL; -- 5132302
114613 l_entered_amt_idx := NULL; -- 4262811
114614 l_accted_amt_idx := NULL; -- 4262811
114615 l_acc_rev_flag := NULL; -- 4262811
114616 l_accrual_line_num := NULL; -- 4262811
114617 l_tmp_amt := NULL; -- 4262811
114618 --
114619
114620 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114621 l_balance_type_code <> 'B' THEN
114622 IF NVL(p_source_2,'
114623 ') = 'WIP'
114624 THEN
114625
114626 --
114627 XLA_AE_LINES_PKG.SetNewLine;
114628
114629 p_balance_type_code := l_balance_type_code;
114630 -- set the flag so later we will know whether the gain loss line needs to be created
114631
114632 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114633 p_actual_flag :='A';
114634 END IF;
114635
114636 --
114637 -- bulk performance
114638 --
114639 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114640 p_header_num => 0); -- 4262811
114641 --
114642 -- set accounting line options
114643 --
114644 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114645 p_natural_side_code => 'D'
114646 , p_gain_or_loss_flag => 'N'
114647 , p_gl_transfer_mode_code => 'D'
114648 , p_acct_entry_type_code => 'A'
114649 , p_switch_side_flag => 'Y'
114650 , p_merge_duplicate_code => 'W'
114651 );
114652 --
114653 l_acc_rev_natural_side_code := 'C'; -- 4262811
114654 --
114655 --
114656 -- set accounting line type info
114657 --
114658 xla_ae_lines_pkg.SetAcctLineType
114659 (p_component_type => l_component_type
114660 ,p_event_type_code => l_event_type_code
114661 ,p_line_definition_owner_code => l_line_definition_owner_code
114662 ,p_line_definition_code => l_line_definition_code
114663 ,p_accounting_line_code => l_component_code
114664 ,p_accounting_line_type_code => l_component_type_code
114665 ,p_accounting_line_appl_id => l_component_appl_id
114666 ,p_amb_context_code => l_amb_context_code
114667 ,p_entity_code => l_entity_code
114668 ,p_event_class_code => l_event_class_code);
114669 --
114670 -- set accounting class
114671 --
114672 xla_ae_lines_pkg.SetAcctClass(
114673 p_accounting_class_code => 'WIP_VALUATION'
114674 , p_ae_header_id => l_ae_header_id
114675 );
114676
114677 --
114678 -- set rounding class
114679 --
114680 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114681 'WIP_VALUATION';
114682
114683 --
114684 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114685 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114686 --
114687 -- bulk performance
114688 --
114689 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114690
114691 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114692 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114693
114694 -- 4955764
114695 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114699
114696 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114697
114698 -- 4458381 Public Sector Enh
114700 --
114701 -- set accounting attributes for the line type
114702 --
114703 l_entered_amt_idx := 3;
114704 l_accted_amt_idx := 8;
114705 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114706 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114707 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
114708 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114709 l_rec_acct_attrs.array_char_value(2) := p_source_6;
114710 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114711 l_rec_acct_attrs.array_num_value(3) := p_source_3;
114712 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114713 l_rec_acct_attrs.array_char_value(4) := p_source_7;
114714 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114715 l_rec_acct_attrs.array_date_value(5) := p_source_8;
114716 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114717 l_rec_acct_attrs.array_num_value(6) := p_source_9;
114718 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114719 l_rec_acct_attrs.array_char_value(7) := p_source_10;
114720 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114721 l_rec_acct_attrs.array_num_value(8) := p_source_11;
114722
114723 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114724 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114725
114726 ---------------------------------------------------------------------------------------------------------------
114727 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114728 ---------------------------------------------------------------------------------------------------------------
114729 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114730
114731 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114732 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114733
114734 IF xla_accounting_cache_pkg.GetValueChar
114735 (p_source_code => 'LEDGER_CATEGORY_CODE'
114736 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114737 AND l_bflow_method_code = 'PRIOR_ENTRY'
114738 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114739 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114740 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114741 )
114742 THEN
114743 xla_ae_lines_pkg.BflowUpgEntry
114744 (p_business_method_code => l_bflow_method_code
114745 ,p_business_class_code => l_bflow_class_code
114746 ,p_balance_type => l_balance_type_code);
114747 ELSE
114748 NULL;
114749 -- No business flow processing for business flow method of NONE.
114750 END IF;
114751
114752 --
114753 -- call analytical criteria
114754 --
114755
114756 --
114757 -- call description
114758 --
114759 -- No description or it is inherited.
114760 --
114761 -- call ADRs
114762 -- Bug 4922099
114763 --
114764 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114765 (NVL(l_actual_upg_option, 'N') = 'O') OR
114766 (NVL(l_enc_upg_option, 'N') = 'O')
114767 )
114768 THEN
114769 NULL;
114770 --
114771 --
114772
114773 l_ccid := AcctDerRule_39(
114774 p_application_id => p_application_id
114775 , p_ae_header_id => l_ae_header_id
114776 , p_source_1 => p_source_1
114777 , p_source_2 => p_source_2
114778 , x_transaction_coa_id => l_adr_transaction_coa_id
114779 , x_accounting_coa_id => l_adr_accounting_coa_id
114780 , x_value_type_code => l_adr_value_type_code
114781 , p_side => 'NA'
114782 );
114783
114784 xla_ae_lines_pkg.set_ccid(
114785 p_code_combination_id => l_ccid
114786 , p_value_type_code => l_adr_value_type_code
114787 , p_transaction_coa_id => l_adr_transaction_coa_id
114788 , p_accounting_coa_id => l_adr_accounting_coa_id
114789 , p_adr_code => 'WIP'
114790 , p_adr_type_code => 'S'
114791 , p_component_type => l_component_type
114792 , p_component_code => l_component_code
114793 , p_component_type_code => l_component_type_code
114794 , p_component_appl_id => l_component_appl_id
114795 , p_amb_context_code => l_amb_context_code
114796 , p_side => 'NA'
114797 );
114798
114799
114800 --
114801 --
114802 END IF;
114803 --
114804 -- Bug 4922099
114805 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114806 (NVL(l_enc_upg_option, 'N') = 'O')
114807 ) AND
114808 (l_bflow_method_code = 'PRIOR_ENTRY')
114809 )
114810 THEN
114811 IF
114812 --
114813 1 = 2
114814 --
114815 THEN
114816 xla_accounting_err_pkg.build_message
114820 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
114817 (p_appli_s_name => 'XLA'
114818 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114819 ,p_token_1 => 'LINE_NUMBER'
114821 ,p_token_2 => 'LINE_TYPE_NAME'
114822 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
114823 l_component_type
114824 ,l_component_code
114825 ,l_component_type_code
114826 ,l_component_appl_id
114827 ,l_amb_context_code
114828 ,l_entity_code
114829 ,l_event_class_code
114830 )
114831 ,p_token_3 => 'OWNER'
114832 ,p_value_3 => xla_lookups_pkg.get_meaning(
114833 p_lookup_type => 'XLA_OWNER_TYPE'
114834 ,p_lookup_code => l_component_type_code
114835 )
114836 ,p_token_4 => 'PRODUCT_NAME'
114837 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114838 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114839 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114840 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114841 ,p_ae_header_id => NULL
114842 );
114843
114844 IF (C_LEVEL_ERROR>= g_log_level) THEN
114845 trace
114846 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114847 ,p_level => C_LEVEL_ERROR
114848 ,p_module => l_log_module);
114849 END IF;
114850 END IF;
114851 END IF;
114852 --
114853 --
114854 ------------------------------------------------------------------------------------------------
114855 -- 4219869 Business Flow
114856 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114857 -- Prior Entry. Currently, the following code is always generated.
114858 ------------------------------------------------------------------------------------------------
114859 XLA_AE_LINES_PKG.ValidateCurrentLine;
114860
114861 ------------------------------------------------------------------------------------
114862 -- 4219869 Business Flow
114863 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114864 ------------------------------------------------------------------------------------
114865 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114866
114867 ----------------------------------------------------------------------------------
114868 -- 4219869 Business Flow
114869 -- Update journal entry status -- Need to generate this within IF <condition>
114870 ----------------------------------------------------------------------------------
114871 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114872 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114873 ,p_balance_type_code => l_balance_type_code
114874 );
114875
114876 -------------------------------------------------------------------------------------------
114877 -- 4262811 - Generate the Accrual Reversal lines
114878 -------------------------------------------------------------------------------------------
114879 BEGIN
114880 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114881 (g_array_event(p_event_id).array_value_num('header_index'));
114882 IF l_acc_rev_flag IS NULL THEN
114883 l_acc_rev_flag := 'N';
114884 END IF;
114885 EXCEPTION
114886 WHEN OTHERS THEN
114887 l_acc_rev_flag := 'N';
114888 END;
114889 --
114890 IF (l_acc_rev_flag = 'Y') THEN
114891
114892 -- 4645092 ------------------------------------------------------------------------------
114893 -- To allow MPA report to determine if it should generate report process
114894 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114895 ------------------------------------------------------------------------------------------
114896
114897 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114898 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114899 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
114900 -- call ADRs
114901 -- Bug 4922099
114902 --
114903 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114904 (NVL(l_actual_upg_option, 'N') = 'O') OR
114908 NULL;
114905 (NVL(l_enc_upg_option, 'N') = 'O')
114906 )
114907 THEN
114909 --
114910 --
114911
114912 l_ccid := AcctDerRule_39(
114913 p_application_id => p_application_id
114914 , p_ae_header_id => l_ae_header_id
114915 , p_source_1 => p_source_1
114916 , p_source_2 => p_source_2
114917 , x_transaction_coa_id => l_adr_transaction_coa_id
114918 , x_accounting_coa_id => l_adr_accounting_coa_id
114919 , x_value_type_code => l_adr_value_type_code
114920 , p_side => 'NA'
114921 );
114922
114923 xla_ae_lines_pkg.set_ccid(
114924 p_code_combination_id => l_ccid
114925 , p_value_type_code => l_adr_value_type_code
114926 , p_transaction_coa_id => l_adr_transaction_coa_id
114927 , p_accounting_coa_id => l_adr_accounting_coa_id
114928 , p_adr_code => 'WIP'
114929 , p_adr_type_code => 'S'
114930 , p_component_type => l_component_type
114931 , p_component_code => l_component_code
114932 , p_component_type_code => l_component_type_code
114933 , p_component_appl_id => l_component_appl_id
114934 , p_amb_context_code => l_amb_context_code
114935 , p_side => 'NA'
114936 );
114937
114938
114939 --
114940 --
114941 END IF;
114942
114943 --
114944 -- Update the line information that should be overwritten
114945 --
114946 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114947 p_header_num => 1);
114948 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
114949
114950 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114951
114952 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
114953 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114954 END IF;
114955
114956 --
114957 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114958 --
114959 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114960 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
114961 ELSE
114962 ---------------------------------------------------------------------------------------------------
114963 -- 4262811a Switch Sign
114964 ---------------------------------------------------------------------------------------------------
114965 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
114966 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114967 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114968 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114969 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114970 -- 5132302
114971 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114972 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114973
114974 END IF;
114975
114976 -- 4955764
114977 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114978 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114979
114980
114981 XLA_AE_LINES_PKG.ValidateCurrentLine;
114982 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114983
114984 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114985 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114986 ,p_balance_type_code => l_balance_type_code);
114987
114988 END IF;
114989
114990 -----------------------------------------------------------------------------------------
114991 -- 4262811 Multiperiod Accounting
114992 -----------------------------------------------------------------------------------------
114993 -- No MPA option is assigned.
114994
114995
114996 END IF;
114997 END IF;
114998 --
114999
115000 --
115001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115002 trace
115003 (p_msg => 'END of AcctLineType_239'
115004 ,p_level => C_LEVEL_PROCEDURE
115005 ,p_module => l_log_module);
115006 END IF;
115007 --
115008 EXCEPTION
115009 WHEN xla_exceptions_pkg.application_exception THEN
115010 RAISE;
115011 WHEN OTHERS THEN
115012 xla_exceptions_pkg.raise_message
115013 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_239');
115014 END AcctLineType_239;
115015 --
115016
115017 ---------------------------------------
115018 --
115019 -- PRIVATE FUNCTION
115020 -- AcctLineType_240
115021 --
115022 ---------------------------------------
115023 PROCEDURE AcctLineType_240 (
115024 p_application_id IN NUMBER
115025 ,p_event_id IN NUMBER
115026 ,p_calculate_acctd_flag IN VARCHAR2
115027 ,p_calculate_g_l_flag IN VARCHAR2
115028 ,p_actual_flag IN OUT VARCHAR2
115032 --Transaction Account
115029 ,p_balance_type_code OUT VARCHAR2
115030 ,p_gain_or_loss_ref OUT VARCHAR2
115031
115033 , p_source_1 IN NUMBER
115034 --Journal Line Type
115035 , p_source_2 IN VARCHAR2
115036 --Entered Amount
115037 , p_source_3 IN NUMBER
115038 --First Distribution Identifier
115039 , p_source_5 IN NUMBER
115040 --Distribution Type
115041 , p_source_6 IN VARCHAR2
115042 --Currency Code
115043 , p_source_7 IN VARCHAR2
115044 --Currency Conversion Date
115045 , p_source_8 IN DATE
115046 --Currency Conversion Rate
115047 , p_source_9 IN NUMBER
115048 --Currency Conversion Type
115049 , p_source_10 IN VARCHAR2
115050 --Accounted Amount
115051 , p_source_11 IN NUMBER
115052 )
115053 IS
115054
115055 l_component_type VARCHAR2(80);
115056 l_component_code VARCHAR2(30);
115057 l_component_type_code VARCHAR2(1);
115058 l_component_appl_id INTEGER;
115059 l_amb_context_code VARCHAR2(30);
115060 l_entity_code VARCHAR2(30);
115061 l_event_class_code VARCHAR2(30);
115062 l_ae_header_id NUMBER;
115063 l_event_type_code VARCHAR2(30);
115064 l_line_definition_code VARCHAR2(30);
115065 l_line_definition_owner_code VARCHAR2(1);
115066 --
115067 -- adr variables
115068 l_segment VARCHAR2(30);
115069 l_ccid NUMBER;
115070 l_adr_transaction_coa_id NUMBER;
115071 l_adr_accounting_coa_id NUMBER;
115072 l_adr_flexfield_segment_code VARCHAR2(30);
115073 l_adr_flex_value_set_id NUMBER;
115074 l_adr_value_type_code VARCHAR2(30);
115075 l_adr_value_combination_id NUMBER;
115076 l_adr_value_segment_code VARCHAR2(30);
115077
115078 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
115079 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
115080 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
115081 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
115082
115083 -- 4262811 Variables ------------------------------------------------------------------------------------------
115084 l_entered_amt_idx NUMBER;
115085 l_accted_amt_idx NUMBER;
115086 l_acc_rev_flag VARCHAR2(1);
115087 l_accrual_line_num NUMBER;
115088 l_tmp_amt NUMBER;
115089 l_acc_rev_natural_side_code VARCHAR2(1);
115090
115091 l_num_entries NUMBER;
115092 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
115093 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
115094 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
115095 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
115096 l_recog_line_1 NUMBER;
115097 l_recog_line_2 NUMBER;
115098
115099 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
115100 l_bflow_applied_to_amt NUMBER; -- 5132302
115101 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
115102
115103 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115104
115105 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
115106 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
115107
115108 ---------------------------------------------------------------------------------------------------------------
115109
115110
115111 --
115112 -- bulk performance
115113 --
115114 l_balance_type_code VARCHAR2(1);
115115 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
115116 l_log_module VARCHAR2(240);
115117
115118 --
115119 -- Upgrade strategy
115120 --
115121 l_actual_upg_option VARCHAR2(1);
115122 l_enc_upg_option VARCHAR2(1);
115123
115124 --
115125 BEGIN
115126 --
115127 IF g_log_enabled THEN
115128 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_240';
115129 END IF;
115130 --
115131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115132
115133 trace
115134 (p_msg => 'BEGIN of AcctLineType_240'
115135 ,p_level => C_LEVEL_PROCEDURE
115136 ,p_module => l_log_module);
115137
115138 END IF;
115139 --
115140 l_component_type := 'AMB_JLT';
115141 l_component_code := 'WIP';
115142 l_component_type_code := 'S';
115143 l_component_appl_id := 555;
115144 l_amb_context_code := 'DEFAULT';
115145 l_entity_code := 'PRODUCTION';
115146 l_event_class_code := 'BATCH_RESOURCE';
115147 l_event_type_code := 'STEP';
115148 l_line_definition_owner_code := 'S';
115149 l_line_definition_code := 'BATCH_STEP';
115150 --
115151 l_balance_type_code := 'A';
115152 l_segment := NULL;
115153 l_ccid := NULL;
115154 l_adr_transaction_coa_id := NULL;
115155 l_adr_accounting_coa_id := NULL;
115156 l_adr_flexfield_segment_code := NULL;
115157 l_adr_flex_value_set_id := NULL;
115158 l_adr_value_type_code := NULL;
115159 l_adr_value_combination_id := NULL;
115160 l_adr_value_segment_code := NULL;
115161
115162 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
115166
115163 l_bflow_class_code := ''; -- 4219869 Business Flow
115164 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
115165 l_budgetary_control_flag := 'N';
115167 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115168 l_bflow_applied_to_amt := NULL; -- 5132302
115169 l_entered_amt_idx := NULL; -- 4262811
115170 l_accted_amt_idx := NULL; -- 4262811
115171 l_acc_rev_flag := NULL; -- 4262811
115172 l_accrual_line_num := NULL; -- 4262811
115173 l_tmp_amt := NULL; -- 4262811
115174 --
115175
115176 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115177 l_balance_type_code <> 'B' THEN
115178 IF NVL(p_source_2,'
115179 ') = 'WIP'
115180 THEN
115181
115182 --
115183 XLA_AE_LINES_PKG.SetNewLine;
115184
115185 p_balance_type_code := l_balance_type_code;
115186 -- set the flag so later we will know whether the gain loss line needs to be created
115187
115188 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115189 p_actual_flag :='A';
115190 END IF;
115191
115192 --
115193 -- bulk performance
115194 --
115195 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115196 p_header_num => 0); -- 4262811
115197 --
115198 -- set accounting line options
115199 --
115200 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115201 p_natural_side_code => 'D'
115202 , p_gain_or_loss_flag => 'N'
115203 , p_gl_transfer_mode_code => 'D'
115204 , p_acct_entry_type_code => 'A'
115205 , p_switch_side_flag => 'Y'
115206 , p_merge_duplicate_code => 'W'
115207 );
115208 --
115209 l_acc_rev_natural_side_code := 'C'; -- 4262811
115210 --
115211 --
115212 -- set accounting line type info
115213 --
115214 xla_ae_lines_pkg.SetAcctLineType
115215 (p_component_type => l_component_type
115216 ,p_event_type_code => l_event_type_code
115217 ,p_line_definition_owner_code => l_line_definition_owner_code
115218 ,p_line_definition_code => l_line_definition_code
115219 ,p_accounting_line_code => l_component_code
115220 ,p_accounting_line_type_code => l_component_type_code
115221 ,p_accounting_line_appl_id => l_component_appl_id
115222 ,p_amb_context_code => l_amb_context_code
115223 ,p_entity_code => l_entity_code
115224 ,p_event_class_code => l_event_class_code);
115225 --
115226 -- set accounting class
115227 --
115228 xla_ae_lines_pkg.SetAcctClass(
115229 p_accounting_class_code => 'WIP_VALUATION'
115230 , p_ae_header_id => l_ae_header_id
115231 );
115232
115233 --
115234 -- set rounding class
115235 --
115236 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115237 'WIP_VALUATION';
115238
115239 --
115240 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115241 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115242 --
115243 -- bulk performance
115244 --
115245 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115246
115247 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115248 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115249
115250 -- 4955764
115251 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115252 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115253
115254 -- 4458381 Public Sector Enh
115255
115256 --
115257 -- set accounting attributes for the line type
115258 --
115259 l_entered_amt_idx := 3;
115260 l_accted_amt_idx := 8;
115261 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115262 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115263 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
115264 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115265 l_rec_acct_attrs.array_char_value(2) := p_source_6;
115266 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115267 l_rec_acct_attrs.array_num_value(3) := p_source_3;
115268 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115269 l_rec_acct_attrs.array_char_value(4) := p_source_7;
115270 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115271 l_rec_acct_attrs.array_date_value(5) := p_source_8;
115272 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115273 l_rec_acct_attrs.array_num_value(6) := p_source_9;
115274 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115275 l_rec_acct_attrs.array_char_value(7) := p_source_10;
115276 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115277 l_rec_acct_attrs.array_num_value(8) := p_source_11;
115278
115279 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115280 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115281
115285 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115282 ---------------------------------------------------------------------------------------------------------------
115283 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115284 ---------------------------------------------------------------------------------------------------------------
115286
115287 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115288 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115289
115290 IF xla_accounting_cache_pkg.GetValueChar
115291 (p_source_code => 'LEDGER_CATEGORY_CODE'
115292 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115293 AND l_bflow_method_code = 'PRIOR_ENTRY'
115294 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115295 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115296 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115297 )
115298 THEN
115299 xla_ae_lines_pkg.BflowUpgEntry
115300 (p_business_method_code => l_bflow_method_code
115301 ,p_business_class_code => l_bflow_class_code
115302 ,p_balance_type => l_balance_type_code);
115303 ELSE
115304 NULL;
115305 -- No business flow processing for business flow method of NONE.
115306 END IF;
115307
115308 --
115309 -- call analytical criteria
115310 --
115311
115312 --
115313 -- call description
115314 --
115315 -- No description or it is inherited.
115316 --
115317 -- call ADRs
115318 -- Bug 4922099
115319 --
115320 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115321 (NVL(l_actual_upg_option, 'N') = 'O') OR
115322 (NVL(l_enc_upg_option, 'N') = 'O')
115323 )
115324 THEN
115325 NULL;
115326 --
115327 --
115328
115329 l_ccid := AcctDerRule_39(
115330 p_application_id => p_application_id
115331 , p_ae_header_id => l_ae_header_id
115332 , p_source_1 => p_source_1
115333 , p_source_2 => p_source_2
115334 , x_transaction_coa_id => l_adr_transaction_coa_id
115335 , x_accounting_coa_id => l_adr_accounting_coa_id
115336 , x_value_type_code => l_adr_value_type_code
115337 , p_side => 'NA'
115338 );
115339
115340 xla_ae_lines_pkg.set_ccid(
115341 p_code_combination_id => l_ccid
115342 , p_value_type_code => l_adr_value_type_code
115343 , p_transaction_coa_id => l_adr_transaction_coa_id
115344 , p_accounting_coa_id => l_adr_accounting_coa_id
115345 , p_adr_code => 'WIP'
115346 , p_adr_type_code => 'S'
115347 , p_component_type => l_component_type
115348 , p_component_code => l_component_code
115349 , p_component_type_code => l_component_type_code
115350 , p_component_appl_id => l_component_appl_id
115351 , p_amb_context_code => l_amb_context_code
115352 , p_side => 'NA'
115353 );
115354
115355
115356 --
115357 --
115358 END IF;
115359 --
115360 -- Bug 4922099
115361 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115362 (NVL(l_enc_upg_option, 'N') = 'O')
115363 ) AND
115364 (l_bflow_method_code = 'PRIOR_ENTRY')
115365 )
115366 THEN
115367 IF
115368 --
115369 1 = 2
115370 --
115371 THEN
115372 xla_accounting_err_pkg.build_message
115373 (p_appli_s_name => 'XLA'
115374 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115375 ,p_token_1 => 'LINE_NUMBER'
115376 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
115377 ,p_token_2 => 'LINE_TYPE_NAME'
115378 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
115379 l_component_type
115380 ,l_component_code
115381 ,l_component_type_code
115382 ,l_component_appl_id
115383 ,l_amb_context_code
115384 ,l_entity_code
115385 ,l_event_class_code
115386 )
115387 ,p_token_3 => 'OWNER'
115388 ,p_value_3 => xla_lookups_pkg.get_meaning(
115389 p_lookup_type => 'XLA_OWNER_TYPE'
115390 ,p_lookup_code => l_component_type_code
115394 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115391 )
115392 ,p_token_4 => 'PRODUCT_NAME'
115393 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115395 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115396 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115397 ,p_ae_header_id => NULL
115398 );
115399
115400 IF (C_LEVEL_ERROR>= g_log_level) THEN
115401 trace
115402 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115403 ,p_level => C_LEVEL_ERROR
115404 ,p_module => l_log_module);
115405 END IF;
115406 END IF;
115407 END IF;
115408 --
115409 --
115410 ------------------------------------------------------------------------------------------------
115411 -- 4219869 Business Flow
115412 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115413 -- Prior Entry. Currently, the following code is always generated.
115414 ------------------------------------------------------------------------------------------------
115415 XLA_AE_LINES_PKG.ValidateCurrentLine;
115416
115417 ------------------------------------------------------------------------------------
115418 -- 4219869 Business Flow
115419 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115420 ------------------------------------------------------------------------------------
115421 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115422
115423 ----------------------------------------------------------------------------------
115424 -- 4219869 Business Flow
115425 -- Update journal entry status -- Need to generate this within IF <condition>
115426 ----------------------------------------------------------------------------------
115427 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115428 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115429 ,p_balance_type_code => l_balance_type_code
115430 );
115431
115432 -------------------------------------------------------------------------------------------
115433 -- 4262811 - Generate the Accrual Reversal lines
115434 -------------------------------------------------------------------------------------------
115435 BEGIN
115436 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115437 (g_array_event(p_event_id).array_value_num('header_index'));
115438 IF l_acc_rev_flag IS NULL THEN
115439 l_acc_rev_flag := 'N';
115440 END IF;
115441 EXCEPTION
115442 WHEN OTHERS THEN
115443 l_acc_rev_flag := 'N';
115444 END;
115445 --
115446 IF (l_acc_rev_flag = 'Y') THEN
115447
115448 -- 4645092 ------------------------------------------------------------------------------
115449 -- To allow MPA report to determine if it should generate report process
115450 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115451 ------------------------------------------------------------------------------------------
115452
115453 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115454 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115455 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
115456 -- call ADRs
115457 -- Bug 4922099
115458 --
115459 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115460 (NVL(l_actual_upg_option, 'N') = 'O') OR
115461 (NVL(l_enc_upg_option, 'N') = 'O')
115462 )
115463 THEN
115464 NULL;
115465 --
115466 --
115467
115468 l_ccid := AcctDerRule_39(
115469 p_application_id => p_application_id
115470 , p_ae_header_id => l_ae_header_id
115471 , p_source_1 => p_source_1
115472 , p_source_2 => p_source_2
115473 , x_transaction_coa_id => l_adr_transaction_coa_id
115474 , x_accounting_coa_id => l_adr_accounting_coa_id
115475 , x_value_type_code => l_adr_value_type_code
115476 , p_side => 'NA'
115477 );
115478
115479 xla_ae_lines_pkg.set_ccid(
115480 p_code_combination_id => l_ccid
115481 , p_value_type_code => l_adr_value_type_code
115482 , p_transaction_coa_id => l_adr_transaction_coa_id
115483 , p_accounting_coa_id => l_adr_accounting_coa_id
115484 , p_adr_code => 'WIP'
115485 , p_adr_type_code => 'S'
115486 , p_component_type => l_component_type
115487 , p_component_code => l_component_code
115488 , p_component_type_code => l_component_type_code
115489 , p_component_appl_id => l_component_appl_id
115490 , p_amb_context_code => l_amb_context_code
115491 , p_side => 'NA'
115492 );
115493
115494
115495 --
115496 --
115497 END IF;
115498
115499 --
115500 -- Update the line information that should be overwritten
115501 --
115502 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115503 p_header_num => 1);
115507
115504 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
115505
115506 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115508 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
115509 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115510 END IF;
115511
115512 --
115513 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115514 --
115515 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115516 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
115517 ELSE
115518 ---------------------------------------------------------------------------------------------------
115519 -- 4262811a Switch Sign
115520 ---------------------------------------------------------------------------------------------------
115521 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
115522 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115523 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115524 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115525 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115526 -- 5132302
115527 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
115528 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115529
115530 END IF;
115531
115532 -- 4955764
115533 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115534 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
115535
115536
115537 XLA_AE_LINES_PKG.ValidateCurrentLine;
115538 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115539
115540 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115541 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
115542 ,p_balance_type_code => l_balance_type_code);
115543
115544 END IF;
115545
115546 -----------------------------------------------------------------------------------------
115547 -- 4262811 Multiperiod Accounting
115548 -----------------------------------------------------------------------------------------
115549 -- No MPA option is assigned.
115550
115551
115552 END IF;
115553 END IF;
115554 --
115555
115556 --
115557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115558 trace
115559 (p_msg => 'END of AcctLineType_240'
115560 ,p_level => C_LEVEL_PROCEDURE
115561 ,p_module => l_log_module);
115562 END IF;
115563 --
115564 EXCEPTION
115565 WHEN xla_exceptions_pkg.application_exception THEN
115566 RAISE;
115567 WHEN OTHERS THEN
115568 xla_exceptions_pkg.raise_message
115569 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_240');
115570 END AcctLineType_240;
115571 --
115572
115573 ---------------------------------------
115574 --
115575 -- PRIVATE FUNCTION
115576 -- AcctLineType_241
115577 --
115578 ---------------------------------------
115579 PROCEDURE AcctLineType_241 (
115580 p_application_id IN NUMBER
115581 ,p_event_id IN NUMBER
115582 ,p_calculate_acctd_flag IN VARCHAR2
115583 ,p_calculate_g_l_flag IN VARCHAR2
115584 ,p_actual_flag IN OUT VARCHAR2
115585 ,p_balance_type_code OUT VARCHAR2
115586 ,p_gain_or_loss_ref OUT VARCHAR2
115587
115588 --Transaction Account
115589 , p_source_1 IN NUMBER
115590 --Journal Line Type
115591 , p_source_2 IN VARCHAR2
115592 --Entered Amount
115593 , p_source_3 IN NUMBER
115594 --First Distribution Identifier
115595 , p_source_5 IN NUMBER
115596 --Distribution Type
115597 , p_source_6 IN VARCHAR2
115598 --Currency Code
115599 , p_source_7 IN VARCHAR2
115600 --Currency Conversion Date
115601 , p_source_8 IN DATE
115602 --Currency Conversion Rate
115603 , p_source_9 IN NUMBER
115604 --Currency Conversion Type
115605 , p_source_10 IN VARCHAR2
115606 --Accounted Amount
115607 , p_source_11 IN NUMBER
115608 )
115609 IS
115610
115611 l_component_type VARCHAR2(80);
115612 l_component_code VARCHAR2(30);
115613 l_component_type_code VARCHAR2(1);
115614 l_component_appl_id INTEGER;
115615 l_amb_context_code VARCHAR2(30);
115616 l_entity_code VARCHAR2(30);
115617 l_event_class_code VARCHAR2(30);
115618 l_ae_header_id NUMBER;
115619 l_event_type_code VARCHAR2(30);
115620 l_line_definition_code VARCHAR2(30);
115621 l_line_definition_owner_code VARCHAR2(1);
115622 --
115623 -- adr variables
115624 l_segment VARCHAR2(30);
115625 l_ccid NUMBER;
115626 l_adr_transaction_coa_id NUMBER;
115627 l_adr_accounting_coa_id NUMBER;
115628 l_adr_flexfield_segment_code VARCHAR2(30);
115632 l_adr_value_segment_code VARCHAR2(30);
115629 l_adr_flex_value_set_id NUMBER;
115630 l_adr_value_type_code VARCHAR2(30);
115631 l_adr_value_combination_id NUMBER;
115633
115634 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
115635 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
115636 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
115637 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
115638
115639 -- 4262811 Variables ------------------------------------------------------------------------------------------
115640 l_entered_amt_idx NUMBER;
115641 l_accted_amt_idx NUMBER;
115642 l_acc_rev_flag VARCHAR2(1);
115643 l_accrual_line_num NUMBER;
115644 l_tmp_amt NUMBER;
115645 l_acc_rev_natural_side_code VARCHAR2(1);
115646
115647 l_num_entries NUMBER;
115648 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
115649 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
115650 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
115651 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
115652 l_recog_line_1 NUMBER;
115653 l_recog_line_2 NUMBER;
115654
115655 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
115656 l_bflow_applied_to_amt NUMBER; -- 5132302
115657 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
115658
115659 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115660
115661 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
115662 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
115663
115664 ---------------------------------------------------------------------------------------------------------------
115665
115666
115667 --
115668 -- bulk performance
115669 --
115670 l_balance_type_code VARCHAR2(1);
115671 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
115672 l_log_module VARCHAR2(240);
115673
115674 --
115675 -- Upgrade strategy
115676 --
115677 l_actual_upg_option VARCHAR2(1);
115678 l_enc_upg_option VARCHAR2(1);
115679
115680 --
115681 BEGIN
115682 --
115683 IF g_log_enabled THEN
115684 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_241';
115685 END IF;
115686 --
115687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115688
115689 trace
115690 (p_msg => 'BEGIN of AcctLineType_241'
115691 ,p_level => C_LEVEL_PROCEDURE
115692 ,p_module => l_log_module);
115693
115694 END IF;
115695 --
115696 l_component_type := 'AMB_JLT';
115697 l_component_code := 'WIP';
115698 l_component_type_code := 'S';
115699 l_component_appl_id := 555;
115700 l_amb_context_code := 'DEFAULT';
115701 l_entity_code := 'PRODUCTION';
115702 l_event_class_code := 'BATCH_CLOSE';
115703 l_event_type_code := 'CLOS';
115704 l_line_definition_owner_code := 'S';
115705 l_line_definition_code := 'BATCH_CLOSE';
115706 --
115707 l_balance_type_code := 'A';
115708 l_segment := NULL;
115709 l_ccid := NULL;
115710 l_adr_transaction_coa_id := NULL;
115711 l_adr_accounting_coa_id := NULL;
115712 l_adr_flexfield_segment_code := NULL;
115713 l_adr_flex_value_set_id := NULL;
115714 l_adr_value_type_code := NULL;
115715 l_adr_value_combination_id := NULL;
115716 l_adr_value_segment_code := NULL;
115717
115718 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
115719 l_bflow_class_code := ''; -- 4219869 Business Flow
115720 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
115721 l_budgetary_control_flag := 'N';
115722
115723 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115724 l_bflow_applied_to_amt := NULL; -- 5132302
115725 l_entered_amt_idx := NULL; -- 4262811
115726 l_accted_amt_idx := NULL; -- 4262811
115727 l_acc_rev_flag := NULL; -- 4262811
115728 l_accrual_line_num := NULL; -- 4262811
115729 l_tmp_amt := NULL; -- 4262811
115730 --
115731
115732 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115733 l_balance_type_code <> 'B' THEN
115734 IF NVL(p_source_2,'
115735 ') = 'WIP'
115736 THEN
115737
115738 --
115739 XLA_AE_LINES_PKG.SetNewLine;
115740
115741 p_balance_type_code := l_balance_type_code;
115742 -- set the flag so later we will know whether the gain loss line needs to be created
115743
115744 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115745 p_actual_flag :='A';
115746 END IF;
115747
115748 --
115749 -- bulk performance
115750 --
115751 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115752 p_header_num => 0); -- 4262811
115753 --
115754 -- set accounting line options
115755 --
115756 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115757 p_natural_side_code => 'D'
115761 , p_switch_side_flag => 'Y'
115758 , p_gain_or_loss_flag => 'N'
115759 , p_gl_transfer_mode_code => 'D'
115760 , p_acct_entry_type_code => 'A'
115762 , p_merge_duplicate_code => 'W'
115763 );
115764 --
115765 l_acc_rev_natural_side_code := 'C'; -- 4262811
115766 --
115767 --
115768 -- set accounting line type info
115769 --
115770 xla_ae_lines_pkg.SetAcctLineType
115771 (p_component_type => l_component_type
115772 ,p_event_type_code => l_event_type_code
115773 ,p_line_definition_owner_code => l_line_definition_owner_code
115774 ,p_line_definition_code => l_line_definition_code
115775 ,p_accounting_line_code => l_component_code
115776 ,p_accounting_line_type_code => l_component_type_code
115777 ,p_accounting_line_appl_id => l_component_appl_id
115778 ,p_amb_context_code => l_amb_context_code
115779 ,p_entity_code => l_entity_code
115780 ,p_event_class_code => l_event_class_code);
115781 --
115782 -- set accounting class
115783 --
115784 xla_ae_lines_pkg.SetAcctClass(
115785 p_accounting_class_code => 'WIP_VALUATION'
115786 , p_ae_header_id => l_ae_header_id
115787 );
115788
115789 --
115790 -- set rounding class
115791 --
115792 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115793 'WIP_VALUATION';
115794
115795 --
115796 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115797 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115798 --
115799 -- bulk performance
115800 --
115801 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115802
115803 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115804 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115805
115806 -- 4955764
115807 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115808 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115809
115810 -- 4458381 Public Sector Enh
115811
115812 --
115813 -- set accounting attributes for the line type
115814 --
115815 l_entered_amt_idx := 3;
115816 l_accted_amt_idx := 8;
115817 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115818 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115819 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
115820 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115821 l_rec_acct_attrs.array_char_value(2) := p_source_6;
115822 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115823 l_rec_acct_attrs.array_num_value(3) := p_source_3;
115824 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115825 l_rec_acct_attrs.array_char_value(4) := p_source_7;
115826 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115827 l_rec_acct_attrs.array_date_value(5) := p_source_8;
115828 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115829 l_rec_acct_attrs.array_num_value(6) := p_source_9;
115830 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115831 l_rec_acct_attrs.array_char_value(7) := p_source_10;
115832 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115833 l_rec_acct_attrs.array_num_value(8) := p_source_11;
115834
115835 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115836 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115837
115838 ---------------------------------------------------------------------------------------------------------------
115839 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115840 ---------------------------------------------------------------------------------------------------------------
115841 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115842
115843 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115844 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115845
115846 IF xla_accounting_cache_pkg.GetValueChar
115847 (p_source_code => 'LEDGER_CATEGORY_CODE'
115848 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115849 AND l_bflow_method_code = 'PRIOR_ENTRY'
115850 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115851 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115852 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115853 )
115854 THEN
115855 xla_ae_lines_pkg.BflowUpgEntry
115856 (p_business_method_code => l_bflow_method_code
115857 ,p_business_class_code => l_bflow_class_code
115858 ,p_balance_type => l_balance_type_code);
115859 ELSE
115860 NULL;
115861 -- No business flow processing for business flow method of NONE.
115862 END IF;
115863
115864 --
115868 --
115865 -- call analytical criteria
115866 --
115867
115869 -- call description
115870 --
115871 -- No description or it is inherited.
115872 --
115873 -- call ADRs
115874 -- Bug 4922099
115875 --
115876 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115877 (NVL(l_actual_upg_option, 'N') = 'O') OR
115878 (NVL(l_enc_upg_option, 'N') = 'O')
115879 )
115880 THEN
115881 NULL;
115882 --
115883 --
115884
115885 l_ccid := AcctDerRule_39(
115886 p_application_id => p_application_id
115887 , p_ae_header_id => l_ae_header_id
115888 , p_source_1 => p_source_1
115889 , p_source_2 => p_source_2
115890 , x_transaction_coa_id => l_adr_transaction_coa_id
115891 , x_accounting_coa_id => l_adr_accounting_coa_id
115892 , x_value_type_code => l_adr_value_type_code
115893 , p_side => 'NA'
115894 );
115895
115896 xla_ae_lines_pkg.set_ccid(
115897 p_code_combination_id => l_ccid
115898 , p_value_type_code => l_adr_value_type_code
115899 , p_transaction_coa_id => l_adr_transaction_coa_id
115900 , p_accounting_coa_id => l_adr_accounting_coa_id
115901 , p_adr_code => 'WIP'
115902 , p_adr_type_code => 'S'
115903 , p_component_type => l_component_type
115904 , p_component_code => l_component_code
115905 , p_component_type_code => l_component_type_code
115906 , p_component_appl_id => l_component_appl_id
115907 , p_amb_context_code => l_amb_context_code
115908 , p_side => 'NA'
115909 );
115910
115911
115912 --
115913 --
115914 END IF;
115915 --
115916 -- Bug 4922099
115917 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115918 (NVL(l_enc_upg_option, 'N') = 'O')
115919 ) AND
115920 (l_bflow_method_code = 'PRIOR_ENTRY')
115921 )
115922 THEN
115923 IF
115924 --
115925 1 = 2
115926 --
115927 THEN
115928 xla_accounting_err_pkg.build_message
115929 (p_appli_s_name => 'XLA'
115930 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115931 ,p_token_1 => 'LINE_NUMBER'
115932 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
115933 ,p_token_2 => 'LINE_TYPE_NAME'
115934 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
115935 l_component_type
115936 ,l_component_code
115937 ,l_component_type_code
115938 ,l_component_appl_id
115939 ,l_amb_context_code
115940 ,l_entity_code
115941 ,l_event_class_code
115942 )
115943 ,p_token_3 => 'OWNER'
115944 ,p_value_3 => xla_lookups_pkg.get_meaning(
115945 p_lookup_type => 'XLA_OWNER_TYPE'
115946 ,p_lookup_code => l_component_type_code
115947 )
115948 ,p_token_4 => 'PRODUCT_NAME'
115949 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115950 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115951 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115952 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115953 ,p_ae_header_id => NULL
115954 );
115955
115956 IF (C_LEVEL_ERROR>= g_log_level) THEN
115957 trace
115958 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115959 ,p_level => C_LEVEL_ERROR
115960 ,p_module => l_log_module);
115961 END IF;
115962 END IF;
115963 END IF;
115964 --
115965 --
115966 ------------------------------------------------------------------------------------------------
115967 -- 4219869 Business Flow
115968 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115969 -- Prior Entry. Currently, the following code is always generated.
115970 ------------------------------------------------------------------------------------------------
115971 XLA_AE_LINES_PKG.ValidateCurrentLine;
115972
115973 ------------------------------------------------------------------------------------
115977 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115974 -- 4219869 Business Flow
115975 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115976 ------------------------------------------------------------------------------------
115978
115979 ----------------------------------------------------------------------------------
115980 -- 4219869 Business Flow
115981 -- Update journal entry status -- Need to generate this within IF <condition>
115982 ----------------------------------------------------------------------------------
115983 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115984 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115985 ,p_balance_type_code => l_balance_type_code
115986 );
115987
115988 -------------------------------------------------------------------------------------------
115989 -- 4262811 - Generate the Accrual Reversal lines
115990 -------------------------------------------------------------------------------------------
115991 BEGIN
115992 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115993 (g_array_event(p_event_id).array_value_num('header_index'));
115994 IF l_acc_rev_flag IS NULL THEN
115995 l_acc_rev_flag := 'N';
115996 END IF;
115997 EXCEPTION
115998 WHEN OTHERS THEN
115999 l_acc_rev_flag := 'N';
116000 END;
116001 --
116002 IF (l_acc_rev_flag = 'Y') THEN
116003
116004 -- 4645092 ------------------------------------------------------------------------------
116005 -- To allow MPA report to determine if it should generate report process
116006 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116007 ------------------------------------------------------------------------------------------
116008
116009 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116010 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116011 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
116012 -- call ADRs
116013 -- Bug 4922099
116014 --
116015 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116016 (NVL(l_actual_upg_option, 'N') = 'O') OR
116017 (NVL(l_enc_upg_option, 'N') = 'O')
116018 )
116019 THEN
116020 NULL;
116021 --
116022 --
116023
116024 l_ccid := AcctDerRule_39(
116025 p_application_id => p_application_id
116026 , p_ae_header_id => l_ae_header_id
116027 , p_source_1 => p_source_1
116028 , p_source_2 => p_source_2
116029 , x_transaction_coa_id => l_adr_transaction_coa_id
116030 , x_accounting_coa_id => l_adr_accounting_coa_id
116031 , x_value_type_code => l_adr_value_type_code
116032 , p_side => 'NA'
116033 );
116034
116035 xla_ae_lines_pkg.set_ccid(
116036 p_code_combination_id => l_ccid
116037 , p_value_type_code => l_adr_value_type_code
116038 , p_transaction_coa_id => l_adr_transaction_coa_id
116039 , p_accounting_coa_id => l_adr_accounting_coa_id
116040 , p_adr_code => 'WIP'
116041 , p_adr_type_code => 'S'
116042 , p_component_type => l_component_type
116043 , p_component_code => l_component_code
116044 , p_component_type_code => l_component_type_code
116045 , p_component_appl_id => l_component_appl_id
116046 , p_amb_context_code => l_amb_context_code
116047 , p_side => 'NA'
116048 );
116049
116050
116051 --
116052 --
116053 END IF;
116054
116055 --
116056 -- Update the line information that should be overwritten
116057 --
116058 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116059 p_header_num => 1);
116060 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
116061
116062 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116063
116064 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
116065 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116066 END IF;
116067
116068 --
116069 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116070 --
116071 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116072 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
116073 ELSE
116074 ---------------------------------------------------------------------------------------------------
116075 -- 4262811a Switch Sign
116076 ---------------------------------------------------------------------------------------------------
116077 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
116078 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116079 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116080 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116081 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116085
116082 -- 5132302
116083 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116084 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116086 END IF;
116087
116088 -- 4955764
116089 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116090 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116091
116092
116093 XLA_AE_LINES_PKG.ValidateCurrentLine;
116094 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116095
116096 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116097 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116098 ,p_balance_type_code => l_balance_type_code);
116099
116100 END IF;
116101
116102 -----------------------------------------------------------------------------------------
116103 -- 4262811 Multiperiod Accounting
116104 -----------------------------------------------------------------------------------------
116105 -- No MPA option is assigned.
116106
116107
116108 END IF;
116109 END IF;
116110 --
116111
116112 --
116113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116114 trace
116115 (p_msg => 'END of AcctLineType_241'
116116 ,p_level => C_LEVEL_PROCEDURE
116117 ,p_module => l_log_module);
116118 END IF;
116119 --
116120 EXCEPTION
116121 WHEN xla_exceptions_pkg.application_exception THEN
116122 RAISE;
116123 WHEN OTHERS THEN
116124 xla_exceptions_pkg.raise_message
116125 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_241');
116126 END AcctLineType_241;
116127 --
116128
116129 ---------------------------------------
116130 --
116131 -- PRIVATE FUNCTION
116132 -- AcctLineType_242
116133 --
116134 ---------------------------------------
116135 PROCEDURE AcctLineType_242 (
116136 p_application_id IN NUMBER
116137 ,p_event_id IN NUMBER
116138 ,p_calculate_acctd_flag IN VARCHAR2
116139 ,p_calculate_g_l_flag IN VARCHAR2
116140 ,p_actual_flag IN OUT VARCHAR2
116141 ,p_balance_type_code OUT VARCHAR2
116142 ,p_gain_or_loss_ref OUT VARCHAR2
116143
116144 --Transaction Account
116145 , p_source_1 IN NUMBER
116146 --Journal Line Type
116147 , p_source_2 IN VARCHAR2
116148 --Entered Amount
116149 , p_source_3 IN NUMBER
116150 --First Distribution Identifier
116151 , p_source_5 IN NUMBER
116152 --Distribution Type
116153 , p_source_6 IN VARCHAR2
116154 --Currency Code
116155 , p_source_7 IN VARCHAR2
116156 --Currency Conversion Date
116157 , p_source_8 IN DATE
116158 --Currency Conversion Rate
116159 , p_source_9 IN NUMBER
116160 --Currency Conversion Type
116161 , p_source_10 IN VARCHAR2
116162 --Accounted Amount
116163 , p_source_11 IN NUMBER
116164 )
116165 IS
116166
116167 l_component_type VARCHAR2(80);
116168 l_component_code VARCHAR2(30);
116169 l_component_type_code VARCHAR2(1);
116170 l_component_appl_id INTEGER;
116171 l_amb_context_code VARCHAR2(30);
116172 l_entity_code VARCHAR2(30);
116173 l_event_class_code VARCHAR2(30);
116174 l_ae_header_id NUMBER;
116175 l_event_type_code VARCHAR2(30);
116176 l_line_definition_code VARCHAR2(30);
116177 l_line_definition_owner_code VARCHAR2(1);
116178 --
116179 -- adr variables
116180 l_segment VARCHAR2(30);
116181 l_ccid NUMBER;
116182 l_adr_transaction_coa_id NUMBER;
116183 l_adr_accounting_coa_id NUMBER;
116184 l_adr_flexfield_segment_code VARCHAR2(30);
116185 l_adr_flex_value_set_id NUMBER;
116186 l_adr_value_type_code VARCHAR2(30);
116187 l_adr_value_combination_id NUMBER;
116188 l_adr_value_segment_code VARCHAR2(30);
116189
116190 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
116191 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
116192 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
116193 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
116194
116195 -- 4262811 Variables ------------------------------------------------------------------------------------------
116196 l_entered_amt_idx NUMBER;
116197 l_accted_amt_idx NUMBER;
116198 l_acc_rev_flag VARCHAR2(1);
116199 l_accrual_line_num NUMBER;
116200 l_tmp_amt NUMBER;
116201 l_acc_rev_natural_side_code VARCHAR2(1);
116202
116203 l_num_entries NUMBER;
116204 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
116205 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
116206 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
116207 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
116208 l_recog_line_1 NUMBER;
116209 l_recog_line_2 NUMBER;
116210
116211 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
116212 l_bflow_applied_to_amt NUMBER; -- 5132302
116213 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
116214
116218 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
116215 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116216
116217 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
116219
116220 ---------------------------------------------------------------------------------------------------------------
116221
116222
116223 --
116224 -- bulk performance
116225 --
116226 l_balance_type_code VARCHAR2(1);
116227 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
116228 l_log_module VARCHAR2(240);
116229
116230 --
116231 -- Upgrade strategy
116232 --
116233 l_actual_upg_option VARCHAR2(1);
116234 l_enc_upg_option VARCHAR2(1);
116235
116236 --
116237 BEGIN
116238 --
116239 IF g_log_enabled THEN
116240 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_242';
116241 END IF;
116242 --
116243 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116244
116245 trace
116246 (p_msg => 'BEGIN of AcctLineType_242'
116247 ,p_level => C_LEVEL_PROCEDURE
116248 ,p_module => l_log_module);
116249
116250 END IF;
116251 --
116252 l_component_type := 'AMB_JLT';
116253 l_component_code := 'WIP';
116254 l_component_type_code := 'S';
116255 l_component_appl_id := 555;
116256 l_amb_context_code := 'DEFAULT';
116257 l_entity_code := 'PRODUCTION';
116258 l_event_class_code := 'BATCH_MATERIAL';
116259 l_event_type_code := 'RELE';
116260 l_line_definition_owner_code := 'S';
116261 l_line_definition_code := 'BATCH_RELEASE';
116262 --
116263 l_balance_type_code := 'A';
116264 l_segment := NULL;
116265 l_ccid := NULL;
116266 l_adr_transaction_coa_id := NULL;
116267 l_adr_accounting_coa_id := NULL;
116268 l_adr_flexfield_segment_code := NULL;
116269 l_adr_flex_value_set_id := NULL;
116270 l_adr_value_type_code := NULL;
116271 l_adr_value_combination_id := NULL;
116272 l_adr_value_segment_code := NULL;
116273
116274 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
116275 l_bflow_class_code := ''; -- 4219869 Business Flow
116276 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
116277 l_budgetary_control_flag := 'N';
116278
116279 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116280 l_bflow_applied_to_amt := NULL; -- 5132302
116281 l_entered_amt_idx := NULL; -- 4262811
116282 l_accted_amt_idx := NULL; -- 4262811
116283 l_acc_rev_flag := NULL; -- 4262811
116284 l_accrual_line_num := NULL; -- 4262811
116285 l_tmp_amt := NULL; -- 4262811
116286 --
116287
116288 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116289 l_balance_type_code <> 'B' THEN
116290 IF NVL(p_source_2,'
116291 ') = 'WIP'
116292 THEN
116293
116294 --
116295 XLA_AE_LINES_PKG.SetNewLine;
116296
116297 p_balance_type_code := l_balance_type_code;
116298 -- set the flag so later we will know whether the gain loss line needs to be created
116299
116300 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116301 p_actual_flag :='A';
116302 END IF;
116303
116304 --
116305 -- bulk performance
116306 --
116307 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116308 p_header_num => 0); -- 4262811
116309 --
116310 -- set accounting line options
116311 --
116312 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116313 p_natural_side_code => 'D'
116314 , p_gain_or_loss_flag => 'N'
116315 , p_gl_transfer_mode_code => 'D'
116316 , p_acct_entry_type_code => 'A'
116317 , p_switch_side_flag => 'Y'
116318 , p_merge_duplicate_code => 'W'
116319 );
116320 --
116321 l_acc_rev_natural_side_code := 'C'; -- 4262811
116322 --
116323 --
116324 -- set accounting line type info
116325 --
116326 xla_ae_lines_pkg.SetAcctLineType
116327 (p_component_type => l_component_type
116328 ,p_event_type_code => l_event_type_code
116329 ,p_line_definition_owner_code => l_line_definition_owner_code
116330 ,p_line_definition_code => l_line_definition_code
116331 ,p_accounting_line_code => l_component_code
116332 ,p_accounting_line_type_code => l_component_type_code
116333 ,p_accounting_line_appl_id => l_component_appl_id
116334 ,p_amb_context_code => l_amb_context_code
116335 ,p_entity_code => l_entity_code
116336 ,p_event_class_code => l_event_class_code);
116337 --
116338 -- set accounting class
116339 --
116340 xla_ae_lines_pkg.SetAcctClass(
116341 p_accounting_class_code => 'WIP_VALUATION'
116342 , p_ae_header_id => l_ae_header_id
116343 );
116344
116345 --
116346 -- set rounding class
116347 --
116348 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116352 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116349 'WIP_VALUATION';
116350
116351 --
116353 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116354 --
116355 -- bulk performance
116356 --
116357 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116358
116359 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116360 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116361
116362 -- 4955764
116363 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116364 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116365
116366 -- 4458381 Public Sector Enh
116367
116368 --
116369 -- set accounting attributes for the line type
116370 --
116371 l_entered_amt_idx := 3;
116372 l_accted_amt_idx := 8;
116373 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116374 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116375 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
116376 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116377 l_rec_acct_attrs.array_char_value(2) := p_source_6;
116378 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116379 l_rec_acct_attrs.array_num_value(3) := p_source_3;
116380 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116381 l_rec_acct_attrs.array_char_value(4) := p_source_7;
116382 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116383 l_rec_acct_attrs.array_date_value(5) := p_source_8;
116384 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116385 l_rec_acct_attrs.array_num_value(6) := p_source_9;
116386 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116387 l_rec_acct_attrs.array_char_value(7) := p_source_10;
116388 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116389 l_rec_acct_attrs.array_num_value(8) := p_source_11;
116390
116391 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116392 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116393
116394 ---------------------------------------------------------------------------------------------------------------
116395 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116396 ---------------------------------------------------------------------------------------------------------------
116397 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116398
116399 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116400 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116401
116402 IF xla_accounting_cache_pkg.GetValueChar
116403 (p_source_code => 'LEDGER_CATEGORY_CODE'
116404 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116405 AND l_bflow_method_code = 'PRIOR_ENTRY'
116406 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116407 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116408 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116409 )
116410 THEN
116411 xla_ae_lines_pkg.BflowUpgEntry
116412 (p_business_method_code => l_bflow_method_code
116413 ,p_business_class_code => l_bflow_class_code
116414 ,p_balance_type => l_balance_type_code);
116415 ELSE
116416 NULL;
116417 -- No business flow processing for business flow method of NONE.
116418 END IF;
116419
116420 --
116421 -- call analytical criteria
116422 --
116423
116424 --
116425 -- call description
116426 --
116427 -- No description or it is inherited.
116428 --
116429 -- call ADRs
116430 -- Bug 4922099
116431 --
116432 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116433 (NVL(l_actual_upg_option, 'N') = 'O') OR
116434 (NVL(l_enc_upg_option, 'N') = 'O')
116435 )
116436 THEN
116437 NULL;
116438 --
116439 --
116440
116441 l_ccid := AcctDerRule_39(
116442 p_application_id => p_application_id
116443 , p_ae_header_id => l_ae_header_id
116444 , p_source_1 => p_source_1
116445 , p_source_2 => p_source_2
116446 , x_transaction_coa_id => l_adr_transaction_coa_id
116447 , x_accounting_coa_id => l_adr_accounting_coa_id
116448 , x_value_type_code => l_adr_value_type_code
116449 , p_side => 'NA'
116450 );
116451
116452 xla_ae_lines_pkg.set_ccid(
116453 p_code_combination_id => l_ccid
116454 , p_value_type_code => l_adr_value_type_code
116455 , p_transaction_coa_id => l_adr_transaction_coa_id
116456 , p_accounting_coa_id => l_adr_accounting_coa_id
116457 , p_adr_code => 'WIP'
116458 , p_adr_type_code => 'S'
116459 , p_component_type => l_component_type
116460 , p_component_code => l_component_code
116461 , p_component_type_code => l_component_type_code
116465 );
116462 , p_component_appl_id => l_component_appl_id
116463 , p_amb_context_code => l_amb_context_code
116464 , p_side => 'NA'
116466
116467
116468 --
116469 --
116470 END IF;
116471 --
116472 -- Bug 4922099
116473 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
116474 (NVL(l_enc_upg_option, 'N') = 'O')
116475 ) AND
116476 (l_bflow_method_code = 'PRIOR_ENTRY')
116477 )
116478 THEN
116479 IF
116480 --
116481 1 = 2
116482 --
116483 THEN
116484 xla_accounting_err_pkg.build_message
116485 (p_appli_s_name => 'XLA'
116486 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116487 ,p_token_1 => 'LINE_NUMBER'
116488 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
116489 ,p_token_2 => 'LINE_TYPE_NAME'
116490 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
116491 l_component_type
116492 ,l_component_code
116493 ,l_component_type_code
116494 ,l_component_appl_id
116495 ,l_amb_context_code
116496 ,l_entity_code
116497 ,l_event_class_code
116498 )
116499 ,p_token_3 => 'OWNER'
116500 ,p_value_3 => xla_lookups_pkg.get_meaning(
116501 p_lookup_type => 'XLA_OWNER_TYPE'
116502 ,p_lookup_code => l_component_type_code
116503 )
116504 ,p_token_4 => 'PRODUCT_NAME'
116505 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
116506 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
116507 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
116508 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
116509 ,p_ae_header_id => NULL
116510 );
116511
116512 IF (C_LEVEL_ERROR>= g_log_level) THEN
116513 trace
116514 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116515 ,p_level => C_LEVEL_ERROR
116516 ,p_module => l_log_module);
116517 END IF;
116518 END IF;
116519 END IF;
116520 --
116521 --
116522 ------------------------------------------------------------------------------------------------
116523 -- 4219869 Business Flow
116524 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
116525 -- Prior Entry. Currently, the following code is always generated.
116526 ------------------------------------------------------------------------------------------------
116527 XLA_AE_LINES_PKG.ValidateCurrentLine;
116528
116529 ------------------------------------------------------------------------------------
116530 -- 4219869 Business Flow
116531 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116532 ------------------------------------------------------------------------------------
116533 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116534
116535 ----------------------------------------------------------------------------------
116536 -- 4219869 Business Flow
116537 -- Update journal entry status -- Need to generate this within IF <condition>
116538 ----------------------------------------------------------------------------------
116539 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116540 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116541 ,p_balance_type_code => l_balance_type_code
116542 );
116543
116544 -------------------------------------------------------------------------------------------
116545 -- 4262811 - Generate the Accrual Reversal lines
116546 -------------------------------------------------------------------------------------------
116547 BEGIN
116548 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116549 (g_array_event(p_event_id).array_value_num('header_index'));
116550 IF l_acc_rev_flag IS NULL THEN
116551 l_acc_rev_flag := 'N';
116552 END IF;
116553 EXCEPTION
116554 WHEN OTHERS THEN
116555 l_acc_rev_flag := 'N';
116556 END;
116557 --
116558 IF (l_acc_rev_flag = 'Y') THEN
116559
116560 -- 4645092 ------------------------------------------------------------------------------
116564
116561 -- To allow MPA report to determine if it should generate report process
116562 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116563 ------------------------------------------------------------------------------------------
116565 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116566 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116567 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
116568 -- call ADRs
116569 -- Bug 4922099
116570 --
116571 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116572 (NVL(l_actual_upg_option, 'N') = 'O') OR
116573 (NVL(l_enc_upg_option, 'N') = 'O')
116574 )
116575 THEN
116576 NULL;
116577 --
116578 --
116579
116580 l_ccid := AcctDerRule_39(
116581 p_application_id => p_application_id
116582 , p_ae_header_id => l_ae_header_id
116583 , p_source_1 => p_source_1
116584 , p_source_2 => p_source_2
116585 , x_transaction_coa_id => l_adr_transaction_coa_id
116586 , x_accounting_coa_id => l_adr_accounting_coa_id
116587 , x_value_type_code => l_adr_value_type_code
116588 , p_side => 'NA'
116589 );
116590
116591 xla_ae_lines_pkg.set_ccid(
116592 p_code_combination_id => l_ccid
116593 , p_value_type_code => l_adr_value_type_code
116594 , p_transaction_coa_id => l_adr_transaction_coa_id
116595 , p_accounting_coa_id => l_adr_accounting_coa_id
116596 , p_adr_code => 'WIP'
116597 , p_adr_type_code => 'S'
116598 , p_component_type => l_component_type
116599 , p_component_code => l_component_code
116600 , p_component_type_code => l_component_type_code
116601 , p_component_appl_id => l_component_appl_id
116602 , p_amb_context_code => l_amb_context_code
116603 , p_side => 'NA'
116604 );
116605
116606
116607 --
116608 --
116609 END IF;
116610
116611 --
116612 -- Update the line information that should be overwritten
116613 --
116614 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116615 p_header_num => 1);
116616 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
116617
116618 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116619
116620 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
116621 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116622 END IF;
116623
116624 --
116625 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116626 --
116627 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116628 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
116629 ELSE
116630 ---------------------------------------------------------------------------------------------------
116631 -- 4262811a Switch Sign
116632 ---------------------------------------------------------------------------------------------------
116633 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
116634 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116635 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116636 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116637 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116638 -- 5132302
116639 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116640 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116641
116642 END IF;
116643
116644 -- 4955764
116645 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116646 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116647
116648
116649 XLA_AE_LINES_PKG.ValidateCurrentLine;
116650 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116651
116652 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116653 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116654 ,p_balance_type_code => l_balance_type_code);
116655
116656 END IF;
116657
116658 -----------------------------------------------------------------------------------------
116659 -- 4262811 Multiperiod Accounting
116660 -----------------------------------------------------------------------------------------
116661 -- No MPA option is assigned.
116662
116663
116664 END IF;
116665 END IF;
116666 --
116667
116668 --
116669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116670 trace
116671 (p_msg => 'END of AcctLineType_242'
116672 ,p_level => C_LEVEL_PROCEDURE
116673 ,p_module => l_log_module);
116674 END IF;
116675 --
116676 EXCEPTION
116677 WHEN xla_exceptions_pkg.application_exception THEN
116678 RAISE;
116682 END AcctLineType_242;
116679 WHEN OTHERS THEN
116680 xla_exceptions_pkg.raise_message
116681 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_242');
116683 --
116684
116685 ---------------------------------------
116686 --
116687 -- PRIVATE FUNCTION
116688 -- AcctLineType_243
116689 --
116690 ---------------------------------------
116691 PROCEDURE AcctLineType_243 (
116692 p_application_id IN NUMBER
116693 ,p_event_id IN NUMBER
116694 ,p_calculate_acctd_flag IN VARCHAR2
116695 ,p_calculate_g_l_flag IN VARCHAR2
116696 ,p_actual_flag IN OUT VARCHAR2
116697 ,p_balance_type_code OUT VARCHAR2
116698 ,p_gain_or_loss_ref OUT VARCHAR2
116699
116700 --Transaction Account
116701 , p_source_1 IN NUMBER
116702 --Journal Line Type
116703 , p_source_2 IN VARCHAR2
116704 --Entered Amount
116705 , p_source_3 IN NUMBER
116706 --First Distribution Identifier
116707 , p_source_5 IN NUMBER
116708 --Distribution Type
116709 , p_source_6 IN VARCHAR2
116710 --Currency Code
116711 , p_source_7 IN VARCHAR2
116712 --Currency Conversion Date
116713 , p_source_8 IN DATE
116714 --Currency Conversion Rate
116715 , p_source_9 IN NUMBER
116716 --Currency Conversion Type
116717 , p_source_10 IN VARCHAR2
116718 --Accounted Amount
116719 , p_source_11 IN NUMBER
116720 )
116721 IS
116722
116723 l_component_type VARCHAR2(80);
116724 l_component_code VARCHAR2(30);
116725 l_component_type_code VARCHAR2(1);
116726 l_component_appl_id INTEGER;
116727 l_amb_context_code VARCHAR2(30);
116728 l_entity_code VARCHAR2(30);
116729 l_event_class_code VARCHAR2(30);
116730 l_ae_header_id NUMBER;
116731 l_event_type_code VARCHAR2(30);
116732 l_line_definition_code VARCHAR2(30);
116733 l_line_definition_owner_code VARCHAR2(1);
116734 --
116735 -- adr variables
116736 l_segment VARCHAR2(30);
116737 l_ccid NUMBER;
116738 l_adr_transaction_coa_id NUMBER;
116739 l_adr_accounting_coa_id NUMBER;
116740 l_adr_flexfield_segment_code VARCHAR2(30);
116741 l_adr_flex_value_set_id NUMBER;
116742 l_adr_value_type_code VARCHAR2(30);
116743 l_adr_value_combination_id NUMBER;
116744 l_adr_value_segment_code VARCHAR2(30);
116745
116746 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
116747 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
116748 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
116749 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
116750
116751 -- 4262811 Variables ------------------------------------------------------------------------------------------
116752 l_entered_amt_idx NUMBER;
116753 l_accted_amt_idx NUMBER;
116754 l_acc_rev_flag VARCHAR2(1);
116755 l_accrual_line_num NUMBER;
116756 l_tmp_amt NUMBER;
116757 l_acc_rev_natural_side_code VARCHAR2(1);
116758
116759 l_num_entries NUMBER;
116760 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
116761 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
116762 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
116763 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
116764 l_recog_line_1 NUMBER;
116765 l_recog_line_2 NUMBER;
116766
116767 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
116768 l_bflow_applied_to_amt NUMBER; -- 5132302
116769 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
116770
116771 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116772
116773 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
116774 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
116775
116776 ---------------------------------------------------------------------------------------------------------------
116777
116778
116779 --
116780 -- bulk performance
116781 --
116782 l_balance_type_code VARCHAR2(1);
116783 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
116784 l_log_module VARCHAR2(240);
116785
116786 --
116787 -- Upgrade strategy
116788 --
116789 l_actual_upg_option VARCHAR2(1);
116790 l_enc_upg_option VARCHAR2(1);
116791
116792 --
116793 BEGIN
116794 --
116795 IF g_log_enabled THEN
116796 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_243';
116797 END IF;
116798 --
116799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116800
116801 trace
116802 (p_msg => 'BEGIN of AcctLineType_243'
116803 ,p_level => C_LEVEL_PROCEDURE
116804 ,p_module => l_log_module);
116805
116806 END IF;
116807 --
116808 l_component_type := 'AMB_JLT';
116809 l_component_code := 'XTC';
116810 l_component_type_code := 'S';
116811 l_component_appl_id := 555;
116812 l_amb_context_code := 'DEFAULT';
116813 l_entity_code := 'INVENTORY';
116817 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
116814 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
116815 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_NO_TP';
116816 l_line_definition_owner_code := 'S';
116818 --
116819 l_balance_type_code := 'A';
116820 l_segment := NULL;
116821 l_ccid := NULL;
116822 l_adr_transaction_coa_id := NULL;
116823 l_adr_accounting_coa_id := NULL;
116824 l_adr_flexfield_segment_code := NULL;
116825 l_adr_flex_value_set_id := NULL;
116826 l_adr_value_type_code := NULL;
116827 l_adr_value_combination_id := NULL;
116828 l_adr_value_segment_code := NULL;
116829
116830 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
116831 l_bflow_class_code := ''; -- 4219869 Business Flow
116832 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
116833 l_budgetary_control_flag := 'N';
116834
116835 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116836 l_bflow_applied_to_amt := NULL; -- 5132302
116837 l_entered_amt_idx := NULL; -- 4262811
116838 l_accted_amt_idx := NULL; -- 4262811
116839 l_acc_rev_flag := NULL; -- 4262811
116840 l_accrual_line_num := NULL; -- 4262811
116841 l_tmp_amt := NULL; -- 4262811
116842 --
116843
116844 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116845 l_balance_type_code <> 'B' THEN
116846 IF NVL(p_source_2,'
116847 ') = 'XFC'
116848 THEN
116849
116850 --
116851 XLA_AE_LINES_PKG.SetNewLine;
116852
116853 p_balance_type_code := l_balance_type_code;
116854 -- set the flag so later we will know whether the gain loss line needs to be created
116855
116856 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116857 p_actual_flag :='A';
116858 END IF;
116859
116860 --
116861 -- bulk performance
116862 --
116863 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116864 p_header_num => 0); -- 4262811
116865 --
116866 -- set accounting line options
116867 --
116868 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116869 p_natural_side_code => 'D'
116870 , p_gain_or_loss_flag => 'N'
116871 , p_gl_transfer_mode_code => 'D'
116872 , p_acct_entry_type_code => 'A'
116873 , p_switch_side_flag => 'Y'
116874 , p_merge_duplicate_code => 'W'
116875 );
116876 --
116877 l_acc_rev_natural_side_code := 'C'; -- 4262811
116878 --
116879 --
116880 -- set accounting line type info
116881 --
116882 xla_ae_lines_pkg.SetAcctLineType
116883 (p_component_type => l_component_type
116884 ,p_event_type_code => l_event_type_code
116885 ,p_line_definition_owner_code => l_line_definition_owner_code
116886 ,p_line_definition_code => l_line_definition_code
116887 ,p_accounting_line_code => l_component_code
116888 ,p_accounting_line_type_code => l_component_type_code
116889 ,p_accounting_line_appl_id => l_component_appl_id
116890 ,p_amb_context_code => l_amb_context_code
116891 ,p_entity_code => l_entity_code
116892 ,p_event_class_code => l_event_class_code);
116893 --
116894 -- set accounting class
116895 --
116896 xla_ae_lines_pkg.SetAcctClass(
116897 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
116898 , p_ae_header_id => l_ae_header_id
116899 );
116900
116901 --
116902 -- set rounding class
116903 --
116904 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116905 'INTERORG_TRANSFER_CREDIT';
116906
116907 --
116908 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116909 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116910 --
116911 -- bulk performance
116912 --
116913 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116914
116915 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116916 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116917
116918 -- 4955764
116919 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116920 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116921
116922 -- 4458381 Public Sector Enh
116923
116924 --
116925 -- set accounting attributes for the line type
116926 --
116927 l_entered_amt_idx := 3;
116928 l_accted_amt_idx := 8;
116929 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116930 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116931 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
116932 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116933 l_rec_acct_attrs.array_char_value(2) := p_source_6;
116934 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116935 l_rec_acct_attrs.array_num_value(3) := p_source_3;
116939 l_rec_acct_attrs.array_date_value(5) := p_source_8;
116936 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116937 l_rec_acct_attrs.array_char_value(4) := p_source_7;
116938 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116940 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116941 l_rec_acct_attrs.array_num_value(6) := p_source_9;
116942 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116943 l_rec_acct_attrs.array_char_value(7) := p_source_10;
116944 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116945 l_rec_acct_attrs.array_num_value(8) := p_source_11;
116946
116947 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116948 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116949
116950 ---------------------------------------------------------------------------------------------------------------
116951 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116952 ---------------------------------------------------------------------------------------------------------------
116953 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116954
116955 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116956 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116957
116958 IF xla_accounting_cache_pkg.GetValueChar
116959 (p_source_code => 'LEDGER_CATEGORY_CODE'
116960 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116961 AND l_bflow_method_code = 'PRIOR_ENTRY'
116962 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116963 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116964 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116965 )
116966 THEN
116967 xla_ae_lines_pkg.BflowUpgEntry
116968 (p_business_method_code => l_bflow_method_code
116969 ,p_business_class_code => l_bflow_class_code
116970 ,p_balance_type => l_balance_type_code);
116971 ELSE
116972 NULL;
116973 -- No business flow processing for business flow method of NONE.
116974 END IF;
116975
116976 --
116977 -- call analytical criteria
116978 --
116979
116980 --
116981 -- call description
116982 --
116983 -- No description or it is inherited.
116984 --
116985 -- call ADRs
116986 -- Bug 4922099
116987 --
116988 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116989 (NVL(l_actual_upg_option, 'N') = 'O') OR
116990 (NVL(l_enc_upg_option, 'N') = 'O')
116991 )
116992 THEN
116993 NULL;
116994 --
116995 --
116996
116997 l_ccid := AcctDerRule_40(
116998 p_application_id => p_application_id
116999 , p_ae_header_id => l_ae_header_id
117000 , p_source_1 => p_source_1
117001 , p_source_2 => p_source_2
117002 , x_transaction_coa_id => l_adr_transaction_coa_id
117003 , x_accounting_coa_id => l_adr_accounting_coa_id
117004 , x_value_type_code => l_adr_value_type_code
117005 , p_side => 'NA'
117006 );
117007
117008 xla_ae_lines_pkg.set_ccid(
117009 p_code_combination_id => l_ccid
117010 , p_value_type_code => l_adr_value_type_code
117011 , p_transaction_coa_id => l_adr_transaction_coa_id
117012 , p_accounting_coa_id => l_adr_accounting_coa_id
117013 , p_adr_code => 'XTC'
117014 , p_adr_type_code => 'S'
117015 , p_component_type => l_component_type
117016 , p_component_code => l_component_code
117017 , p_component_type_code => l_component_type_code
117018 , p_component_appl_id => l_component_appl_id
117019 , p_amb_context_code => l_amb_context_code
117020 , p_side => 'NA'
117021 );
117022
117023
117024 --
117025 --
117026 END IF;
117027 --
117028 -- Bug 4922099
117029 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117030 (NVL(l_enc_upg_option, 'N') = 'O')
117031 ) AND
117032 (l_bflow_method_code = 'PRIOR_ENTRY')
117033 )
117034 THEN
117035 IF
117036 --
117037 1 = 2
117038 --
117039 THEN
117040 xla_accounting_err_pkg.build_message
117041 (p_appli_s_name => 'XLA'
117042 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117043 ,p_token_1 => 'LINE_NUMBER'
117044 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
117045 ,p_token_2 => 'LINE_TYPE_NAME'
117046 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
117047 l_component_type
117048 ,l_component_code
117049 ,l_component_type_code
117050 ,l_component_appl_id
117054 )
117051 ,l_amb_context_code
117052 ,l_entity_code
117053 ,l_event_class_code
117055 ,p_token_3 => 'OWNER'
117056 ,p_value_3 => xla_lookups_pkg.get_meaning(
117057 p_lookup_type => 'XLA_OWNER_TYPE'
117058 ,p_lookup_code => l_component_type_code
117059 )
117060 ,p_token_4 => 'PRODUCT_NAME'
117061 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117062 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117063 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117064 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117065 ,p_ae_header_id => NULL
117066 );
117067
117068 IF (C_LEVEL_ERROR>= g_log_level) THEN
117069 trace
117070 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117071 ,p_level => C_LEVEL_ERROR
117072 ,p_module => l_log_module);
117073 END IF;
117074 END IF;
117075 END IF;
117076 --
117077 --
117078 ------------------------------------------------------------------------------------------------
117079 -- 4219869 Business Flow
117080 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117081 -- Prior Entry. Currently, the following code is always generated.
117082 ------------------------------------------------------------------------------------------------
117083 XLA_AE_LINES_PKG.ValidateCurrentLine;
117084
117085 ------------------------------------------------------------------------------------
117086 -- 4219869 Business Flow
117087 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117088 ------------------------------------------------------------------------------------
117089 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117090
117091 ----------------------------------------------------------------------------------
117092 -- 4219869 Business Flow
117093 -- Update journal entry status -- Need to generate this within IF <condition>
117094 ----------------------------------------------------------------------------------
117095 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117096 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117097 ,p_balance_type_code => l_balance_type_code
117098 );
117099
117100 -------------------------------------------------------------------------------------------
117101 -- 4262811 - Generate the Accrual Reversal lines
117102 -------------------------------------------------------------------------------------------
117103 BEGIN
117104 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117105 (g_array_event(p_event_id).array_value_num('header_index'));
117106 IF l_acc_rev_flag IS NULL THEN
117107 l_acc_rev_flag := 'N';
117108 END IF;
117109 EXCEPTION
117110 WHEN OTHERS THEN
117111 l_acc_rev_flag := 'N';
117112 END;
117113 --
117114 IF (l_acc_rev_flag = 'Y') THEN
117115
117116 -- 4645092 ------------------------------------------------------------------------------
117117 -- To allow MPA report to determine if it should generate report process
117118 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117119 ------------------------------------------------------------------------------------------
117120
117121 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117122 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117123 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
117124 -- call ADRs
117125 -- Bug 4922099
117126 --
117127 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117128 (NVL(l_actual_upg_option, 'N') = 'O') OR
117129 (NVL(l_enc_upg_option, 'N') = 'O')
117130 )
117131 THEN
117132 NULL;
117133 --
117134 --
117135
117136 l_ccid := AcctDerRule_40(
117137 p_application_id => p_application_id
117138 , p_ae_header_id => l_ae_header_id
117139 , p_source_1 => p_source_1
117140 , p_source_2 => p_source_2
117141 , x_transaction_coa_id => l_adr_transaction_coa_id
117142 , x_accounting_coa_id => l_adr_accounting_coa_id
117143 , x_value_type_code => l_adr_value_type_code
117144 , p_side => 'NA'
117145 );
117146
117147 xla_ae_lines_pkg.set_ccid(
117148 p_code_combination_id => l_ccid
117149 , p_value_type_code => l_adr_value_type_code
117150 , p_transaction_coa_id => l_adr_transaction_coa_id
117151 , p_accounting_coa_id => l_adr_accounting_coa_id
117155 , p_component_code => l_component_code
117152 , p_adr_code => 'XTC'
117153 , p_adr_type_code => 'S'
117154 , p_component_type => l_component_type
117156 , p_component_type_code => l_component_type_code
117157 , p_component_appl_id => l_component_appl_id
117158 , p_amb_context_code => l_amb_context_code
117159 , p_side => 'NA'
117160 );
117161
117162
117163 --
117164 --
117165 END IF;
117166
117167 --
117168 -- Update the line information that should be overwritten
117169 --
117170 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117171 p_header_num => 1);
117172 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
117173
117174 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117175
117176 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
117177 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117178 END IF;
117179
117180 --
117181 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117182 --
117183 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117184 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
117185 ELSE
117186 ---------------------------------------------------------------------------------------------------
117187 -- 4262811a Switch Sign
117188 ---------------------------------------------------------------------------------------------------
117189 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
117190 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117191 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117192 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117193 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117194 -- 5132302
117195 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117196 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117197
117198 END IF;
117199
117200 -- 4955764
117201 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117202 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117203
117204
117205 XLA_AE_LINES_PKG.ValidateCurrentLine;
117206 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117207
117208 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117209 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117210 ,p_balance_type_code => l_balance_type_code);
117211
117212 END IF;
117213
117214 -----------------------------------------------------------------------------------------
117215 -- 4262811 Multiperiod Accounting
117216 -----------------------------------------------------------------------------------------
117217 -- No MPA option is assigned.
117218
117219
117220 END IF;
117221 END IF;
117222 --
117223
117224 --
117225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117226 trace
117227 (p_msg => 'END of AcctLineType_243'
117228 ,p_level => C_LEVEL_PROCEDURE
117229 ,p_module => l_log_module);
117230 END IF;
117231 --
117232 EXCEPTION
117233 WHEN xla_exceptions_pkg.application_exception THEN
117234 RAISE;
117235 WHEN OTHERS THEN
117236 xla_exceptions_pkg.raise_message
117237 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_243');
117238 END AcctLineType_243;
117239 --
117240
117241 ---------------------------------------
117242 --
117243 -- PRIVATE FUNCTION
117244 -- AcctLineType_244
117245 --
117246 ---------------------------------------
117247 PROCEDURE AcctLineType_244 (
117248 p_application_id IN NUMBER
117249 ,p_event_id IN NUMBER
117250 ,p_calculate_acctd_flag IN VARCHAR2
117251 ,p_calculate_g_l_flag IN VARCHAR2
117252 ,p_actual_flag IN OUT VARCHAR2
117253 ,p_balance_type_code OUT VARCHAR2
117254 ,p_gain_or_loss_ref OUT VARCHAR2
117255
117256 --Transaction Account
117257 , p_source_1 IN NUMBER
117258 --Journal Line Type
117259 , p_source_2 IN VARCHAR2
117260 --Entered Amount
117261 , p_source_3 IN NUMBER
117262 --First Distribution Identifier
117263 , p_source_5 IN NUMBER
117264 --Distribution Type
117265 , p_source_6 IN VARCHAR2
117266 --Currency Code
117267 , p_source_7 IN VARCHAR2
117268 --Currency Conversion Date
117269 , p_source_8 IN DATE
117270 --Currency Conversion Rate
117271 , p_source_9 IN NUMBER
117272 --Currency Conversion Type
117273 , p_source_10 IN VARCHAR2
117274 --Accounted Amount
117275 , p_source_11 IN NUMBER
117276 )
117277 IS
117278
117282 l_component_appl_id INTEGER;
117279 l_component_type VARCHAR2(80);
117280 l_component_code VARCHAR2(30);
117281 l_component_type_code VARCHAR2(1);
117283 l_amb_context_code VARCHAR2(30);
117284 l_entity_code VARCHAR2(30);
117285 l_event_class_code VARCHAR2(30);
117286 l_ae_header_id NUMBER;
117287 l_event_type_code VARCHAR2(30);
117288 l_line_definition_code VARCHAR2(30);
117289 l_line_definition_owner_code VARCHAR2(1);
117290 --
117291 -- adr variables
117292 l_segment VARCHAR2(30);
117293 l_ccid NUMBER;
117294 l_adr_transaction_coa_id NUMBER;
117295 l_adr_accounting_coa_id NUMBER;
117296 l_adr_flexfield_segment_code VARCHAR2(30);
117297 l_adr_flex_value_set_id NUMBER;
117298 l_adr_value_type_code VARCHAR2(30);
117299 l_adr_value_combination_id NUMBER;
117300 l_adr_value_segment_code VARCHAR2(30);
117301
117302 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
117303 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
117304 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
117305 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
117306
117307 -- 4262811 Variables ------------------------------------------------------------------------------------------
117308 l_entered_amt_idx NUMBER;
117309 l_accted_amt_idx NUMBER;
117310 l_acc_rev_flag VARCHAR2(1);
117311 l_accrual_line_num NUMBER;
117312 l_tmp_amt NUMBER;
117313 l_acc_rev_natural_side_code VARCHAR2(1);
117314
117315 l_num_entries NUMBER;
117316 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
117317 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
117318 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
117319 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
117320 l_recog_line_1 NUMBER;
117321 l_recog_line_2 NUMBER;
117322
117323 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
117324 l_bflow_applied_to_amt NUMBER; -- 5132302
117325 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
117326
117327 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117328
117329 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
117330 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
117331
117332 ---------------------------------------------------------------------------------------------------------------
117333
117334
117335 --
117336 -- bulk performance
117337 --
117338 l_balance_type_code VARCHAR2(1);
117339 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
117340 l_log_module VARCHAR2(240);
117341
117342 --
117343 -- Upgrade strategy
117344 --
117345 l_actual_upg_option VARCHAR2(1);
117346 l_enc_upg_option VARCHAR2(1);
117347
117348 --
117349 BEGIN
117350 --
117351 IF g_log_enabled THEN
117352 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_244';
117353 END IF;
117354 --
117355 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117356
117357 trace
117358 (p_msg => 'BEGIN of AcctLineType_244'
117359 ,p_level => C_LEVEL_PROCEDURE
117360 ,p_module => l_log_module);
117361
117362 END IF;
117363 --
117364 l_component_type := 'AMB_JLT';
117365 l_component_code := 'XTC';
117366 l_component_type_code := 'S';
117367 l_component_appl_id := 555;
117368 l_amb_context_code := 'DEFAULT';
117369 l_entity_code := 'INVENTORY';
117370 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
117371 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
117372 l_line_definition_owner_code := 'S';
117373 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP_NO_TP';
117374 --
117375 l_balance_type_code := 'A';
117376 l_segment := NULL;
117377 l_ccid := NULL;
117378 l_adr_transaction_coa_id := NULL;
117379 l_adr_accounting_coa_id := NULL;
117380 l_adr_flexfield_segment_code := NULL;
117381 l_adr_flex_value_set_id := NULL;
117382 l_adr_value_type_code := NULL;
117383 l_adr_value_combination_id := NULL;
117384 l_adr_value_segment_code := NULL;
117385
117386 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
117387 l_bflow_class_code := ''; -- 4219869 Business Flow
117388 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
117389 l_budgetary_control_flag := 'N';
117390
117391 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117392 l_bflow_applied_to_amt := NULL; -- 5132302
117393 l_entered_amt_idx := NULL; -- 4262811
117394 l_accted_amt_idx := NULL; -- 4262811
117395 l_acc_rev_flag := NULL; -- 4262811
117396 l_accrual_line_num := NULL; -- 4262811
117397 l_tmp_amt := NULL; -- 4262811
117398 --
117399
117400 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117401 l_balance_type_code <> 'B' THEN
117402 IF NVL(p_source_2,'
117406 --
117403 ') = 'XFC'
117404 THEN
117405
117407 XLA_AE_LINES_PKG.SetNewLine;
117408
117409 p_balance_type_code := l_balance_type_code;
117410 -- set the flag so later we will know whether the gain loss line needs to be created
117411
117412 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117413 p_actual_flag :='A';
117414 END IF;
117415
117416 --
117417 -- bulk performance
117418 --
117419 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117420 p_header_num => 0); -- 4262811
117421 --
117422 -- set accounting line options
117423 --
117424 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117425 p_natural_side_code => 'D'
117426 , p_gain_or_loss_flag => 'N'
117427 , p_gl_transfer_mode_code => 'D'
117428 , p_acct_entry_type_code => 'A'
117429 , p_switch_side_flag => 'Y'
117430 , p_merge_duplicate_code => 'W'
117431 );
117432 --
117433 l_acc_rev_natural_side_code := 'C'; -- 4262811
117434 --
117435 --
117436 -- set accounting line type info
117437 --
117438 xla_ae_lines_pkg.SetAcctLineType
117439 (p_component_type => l_component_type
117440 ,p_event_type_code => l_event_type_code
117441 ,p_line_definition_owner_code => l_line_definition_owner_code
117442 ,p_line_definition_code => l_line_definition_code
117443 ,p_accounting_line_code => l_component_code
117444 ,p_accounting_line_type_code => l_component_type_code
117445 ,p_accounting_line_appl_id => l_component_appl_id
117446 ,p_amb_context_code => l_amb_context_code
117447 ,p_entity_code => l_entity_code
117448 ,p_event_class_code => l_event_class_code);
117449 --
117450 -- set accounting class
117451 --
117452 xla_ae_lines_pkg.SetAcctClass(
117453 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
117454 , p_ae_header_id => l_ae_header_id
117455 );
117456
117457 --
117458 -- set rounding class
117459 --
117460 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117461 'INTERORG_TRANSFER_CREDIT';
117462
117463 --
117464 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117465 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117466 --
117467 -- bulk performance
117468 --
117469 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117470
117471 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117472 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117473
117474 -- 4955764
117475 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117476 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
117477
117478 -- 4458381 Public Sector Enh
117479
117480 --
117481 -- set accounting attributes for the line type
117482 --
117483 l_entered_amt_idx := 3;
117484 l_accted_amt_idx := 8;
117485 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117486 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
117487 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
117488 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
117489 l_rec_acct_attrs.array_char_value(2) := p_source_6;
117490 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
117491 l_rec_acct_attrs.array_num_value(3) := p_source_3;
117492 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
117493 l_rec_acct_attrs.array_char_value(4) := p_source_7;
117494 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
117495 l_rec_acct_attrs.array_date_value(5) := p_source_8;
117496 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
117497 l_rec_acct_attrs.array_num_value(6) := p_source_9;
117498 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
117499 l_rec_acct_attrs.array_char_value(7) := p_source_10;
117500 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
117501 l_rec_acct_attrs.array_num_value(8) := p_source_11;
117502
117503 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
117504 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
117505
117506 ---------------------------------------------------------------------------------------------------------------
117507 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
117508 ---------------------------------------------------------------------------------------------------------------
117509 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
117510
117511 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117512 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117513
117514 IF xla_accounting_cache_pkg.GetValueChar
117515 (p_source_code => 'LEDGER_CATEGORY_CODE'
117519 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
117516 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
117517 AND l_bflow_method_code = 'PRIOR_ENTRY'
117518 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
117520 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
117521 )
117522 THEN
117523 xla_ae_lines_pkg.BflowUpgEntry
117524 (p_business_method_code => l_bflow_method_code
117525 ,p_business_class_code => l_bflow_class_code
117526 ,p_balance_type => l_balance_type_code);
117527 ELSE
117528 NULL;
117529 -- No business flow processing for business flow method of NONE.
117530 END IF;
117531
117532 --
117533 -- call analytical criteria
117534 --
117535
117536 --
117537 -- call description
117538 --
117539 -- No description or it is inherited.
117540 --
117541 -- call ADRs
117542 -- Bug 4922099
117543 --
117544 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117545 (NVL(l_actual_upg_option, 'N') = 'O') OR
117546 (NVL(l_enc_upg_option, 'N') = 'O')
117547 )
117548 THEN
117549 NULL;
117550 --
117551 --
117552
117553 l_ccid := AcctDerRule_40(
117554 p_application_id => p_application_id
117555 , p_ae_header_id => l_ae_header_id
117556 , p_source_1 => p_source_1
117557 , p_source_2 => p_source_2
117558 , x_transaction_coa_id => l_adr_transaction_coa_id
117559 , x_accounting_coa_id => l_adr_accounting_coa_id
117560 , x_value_type_code => l_adr_value_type_code
117561 , p_side => 'NA'
117562 );
117563
117564 xla_ae_lines_pkg.set_ccid(
117565 p_code_combination_id => l_ccid
117566 , p_value_type_code => l_adr_value_type_code
117567 , p_transaction_coa_id => l_adr_transaction_coa_id
117568 , p_accounting_coa_id => l_adr_accounting_coa_id
117569 , p_adr_code => 'XTC'
117570 , p_adr_type_code => 'S'
117571 , p_component_type => l_component_type
117572 , p_component_code => l_component_code
117573 , p_component_type_code => l_component_type_code
117574 , p_component_appl_id => l_component_appl_id
117575 , p_amb_context_code => l_amb_context_code
117576 , p_side => 'NA'
117577 );
117578
117579
117580 --
117581 --
117582 END IF;
117583 --
117584 -- Bug 4922099
117585 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117586 (NVL(l_enc_upg_option, 'N') = 'O')
117587 ) AND
117588 (l_bflow_method_code = 'PRIOR_ENTRY')
117589 )
117590 THEN
117591 IF
117592 --
117593 1 = 2
117594 --
117595 THEN
117596 xla_accounting_err_pkg.build_message
117597 (p_appli_s_name => 'XLA'
117598 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117599 ,p_token_1 => 'LINE_NUMBER'
117600 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
117601 ,p_token_2 => 'LINE_TYPE_NAME'
117602 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
117603 l_component_type
117604 ,l_component_code
117605 ,l_component_type_code
117606 ,l_component_appl_id
117607 ,l_amb_context_code
117608 ,l_entity_code
117609 ,l_event_class_code
117610 )
117611 ,p_token_3 => 'OWNER'
117612 ,p_value_3 => xla_lookups_pkg.get_meaning(
117613 p_lookup_type => 'XLA_OWNER_TYPE'
117614 ,p_lookup_code => l_component_type_code
117615 )
117616 ,p_token_4 => 'PRODUCT_NAME'
117617 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117618 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117619 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117620 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117621 ,p_ae_header_id => NULL
117622 );
117623
117624 IF (C_LEVEL_ERROR>= g_log_level) THEN
117625 trace
117626 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117627 ,p_level => C_LEVEL_ERROR
117631 END IF;
117628 ,p_module => l_log_module);
117629 END IF;
117630 END IF;
117632 --
117633 --
117634 ------------------------------------------------------------------------------------------------
117635 -- 4219869 Business Flow
117636 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117637 -- Prior Entry. Currently, the following code is always generated.
117638 ------------------------------------------------------------------------------------------------
117639 XLA_AE_LINES_PKG.ValidateCurrentLine;
117640
117641 ------------------------------------------------------------------------------------
117642 -- 4219869 Business Flow
117643 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117644 ------------------------------------------------------------------------------------
117645 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117646
117647 ----------------------------------------------------------------------------------
117648 -- 4219869 Business Flow
117649 -- Update journal entry status -- Need to generate this within IF <condition>
117650 ----------------------------------------------------------------------------------
117651 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117652 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117653 ,p_balance_type_code => l_balance_type_code
117654 );
117655
117656 -------------------------------------------------------------------------------------------
117657 -- 4262811 - Generate the Accrual Reversal lines
117658 -------------------------------------------------------------------------------------------
117659 BEGIN
117660 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117661 (g_array_event(p_event_id).array_value_num('header_index'));
117662 IF l_acc_rev_flag IS NULL THEN
117663 l_acc_rev_flag := 'N';
117664 END IF;
117665 EXCEPTION
117666 WHEN OTHERS THEN
117667 l_acc_rev_flag := 'N';
117668 END;
117669 --
117670 IF (l_acc_rev_flag = 'Y') THEN
117671
117672 -- 4645092 ------------------------------------------------------------------------------
117673 -- To allow MPA report to determine if it should generate report process
117674 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117675 ------------------------------------------------------------------------------------------
117676
117677 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117678 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117679 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
117680 -- call ADRs
117681 -- Bug 4922099
117682 --
117683 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117684 (NVL(l_actual_upg_option, 'N') = 'O') OR
117685 (NVL(l_enc_upg_option, 'N') = 'O')
117686 )
117687 THEN
117688 NULL;
117689 --
117690 --
117691
117692 l_ccid := AcctDerRule_40(
117693 p_application_id => p_application_id
117694 , p_ae_header_id => l_ae_header_id
117695 , p_source_1 => p_source_1
117696 , p_source_2 => p_source_2
117697 , x_transaction_coa_id => l_adr_transaction_coa_id
117698 , x_accounting_coa_id => l_adr_accounting_coa_id
117699 , x_value_type_code => l_adr_value_type_code
117700 , p_side => 'NA'
117701 );
117702
117703 xla_ae_lines_pkg.set_ccid(
117704 p_code_combination_id => l_ccid
117705 , p_value_type_code => l_adr_value_type_code
117706 , p_transaction_coa_id => l_adr_transaction_coa_id
117707 , p_accounting_coa_id => l_adr_accounting_coa_id
117708 , p_adr_code => 'XTC'
117709 , p_adr_type_code => 'S'
117710 , p_component_type => l_component_type
117711 , p_component_code => l_component_code
117712 , p_component_type_code => l_component_type_code
117713 , p_component_appl_id => l_component_appl_id
117714 , p_amb_context_code => l_amb_context_code
117715 , p_side => 'NA'
117716 );
117717
117718
117719 --
117720 --
117721 END IF;
117722
117723 --
117724 -- Update the line information that should be overwritten
117725 --
117726 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117727 p_header_num => 1);
117728 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
117729
117730 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117731
117732 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
117733 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117734 END IF;
117735
117736 --
117737 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117738 --
117739 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117740 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
117741 ELSE
117745 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
117742 ---------------------------------------------------------------------------------------------------
117743 -- 4262811a Switch Sign
117744 ---------------------------------------------------------------------------------------------------
117746 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117747 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117748 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117749 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117750 -- 5132302
117751 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117752 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117753
117754 END IF;
117755
117756 -- 4955764
117757 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117758 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117759
117760
117761 XLA_AE_LINES_PKG.ValidateCurrentLine;
117762 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117763
117764 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117765 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117766 ,p_balance_type_code => l_balance_type_code);
117767
117768 END IF;
117769
117770 -----------------------------------------------------------------------------------------
117771 -- 4262811 Multiperiod Accounting
117772 -----------------------------------------------------------------------------------------
117773 -- No MPA option is assigned.
117774
117775
117776 END IF;
117777 END IF;
117778 --
117779
117780 --
117781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117782 trace
117783 (p_msg => 'END of AcctLineType_244'
117784 ,p_level => C_LEVEL_PROCEDURE
117785 ,p_module => l_log_module);
117786 END IF;
117787 --
117788 EXCEPTION
117789 WHEN xla_exceptions_pkg.application_exception THEN
117790 RAISE;
117791 WHEN OTHERS THEN
117792 xla_exceptions_pkg.raise_message
117793 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_244');
117794 END AcctLineType_244;
117795 --
117796
117797 ---------------------------------------
117798 --
117799 -- PRIVATE FUNCTION
117800 -- AcctLineType_245
117801 --
117802 ---------------------------------------
117803 PROCEDURE AcctLineType_245 (
117804 p_application_id IN NUMBER
117805 ,p_event_id IN NUMBER
117806 ,p_calculate_acctd_flag IN VARCHAR2
117807 ,p_calculate_g_l_flag IN VARCHAR2
117808 ,p_actual_flag IN OUT VARCHAR2
117809 ,p_balance_type_code OUT VARCHAR2
117810 ,p_gain_or_loss_ref OUT VARCHAR2
117811
117812 --Transaction Account
117813 , p_source_1 IN NUMBER
117814 --Journal Line Type
117815 , p_source_2 IN VARCHAR2
117816 --Entered Amount
117817 , p_source_3 IN NUMBER
117818 --First Distribution Identifier
117819 , p_source_5 IN NUMBER
117820 --Distribution Type
117821 , p_source_6 IN VARCHAR2
117822 --Currency Code
117823 , p_source_7 IN VARCHAR2
117824 --Currency Conversion Date
117825 , p_source_8 IN DATE
117826 --Currency Conversion Rate
117827 , p_source_9 IN NUMBER
117828 --Currency Conversion Type
117829 , p_source_10 IN VARCHAR2
117830 --Accounted Amount
117831 , p_source_11 IN NUMBER
117832 )
117833 IS
117834
117835 l_component_type VARCHAR2(80);
117836 l_component_code VARCHAR2(30);
117837 l_component_type_code VARCHAR2(1);
117838 l_component_appl_id INTEGER;
117839 l_amb_context_code VARCHAR2(30);
117840 l_entity_code VARCHAR2(30);
117841 l_event_class_code VARCHAR2(30);
117842 l_ae_header_id NUMBER;
117843 l_event_type_code VARCHAR2(30);
117844 l_line_definition_code VARCHAR2(30);
117845 l_line_definition_owner_code VARCHAR2(1);
117846 --
117847 -- adr variables
117848 l_segment VARCHAR2(30);
117849 l_ccid NUMBER;
117850 l_adr_transaction_coa_id NUMBER;
117851 l_adr_accounting_coa_id NUMBER;
117852 l_adr_flexfield_segment_code VARCHAR2(30);
117853 l_adr_flex_value_set_id NUMBER;
117854 l_adr_value_type_code VARCHAR2(30);
117855 l_adr_value_combination_id NUMBER;
117856 l_adr_value_segment_code VARCHAR2(30);
117857
117858 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
117859 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
117860 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
117861 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
117862
117863 -- 4262811 Variables ------------------------------------------------------------------------------------------
117864 l_entered_amt_idx NUMBER;
117865 l_accted_amt_idx NUMBER;
117866 l_acc_rev_flag VARCHAR2(1);
117870
117867 l_accrual_line_num NUMBER;
117868 l_tmp_amt NUMBER;
117869 l_acc_rev_natural_side_code VARCHAR2(1);
117871 l_num_entries NUMBER;
117872 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
117873 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
117874 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
117875 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
117876 l_recog_line_1 NUMBER;
117877 l_recog_line_2 NUMBER;
117878
117879 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
117880 l_bflow_applied_to_amt NUMBER; -- 5132302
117881 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
117882
117883 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117884
117885 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
117886 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
117887
117888 ---------------------------------------------------------------------------------------------------------------
117889
117890
117891 --
117892 -- bulk performance
117893 --
117894 l_balance_type_code VARCHAR2(1);
117895 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
117896 l_log_module VARCHAR2(240);
117897
117898 --
117899 -- Upgrade strategy
117900 --
117901 l_actual_upg_option VARCHAR2(1);
117902 l_enc_upg_option VARCHAR2(1);
117903
117904 --
117905 BEGIN
117906 --
117907 IF g_log_enabled THEN
117908 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_245';
117909 END IF;
117910 --
117911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117912
117913 trace
117914 (p_msg => 'BEGIN of AcctLineType_245'
117915 ,p_level => C_LEVEL_PROCEDURE
117916 ,p_module => l_log_module);
117917
117918 END IF;
117919 --
117920 l_component_type := 'AMB_JLT';
117921 l_component_code := 'XTC';
117922 l_component_type_code := 'S';
117923 l_component_appl_id := 555;
117924 l_amb_context_code := 'DEFAULT';
117925 l_entity_code := 'INVENTORY';
117926 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
117927 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
117928 l_line_definition_owner_code := 'S';
117929 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
117930 --
117931 l_balance_type_code := 'A';
117932 l_segment := NULL;
117933 l_ccid := NULL;
117934 l_adr_transaction_coa_id := NULL;
117935 l_adr_accounting_coa_id := NULL;
117936 l_adr_flexfield_segment_code := NULL;
117937 l_adr_flex_value_set_id := NULL;
117938 l_adr_value_type_code := NULL;
117939 l_adr_value_combination_id := NULL;
117940 l_adr_value_segment_code := NULL;
117941
117942 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
117943 l_bflow_class_code := ''; -- 4219869 Business Flow
117944 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
117945 l_budgetary_control_flag := 'N';
117946
117947 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117948 l_bflow_applied_to_amt := NULL; -- 5132302
117949 l_entered_amt_idx := NULL; -- 4262811
117950 l_accted_amt_idx := NULL; -- 4262811
117951 l_acc_rev_flag := NULL; -- 4262811
117952 l_accrual_line_num := NULL; -- 4262811
117953 l_tmp_amt := NULL; -- 4262811
117954 --
117955
117956 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117957 l_balance_type_code <> 'B' THEN
117958 IF NVL(p_source_2,'
117959 ') = 'XFC'
117960 THEN
117961
117962 --
117963 XLA_AE_LINES_PKG.SetNewLine;
117964
117965 p_balance_type_code := l_balance_type_code;
117966 -- set the flag so later we will know whether the gain loss line needs to be created
117967
117968 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117969 p_actual_flag :='A';
117970 END IF;
117971
117972 --
117973 -- bulk performance
117974 --
117975 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117976 p_header_num => 0); -- 4262811
117977 --
117978 -- set accounting line options
117979 --
117980 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117981 p_natural_side_code => 'D'
117982 , p_gain_or_loss_flag => 'N'
117983 , p_gl_transfer_mode_code => 'D'
117984 , p_acct_entry_type_code => 'A'
117985 , p_switch_side_flag => 'Y'
117986 , p_merge_duplicate_code => 'W'
117987 );
117988 --
117989 l_acc_rev_natural_side_code := 'C'; -- 4262811
117990 --
117991 --
117992 -- set accounting line type info
117993 --
117994 xla_ae_lines_pkg.SetAcctLineType
117995 (p_component_type => l_component_type
117996 ,p_event_type_code => l_event_type_code
117997 ,p_line_definition_owner_code => l_line_definition_owner_code
118001 ,p_accounting_line_appl_id => l_component_appl_id
117998 ,p_line_definition_code => l_line_definition_code
117999 ,p_accounting_line_code => l_component_code
118000 ,p_accounting_line_type_code => l_component_type_code
118002 ,p_amb_context_code => l_amb_context_code
118003 ,p_entity_code => l_entity_code
118004 ,p_event_class_code => l_event_class_code);
118005 --
118006 -- set accounting class
118007 --
118008 xla_ae_lines_pkg.SetAcctClass(
118009 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
118010 , p_ae_header_id => l_ae_header_id
118011 );
118012
118013 --
118014 -- set rounding class
118015 --
118016 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118017 'INTERORG_TRANSFER_CREDIT';
118018
118019 --
118020 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118021 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118022 --
118023 -- bulk performance
118024 --
118025 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118026
118027 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118028 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118029
118030 -- 4955764
118031 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118032 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118033
118034 -- 4458381 Public Sector Enh
118035
118036 --
118037 -- set accounting attributes for the line type
118038 --
118039 l_entered_amt_idx := 3;
118040 l_accted_amt_idx := 8;
118041 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118042 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118043 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
118044 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118045 l_rec_acct_attrs.array_char_value(2) := p_source_6;
118046 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118047 l_rec_acct_attrs.array_num_value(3) := p_source_3;
118048 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118049 l_rec_acct_attrs.array_char_value(4) := p_source_7;
118050 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118051 l_rec_acct_attrs.array_date_value(5) := p_source_8;
118052 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118053 l_rec_acct_attrs.array_num_value(6) := p_source_9;
118054 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118055 l_rec_acct_attrs.array_char_value(7) := p_source_10;
118056 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118057 l_rec_acct_attrs.array_num_value(8) := p_source_11;
118058
118059 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118060 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118061
118062 ---------------------------------------------------------------------------------------------------------------
118063 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118064 ---------------------------------------------------------------------------------------------------------------
118065 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118066
118067 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118068 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118069
118070 IF xla_accounting_cache_pkg.GetValueChar
118071 (p_source_code => 'LEDGER_CATEGORY_CODE'
118072 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118073 AND l_bflow_method_code = 'PRIOR_ENTRY'
118074 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118075 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118076 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118077 )
118078 THEN
118079 xla_ae_lines_pkg.BflowUpgEntry
118080 (p_business_method_code => l_bflow_method_code
118081 ,p_business_class_code => l_bflow_class_code
118082 ,p_balance_type => l_balance_type_code);
118083 ELSE
118084 NULL;
118085 -- No business flow processing for business flow method of NONE.
118086 END IF;
118087
118088 --
118089 -- call analytical criteria
118090 --
118091
118092 --
118093 -- call description
118094 --
118095 -- No description or it is inherited.
118096 --
118097 -- call ADRs
118098 -- Bug 4922099
118099 --
118100 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118101 (NVL(l_actual_upg_option, 'N') = 'O') OR
118102 (NVL(l_enc_upg_option, 'N') = 'O')
118103 )
118104 THEN
118105 NULL;
118106 --
118107 --
118108
118109 l_ccid := AcctDerRule_40(
118110 p_application_id => p_application_id
118111 , p_ae_header_id => l_ae_header_id
118112 , p_source_1 => p_source_1
118113 , p_source_2 => p_source_2
118114 , x_transaction_coa_id => l_adr_transaction_coa_id
118118 );
118115 , x_accounting_coa_id => l_adr_accounting_coa_id
118116 , x_value_type_code => l_adr_value_type_code
118117 , p_side => 'NA'
118119
118120 xla_ae_lines_pkg.set_ccid(
118121 p_code_combination_id => l_ccid
118122 , p_value_type_code => l_adr_value_type_code
118123 , p_transaction_coa_id => l_adr_transaction_coa_id
118124 , p_accounting_coa_id => l_adr_accounting_coa_id
118125 , p_adr_code => 'XTC'
118126 , p_adr_type_code => 'S'
118127 , p_component_type => l_component_type
118128 , p_component_code => l_component_code
118129 , p_component_type_code => l_component_type_code
118130 , p_component_appl_id => l_component_appl_id
118131 , p_amb_context_code => l_amb_context_code
118132 , p_side => 'NA'
118133 );
118134
118135
118136 --
118137 --
118138 END IF;
118139 --
118140 -- Bug 4922099
118141 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118142 (NVL(l_enc_upg_option, 'N') = 'O')
118143 ) AND
118144 (l_bflow_method_code = 'PRIOR_ENTRY')
118145 )
118146 THEN
118147 IF
118148 --
118149 1 = 2
118150 --
118151 THEN
118152 xla_accounting_err_pkg.build_message
118153 (p_appli_s_name => 'XLA'
118154 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118155 ,p_token_1 => 'LINE_NUMBER'
118156 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
118157 ,p_token_2 => 'LINE_TYPE_NAME'
118158 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
118159 l_component_type
118160 ,l_component_code
118161 ,l_component_type_code
118162 ,l_component_appl_id
118163 ,l_amb_context_code
118164 ,l_entity_code
118165 ,l_event_class_code
118166 )
118167 ,p_token_3 => 'OWNER'
118168 ,p_value_3 => xla_lookups_pkg.get_meaning(
118169 p_lookup_type => 'XLA_OWNER_TYPE'
118170 ,p_lookup_code => l_component_type_code
118171 )
118172 ,p_token_4 => 'PRODUCT_NAME'
118173 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118174 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118175 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118176 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118177 ,p_ae_header_id => NULL
118178 );
118179
118180 IF (C_LEVEL_ERROR>= g_log_level) THEN
118181 trace
118182 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118183 ,p_level => C_LEVEL_ERROR
118184 ,p_module => l_log_module);
118185 END IF;
118186 END IF;
118187 END IF;
118188 --
118189 --
118190 ------------------------------------------------------------------------------------------------
118191 -- 4219869 Business Flow
118192 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118193 -- Prior Entry. Currently, the following code is always generated.
118194 ------------------------------------------------------------------------------------------------
118195 XLA_AE_LINES_PKG.ValidateCurrentLine;
118196
118197 ------------------------------------------------------------------------------------
118198 -- 4219869 Business Flow
118199 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118200 ------------------------------------------------------------------------------------
118201 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118202
118203 ----------------------------------------------------------------------------------
118204 -- 4219869 Business Flow
118205 -- Update journal entry status -- Need to generate this within IF <condition>
118206 ----------------------------------------------------------------------------------
118207 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118208 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118209 ,p_balance_type_code => l_balance_type_code
118210 );
118211
118215 BEGIN
118212 -------------------------------------------------------------------------------------------
118213 -- 4262811 - Generate the Accrual Reversal lines
118214 -------------------------------------------------------------------------------------------
118216 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118217 (g_array_event(p_event_id).array_value_num('header_index'));
118218 IF l_acc_rev_flag IS NULL THEN
118219 l_acc_rev_flag := 'N';
118220 END IF;
118221 EXCEPTION
118222 WHEN OTHERS THEN
118223 l_acc_rev_flag := 'N';
118224 END;
118225 --
118226 IF (l_acc_rev_flag = 'Y') THEN
118227
118228 -- 4645092 ------------------------------------------------------------------------------
118229 -- To allow MPA report to determine if it should generate report process
118230 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118231 ------------------------------------------------------------------------------------------
118232
118233 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118234 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118235 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
118236 -- call ADRs
118237 -- Bug 4922099
118238 --
118239 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118240 (NVL(l_actual_upg_option, 'N') = 'O') OR
118241 (NVL(l_enc_upg_option, 'N') = 'O')
118242 )
118243 THEN
118244 NULL;
118245 --
118246 --
118247
118248 l_ccid := AcctDerRule_40(
118249 p_application_id => p_application_id
118250 , p_ae_header_id => l_ae_header_id
118251 , p_source_1 => p_source_1
118252 , p_source_2 => p_source_2
118253 , x_transaction_coa_id => l_adr_transaction_coa_id
118254 , x_accounting_coa_id => l_adr_accounting_coa_id
118255 , x_value_type_code => l_adr_value_type_code
118256 , p_side => 'NA'
118257 );
118258
118259 xla_ae_lines_pkg.set_ccid(
118260 p_code_combination_id => l_ccid
118261 , p_value_type_code => l_adr_value_type_code
118262 , p_transaction_coa_id => l_adr_transaction_coa_id
118263 , p_accounting_coa_id => l_adr_accounting_coa_id
118264 , p_adr_code => 'XTC'
118265 , p_adr_type_code => 'S'
118266 , p_component_type => l_component_type
118267 , p_component_code => l_component_code
118268 , p_component_type_code => l_component_type_code
118269 , p_component_appl_id => l_component_appl_id
118270 , p_amb_context_code => l_amb_context_code
118271 , p_side => 'NA'
118272 );
118273
118274
118275 --
118276 --
118277 END IF;
118278
118279 --
118280 -- Update the line information that should be overwritten
118281 --
118282 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118283 p_header_num => 1);
118284 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
118285
118286 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118287
118288 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
118289 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118290 END IF;
118291
118292 --
118293 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118294 --
118295 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118296 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
118297 ELSE
118298 ---------------------------------------------------------------------------------------------------
118299 -- 4262811a Switch Sign
118300 ---------------------------------------------------------------------------------------------------
118301 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
118302 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118303 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118304 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118305 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118306 -- 5132302
118307 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118308 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118309
118310 END IF;
118311
118312 -- 4955764
118313 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118314 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118315
118316
118317 XLA_AE_LINES_PKG.ValidateCurrentLine;
118318 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118319
118320 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118324 END IF;
118321 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118322 ,p_balance_type_code => l_balance_type_code);
118323
118325
118326 -----------------------------------------------------------------------------------------
118327 -- 4262811 Multiperiod Accounting
118328 -----------------------------------------------------------------------------------------
118329 -- No MPA option is assigned.
118330
118331
118332 END IF;
118333 END IF;
118334 --
118335
118336 --
118337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118338 trace
118339 (p_msg => 'END of AcctLineType_245'
118340 ,p_level => C_LEVEL_PROCEDURE
118341 ,p_module => l_log_module);
118342 END IF;
118343 --
118344 EXCEPTION
118345 WHEN xla_exceptions_pkg.application_exception THEN
118346 RAISE;
118347 WHEN OTHERS THEN
118348 xla_exceptions_pkg.raise_message
118349 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_245');
118350 END AcctLineType_245;
118351 --
118352
118353 ---------------------------------------
118354 --
118355 -- PRIVATE FUNCTION
118356 -- AcctLineType_246
118357 --
118358 ---------------------------------------
118359 PROCEDURE AcctLineType_246 (
118360 p_application_id IN NUMBER
118361 ,p_event_id IN NUMBER
118362 ,p_calculate_acctd_flag IN VARCHAR2
118363 ,p_calculate_g_l_flag IN VARCHAR2
118364 ,p_actual_flag IN OUT VARCHAR2
118365 ,p_balance_type_code OUT VARCHAR2
118366 ,p_gain_or_loss_ref OUT VARCHAR2
118367
118368 --Transaction Account
118369 , p_source_1 IN NUMBER
118370 --Journal Line Type
118371 , p_source_2 IN VARCHAR2
118372 --Entered Amount
118373 , p_source_3 IN NUMBER
118374 --First Distribution Identifier
118375 , p_source_5 IN NUMBER
118376 --Distribution Type
118377 , p_source_6 IN VARCHAR2
118378 --Currency Code
118379 , p_source_7 IN VARCHAR2
118380 --Currency Conversion Date
118381 , p_source_8 IN DATE
118382 --Currency Conversion Rate
118383 , p_source_9 IN NUMBER
118384 --Currency Conversion Type
118385 , p_source_10 IN VARCHAR2
118386 --Accounted Amount
118387 , p_source_11 IN NUMBER
118388 )
118389 IS
118390
118391 l_component_type VARCHAR2(80);
118392 l_component_code VARCHAR2(30);
118393 l_component_type_code VARCHAR2(1);
118394 l_component_appl_id INTEGER;
118395 l_amb_context_code VARCHAR2(30);
118396 l_entity_code VARCHAR2(30);
118397 l_event_class_code VARCHAR2(30);
118398 l_ae_header_id NUMBER;
118399 l_event_type_code VARCHAR2(30);
118400 l_line_definition_code VARCHAR2(30);
118401 l_line_definition_owner_code VARCHAR2(1);
118402 --
118403 -- adr variables
118404 l_segment VARCHAR2(30);
118405 l_ccid NUMBER;
118406 l_adr_transaction_coa_id NUMBER;
118407 l_adr_accounting_coa_id NUMBER;
118408 l_adr_flexfield_segment_code VARCHAR2(30);
118409 l_adr_flex_value_set_id NUMBER;
118410 l_adr_value_type_code VARCHAR2(30);
118411 l_adr_value_combination_id NUMBER;
118412 l_adr_value_segment_code VARCHAR2(30);
118413
118414 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
118415 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
118416 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
118417 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
118418
118419 -- 4262811 Variables ------------------------------------------------------------------------------------------
118420 l_entered_amt_idx NUMBER;
118421 l_accted_amt_idx NUMBER;
118422 l_acc_rev_flag VARCHAR2(1);
118423 l_accrual_line_num NUMBER;
118424 l_tmp_amt NUMBER;
118425 l_acc_rev_natural_side_code VARCHAR2(1);
118426
118427 l_num_entries NUMBER;
118428 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
118429 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
118430 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
118431 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
118432 l_recog_line_1 NUMBER;
118433 l_recog_line_2 NUMBER;
118434
118435 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
118436 l_bflow_applied_to_amt NUMBER; -- 5132302
118437 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
118438
118439 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118440
118441 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
118442 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
118443
118444 ---------------------------------------------------------------------------------------------------------------
118445
118446
118447 --
118448 -- bulk performance
118449 --
118450 l_balance_type_code VARCHAR2(1);
118451 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
118452 l_log_module VARCHAR2(240);
118453
118454 --
118458 l_enc_upg_option VARCHAR2(1);
118455 -- Upgrade strategy
118456 --
118457 l_actual_upg_option VARCHAR2(1);
118459
118460 --
118461 BEGIN
118462 --
118463 IF g_log_enabled THEN
118464 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_246';
118465 END IF;
118466 --
118467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118468
118469 trace
118470 (p_msg => 'BEGIN of AcctLineType_246'
118471 ,p_level => C_LEVEL_PROCEDURE
118472 ,p_module => l_log_module);
118473
118474 END IF;
118475 --
118476 l_component_type := 'AMB_JLT';
118477 l_component_code := 'XTC';
118478 l_component_type_code := 'S';
118479 l_component_appl_id := 555;
118480 l_amb_context_code := 'DEFAULT';
118481 l_entity_code := 'INVENTORY';
118482 l_event_class_code := 'DIR_INTERORG_SHIP';
118483 l_event_type_code := 'DIR_INTERORG_SHIP';
118484 l_line_definition_owner_code := 'S';
118485 l_line_definition_code := 'DIRECT_XFER_SHIP';
118486 --
118487 l_balance_type_code := 'A';
118488 l_segment := NULL;
118489 l_ccid := NULL;
118490 l_adr_transaction_coa_id := NULL;
118491 l_adr_accounting_coa_id := NULL;
118492 l_adr_flexfield_segment_code := NULL;
118493 l_adr_flex_value_set_id := NULL;
118494 l_adr_value_type_code := NULL;
118495 l_adr_value_combination_id := NULL;
118496 l_adr_value_segment_code := NULL;
118497
118498 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
118499 l_bflow_class_code := ''; -- 4219869 Business Flow
118500 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
118501 l_budgetary_control_flag := 'N';
118502
118503 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118504 l_bflow_applied_to_amt := NULL; -- 5132302
118505 l_entered_amt_idx := NULL; -- 4262811
118506 l_accted_amt_idx := NULL; -- 4262811
118507 l_acc_rev_flag := NULL; -- 4262811
118508 l_accrual_line_num := NULL; -- 4262811
118509 l_tmp_amt := NULL; -- 4262811
118510 --
118511
118512 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
118513 l_balance_type_code <> 'B' THEN
118514 IF NVL(p_source_2,'
118515 ') = 'XFC'
118516 THEN
118517
118518 --
118519 XLA_AE_LINES_PKG.SetNewLine;
118520
118521 p_balance_type_code := l_balance_type_code;
118522 -- set the flag so later we will know whether the gain loss line needs to be created
118523
118524 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
118525 p_actual_flag :='A';
118526 END IF;
118527
118528 --
118529 -- bulk performance
118530 --
118531 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
118532 p_header_num => 0); -- 4262811
118533 --
118534 -- set accounting line options
118535 --
118536 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
118537 p_natural_side_code => 'D'
118538 , p_gain_or_loss_flag => 'N'
118539 , p_gl_transfer_mode_code => 'D'
118540 , p_acct_entry_type_code => 'A'
118541 , p_switch_side_flag => 'Y'
118542 , p_merge_duplicate_code => 'W'
118543 );
118544 --
118545 l_acc_rev_natural_side_code := 'C'; -- 4262811
118546 --
118547 --
118548 -- set accounting line type info
118549 --
118550 xla_ae_lines_pkg.SetAcctLineType
118551 (p_component_type => l_component_type
118552 ,p_event_type_code => l_event_type_code
118553 ,p_line_definition_owner_code => l_line_definition_owner_code
118554 ,p_line_definition_code => l_line_definition_code
118555 ,p_accounting_line_code => l_component_code
118556 ,p_accounting_line_type_code => l_component_type_code
118557 ,p_accounting_line_appl_id => l_component_appl_id
118558 ,p_amb_context_code => l_amb_context_code
118559 ,p_entity_code => l_entity_code
118560 ,p_event_class_code => l_event_class_code);
118561 --
118562 -- set accounting class
118563 --
118564 xla_ae_lines_pkg.SetAcctClass(
118565 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
118566 , p_ae_header_id => l_ae_header_id
118567 );
118568
118569 --
118570 -- set rounding class
118571 --
118572 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118573 'INTERORG_TRANSFER_CREDIT';
118574
118575 --
118576 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118577 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118578 --
118579 -- bulk performance
118580 --
118581 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118582
118583 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118584 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118585
118586 -- 4955764
118587 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118591
118588 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118589
118590 -- 4458381 Public Sector Enh
118592 --
118593 -- set accounting attributes for the line type
118594 --
118595 l_entered_amt_idx := 3;
118596 l_accted_amt_idx := 8;
118597 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118598 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118599 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
118600 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118601 l_rec_acct_attrs.array_char_value(2) := p_source_6;
118602 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118603 l_rec_acct_attrs.array_num_value(3) := p_source_3;
118604 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118605 l_rec_acct_attrs.array_char_value(4) := p_source_7;
118606 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118607 l_rec_acct_attrs.array_date_value(5) := p_source_8;
118608 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118609 l_rec_acct_attrs.array_num_value(6) := p_source_9;
118610 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118611 l_rec_acct_attrs.array_char_value(7) := p_source_10;
118612 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118613 l_rec_acct_attrs.array_num_value(8) := p_source_11;
118614
118615 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118616 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118617
118618 ---------------------------------------------------------------------------------------------------------------
118619 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118620 ---------------------------------------------------------------------------------------------------------------
118621 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118622
118623 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118624 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118625
118626 IF xla_accounting_cache_pkg.GetValueChar
118627 (p_source_code => 'LEDGER_CATEGORY_CODE'
118628 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118629 AND l_bflow_method_code = 'PRIOR_ENTRY'
118630 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118631 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118632 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118633 )
118634 THEN
118635 xla_ae_lines_pkg.BflowUpgEntry
118636 (p_business_method_code => l_bflow_method_code
118637 ,p_business_class_code => l_bflow_class_code
118638 ,p_balance_type => l_balance_type_code);
118639 ELSE
118640 NULL;
118641 -- No business flow processing for business flow method of NONE.
118642 END IF;
118643
118644 --
118645 -- call analytical criteria
118646 --
118647
118648 --
118649 -- call description
118650 --
118651 -- No description or it is inherited.
118652 --
118653 -- call ADRs
118654 -- Bug 4922099
118655 --
118656 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118657 (NVL(l_actual_upg_option, 'N') = 'O') OR
118658 (NVL(l_enc_upg_option, 'N') = 'O')
118659 )
118660 THEN
118661 NULL;
118662 --
118663 --
118664
118665 l_ccid := AcctDerRule_40(
118666 p_application_id => p_application_id
118667 , p_ae_header_id => l_ae_header_id
118668 , p_source_1 => p_source_1
118669 , p_source_2 => p_source_2
118670 , x_transaction_coa_id => l_adr_transaction_coa_id
118671 , x_accounting_coa_id => l_adr_accounting_coa_id
118672 , x_value_type_code => l_adr_value_type_code
118673 , p_side => 'NA'
118674 );
118675
118676 xla_ae_lines_pkg.set_ccid(
118677 p_code_combination_id => l_ccid
118678 , p_value_type_code => l_adr_value_type_code
118679 , p_transaction_coa_id => l_adr_transaction_coa_id
118680 , p_accounting_coa_id => l_adr_accounting_coa_id
118681 , p_adr_code => 'XTC'
118682 , p_adr_type_code => 'S'
118683 , p_component_type => l_component_type
118684 , p_component_code => l_component_code
118685 , p_component_type_code => l_component_type_code
118686 , p_component_appl_id => l_component_appl_id
118687 , p_amb_context_code => l_amb_context_code
118688 , p_side => 'NA'
118689 );
118690
118691
118692 --
118693 --
118694 END IF;
118695 --
118696 -- Bug 4922099
118697 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118698 (NVL(l_enc_upg_option, 'N') = 'O')
118699 ) AND
118700 (l_bflow_method_code = 'PRIOR_ENTRY')
118701 )
118702 THEN
118703 IF
118704 --
118705 1 = 2
118706 --
118707 THEN
118708 xla_accounting_err_pkg.build_message
118709 (p_appli_s_name => 'XLA'
118710 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118714 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
118711 ,p_token_1 => 'LINE_NUMBER'
118712 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
118713 ,p_token_2 => 'LINE_TYPE_NAME'
118715 l_component_type
118716 ,l_component_code
118717 ,l_component_type_code
118718 ,l_component_appl_id
118719 ,l_amb_context_code
118720 ,l_entity_code
118721 ,l_event_class_code
118722 )
118723 ,p_token_3 => 'OWNER'
118724 ,p_value_3 => xla_lookups_pkg.get_meaning(
118725 p_lookup_type => 'XLA_OWNER_TYPE'
118726 ,p_lookup_code => l_component_type_code
118727 )
118728 ,p_token_4 => 'PRODUCT_NAME'
118729 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118730 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118731 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118732 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118733 ,p_ae_header_id => NULL
118734 );
118735
118736 IF (C_LEVEL_ERROR>= g_log_level) THEN
118737 trace
118738 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118739 ,p_level => C_LEVEL_ERROR
118740 ,p_module => l_log_module);
118741 END IF;
118742 END IF;
118743 END IF;
118744 --
118745 --
118746 ------------------------------------------------------------------------------------------------
118747 -- 4219869 Business Flow
118748 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118749 -- Prior Entry. Currently, the following code is always generated.
118750 ------------------------------------------------------------------------------------------------
118751 XLA_AE_LINES_PKG.ValidateCurrentLine;
118752
118753 ------------------------------------------------------------------------------------
118754 -- 4219869 Business Flow
118755 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118756 ------------------------------------------------------------------------------------
118757 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118758
118759 ----------------------------------------------------------------------------------
118760 -- 4219869 Business Flow
118761 -- Update journal entry status -- Need to generate this within IF <condition>
118762 ----------------------------------------------------------------------------------
118763 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118764 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118765 ,p_balance_type_code => l_balance_type_code
118766 );
118767
118768 -------------------------------------------------------------------------------------------
118769 -- 4262811 - Generate the Accrual Reversal lines
118770 -------------------------------------------------------------------------------------------
118771 BEGIN
118772 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118773 (g_array_event(p_event_id).array_value_num('header_index'));
118774 IF l_acc_rev_flag IS NULL THEN
118775 l_acc_rev_flag := 'N';
118776 END IF;
118777 EXCEPTION
118778 WHEN OTHERS THEN
118779 l_acc_rev_flag := 'N';
118780 END;
118781 --
118782 IF (l_acc_rev_flag = 'Y') THEN
118783
118784 -- 4645092 ------------------------------------------------------------------------------
118785 -- To allow MPA report to determine if it should generate report process
118786 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118787 ------------------------------------------------------------------------------------------
118788
118789 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118790 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118791 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
118792 -- call ADRs
118793 -- Bug 4922099
118794 --
118795 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118796 (NVL(l_actual_upg_option, 'N') = 'O') OR
118797 (NVL(l_enc_upg_option, 'N') = 'O')
118798 )
118799 THEN
118800 NULL;
118801 --
118802 --
118803
118804 l_ccid := AcctDerRule_40(
118808 , p_source_2 => p_source_2
118805 p_application_id => p_application_id
118806 , p_ae_header_id => l_ae_header_id
118807 , p_source_1 => p_source_1
118809 , x_transaction_coa_id => l_adr_transaction_coa_id
118810 , x_accounting_coa_id => l_adr_accounting_coa_id
118811 , x_value_type_code => l_adr_value_type_code
118812 , p_side => 'NA'
118813 );
118814
118815 xla_ae_lines_pkg.set_ccid(
118816 p_code_combination_id => l_ccid
118817 , p_value_type_code => l_adr_value_type_code
118818 , p_transaction_coa_id => l_adr_transaction_coa_id
118819 , p_accounting_coa_id => l_adr_accounting_coa_id
118820 , p_adr_code => 'XTC'
118821 , p_adr_type_code => 'S'
118822 , p_component_type => l_component_type
118823 , p_component_code => l_component_code
118824 , p_component_type_code => l_component_type_code
118825 , p_component_appl_id => l_component_appl_id
118826 , p_amb_context_code => l_amb_context_code
118827 , p_side => 'NA'
118828 );
118829
118830
118831 --
118832 --
118833 END IF;
118834
118835 --
118836 -- Update the line information that should be overwritten
118837 --
118838 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118839 p_header_num => 1);
118840 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
118841
118842 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118843
118844 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
118845 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118846 END IF;
118847
118848 --
118849 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118850 --
118851 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118852 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
118853 ELSE
118854 ---------------------------------------------------------------------------------------------------
118855 -- 4262811a Switch Sign
118856 ---------------------------------------------------------------------------------------------------
118857 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
118858 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118859 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118860 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118861 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118862 -- 5132302
118863 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118864 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118865
118866 END IF;
118867
118868 -- 4955764
118869 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118870 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118871
118872
118873 XLA_AE_LINES_PKG.ValidateCurrentLine;
118874 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118875
118876 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118877 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118878 ,p_balance_type_code => l_balance_type_code);
118879
118880 END IF;
118881
118882 -----------------------------------------------------------------------------------------
118883 -- 4262811 Multiperiod Accounting
118884 -----------------------------------------------------------------------------------------
118885 -- No MPA option is assigned.
118886
118887
118888 END IF;
118889 END IF;
118890 --
118891
118892 --
118893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118894 trace
118895 (p_msg => 'END of AcctLineType_246'
118896 ,p_level => C_LEVEL_PROCEDURE
118897 ,p_module => l_log_module);
118898 END IF;
118899 --
118900 EXCEPTION
118901 WHEN xla_exceptions_pkg.application_exception THEN
118902 RAISE;
118903 WHEN OTHERS THEN
118904 xla_exceptions_pkg.raise_message
118905 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_246');
118906 END AcctLineType_246;
118907 --
118908
118909 ---------------------------------------
118910 --
118911 -- PRIVATE FUNCTION
118912 -- AcctLineType_247
118913 --
118914 ---------------------------------------
118915 PROCEDURE AcctLineType_247 (
118916 p_application_id IN NUMBER
118917 ,p_event_id IN NUMBER
118918 ,p_calculate_acctd_flag IN VARCHAR2
118919 ,p_calculate_g_l_flag IN VARCHAR2
118920 ,p_actual_flag IN OUT VARCHAR2
118921 ,p_balance_type_code OUT VARCHAR2
118922 ,p_gain_or_loss_ref OUT VARCHAR2
118923
118927 , p_source_2 IN VARCHAR2
118924 --Transaction Account
118925 , p_source_1 IN NUMBER
118926 --Journal Line Type
118928 --Entered Amount
118929 , p_source_3 IN NUMBER
118930 --First Distribution Identifier
118931 , p_source_5 IN NUMBER
118932 --Distribution Type
118933 , p_source_6 IN VARCHAR2
118934 --Currency Code
118935 , p_source_7 IN VARCHAR2
118936 --Currency Conversion Date
118937 , p_source_8 IN DATE
118938 --Currency Conversion Rate
118939 , p_source_9 IN NUMBER
118940 --Currency Conversion Type
118941 , p_source_10 IN VARCHAR2
118942 --Accounted Amount
118943 , p_source_11 IN NUMBER
118944 )
118945 IS
118946
118947 l_component_type VARCHAR2(80);
118948 l_component_code VARCHAR2(30);
118949 l_component_type_code VARCHAR2(1);
118950 l_component_appl_id INTEGER;
118951 l_amb_context_code VARCHAR2(30);
118952 l_entity_code VARCHAR2(30);
118953 l_event_class_code VARCHAR2(30);
118954 l_ae_header_id NUMBER;
118955 l_event_type_code VARCHAR2(30);
118956 l_line_definition_code VARCHAR2(30);
118957 l_line_definition_owner_code VARCHAR2(1);
118958 --
118959 -- adr variables
118960 l_segment VARCHAR2(30);
118961 l_ccid NUMBER;
118962 l_adr_transaction_coa_id NUMBER;
118963 l_adr_accounting_coa_id NUMBER;
118964 l_adr_flexfield_segment_code VARCHAR2(30);
118965 l_adr_flex_value_set_id NUMBER;
118966 l_adr_value_type_code VARCHAR2(30);
118967 l_adr_value_combination_id NUMBER;
118968 l_adr_value_segment_code VARCHAR2(30);
118969
118970 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
118971 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
118972 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
118973 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
118974
118975 -- 4262811 Variables ------------------------------------------------------------------------------------------
118976 l_entered_amt_idx NUMBER;
118977 l_accted_amt_idx NUMBER;
118978 l_acc_rev_flag VARCHAR2(1);
118979 l_accrual_line_num NUMBER;
118980 l_tmp_amt NUMBER;
118981 l_acc_rev_natural_side_code VARCHAR2(1);
118982
118983 l_num_entries NUMBER;
118984 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
118985 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
118986 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
118987 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
118988 l_recog_line_1 NUMBER;
118989 l_recog_line_2 NUMBER;
118990
118991 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
118992 l_bflow_applied_to_amt NUMBER; -- 5132302
118993 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
118994
118995 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118996
118997 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
118998 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
118999
119000 ---------------------------------------------------------------------------------------------------------------
119001
119002
119003 --
119004 -- bulk performance
119005 --
119006 l_balance_type_code VARCHAR2(1);
119007 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
119008 l_log_module VARCHAR2(240);
119009
119010 --
119011 -- Upgrade strategy
119012 --
119013 l_actual_upg_option VARCHAR2(1);
119014 l_enc_upg_option VARCHAR2(1);
119015
119016 --
119017 BEGIN
119018 --
119019 IF g_log_enabled THEN
119020 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_247';
119021 END IF;
119022 --
119023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119024
119025 trace
119026 (p_msg => 'BEGIN of AcctLineType_247'
119027 ,p_level => C_LEVEL_PROCEDURE
119028 ,p_module => l_log_module);
119029
119030 END IF;
119031 --
119032 l_component_type := 'AMB_JLT';
119033 l_component_code := 'YLD';
119034 l_component_type_code := 'S';
119035 l_component_appl_id := 555;
119036 l_amb_context_code := 'DEFAULT';
119037 l_entity_code := 'PRODUCTION';
119038 l_event_class_code := 'BATCH_CLOSE';
119039 l_event_type_code := 'CLOS';
119040 l_line_definition_owner_code := 'S';
119041 l_line_definition_code := 'BATCH_CLOSE';
119042 --
119043 l_balance_type_code := 'A';
119044 l_segment := NULL;
119045 l_ccid := NULL;
119046 l_adr_transaction_coa_id := NULL;
119047 l_adr_accounting_coa_id := NULL;
119048 l_adr_flexfield_segment_code := NULL;
119049 l_adr_flex_value_set_id := NULL;
119050 l_adr_value_type_code := NULL;
119051 l_adr_value_combination_id := NULL;
119052 l_adr_value_segment_code := NULL;
119053
119054 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
119058
119055 l_bflow_class_code := ''; -- 4219869 Business Flow
119056 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
119057 l_budgetary_control_flag := 'N';
119059 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119060 l_bflow_applied_to_amt := NULL; -- 5132302
119061 l_entered_amt_idx := NULL; -- 4262811
119062 l_accted_amt_idx := NULL; -- 4262811
119063 l_acc_rev_flag := NULL; -- 4262811
119064 l_accrual_line_num := NULL; -- 4262811
119065 l_tmp_amt := NULL; -- 4262811
119066 --
119067
119068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119069 l_balance_type_code <> 'B' THEN
119070 IF NVL(p_source_2,'
119071 ') = 'YLD'
119072 THEN
119073
119074 --
119075 XLA_AE_LINES_PKG.SetNewLine;
119076
119077 p_balance_type_code := l_balance_type_code;
119078 -- set the flag so later we will know whether the gain loss line needs to be created
119079
119080 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119081 p_actual_flag :='A';
119082 END IF;
119083
119084 --
119085 -- bulk performance
119086 --
119087 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119088 p_header_num => 0); -- 4262811
119089 --
119090 -- set accounting line options
119091 --
119092 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119093 p_natural_side_code => 'D'
119094 , p_gain_or_loss_flag => 'N'
119095 , p_gl_transfer_mode_code => 'D'
119096 , p_acct_entry_type_code => 'A'
119097 , p_switch_side_flag => 'Y'
119098 , p_merge_duplicate_code => 'W'
119099 );
119100 --
119101 l_acc_rev_natural_side_code := 'C'; -- 4262811
119102 --
119103 --
119104 -- set accounting line type info
119105 --
119106 xla_ae_lines_pkg.SetAcctLineType
119107 (p_component_type => l_component_type
119108 ,p_event_type_code => l_event_type_code
119109 ,p_line_definition_owner_code => l_line_definition_owner_code
119110 ,p_line_definition_code => l_line_definition_code
119111 ,p_accounting_line_code => l_component_code
119112 ,p_accounting_line_type_code => l_component_type_code
119113 ,p_accounting_line_appl_id => l_component_appl_id
119114 ,p_amb_context_code => l_amb_context_code
119115 ,p_entity_code => l_entity_code
119116 ,p_event_class_code => l_event_class_code);
119117 --
119118 -- set accounting class
119119 --
119120 xla_ae_lines_pkg.SetAcctClass(
119121 p_accounting_class_code => 'YLD'
119122 , p_ae_header_id => l_ae_header_id
119123 );
119124
119125 --
119126 -- set rounding class
119127 --
119128 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119129 'YLD';
119130
119131 --
119132 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119133 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119134 --
119135 -- bulk performance
119136 --
119137 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119138
119139 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119140 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119141
119142 -- 4955764
119143 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119144 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119145
119146 -- 4458381 Public Sector Enh
119147
119148 --
119149 -- set accounting attributes for the line type
119150 --
119151 l_entered_amt_idx := 3;
119152 l_accted_amt_idx := 8;
119153 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119154 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
119155 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_5);
119156 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
119157 l_rec_acct_attrs.array_char_value(2) := p_source_6;
119158 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
119159 l_rec_acct_attrs.array_num_value(3) := p_source_3;
119160 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
119161 l_rec_acct_attrs.array_char_value(4) := p_source_7;
119162 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
119163 l_rec_acct_attrs.array_date_value(5) := p_source_8;
119164 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
119165 l_rec_acct_attrs.array_num_value(6) := p_source_9;
119166 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
119167 l_rec_acct_attrs.array_char_value(7) := p_source_10;
119168 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
119169 l_rec_acct_attrs.array_num_value(8) := p_source_11;
119170
119171 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119172 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119173
119174 ---------------------------------------------------------------------------------------------------------------
119178
119175 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119176 ---------------------------------------------------------------------------------------------------------------
119177 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119179 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119180 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119181
119182 IF xla_accounting_cache_pkg.GetValueChar
119183 (p_source_code => 'LEDGER_CATEGORY_CODE'
119184 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119185 AND l_bflow_method_code = 'PRIOR_ENTRY'
119186 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119187 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119188 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119189 )
119190 THEN
119191 xla_ae_lines_pkg.BflowUpgEntry
119192 (p_business_method_code => l_bflow_method_code
119193 ,p_business_class_code => l_bflow_class_code
119194 ,p_balance_type => l_balance_type_code);
119195 ELSE
119196 NULL;
119197 -- No business flow processing for business flow method of NONE.
119198 END IF;
119199
119200 --
119201 -- call analytical criteria
119202 --
119203
119204 --
119205 -- call description
119206 --
119207 -- No description or it is inherited.
119208 --
119209 -- call ADRs
119210 -- Bug 4922099
119211 --
119212 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119213 (NVL(l_actual_upg_option, 'N') = 'O') OR
119214 (NVL(l_enc_upg_option, 'N') = 'O')
119215 )
119216 THEN
119217 NULL;
119218 --
119219 --
119220
119221 l_ccid := AcctDerRule_41(
119222 p_application_id => p_application_id
119223 , p_ae_header_id => l_ae_header_id
119224 , p_source_1 => p_source_1
119225 , p_source_2 => p_source_2
119226 , x_transaction_coa_id => l_adr_transaction_coa_id
119227 , x_accounting_coa_id => l_adr_accounting_coa_id
119228 , x_value_type_code => l_adr_value_type_code
119229 , p_side => 'NA'
119230 );
119231
119232 xla_ae_lines_pkg.set_ccid(
119233 p_code_combination_id => l_ccid
119234 , p_value_type_code => l_adr_value_type_code
119235 , p_transaction_coa_id => l_adr_transaction_coa_id
119236 , p_accounting_coa_id => l_adr_accounting_coa_id
119237 , p_adr_code => 'YLD'
119238 , p_adr_type_code => 'S'
119239 , p_component_type => l_component_type
119240 , p_component_code => l_component_code
119241 , p_component_type_code => l_component_type_code
119242 , p_component_appl_id => l_component_appl_id
119243 , p_amb_context_code => l_amb_context_code
119244 , p_side => 'NA'
119245 );
119246
119247
119248 --
119249 --
119250 END IF;
119251 --
119252 -- Bug 4922099
119253 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119254 (NVL(l_enc_upg_option, 'N') = 'O')
119255 ) AND
119256 (l_bflow_method_code = 'PRIOR_ENTRY')
119257 )
119258 THEN
119259 IF
119260 --
119261 1 = 2
119262 --
119263 THEN
119264 xla_accounting_err_pkg.build_message
119265 (p_appli_s_name => 'XLA'
119266 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119267 ,p_token_1 => 'LINE_NUMBER'
119268 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
119269 ,p_token_2 => 'LINE_TYPE_NAME'
119270 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
119271 l_component_type
119272 ,l_component_code
119273 ,l_component_type_code
119274 ,l_component_appl_id
119275 ,l_amb_context_code
119276 ,l_entity_code
119277 ,l_event_class_code
119278 )
119279 ,p_token_3 => 'OWNER'
119280 ,p_value_3 => xla_lookups_pkg.get_meaning(
119281 p_lookup_type => 'XLA_OWNER_TYPE'
119282 ,p_lookup_code => l_component_type_code
119283 )
119284 ,p_token_4 => 'PRODUCT_NAME'
119288 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119285 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119286 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119287 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119289 ,p_ae_header_id => NULL
119290 );
119291
119292 IF (C_LEVEL_ERROR>= g_log_level) THEN
119293 trace
119294 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119295 ,p_level => C_LEVEL_ERROR
119296 ,p_module => l_log_module);
119297 END IF;
119298 END IF;
119299 END IF;
119300 --
119301 --
119302 ------------------------------------------------------------------------------------------------
119303 -- 4219869 Business Flow
119304 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119305 -- Prior Entry. Currently, the following code is always generated.
119306 ------------------------------------------------------------------------------------------------
119307 XLA_AE_LINES_PKG.ValidateCurrentLine;
119308
119309 ------------------------------------------------------------------------------------
119310 -- 4219869 Business Flow
119311 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119312 ------------------------------------------------------------------------------------
119313 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119314
119315 ----------------------------------------------------------------------------------
119316 -- 4219869 Business Flow
119317 -- Update journal entry status -- Need to generate this within IF <condition>
119318 ----------------------------------------------------------------------------------
119319 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119320 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119321 ,p_balance_type_code => l_balance_type_code
119322 );
119323
119324 -------------------------------------------------------------------------------------------
119325 -- 4262811 - Generate the Accrual Reversal lines
119326 -------------------------------------------------------------------------------------------
119327 BEGIN
119328 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119329 (g_array_event(p_event_id).array_value_num('header_index'));
119330 IF l_acc_rev_flag IS NULL THEN
119331 l_acc_rev_flag := 'N';
119332 END IF;
119333 EXCEPTION
119334 WHEN OTHERS THEN
119335 l_acc_rev_flag := 'N';
119336 END;
119337 --
119338 IF (l_acc_rev_flag = 'Y') THEN
119339
119340 -- 4645092 ------------------------------------------------------------------------------
119341 -- To allow MPA report to determine if it should generate report process
119342 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119343 ------------------------------------------------------------------------------------------
119344
119345 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119346 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119347 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
119348 -- call ADRs
119349 -- Bug 4922099
119350 --
119351 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119352 (NVL(l_actual_upg_option, 'N') = 'O') OR
119353 (NVL(l_enc_upg_option, 'N') = 'O')
119354 )
119355 THEN
119356 NULL;
119357 --
119358 --
119359
119360 l_ccid := AcctDerRule_41(
119361 p_application_id => p_application_id
119362 , p_ae_header_id => l_ae_header_id
119363 , p_source_1 => p_source_1
119364 , p_source_2 => p_source_2
119365 , x_transaction_coa_id => l_adr_transaction_coa_id
119366 , x_accounting_coa_id => l_adr_accounting_coa_id
119367 , x_value_type_code => l_adr_value_type_code
119368 , p_side => 'NA'
119369 );
119370
119371 xla_ae_lines_pkg.set_ccid(
119372 p_code_combination_id => l_ccid
119373 , p_value_type_code => l_adr_value_type_code
119374 , p_transaction_coa_id => l_adr_transaction_coa_id
119375 , p_accounting_coa_id => l_adr_accounting_coa_id
119376 , p_adr_code => 'YLD'
119377 , p_adr_type_code => 'S'
119378 , p_component_type => l_component_type
119379 , p_component_code => l_component_code
119380 , p_component_type_code => l_component_type_code
119381 , p_component_appl_id => l_component_appl_id
119382 , p_amb_context_code => l_amb_context_code
119383 , p_side => 'NA'
119384 );
119385
119386
119387 --
119388 --
119389 END IF;
119390
119391 --
119392 -- Update the line information that should be overwritten
119393 --
119394 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119395 p_header_num => 1);
119399
119396 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
119397
119398 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119400 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
119401 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119402 END IF;
119403
119404 --
119405 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119406 --
119407 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119408 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
119409 ELSE
119410 ---------------------------------------------------------------------------------------------------
119411 -- 4262811a Switch Sign
119412 ---------------------------------------------------------------------------------------------------
119413 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
119414 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119415 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119416 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119417 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119418 -- 5132302
119419 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119420 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119421
119422 END IF;
119423
119424 -- 4955764
119425 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119426 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119427
119428
119429 XLA_AE_LINES_PKG.ValidateCurrentLine;
119430 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119431
119432 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119433 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
119434 ,p_balance_type_code => l_balance_type_code);
119435
119436 END IF;
119437
119438 -----------------------------------------------------------------------------------------
119439 -- 4262811 Multiperiod Accounting
119440 -----------------------------------------------------------------------------------------
119441 -- No MPA option is assigned.
119442
119443
119444 END IF;
119445 END IF;
119446 --
119447
119448 --
119449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119450 trace
119451 (p_msg => 'END of AcctLineType_247'
119452 ,p_level => C_LEVEL_PROCEDURE
119453 ,p_module => l_log_module);
119454 END IF;
119455 --
119456 EXCEPTION
119457 WHEN xla_exceptions_pkg.application_exception THEN
119458 RAISE;
119459 WHEN OTHERS THEN
119460 xla_exceptions_pkg.raise_message
119461 (p_location => 'XLA_00555_AAD_S_000001_PKG.AcctLineType_247');
119462 END AcctLineType_247;
119463 --
119464
119465 ---------------------------------------
119466 --
119467 -- PRIVATE PROCEDURE
119468 -- insert_sources_248
119469 --
119470 ----------------------------------------
119471 --
119472 PROCEDURE insert_sources_248(
119473 p_target_ledger_id IN NUMBER
119474 , p_language IN VARCHAR2
119475 , p_sla_ledger_id IN NUMBER
119476 , p_pad_start_date IN DATE
119477 , p_pad_end_date IN DATE
119478 )
119479 IS
119480
119481 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ACTCOSTADJ';
119482 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ACTCOSTADJ';
119483 p_apps_owner VARCHAR2(30);
119484 l_log_module VARCHAR2(240);
119485 BEGIN
119486 IF g_log_enabled THEN
119487 l_log_module := C_DEFAULT_MODULE||'.insert_sources_248';
119488 END IF;
119489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119490
119491 trace
119492 (p_msg => 'BEGIN of insert_sources_248'
119493 ,p_level => C_LEVEL_PROCEDURE
119494 ,p_module => l_log_module);
119495
119496 END IF;
119497
119498 -- select APPS owner
119499 SELECT oracle_username
119500 INTO p_apps_owner
119501 FROM fnd_oracle_userid
119502 WHERE read_only_flag = 'U'
119503 ;
119504
119505 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
119506 trace
119507 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
119508 ' - p_language = '||p_language||
119509 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
119510 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
119511 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
119512 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
119513 ,p_level => C_LEVEL_STATEMENT
119514 ,p_module => l_log_module);
119515 END IF;
119516
119520 (
119517
119518 --
119519 INSERT INTO xla_diag_sources --hdr1
119521 event_id
119522 , ledger_id
119523 , sla_ledger_id
119524 , description_language
119525 , object_name
119526 , object_type_code
119527 , line_number
119528 , source_application_id
119529 , source_type_code
119530 , source_code
119531 , source_value
119532 , source_meaning
119533 , created_by
119534 , creation_date
119535 , last_update_date
119536 , last_updated_by
119537 , last_update_login
119538 , program_update_date
119539 , program_application_id
119540 , program_id
119541 , request_id
119542 )
119543 SELECT
119544 event_id
119545 , p_target_ledger_id
119546 , p_sla_ledger_id
119547 , p_language
119548 , object_name
119549 , object_type_code
119550 , line_number
119551 , source_application_id
119552 , source_type_code
119553 , source_code
119554 , SUBSTR(source_value ,1,1996)
119555 , SUBSTR(source_meaning,1,200)
119556 , xla_environment_pkg.g_Usr_Id
119557 , TRUNC(SYSDATE)
119558 , TRUNC(SYSDATE)
119559 , xla_environment_pkg.g_Usr_Id
119560 , xla_environment_pkg.g_Login_Id
119561 , TRUNC(SYSDATE)
119562 , xla_environment_pkg.g_Prog_Appl_Id
119563 , xla_environment_pkg.g_Prog_Id
119564 , xla_environment_pkg.g_Req_Id
119565 FROM (
119566 SELECT xet.event_id event_id
119567 , 0 line_number
119568 , CASE r
119569 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
119570 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
119571 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
119572 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
119573 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
119574 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
119575
119576 ELSE null
119577 END object_name
119578 , CASE r
119579 WHEN 1 THEN 'HEADER'
119580 WHEN 2 THEN 'HEADER'
119581 WHEN 3 THEN 'HEADER'
119582 WHEN 4 THEN 'HEADER'
119583 WHEN 5 THEN 'HEADER'
119584 WHEN 6 THEN 'HEADER'
119585
119586 ELSE null
119587 END object_type_code
119588 , CASE r
119589 WHEN 1 THEN '555'
119590 WHEN 2 THEN '555'
119591 WHEN 3 THEN '555'
119592 WHEN 4 THEN '555'
119593 WHEN 5 THEN '555'
119594 WHEN 6 THEN '555'
119595
119596 ELSE null
119597 END source_application_id
119598 , 'S' source_type_code
119599 , CASE r
119600 WHEN 1 THEN 'ENTITY_CODE'
119601 WHEN 2 THEN 'CURRENCY_CODE'
119602 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
119603 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
119604 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
119605 WHEN 6 THEN 'TRANSACTION_DATE'
119606
119607 ELSE null
119608 END source_code
119609 , CASE r
119610 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
119611 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
119612 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
119613 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
119614 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
119615 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
119616
119617 ELSE null
119618 END source_value
119619 , CASE r
119620 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
119621 1010186
119622 ,TO_CHAR(h1.CURRENCY_CODE)
119623 ,'CURRENCY_CODE'
119624 ,'S'
119625 ,555)
119626
119627 ELSE null
119628 END source_meaning
119629 FROM xla_events_gt xet
119630 , GMF_XLA_EXTRACT_HEADERS h1
119631 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
119632 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
119633 AND xet.event_type_code = C_EVENT_TYPE_CODE
119634 AND h1.event_id = xet.event_id
119635
119636 )
119637 ;
119638 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
119639
119640 trace
119641 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
119642 ,p_level => C_LEVEL_STATEMENT
119643 ,p_module => l_log_module);
119644
119645 END IF;
119646 --
119647
119648
119649
119650 --
119651 INSERT INTO xla_diag_sources --line1
119652 (
119653 event_id
119654 , ledger_id
119655 , sla_ledger_id
119656 , description_language
119657 , object_name
119658 , object_type_code
119659 , line_number
119660 , source_application_id
119661 , source_type_code
119665 , created_by
119662 , source_code
119663 , source_value
119664 , source_meaning
119666 , creation_date
119667 , last_update_date
119668 , last_updated_by
119669 , last_update_login
119670 , program_update_date
119671 , program_application_id
119672 , program_id
119673 , request_id
119674 )
119675 SELECT event_id
119676 , p_target_ledger_id
119677 , p_sla_ledger_id
119678 , p_language
119679 , object_name
119680 , object_type_code
119681 , line_number
119682 , source_application_id
119683 , source_type_code
119684 , source_code
119685 , SUBSTR(source_value,1,1996)
119686 , SUBSTR(source_meaning,1,200)
119687 , xla_environment_pkg.g_Usr_Id
119688 , TRUNC(SYSDATE)
119689 , TRUNC(SYSDATE)
119690 , xla_environment_pkg.g_Usr_Id
119691 , xla_environment_pkg.g_Login_Id
119692 , TRUNC(SYSDATE)
119693 , xla_environment_pkg.g_Prog_Appl_Id
119694 , xla_environment_pkg.g_Prog_Id
119695 , xla_environment_pkg.g_Req_Id
119696 FROM (
119697 SELECT xet.event_id event_id
119698 , l2.line_number line_number
119699 , CASE r
119700 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
119701 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
119702 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
119703 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
119704 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
119705
119706 ELSE null
119707 END object_name
119708 , CASE r
119709 WHEN 1 THEN 'LINE'
119710 WHEN 2 THEN 'LINE'
119711 WHEN 3 THEN 'LINE'
119712 WHEN 4 THEN 'LINE'
119713 WHEN 5 THEN 'LINE'
119714
119715 ELSE null
119716 END object_type_code
119717 , CASE r
119718 WHEN 1 THEN '555'
119719 WHEN 2 THEN '555'
119720 WHEN 3 THEN '555'
119721 WHEN 4 THEN '555'
119722 WHEN 5 THEN '555'
119723
119724 ELSE null
119725 END source_application_id
119726 , 'S' source_type_code
119727 , CASE r
119728 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
119729 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
119730 WHEN 3 THEN 'ENTERED_AMOUNT'
119731 WHEN 4 THEN 'LINE_ID'
119732 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
119733
119734 ELSE null
119735 END source_code
119736 , CASE r
119737 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
119738 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
119739 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
119740 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
119741 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
119742
119743 ELSE null
119744 END source_value
119745 , null source_meaning
119746 FROM xla_events_gt xet
119747 , GMF_XLA_EXTRACT_LINES l2
119748 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
119749 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
119750 AND xet.event_type_code = C_EVENT_TYPE_CODE
119751 AND l2.event_id = xet.event_id
119752
119753 )
119754 ;
119755 --
119756 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
119757
119758 trace
119759 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
119760 ,p_level => C_LEVEL_STATEMENT
119761 ,p_module => l_log_module);
119762
119763 END IF;
119764
119765
119766 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119767 trace
119768 (p_msg => 'END of insert_sources_248'
119769 ,p_level => C_LEVEL_PROCEDURE
119770 ,p_module => l_log_module);
119771 END IF;
119772 EXCEPTION
119773 WHEN xla_exceptions_pkg.application_exception THEN
119774 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
119775 trace
119776 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
119777 ,p_level => C_LEVEL_EXCEPTION
119778 ,p_module => l_log_module);
119779 END IF;
119780 RAISE;
119781 WHEN OTHERS THEN
119782 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
119783 trace
119784 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
119785 ,p_level => C_LEVEL_EXCEPTION
119786 ,p_module => l_log_module);
119787 END IF;
119788 xla_exceptions_pkg.raise_message
119789 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_248');
119790 END insert_sources_248;
119791 --
119792
119793 ---------------------------------------
119794 --
119795 -- PRIVATE FUNCTION
119796 -- EventType_248
119797 --
119798 ----------------------------------------
119799 --
119800 FUNCTION EventType_248
119801 (p_application_id IN NUMBER
119805 ,p_currency_code IN VARCHAR2
119802 ,p_base_ledger_id IN NUMBER
119803 ,p_target_ledger_id IN NUMBER
119804 ,p_language IN VARCHAR2
119806 ,p_sla_ledger_id IN NUMBER
119807 ,p_pad_start_date IN DATE
119808 ,p_pad_end_date IN DATE
119809 ,p_primary_ledger_id IN NUMBER)
119810 RETURN BOOLEAN IS
119811 --
119812 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ACTCOSTADJ';
119813 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ACTCOSTADJ';
119814
119815 l_calculate_acctd_flag VARCHAR2(1) :='N';
119816 l_calculate_g_l_flag VARCHAR2(1) :='N';
119817 --
119818 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119819 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119820 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
119821 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119822 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119823 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
119824 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
119825 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119826 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119827 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119828 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119829 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119830 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119831 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
119832 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119833 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119834 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119835 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
119836 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119837 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119838 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119839 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
119840 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
119841 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
119842 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
119843 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
119844
119845 l_event_id NUMBER;
119846 l_previous_event_id NUMBER;
119847 l_first_event_id NUMBER;
119848 l_last_event_id NUMBER;
119849
119850 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
119851 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
119852 --
119853 --
119854 l_result BOOLEAN := TRUE;
119855 l_rows NUMBER := 1000;
119856 l_event_type_name VARCHAR2(80) := 'Actual Cost Adjustment';
119857 l_event_class_name VARCHAR2(80) := 'Actual Cost Adjustment';
119858 l_description VARCHAR2(4000);
119859 l_transaction_reversal NUMBER;
119860 l_ae_header_id NUMBER;
119861 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
119862 l_log_module VARCHAR2(240);
119863 --
119864 l_acct_reversal_source VARCHAR2(30);
119865 l_trx_reversal_source VARCHAR2(30);
119866
119867 l_continue_with_lines BOOLEAN := TRUE;
119868 --
119869 l_acc_rev_gl_date_source DATE; -- 4262811
119870 --
119871 type t_array_event_id is table of number index by binary_integer;
119872
119873 l_rec_array_event t_rec_array_event;
119874 l_null_rec_array_event t_rec_array_event;
119875 l_array_ae_header_id xla_number_array_type;
119876 l_actual_flag VARCHAR2(1) := NULL;
119877 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
119878 l_balance_type_code VARCHAR2(1) :=NULL;
119879 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
119880
119881 --
119882 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
119883 --
119884
119885 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
119886 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
119887 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
119888 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
119889 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
119890 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
119891
119892 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
119893 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
119894 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
119895 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
119899 l_array_source_7 t_array_source_7;
119896 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
119897
119898 l_array_source_6 t_array_source_6;
119900 l_array_source_8 t_array_source_8;
119901 l_array_source_9 t_array_source_9;
119902 l_array_source_10 t_array_source_10;
119903 l_array_source_12 t_array_source_12;
119904
119905 l_array_source_1 t_array_source_1;
119906 l_array_source_2 t_array_source_2;
119907 l_array_source_3 t_array_source_3;
119908 l_array_source_5 t_array_source_5;
119909 l_array_source_11 t_array_source_11;
119910
119911 --
119912 CURSOR header_cur
119913 IS
119914 SELECT /*+ leading(xet) cardinality(xet,1) */
119915 -- Event Type Code: ACTCOSTADJ
119916 -- Event Class Code: ACTCOSTADJ
119917 xet.entity_id
119918 , xet.legal_entity_id
119919 , xet.entity_code
119920 , xet.transaction_number
119921 , xet.event_id
119922 , xet.event_class_code
119923 , xet.event_type_code
119924 , xet.event_number
119925 , xet.event_date
119926 , xet.transaction_date
119927 , xet.reference_num_1
119928 , xet.reference_num_2
119929 , xet.reference_num_3
119930 , xet.reference_num_4
119931 , xet.reference_char_1
119932 , xet.reference_char_2
119933 , xet.reference_char_3
119934 , xet.reference_char_4
119935 , xet.reference_date_1
119936 , xet.reference_date_2
119937 , xet.reference_date_3
119938 , xet.reference_date_4
119939 , xet.event_created_by
119940 , xet.budgetary_control_flag
119941 , h1.ENTITY_CODE source_6
119942 , h1.CURRENCY_CODE source_7
119943 , h1.CURRENCY_CONVERSION_DATE source_8
119944 , h1.CURRENCY_CONVERSION_RATE source_9
119945 , h1.CURRENCY_CONVERSION_TYPE source_10
119946 , h1.TRANSACTION_DATE source_12
119947 FROM xla_events_gt xet
119948 , GMF_XLA_EXTRACT_HEADERS h1
119949 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
119950 and xet.event_type_code = C_EVENT_TYPE_CODE
119951 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
119952
119953 ORDER BY event_id
119954 ;
119955
119956
119957 --
119958 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
119959 IS
119960 SELECT /*+ leading(xet) cardinality(xet,1) */
119961 -- Event Type Code: ACTCOSTADJ
119962 -- Event Class Code: ACTCOSTADJ
119963 xet.entity_id
119964 ,xet.legal_entity_id
119965 ,xet.entity_code
119966 ,xet.transaction_number
119967 ,xet.event_id
119968 ,xet.event_class_code
119969 ,xet.event_type_code
119970 ,xet.event_number
119971 ,xet.event_date
119972 ,xet.transaction_date
119973 ,xet.reference_num_1
119974 ,xet.reference_num_2
119975 ,xet.reference_num_3
119976 ,xet.reference_num_4
119977 ,xet.reference_char_1
119978 ,xet.reference_char_2
119979 ,xet.reference_char_3
119980 ,xet.reference_char_4
119981 ,xet.reference_date_1
119982 ,xet.reference_date_2
119983 ,xet.reference_date_3
119984 ,xet.reference_date_4
119985 ,xet.event_created_by
119986 ,xet.budgetary_control_flag , l2.LINE_NUMBER
119987 , l2.TRANSACTION_ACCOUNT_ID source_1
119988 , l2.JOURNAL_LINE_TYPE source_2
119989 , l2.ENTERED_AMOUNT source_3
119990 , l2.LINE_ID source_5
119991 , l2.ACCOUNTED_AMOUNT source_11
119992 FROM xla_events_gt xet
119993 , GMF_XLA_EXTRACT_LINES l2
119994 WHERE xet.event_id between x_first_event_id and x_last_event_id
119995 and xet.event_date between p_pad_start_date and p_pad_end_date
119996 and xet.event_type_code = C_EVENT_TYPE_CODE
119997 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
119998 ;
119999
120000 --
120001 BEGIN
120002 IF g_log_enabled THEN
120003 l_log_module := C_DEFAULT_MODULE||'.EventType_248';
120004 END IF;
120005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120006 trace
120007 (p_msg => 'BEGIN of EventType_248'
120008 ,p_level => C_LEVEL_PROCEDURE
120009 ,p_module => l_log_module);
120010 END IF;
120011
120012 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120013 trace
120014 (p_msg => 'p_application_id = '||p_application_id||
120015 ' - p_base_ledger_id = '||p_base_ledger_id||
120016 ' - p_target_ledger_id = '||p_target_ledger_id||
120017 ' - p_language = '||p_language||
120018 ' - p_currency_code = '||p_currency_code||
120019 ' - p_sla_ledger_id = '||p_sla_ledger_id
120020 ,p_level => C_LEVEL_STATEMENT
120021 ,p_module => l_log_module);
120022 END IF;
120023 --
120024 -- initialze arrays
120025 --
120026 g_array_event.DELETE;
120027 l_rec_array_event := l_null_rec_array_event;
120028 --
120029 --------------------------------------
120030 -- 4262811 Initialze MPA Line Number
120031 --------------------------------------
120032 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
120033
120034 --
120035
120036 --
120037 OPEN header_cur;
120038 --
120039 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120040 trace
120041 (p_msg => 'SQL - FETCH header_cur'
120042 ,p_level => C_LEVEL_STATEMENT
120043 ,p_module => l_log_module);
120044 END IF;
120045 --
120046 LOOP
120050 , l_array_entity_code
120047 FETCH header_cur BULK COLLECT INTO
120048 l_array_entity_id
120049 , l_array_legal_entity_id
120051 , l_array_transaction_num
120052 , l_array_event_id
120053 , l_array_class_code
120054 , l_array_event_type
120055 , l_array_event_number
120056 , l_array_event_date
120057 , l_array_transaction_date
120058 , l_array_reference_num_1
120059 , l_array_reference_num_2
120060 , l_array_reference_num_3
120061 , l_array_reference_num_4
120062 , l_array_reference_char_1
120063 , l_array_reference_char_2
120064 , l_array_reference_char_3
120065 , l_array_reference_char_4
120066 , l_array_reference_date_1
120067 , l_array_reference_date_2
120068 , l_array_reference_date_3
120069 , l_array_reference_date_4
120070 , l_array_event_created_by
120071 , l_array_budgetary_control_flag
120072 , l_array_source_6
120073 , l_array_source_7
120074 , l_array_source_8
120075 , l_array_source_9
120076 , l_array_source_10
120077 , l_array_source_12
120078 LIMIT l_rows;
120079 --
120080 IF (C_LEVEL_EVENT >= g_log_level) THEN
120081 trace
120082 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
120083 ,p_level => C_LEVEL_EVENT
120084 ,p_module => l_log_module);
120085 END IF;
120086 --
120087 EXIT WHEN l_array_entity_id.COUNT = 0;
120088
120089 -- initialize arrays
120090 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
120091 XLA_AE_LINES_PKG.g_rec_lines := NULL;
120092
120093 --
120094 -- Bug 4458708
120095 --
120096 XLA_AE_LINES_PKG.g_LineNumber := 0;
120097
120098
120099 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
120100 g_last_hdr_idx := l_array_event_id.LAST;
120101 --
120102 -- loop for the headers. Each iteration is for each header extract row
120103 -- fetched in header cursor
120104 --
120105 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
120106
120107 --
120108 -- set event info as cache for other routines to refer event attributes
120109 --
120110 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
120111 (p_application_id => p_application_id
120112 ,p_primary_ledger_id => p_primary_ledger_id
120113 ,p_base_ledger_id => p_base_ledger_id
120114 ,p_target_ledger_id => p_target_ledger_id
120115 ,p_entity_id => l_array_entity_id(hdr_idx)
120116 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
120117 ,p_entity_code => l_array_entity_code(hdr_idx)
120118 ,p_transaction_num => l_array_transaction_num(hdr_idx)
120119 ,p_event_id => l_array_event_id(hdr_idx)
120120 ,p_event_class_code => l_array_class_code(hdr_idx)
120121 ,p_event_type_code => l_array_event_type(hdr_idx)
120122 ,p_event_number => l_array_event_number(hdr_idx)
120123 ,p_event_date => l_array_event_date(hdr_idx)
120124 ,p_transaction_date => l_array_transaction_date(hdr_idx)
120125 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
120126 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
120127 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
120128 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
120129 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
120130 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
120131 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
120132 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
120133 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
120134 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
120135 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
120136 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
120137 ,p_event_created_by => l_array_event_created_by(hdr_idx)
120138 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
120139
120140 --
120141 -- set the status of entry to C_VALID (0)
120142 --
120143 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
120144
120145 --
120146 -- initialize a row for ae header
120147 --
120148 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
120149
120150 l_event_id := l_array_event_id(hdr_idx);
120151
120152 --
120153 -- storing the hdr_idx for event. May be used by line cursor.
120154 --
120155 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
120156
120157 --
120158 -- store sources from header extract. This can be improved to
120159 -- store only those sources from header extract that may be used in lines
120160 --
120161
120162 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
120163 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
120164 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
120165 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
120166 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
120167 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
120168
120169 --
120170 -- initilaize the status of ae headers for diffrent balance types
120174 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
120171 -- the status is initialised to C_NOT_CREATED (2)
120172 --
120173 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
120175 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
120176
120177 --
120178 -- call api to validate and store accounting attributes for header
120179 --
120180
120181 ------------------------------------------------------------
120182 -- Accrual Reversal : to get date for Standard Source (NONE)
120183 ------------------------------------------------------------
120184 l_acc_rev_gl_date_source := NULL;
120185
120186 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
120187 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
120188
120189
120190 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
120191
120192 XLA_AE_HEADER_PKG.SetJeCategoryName;
120193
120194 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
120195 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
120196 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
120197 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
120198 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
120199
120200
120201 -- No header level analytical criteria
120202
120203 --
120204 --accounting attribute enhancement, bug 3612931
120205 --
120206 l_trx_reversal_source := SUBSTR(NULL, 1,30);
120207
120208 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
120209 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
120210
120211 xla_accounting_err_pkg.build_message
120212 (p_appli_s_name => 'XLA'
120213 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
120214 ,p_token_1 => 'ACCT_ATTR_NAME'
120215 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
120216 ,p_token_2 => 'PRODUCT_NAME'
120217 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
120218 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
120219 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
120220 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
120221
120222 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
120223 --
120224 -- following sets the accounting attributes needed to reverse
120225 -- accounting for a distributeion
120226 --
120227 xla_ae_lines_pkg.SetTrxReversalAttrs
120228 (p_event_id => l_event_id
120229 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
120230 ,p_trx_reversal_source => l_trx_reversal_source);
120231
120232 END IF;
120233
120234
120235 ----------------------------------------------------------------
120236 -- 4262811 - update the header statuses to invalid in need be
120237 ----------------------------------------------------------------
120238 --
120239 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
120240
120241
120242 -----------------------------------------------
120243 -- No accrual reversal for the event class/type
120244 -----------------------------------------------
120245 ----------------------------------------------------------------
120246
120247 --
120248 -- this ends the header loop iteration for one bulk fetch
120249 --
120250 END LOOP;
120251
120252 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
120253 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
120254
120255 --
120256 -- insert dummy rows into lines gt table that were created due to
120257 -- transaction reversals
120258 --
120259 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
120260 l_result := XLA_AE_LINES_PKG.InsertLines;
120261 END IF;
120262
120263 --
120264 -- reset the temp_line_num for each set of events fetched from header
120265 -- cursor rather than doing it for each new event in line cursor
120266 -- Bug 3939231
120267 --
120268 xla_ae_lines_pkg.g_temp_line_num := 0;
120269
120270
120271
120272 --
120273 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
120274 --
120275 --
120276 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120277
120278 trace
120279 (p_msg => 'SQL - FETCH line_cur'
120280 ,p_level => C_LEVEL_STATEMENT
120281 ,p_module => l_log_module);
120282
120283 END IF;
120284 --
120285 --
120286 LOOP
120287 --
120288 FETCH line_cur BULK COLLECT INTO
120289 l_array_entity_id
120290 , l_array_legal_entity_id
120291 , l_array_entity_code
120292 , l_array_transaction_num
120293 , l_array_event_id
120294 , l_array_class_code
120295 , l_array_event_type
120296 , l_array_event_number
120297 , l_array_event_date
120298 , l_array_transaction_date
120299 , l_array_reference_num_1
120300 , l_array_reference_num_2
120301 , l_array_reference_num_3
120302 , l_array_reference_num_4
120303 , l_array_reference_char_1
120304 , l_array_reference_char_2
120308 , l_array_reference_date_2
120305 , l_array_reference_char_3
120306 , l_array_reference_char_4
120307 , l_array_reference_date_1
120309 , l_array_reference_date_3
120310 , l_array_reference_date_4
120311 , l_array_event_created_by
120312 , l_array_budgetary_control_flag
120313 , l_array_extract_line_num
120314 , l_array_source_1
120315 , l_array_source_2
120316 , l_array_source_3
120317 , l_array_source_5
120318 , l_array_source_11
120319 LIMIT l_rows;
120320
120321 --
120322 IF (C_LEVEL_EVENT >= g_log_level) THEN
120323 trace
120324 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
120325 ,p_level => C_LEVEL_EVENT
120326 ,p_module => l_log_module);
120327 END IF;
120328 --
120329 EXIT WHEN l_array_entity_id.count = 0;
120330
120331 XLA_AE_LINES_PKG.g_rec_lines := null;
120332
120333 --
120334 -- Bug 4458708
120335 --
120336 XLA_AE_LINES_PKG.g_LineNumber := 0;
120337 --
120338 --
120339
120340 FOR Idx IN 1..l_array_event_id.count LOOP
120341 --
120342 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
120343 --
120344 l_event_id := l_array_event_id(idx); -- 5648433
120345
120346 --
120347 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
120348 --
120349
120350 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
120351 (g_array_event(l_event_id).array_value_num('header_index'))
120352 ,'N'
120353 ) <> 'Y'
120354 THEN
120355 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120356 trace
120357 (p_msg => 'Trancaction revesal option is not Y '
120358 ,p_level => C_LEVEL_STATEMENT
120359 ,p_module => l_log_module);
120360 END IF;
120361
120362 --
120363 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
120364 --
120365 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
120366 --
120367 -- set event info as cache for other routines to refer event attributes
120368 --
120369
120370 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
120371 l_previous_event_id := l_event_id;
120372
120373 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
120374 (p_application_id => p_application_id
120375 ,p_primary_ledger_id => p_primary_ledger_id
120376 ,p_base_ledger_id => p_base_ledger_id
120377 ,p_target_ledger_id => p_target_ledger_id
120378 ,p_entity_id => l_array_entity_id(Idx)
120379 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
120380 ,p_entity_code => l_array_entity_code(Idx)
120381 ,p_transaction_num => l_array_transaction_num(Idx)
120382 ,p_event_id => l_array_event_id(Idx)
120383 ,p_event_class_code => l_array_class_code(Idx)
120384 ,p_event_type_code => l_array_event_type(Idx)
120385 ,p_event_number => l_array_event_number(Idx)
120386 ,p_event_date => l_array_event_date(Idx)
120387 ,p_transaction_date => l_array_transaction_date(Idx)
120388 ,p_reference_num_1 => l_array_reference_num_1(Idx)
120389 ,p_reference_num_2 => l_array_reference_num_2(Idx)
120390 ,p_reference_num_3 => l_array_reference_num_3(Idx)
120391 ,p_reference_num_4 => l_array_reference_num_4(Idx)
120392 ,p_reference_char_1 => l_array_reference_char_1(Idx)
120393 ,p_reference_char_2 => l_array_reference_char_2(Idx)
120394 ,p_reference_char_3 => l_array_reference_char_3(Idx)
120395 ,p_reference_char_4 => l_array_reference_char_4(Idx)
120396 ,p_reference_date_1 => l_array_reference_date_1(Idx)
120397 ,p_reference_date_2 => l_array_reference_date_2(Idx)
120398 ,p_reference_date_3 => l_array_reference_date_3(Idx)
120399 ,p_reference_date_4 => l_array_reference_date_4(Idx)
120400 ,p_event_created_by => l_array_event_created_by(Idx)
120401 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
120402 --
120403 END IF;
120404
120405
120406
120407 --
120408 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
120409
120410 l_acct_reversal_source := SUBSTR(NULL, 1,30);
120411
120412 IF l_continue_with_lines THEN
120413 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
120414 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
120415
120416 xla_accounting_err_pkg.build_message
120417 (p_appli_s_name => 'XLA'
120418 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
120419 ,p_token_1 => 'LINE_NUMBER'
120420 ,p_value_1 => l_array_extract_line_num(Idx)
120421 ,p_token_2 => 'PRODUCT_NAME'
120422 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
120423 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
120424 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
120425 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
120426
120430 -- accounting for a distributeion
120427 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
120428 --
120429 -- following sets the accounting attributes needed to reverse
120431 --
120432
120433 --
120434 -- 5217187
120435 --
120436 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
120437 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
120438 g_array_event(l_event_id).array_value_num('header_index'));
120439 --
120440 --
120441
120442 -- No reversal code generated
120443
120444 xla_ae_lines_pkg.SetAcctReversalAttrs
120445 (p_event_id => l_event_id
120446 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
120447 ,p_calculate_acctd_flag => l_calculate_acctd_flag
120448 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
120449 END IF;
120450
120451 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
120452 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
120453
120454 --
120455 AcctLineType_62 (
120456 p_application_id => p_application_id
120457 ,p_event_id => l_event_id
120458 ,p_calculate_acctd_flag => l_calculate_acctd_flag
120459 ,p_calculate_g_l_flag => l_calculate_g_l_flag
120460 ,p_actual_flag => l_actual_flag
120461 ,p_balance_type_code => l_balance_type_code
120462 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
120463
120464 , p_source_1 => l_array_source_1(Idx)
120465 , p_source_2 => l_array_source_2(Idx)
120466 , p_source_3 => l_array_source_3(Idx)
120467 , p_source_5 => l_array_source_5(Idx)
120468 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
120469 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
120470 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
120471 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
120472 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
120473 , p_source_11 => l_array_source_11(Idx)
120474 );
120475 If(l_balance_type_code = 'A') THEN
120476 l_actual_gain_loss_ref := l_gain_or_loss_ref;
120477 END IF;
120478
120479 --
120480
120481
120482 --
120483 AcctLineType_149 (
120484 p_application_id => p_application_id
120485 ,p_event_id => l_event_id
120486 ,p_calculate_acctd_flag => l_calculate_acctd_flag
120487 ,p_calculate_g_l_flag => l_calculate_g_l_flag
120488 ,p_actual_flag => l_actual_flag
120489 ,p_balance_type_code => l_balance_type_code
120490 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
120491
120492 , p_source_1 => l_array_source_1(Idx)
120493 , p_source_2 => l_array_source_2(Idx)
120494 , p_source_3 => l_array_source_3(Idx)
120495 , p_source_5 => l_array_source_5(Idx)
120496 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
120497 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
120498 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
120499 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
120500 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
120501 , p_source_11 => l_array_source_11(Idx)
120502 );
120503 If(l_balance_type_code = 'A') THEN
120504 l_actual_gain_loss_ref := l_gain_or_loss_ref;
120505 END IF;
120506
120507 --
120508
120509 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
120510 -- or secondary ledger that has different currency with primary
120511 -- or alc that is calculated by sla
120512 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
120513 (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'))
120514
120515 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
120516 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
120517 AND (l_actual_flag = 'A')) THEN
120518 XLA_AE_LINES_PKG.CreateGainOrLossLines(
120519 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
120520 ,p_application_id => p_application_id
120521 ,p_amb_context_code => 'DEFAULT'
120522 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
120523 ,p_event_class_code => C_EVENT_CLASS_CODE
120524 ,p_event_type_code => C_EVENT_TYPE_CODE
120525
120526 ,p_gain_ccid => -1
120527 ,p_loss_ccid => -1
120528
120529 ,p_actual_flag => l_actual_flag
120530 ,p_enc_flag => null
120531 ,p_actual_g_l_ref => l_actual_gain_loss_ref
120532 ,p_enc_g_l_ref => null
120533 );
120534 END IF;
120535 END IF;
120536 END IF;
120537
120538 ELSE
120539 --
120540 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
120541 --
120542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120543 trace
120544 (p_msg => 'Trancaction revesal option is Y'
120545 ,p_level => C_LEVEL_STATEMENT
120546 ,p_module => l_log_module);
120547 END IF;
120548 END IF;
120549
120550 END LOOP;
120551 l_result := XLA_AE_LINES_PKG.InsertLines ;
120555
120552 end loop;
120553 close line_cur;
120554
120556 --
120557 -- insert headers into xla_ae_headers_gt table
120558 --
120559 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
120560
120561 -- insert into errors table here.
120562
120563 END LOOP;
120564
120565 --
120566 -- 4865292
120567 --
120568 -- Compare g_hdr_extract_count with event count in
120569 -- CreateHeadersAndLines.
120570 --
120571 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
120572
120573 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120574 trace (p_msg => '# rows extracted from header extract objects '
120575 || ' (running total): '
120576 || g_hdr_extract_count
120577 ,p_level => C_LEVEL_STATEMENT
120578 ,p_module => l_log_module);
120579 END IF;
120580
120581 CLOSE header_cur;
120582 --
120583
120584 --
120585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120586 trace
120587 (p_msg => 'END of EventType_248'
120588 ,p_level => C_LEVEL_PROCEDURE
120589 ,p_module => l_log_module);
120590 END IF;
120591 --
120592 RETURN l_result;
120593 EXCEPTION
120594 WHEN xla_exceptions_pkg.application_exception THEN
120595
120596 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
120597
120598
120599 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
120600
120601 RAISE;
120602
120603 WHEN NO_DATA_FOUND THEN
120604
120605 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
120606 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
120607
120608 FOR header_record IN header_cur
120609 LOOP
120610 l_array_header_events(header_record.event_id) := header_record.event_id;
120611 END LOOP;
120612
120613 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
120614 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
120615
120616 fnd_file.put_line(fnd_file.LOG, ' ');
120617 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
120618 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
120619 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
120620
120621 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
120622 LOOP
120623 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
120624 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
120625 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
120626 END IF;
120627 END LOOP;
120628
120629 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
120630 fnd_file.put_line(fnd_file.LOG, ' ');
120631
120632
120633 xla_exceptions_pkg.raise_message
120634 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_248');
120635
120636
120637 WHEN OTHERS THEN
120638 xla_exceptions_pkg.raise_message
120639 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_248');
120640 END EventType_248;
120641 --
120642
120643 ---------------------------------------
120644 --
120645 -- PRIVATE PROCEDURE
120646 -- insert_sources_249
120647 --
120648 ----------------------------------------
120649 --
120650 PROCEDURE insert_sources_249(
120651 p_target_ledger_id IN NUMBER
120652 , p_language IN VARCHAR2
120653 , p_sla_ledger_id IN NUMBER
120654 , p_pad_start_date IN DATE
120655 , p_pad_end_date IN DATE
120656 )
120657 IS
120658
120659 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ADJUST_DELIVER';
120660 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
120661 p_apps_owner VARCHAR2(30);
120662 l_log_module VARCHAR2(240);
120663 BEGIN
120664 IF g_log_enabled THEN
120665 l_log_module := C_DEFAULT_MODULE||'.insert_sources_249';
120666 END IF;
120667 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120668
120669 trace
120670 (p_msg => 'BEGIN of insert_sources_249'
120671 ,p_level => C_LEVEL_PROCEDURE
120672 ,p_module => l_log_module);
120673
120674 END IF;
120675
120676 -- select APPS owner
120677 SELECT oracle_username
120678 INTO p_apps_owner
120679 FROM fnd_oracle_userid
120680 WHERE read_only_flag = 'U'
120681 ;
120682
120683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120684 trace
120685 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
120686 ' - p_language = '||p_language||
120687 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
120688 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
120689 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
120690 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
120691 ,p_level => C_LEVEL_STATEMENT
120692 ,p_module => l_log_module);
120693 END IF;
120694
120695
120696 --
120697 INSERT INTO xla_diag_sources --hdr1
120698 (
120699 event_id
120703 , object_name
120700 , ledger_id
120701 , sla_ledger_id
120702 , description_language
120704 , object_type_code
120705 , line_number
120706 , source_application_id
120707 , source_type_code
120708 , source_code
120709 , source_value
120710 , source_meaning
120711 , created_by
120712 , creation_date
120713 , last_update_date
120714 , last_updated_by
120715 , last_update_login
120716 , program_update_date
120717 , program_application_id
120718 , program_id
120719 , request_id
120720 )
120721 SELECT
120722 event_id
120723 , p_target_ledger_id
120724 , p_sla_ledger_id
120725 , p_language
120726 , object_name
120727 , object_type_code
120728 , line_number
120729 , source_application_id
120730 , source_type_code
120731 , source_code
120732 , SUBSTR(source_value ,1,1996)
120733 , SUBSTR(source_meaning,1,200)
120734 , xla_environment_pkg.g_Usr_Id
120735 , TRUNC(SYSDATE)
120736 , TRUNC(SYSDATE)
120737 , xla_environment_pkg.g_Usr_Id
120738 , xla_environment_pkg.g_Login_Id
120739 , TRUNC(SYSDATE)
120740 , xla_environment_pkg.g_Prog_Appl_Id
120741 , xla_environment_pkg.g_Prog_Id
120742 , xla_environment_pkg.g_Req_Id
120743 FROM (
120744 SELECT xet.event_id event_id
120745 , 0 line_number
120746 , CASE r
120747 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
120748 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
120749 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
120750 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
120751 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
120752 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
120753
120754 ELSE null
120755 END object_name
120756 , CASE r
120757 WHEN 1 THEN 'HEADER'
120758 WHEN 2 THEN 'HEADER'
120759 WHEN 3 THEN 'HEADER'
120760 WHEN 4 THEN 'HEADER'
120761 WHEN 5 THEN 'HEADER'
120762 WHEN 6 THEN 'HEADER'
120763
120764 ELSE null
120765 END object_type_code
120766 , CASE r
120767 WHEN 1 THEN '555'
120768 WHEN 2 THEN '555'
120769 WHEN 3 THEN '555'
120770 WHEN 4 THEN '555'
120771 WHEN 5 THEN '555'
120772 WHEN 6 THEN '555'
120773
120774 ELSE null
120775 END source_application_id
120776 , 'S' source_type_code
120777 , CASE r
120778 WHEN 1 THEN 'ENTITY_CODE'
120779 WHEN 2 THEN 'CURRENCY_CODE'
120780 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
120781 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
120782 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
120783 WHEN 6 THEN 'TRANSACTION_DATE'
120784
120785 ELSE null
120786 END source_code
120787 , CASE r
120788 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
120789 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
120790 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
120791 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
120792 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
120793 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
120794
120795 ELSE null
120796 END source_value
120797 , CASE r
120798 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
120799 1010186
120800 ,TO_CHAR(h1.CURRENCY_CODE)
120801 ,'CURRENCY_CODE'
120802 ,'S'
120803 ,555)
120804
120805 ELSE null
120806 END source_meaning
120807 FROM xla_events_gt xet
120808 , GMF_XLA_EXTRACT_HEADERS h1
120809 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
120810 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
120811 AND xet.event_type_code = C_EVENT_TYPE_CODE
120812 AND h1.event_id = xet.event_id
120813
120814 )
120815 ;
120816 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120817
120818 trace
120819 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
120820 ,p_level => C_LEVEL_STATEMENT
120821 ,p_module => l_log_module);
120822
120823 END IF;
120824 --
120825
120826
120827
120828 --
120829 INSERT INTO xla_diag_sources --line1
120830 (
120831 event_id
120832 , ledger_id
120833 , sla_ledger_id
120834 , description_language
120835 , object_name
120836 , object_type_code
120837 , line_number
120838 , source_application_id
120839 , source_type_code
120840 , source_code
120841 , source_value
120842 , source_meaning
120843 , created_by
120844 , creation_date
120848 , program_update_date
120845 , last_update_date
120846 , last_updated_by
120847 , last_update_login
120849 , program_application_id
120850 , program_id
120851 , request_id
120852 )
120853 SELECT event_id
120854 , p_target_ledger_id
120855 , p_sla_ledger_id
120856 , p_language
120857 , object_name
120858 , object_type_code
120859 , line_number
120860 , source_application_id
120861 , source_type_code
120862 , source_code
120863 , SUBSTR(source_value,1,1996)
120864 , SUBSTR(source_meaning,1,200)
120865 , xla_environment_pkg.g_Usr_Id
120866 , TRUNC(SYSDATE)
120867 , TRUNC(SYSDATE)
120868 , xla_environment_pkg.g_Usr_Id
120869 , xla_environment_pkg.g_Login_Id
120870 , TRUNC(SYSDATE)
120871 , xla_environment_pkg.g_Prog_Appl_Id
120872 , xla_environment_pkg.g_Prog_Id
120873 , xla_environment_pkg.g_Req_Id
120874 FROM (
120875 SELECT xet.event_id event_id
120876 , l2.line_number line_number
120877 , CASE r
120878 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
120879 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
120880 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
120881 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
120882 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
120883
120884 ELSE null
120885 END object_name
120886 , CASE r
120887 WHEN 1 THEN 'LINE'
120888 WHEN 2 THEN 'LINE'
120889 WHEN 3 THEN 'LINE'
120890 WHEN 4 THEN 'LINE'
120891 WHEN 5 THEN 'LINE'
120892
120893 ELSE null
120894 END object_type_code
120895 , CASE r
120896 WHEN 1 THEN '555'
120897 WHEN 2 THEN '555'
120898 WHEN 3 THEN '555'
120899 WHEN 4 THEN '555'
120900 WHEN 5 THEN '555'
120901
120902 ELSE null
120903 END source_application_id
120904 , 'S' source_type_code
120905 , CASE r
120906 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
120907 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
120908 WHEN 3 THEN 'ENTERED_AMOUNT'
120909 WHEN 4 THEN 'LINE_ID'
120910 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
120911
120912 ELSE null
120913 END source_code
120914 , CASE r
120915 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
120916 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
120917 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
120918 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
120919 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
120920
120921 ELSE null
120922 END source_value
120923 , null source_meaning
120924 FROM xla_events_gt xet
120925 , GMF_XLA_EXTRACT_LINES l2
120926 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
120927 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
120928 AND xet.event_type_code = C_EVENT_TYPE_CODE
120929 AND l2.event_id = xet.event_id
120930
120931 )
120932 ;
120933 --
120934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
120935
120936 trace
120937 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
120938 ,p_level => C_LEVEL_STATEMENT
120939 ,p_module => l_log_module);
120940
120941 END IF;
120942
120943
120944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120945 trace
120946 (p_msg => 'END of insert_sources_249'
120947 ,p_level => C_LEVEL_PROCEDURE
120948 ,p_module => l_log_module);
120949 END IF;
120950 EXCEPTION
120951 WHEN xla_exceptions_pkg.application_exception THEN
120952 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
120953 trace
120954 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
120955 ,p_level => C_LEVEL_EXCEPTION
120956 ,p_module => l_log_module);
120957 END IF;
120958 RAISE;
120959 WHEN OTHERS THEN
120960 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
120961 trace
120962 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
120963 ,p_level => C_LEVEL_EXCEPTION
120964 ,p_module => l_log_module);
120965 END IF;
120966 xla_exceptions_pkg.raise_message
120967 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_249');
120968 END insert_sources_249;
120969 --
120970
120971 ---------------------------------------
120972 --
120973 -- PRIVATE FUNCTION
120974 -- EventType_249
120975 --
120976 ----------------------------------------
120977 --
120978 FUNCTION EventType_249
120979 (p_application_id IN NUMBER
120980 ,p_base_ledger_id IN NUMBER
120981 ,p_target_ledger_id IN NUMBER
120982 ,p_language IN VARCHAR2
120983 ,p_currency_code IN VARCHAR2
120987 ,p_primary_ledger_id IN NUMBER)
120984 ,p_sla_ledger_id IN NUMBER
120985 ,p_pad_start_date IN DATE
120986 ,p_pad_end_date IN DATE
120988 RETURN BOOLEAN IS
120989 --
120990 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ADJUST_DELIVER';
120991 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
120992
120993 l_calculate_acctd_flag VARCHAR2(1) :='N';
120994 l_calculate_g_l_flag VARCHAR2(1) :='N';
120995 --
120996 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
120997 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
120998 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
120999 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121000 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121001 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
121002 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
121003 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121004 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121005 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121006 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121007 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121008 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121009 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
121010 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121011 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121012 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121013 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
121014 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121015 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121016 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121017 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
121018 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
121019 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
121020 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
121021 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
121022
121023 l_event_id NUMBER;
121024 l_previous_event_id NUMBER;
121025 l_first_event_id NUMBER;
121026 l_last_event_id NUMBER;
121027
121028 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
121029 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
121030 --
121031 --
121032 l_result BOOLEAN := TRUE;
121033 l_rows NUMBER := 1000;
121034 l_event_type_name VARCHAR2(80) := 'Adjust Deliver';
121035 l_event_class_name VARCHAR2(80) := 'Receiving';
121036 l_description VARCHAR2(4000);
121037 l_transaction_reversal NUMBER;
121038 l_ae_header_id NUMBER;
121039 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
121040 l_log_module VARCHAR2(240);
121041 --
121042 l_acct_reversal_source VARCHAR2(30);
121043 l_trx_reversal_source VARCHAR2(30);
121044
121045 l_continue_with_lines BOOLEAN := TRUE;
121046 --
121047 l_acc_rev_gl_date_source DATE; -- 4262811
121048 --
121049 type t_array_event_id is table of number index by binary_integer;
121050
121051 l_rec_array_event t_rec_array_event;
121052 l_null_rec_array_event t_rec_array_event;
121053 l_array_ae_header_id xla_number_array_type;
121054 l_actual_flag VARCHAR2(1) := NULL;
121055 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
121056 l_balance_type_code VARCHAR2(1) :=NULL;
121057 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
121058
121059 --
121060 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
121061 --
121062
121063 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
121064 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
121065 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
121066 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
121067 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
121068 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
121069
121070 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
121071 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
121072 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
121073 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
121074 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
121075
121076 l_array_source_6 t_array_source_6;
121080 l_array_source_10 t_array_source_10;
121077 l_array_source_7 t_array_source_7;
121078 l_array_source_8 t_array_source_8;
121079 l_array_source_9 t_array_source_9;
121081 l_array_source_12 t_array_source_12;
121082
121083 l_array_source_1 t_array_source_1;
121084 l_array_source_2 t_array_source_2;
121085 l_array_source_3 t_array_source_3;
121086 l_array_source_5 t_array_source_5;
121087 l_array_source_11 t_array_source_11;
121088
121089 --
121090 CURSOR header_cur
121091 IS
121092 SELECT /*+ leading(xet) cardinality(xet,1) */
121093 -- Event Type Code: ADJUST_DELIVER
121094 -- Event Class Code: RECEIVE
121095 xet.entity_id
121096 , xet.legal_entity_id
121097 , xet.entity_code
121098 , xet.transaction_number
121099 , xet.event_id
121100 , xet.event_class_code
121101 , xet.event_type_code
121102 , xet.event_number
121103 , xet.event_date
121104 , xet.transaction_date
121105 , xet.reference_num_1
121106 , xet.reference_num_2
121107 , xet.reference_num_3
121108 , xet.reference_num_4
121109 , xet.reference_char_1
121110 , xet.reference_char_2
121111 , xet.reference_char_3
121112 , xet.reference_char_4
121113 , xet.reference_date_1
121114 , xet.reference_date_2
121115 , xet.reference_date_3
121116 , xet.reference_date_4
121117 , xet.event_created_by
121118 , xet.budgetary_control_flag
121119 , h1.ENTITY_CODE source_6
121120 , h1.CURRENCY_CODE source_7
121121 , h1.CURRENCY_CONVERSION_DATE source_8
121122 , h1.CURRENCY_CONVERSION_RATE source_9
121123 , h1.CURRENCY_CONVERSION_TYPE source_10
121124 , h1.TRANSACTION_DATE source_12
121125 FROM xla_events_gt xet
121126 , GMF_XLA_EXTRACT_HEADERS h1
121127 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
121128 and xet.event_type_code = C_EVENT_TYPE_CODE
121129 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
121130
121131 ORDER BY event_id
121132 ;
121133
121134
121135 --
121136 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
121137 IS
121138 SELECT /*+ leading(xet) cardinality(xet,1) */
121139 -- Event Type Code: ADJUST_DELIVER
121140 -- Event Class Code: RECEIVE
121141 xet.entity_id
121142 ,xet.legal_entity_id
121143 ,xet.entity_code
121144 ,xet.transaction_number
121145 ,xet.event_id
121146 ,xet.event_class_code
121147 ,xet.event_type_code
121148 ,xet.event_number
121149 ,xet.event_date
121150 ,xet.transaction_date
121151 ,xet.reference_num_1
121152 ,xet.reference_num_2
121153 ,xet.reference_num_3
121154 ,xet.reference_num_4
121155 ,xet.reference_char_1
121156 ,xet.reference_char_2
121157 ,xet.reference_char_3
121158 ,xet.reference_char_4
121159 ,xet.reference_date_1
121160 ,xet.reference_date_2
121161 ,xet.reference_date_3
121162 ,xet.reference_date_4
121163 ,xet.event_created_by
121164 ,xet.budgetary_control_flag , l2.LINE_NUMBER
121165 , l2.TRANSACTION_ACCOUNT_ID source_1
121166 , l2.JOURNAL_LINE_TYPE source_2
121167 , l2.ENTERED_AMOUNT source_3
121168 , l2.LINE_ID source_5
121169 , l2.ACCOUNTED_AMOUNT source_11
121170 FROM xla_events_gt xet
121171 , GMF_XLA_EXTRACT_LINES l2
121172 WHERE xet.event_id between x_first_event_id and x_last_event_id
121173 and xet.event_date between p_pad_start_date and p_pad_end_date
121174 and xet.event_type_code = C_EVENT_TYPE_CODE
121175 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
121176 ;
121177
121178 --
121179 BEGIN
121180 IF g_log_enabled THEN
121181 l_log_module := C_DEFAULT_MODULE||'.EventType_249';
121182 END IF;
121183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121184 trace
121185 (p_msg => 'BEGIN of EventType_249'
121186 ,p_level => C_LEVEL_PROCEDURE
121187 ,p_module => l_log_module);
121188 END IF;
121189
121190 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121191 trace
121192 (p_msg => 'p_application_id = '||p_application_id||
121193 ' - p_base_ledger_id = '||p_base_ledger_id||
121194 ' - p_target_ledger_id = '||p_target_ledger_id||
121195 ' - p_language = '||p_language||
121196 ' - p_currency_code = '||p_currency_code||
121197 ' - p_sla_ledger_id = '||p_sla_ledger_id
121198 ,p_level => C_LEVEL_STATEMENT
121199 ,p_module => l_log_module);
121200 END IF;
121201 --
121202 -- initialze arrays
121203 --
121204 g_array_event.DELETE;
121205 l_rec_array_event := l_null_rec_array_event;
121206 --
121207 --------------------------------------
121208 -- 4262811 Initialze MPA Line Number
121209 --------------------------------------
121210 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
121211
121212 --
121213
121214 --
121215 OPEN header_cur;
121216 --
121217 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121218 trace
121219 (p_msg => 'SQL - FETCH header_cur'
121220 ,p_level => C_LEVEL_STATEMENT
121221 ,p_module => l_log_module);
121222 END IF;
121223 --
121224 LOOP
121225 FETCH header_cur BULK COLLECT INTO
121226 l_array_entity_id
121227 , l_array_legal_entity_id
121228 , l_array_entity_code
121229 , l_array_transaction_num
121233 , l_array_event_number
121230 , l_array_event_id
121231 , l_array_class_code
121232 , l_array_event_type
121234 , l_array_event_date
121235 , l_array_transaction_date
121236 , l_array_reference_num_1
121237 , l_array_reference_num_2
121238 , l_array_reference_num_3
121239 , l_array_reference_num_4
121240 , l_array_reference_char_1
121241 , l_array_reference_char_2
121242 , l_array_reference_char_3
121243 , l_array_reference_char_4
121244 , l_array_reference_date_1
121245 , l_array_reference_date_2
121246 , l_array_reference_date_3
121247 , l_array_reference_date_4
121248 , l_array_event_created_by
121249 , l_array_budgetary_control_flag
121250 , l_array_source_6
121251 , l_array_source_7
121252 , l_array_source_8
121253 , l_array_source_9
121254 , l_array_source_10
121255 , l_array_source_12
121256 LIMIT l_rows;
121257 --
121258 IF (C_LEVEL_EVENT >= g_log_level) THEN
121259 trace
121260 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
121261 ,p_level => C_LEVEL_EVENT
121262 ,p_module => l_log_module);
121263 END IF;
121264 --
121265 EXIT WHEN l_array_entity_id.COUNT = 0;
121266
121267 -- initialize arrays
121268 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
121269 XLA_AE_LINES_PKG.g_rec_lines := NULL;
121270
121271 --
121272 -- Bug 4458708
121273 --
121274 XLA_AE_LINES_PKG.g_LineNumber := 0;
121275
121276
121277 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
121278 g_last_hdr_idx := l_array_event_id.LAST;
121279 --
121280 -- loop for the headers. Each iteration is for each header extract row
121281 -- fetched in header cursor
121282 --
121283 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
121284
121285 --
121286 -- set event info as cache for other routines to refer event attributes
121287 --
121288 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
121289 (p_application_id => p_application_id
121290 ,p_primary_ledger_id => p_primary_ledger_id
121291 ,p_base_ledger_id => p_base_ledger_id
121292 ,p_target_ledger_id => p_target_ledger_id
121293 ,p_entity_id => l_array_entity_id(hdr_idx)
121294 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
121295 ,p_entity_code => l_array_entity_code(hdr_idx)
121296 ,p_transaction_num => l_array_transaction_num(hdr_idx)
121297 ,p_event_id => l_array_event_id(hdr_idx)
121298 ,p_event_class_code => l_array_class_code(hdr_idx)
121299 ,p_event_type_code => l_array_event_type(hdr_idx)
121300 ,p_event_number => l_array_event_number(hdr_idx)
121301 ,p_event_date => l_array_event_date(hdr_idx)
121302 ,p_transaction_date => l_array_transaction_date(hdr_idx)
121303 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
121304 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
121305 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
121306 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
121307 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
121308 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
121309 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
121310 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
121311 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
121312 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
121313 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
121314 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
121315 ,p_event_created_by => l_array_event_created_by(hdr_idx)
121316 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
121317
121318 --
121319 -- set the status of entry to C_VALID (0)
121320 --
121321 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
121322
121323 --
121324 -- initialize a row for ae header
121325 --
121326 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
121327
121328 l_event_id := l_array_event_id(hdr_idx);
121329
121330 --
121331 -- storing the hdr_idx for event. May be used by line cursor.
121332 --
121333 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
121334
121335 --
121336 -- store sources from header extract. This can be improved to
121337 -- store only those sources from header extract that may be used in lines
121338 --
121339
121340 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
121341 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
121342 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
121343 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
121344 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
121345 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
121346
121347 --
121348 -- initilaize the status of ae headers for diffrent balance types
121349 -- the status is initialised to C_NOT_CREATED (2)
121350 --
121351 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
121355 --
121352 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
121353 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
121354
121356 -- call api to validate and store accounting attributes for header
121357 --
121358
121359 ------------------------------------------------------------
121360 -- Accrual Reversal : to get date for Standard Source (NONE)
121361 ------------------------------------------------------------
121362 l_acc_rev_gl_date_source := NULL;
121363
121364 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
121365 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
121366
121367
121368 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
121369
121370 XLA_AE_HEADER_PKG.SetJeCategoryName;
121371
121372 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
121373 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
121374 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
121375 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
121376 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
121377
121378
121379 -- No header level analytical criteria
121380
121381 --
121382 --accounting attribute enhancement, bug 3612931
121383 --
121384 l_trx_reversal_source := SUBSTR(NULL, 1,30);
121385
121386 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
121387 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
121388
121389 xla_accounting_err_pkg.build_message
121390 (p_appli_s_name => 'XLA'
121391 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
121392 ,p_token_1 => 'ACCT_ATTR_NAME'
121393 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
121394 ,p_token_2 => 'PRODUCT_NAME'
121395 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
121396 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
121397 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
121398 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
121399
121400 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
121401 --
121402 -- following sets the accounting attributes needed to reverse
121403 -- accounting for a distributeion
121404 --
121405 xla_ae_lines_pkg.SetTrxReversalAttrs
121406 (p_event_id => l_event_id
121407 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
121408 ,p_trx_reversal_source => l_trx_reversal_source);
121409
121410 END IF;
121411
121412
121413 ----------------------------------------------------------------
121414 -- 4262811 - update the header statuses to invalid in need be
121415 ----------------------------------------------------------------
121416 --
121417 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
121418
121419
121420 -----------------------------------------------
121421 -- No accrual reversal for the event class/type
121422 -----------------------------------------------
121423 ----------------------------------------------------------------
121424
121425 --
121426 -- this ends the header loop iteration for one bulk fetch
121427 --
121428 END LOOP;
121429
121430 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
121431 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
121432
121433 --
121434 -- insert dummy rows into lines gt table that were created due to
121435 -- transaction reversals
121436 --
121437 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
121438 l_result := XLA_AE_LINES_PKG.InsertLines;
121439 END IF;
121440
121441 --
121442 -- reset the temp_line_num for each set of events fetched from header
121443 -- cursor rather than doing it for each new event in line cursor
121444 -- Bug 3939231
121445 --
121446 xla_ae_lines_pkg.g_temp_line_num := 0;
121447
121448
121449
121450 --
121451 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
121452 --
121453 --
121454 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121455
121456 trace
121457 (p_msg => 'SQL - FETCH line_cur'
121458 ,p_level => C_LEVEL_STATEMENT
121459 ,p_module => l_log_module);
121460
121461 END IF;
121462 --
121463 --
121464 LOOP
121465 --
121466 FETCH line_cur BULK COLLECT INTO
121467 l_array_entity_id
121468 , l_array_legal_entity_id
121469 , l_array_entity_code
121470 , l_array_transaction_num
121471 , l_array_event_id
121472 , l_array_class_code
121473 , l_array_event_type
121474 , l_array_event_number
121475 , l_array_event_date
121476 , l_array_transaction_date
121477 , l_array_reference_num_1
121478 , l_array_reference_num_2
121479 , l_array_reference_num_3
121480 , l_array_reference_num_4
121481 , l_array_reference_char_1
121482 , l_array_reference_char_2
121483 , l_array_reference_char_3
121484 , l_array_reference_char_4
121485 , l_array_reference_date_1
121486 , l_array_reference_date_2
121490 , l_array_budgetary_control_flag
121487 , l_array_reference_date_3
121488 , l_array_reference_date_4
121489 , l_array_event_created_by
121491 , l_array_extract_line_num
121492 , l_array_source_1
121493 , l_array_source_2
121494 , l_array_source_3
121495 , l_array_source_5
121496 , l_array_source_11
121497 LIMIT l_rows;
121498
121499 --
121500 IF (C_LEVEL_EVENT >= g_log_level) THEN
121501 trace
121502 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
121503 ,p_level => C_LEVEL_EVENT
121504 ,p_module => l_log_module);
121505 END IF;
121506 --
121507 EXIT WHEN l_array_entity_id.count = 0;
121508
121509 XLA_AE_LINES_PKG.g_rec_lines := null;
121510
121511 --
121512 -- Bug 4458708
121513 --
121514 XLA_AE_LINES_PKG.g_LineNumber := 0;
121515 --
121516 --
121517
121518 FOR Idx IN 1..l_array_event_id.count LOOP
121519 --
121520 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
121521 --
121522 l_event_id := l_array_event_id(idx); -- 5648433
121523
121524 --
121525 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
121526 --
121527
121528 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
121529 (g_array_event(l_event_id).array_value_num('header_index'))
121530 ,'N'
121531 ) <> 'Y'
121532 THEN
121533 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121534 trace
121535 (p_msg => 'Trancaction revesal option is not Y '
121536 ,p_level => C_LEVEL_STATEMENT
121537 ,p_module => l_log_module);
121538 END IF;
121539
121540 --
121541 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
121542 --
121543 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
121544 --
121545 -- set event info as cache for other routines to refer event attributes
121546 --
121547
121548 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
121549 l_previous_event_id := l_event_id;
121550
121551 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
121552 (p_application_id => p_application_id
121553 ,p_primary_ledger_id => p_primary_ledger_id
121554 ,p_base_ledger_id => p_base_ledger_id
121555 ,p_target_ledger_id => p_target_ledger_id
121556 ,p_entity_id => l_array_entity_id(Idx)
121557 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
121558 ,p_entity_code => l_array_entity_code(Idx)
121559 ,p_transaction_num => l_array_transaction_num(Idx)
121560 ,p_event_id => l_array_event_id(Idx)
121561 ,p_event_class_code => l_array_class_code(Idx)
121562 ,p_event_type_code => l_array_event_type(Idx)
121563 ,p_event_number => l_array_event_number(Idx)
121564 ,p_event_date => l_array_event_date(Idx)
121565 ,p_transaction_date => l_array_transaction_date(Idx)
121566 ,p_reference_num_1 => l_array_reference_num_1(Idx)
121567 ,p_reference_num_2 => l_array_reference_num_2(Idx)
121568 ,p_reference_num_3 => l_array_reference_num_3(Idx)
121569 ,p_reference_num_4 => l_array_reference_num_4(Idx)
121570 ,p_reference_char_1 => l_array_reference_char_1(Idx)
121571 ,p_reference_char_2 => l_array_reference_char_2(Idx)
121572 ,p_reference_char_3 => l_array_reference_char_3(Idx)
121573 ,p_reference_char_4 => l_array_reference_char_4(Idx)
121574 ,p_reference_date_1 => l_array_reference_date_1(Idx)
121575 ,p_reference_date_2 => l_array_reference_date_2(Idx)
121576 ,p_reference_date_3 => l_array_reference_date_3(Idx)
121577 ,p_reference_date_4 => l_array_reference_date_4(Idx)
121578 ,p_event_created_by => l_array_event_created_by(Idx)
121579 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
121580 --
121581 END IF;
121582
121583
121584
121585 --
121586 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
121587
121588 l_acct_reversal_source := SUBSTR(NULL, 1,30);
121589
121590 IF l_continue_with_lines THEN
121591 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
121592 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
121593
121594 xla_accounting_err_pkg.build_message
121595 (p_appli_s_name => 'XLA'
121596 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
121597 ,p_token_1 => 'LINE_NUMBER'
121598 ,p_value_1 => l_array_extract_line_num(Idx)
121599 ,p_token_2 => 'PRODUCT_NAME'
121600 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
121601 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
121602 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
121603 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
121604
121605 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
121606 --
121607 -- following sets the accounting attributes needed to reverse
121611 --
121608 -- accounting for a distributeion
121609 --
121610
121612 -- 5217187
121613 --
121614 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
121615 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
121616 g_array_event(l_event_id).array_value_num('header_index'));
121617 --
121618 --
121619
121620 -- No reversal code generated
121621
121622 xla_ae_lines_pkg.SetAcctReversalAttrs
121623 (p_event_id => l_event_id
121624 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
121625 ,p_calculate_acctd_flag => l_calculate_acctd_flag
121626 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
121627 END IF;
121628
121629 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
121630 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
121631
121632 --
121633 AcctLineType_194 (
121634 p_application_id => p_application_id
121635 ,p_event_id => l_event_id
121636 ,p_calculate_acctd_flag => l_calculate_acctd_flag
121637 ,p_calculate_g_l_flag => l_calculate_g_l_flag
121638 ,p_actual_flag => l_actual_flag
121639 ,p_balance_type_code => l_balance_type_code
121640 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
121641
121642 , p_source_1 => l_array_source_1(Idx)
121643 , p_source_2 => l_array_source_2(Idx)
121644 , p_source_3 => l_array_source_3(Idx)
121645 , p_source_5 => l_array_source_5(Idx)
121646 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
121647 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
121648 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
121649 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
121650 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
121651 , p_source_11 => l_array_source_11(Idx)
121652 );
121653 If(l_balance_type_code = 'A') THEN
121654 l_actual_gain_loss_ref := l_gain_or_loss_ref;
121655 END IF;
121656
121657 --
121658
121659
121660 --
121661 AcctLineType_234 (
121662 p_application_id => p_application_id
121663 ,p_event_id => l_event_id
121664 ,p_calculate_acctd_flag => l_calculate_acctd_flag
121665 ,p_calculate_g_l_flag => l_calculate_g_l_flag
121666 ,p_actual_flag => l_actual_flag
121667 ,p_balance_type_code => l_balance_type_code
121668 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
121669
121670 , p_source_1 => l_array_source_1(Idx)
121671 , p_source_2 => l_array_source_2(Idx)
121672 , p_source_3 => l_array_source_3(Idx)
121673 , p_source_5 => l_array_source_5(Idx)
121674 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
121675 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
121676 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
121677 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
121678 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
121679 , p_source_11 => l_array_source_11(Idx)
121680 );
121681 If(l_balance_type_code = 'A') THEN
121682 l_actual_gain_loss_ref := l_gain_or_loss_ref;
121683 END IF;
121684
121685 --
121686
121687 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
121688 -- or secondary ledger that has different currency with primary
121689 -- or alc that is calculated by sla
121690 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
121691 (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'))
121692
121693 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
121694 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
121695 AND (l_actual_flag = 'A')) THEN
121696 XLA_AE_LINES_PKG.CreateGainOrLossLines(
121697 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
121698 ,p_application_id => p_application_id
121699 ,p_amb_context_code => 'DEFAULT'
121700 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
121701 ,p_event_class_code => C_EVENT_CLASS_CODE
121702 ,p_event_type_code => C_EVENT_TYPE_CODE
121703
121704 ,p_gain_ccid => -1
121705 ,p_loss_ccid => -1
121706
121707 ,p_actual_flag => l_actual_flag
121708 ,p_enc_flag => null
121709 ,p_actual_g_l_ref => l_actual_gain_loss_ref
121710 ,p_enc_g_l_ref => null
121711 );
121712 END IF;
121713 END IF;
121714 END IF;
121715
121716 ELSE
121717 --
121718 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
121719 --
121720 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121721 trace
121722 (p_msg => 'Trancaction revesal option is Y'
121723 ,p_level => C_LEVEL_STATEMENT
121724 ,p_module => l_log_module);
121725 END IF;
121726 END IF;
121727
121728 END LOOP;
121729 l_result := XLA_AE_LINES_PKG.InsertLines ;
121730 end loop;
121731 close line_cur;
121732
121733
121734 --
121735 -- insert headers into xla_ae_headers_gt table
121736 --
121740
121737 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
121738
121739 -- insert into errors table here.
121741 END LOOP;
121742
121743 --
121744 -- 4865292
121745 --
121746 -- Compare g_hdr_extract_count with event count in
121747 -- CreateHeadersAndLines.
121748 --
121749 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
121750
121751 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121752 trace (p_msg => '# rows extracted from header extract objects '
121753 || ' (running total): '
121754 || g_hdr_extract_count
121755 ,p_level => C_LEVEL_STATEMENT
121756 ,p_module => l_log_module);
121757 END IF;
121758
121759 CLOSE header_cur;
121760 --
121761
121762 --
121763 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121764 trace
121765 (p_msg => 'END of EventType_249'
121766 ,p_level => C_LEVEL_PROCEDURE
121767 ,p_module => l_log_module);
121768 END IF;
121769 --
121770 RETURN l_result;
121771 EXCEPTION
121772 WHEN xla_exceptions_pkg.application_exception THEN
121773
121774 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
121775
121776
121777 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
121778
121779 RAISE;
121780
121781 WHEN NO_DATA_FOUND THEN
121782
121783 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
121784 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
121785
121786 FOR header_record IN header_cur
121787 LOOP
121788 l_array_header_events(header_record.event_id) := header_record.event_id;
121789 END LOOP;
121790
121791 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
121792 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
121793
121794 fnd_file.put_line(fnd_file.LOG, ' ');
121795 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
121796 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
121797 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
121798
121799 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
121800 LOOP
121801 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
121802 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
121803 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
121804 END IF;
121805 END LOOP;
121806
121807 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
121808 fnd_file.put_line(fnd_file.LOG, ' ');
121809
121810
121811 xla_exceptions_pkg.raise_message
121812 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_249');
121813
121814
121815 WHEN OTHERS THEN
121816 xla_exceptions_pkg.raise_message
121817 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_249');
121818 END EventType_249;
121819 --
121820
121821 ---------------------------------------
121822 --
121823 -- PRIVATE PROCEDURE
121824 -- insert_sources_250
121825 --
121826 ----------------------------------------
121827 --
121828 PROCEDURE insert_sources_250(
121829 p_target_ledger_id IN NUMBER
121830 , p_language IN VARCHAR2
121831 , p_sla_ledger_id IN NUMBER
121832 , p_pad_start_date IN DATE
121833 , p_pad_end_date IN DATE
121834 )
121835 IS
121836
121837 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ADJUST_RECEIVE';
121838 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
121839 p_apps_owner VARCHAR2(30);
121840 l_log_module VARCHAR2(240);
121841 BEGIN
121842 IF g_log_enabled THEN
121843 l_log_module := C_DEFAULT_MODULE||'.insert_sources_250';
121844 END IF;
121845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121846
121847 trace
121848 (p_msg => 'BEGIN of insert_sources_250'
121849 ,p_level => C_LEVEL_PROCEDURE
121850 ,p_module => l_log_module);
121851
121852 END IF;
121853
121854 -- select APPS owner
121855 SELECT oracle_username
121856 INTO p_apps_owner
121857 FROM fnd_oracle_userid
121858 WHERE read_only_flag = 'U'
121859 ;
121860
121861 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121862 trace
121863 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
121864 ' - p_language = '||p_language||
121865 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
121866 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
121867 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
121868 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
121869 ,p_level => C_LEVEL_STATEMENT
121870 ,p_module => l_log_module);
121871 END IF;
121872
121873
121874 --
121875 INSERT INTO xla_diag_sources --hdr1
121876 (
121877 event_id
121878 , ledger_id
121879 , sla_ledger_id
121880 , description_language
121881 , object_name
121885 , source_type_code
121882 , object_type_code
121883 , line_number
121884 , source_application_id
121886 , source_code
121887 , source_value
121888 , source_meaning
121889 , created_by
121890 , creation_date
121891 , last_update_date
121892 , last_updated_by
121893 , last_update_login
121894 , program_update_date
121895 , program_application_id
121896 , program_id
121897 , request_id
121898 )
121899 SELECT
121900 event_id
121901 , p_target_ledger_id
121902 , p_sla_ledger_id
121903 , p_language
121904 , object_name
121905 , object_type_code
121906 , line_number
121907 , source_application_id
121908 , source_type_code
121909 , source_code
121910 , SUBSTR(source_value ,1,1996)
121911 , SUBSTR(source_meaning,1,200)
121912 , xla_environment_pkg.g_Usr_Id
121913 , TRUNC(SYSDATE)
121914 , TRUNC(SYSDATE)
121915 , xla_environment_pkg.g_Usr_Id
121916 , xla_environment_pkg.g_Login_Id
121917 , TRUNC(SYSDATE)
121918 , xla_environment_pkg.g_Prog_Appl_Id
121919 , xla_environment_pkg.g_Prog_Id
121920 , xla_environment_pkg.g_Req_Id
121921 FROM (
121922 SELECT xet.event_id event_id
121923 , 0 line_number
121924 , CASE r
121925 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
121926 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
121927 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
121928 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
121929 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
121930 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
121931
121932 ELSE null
121933 END object_name
121934 , CASE r
121935 WHEN 1 THEN 'HEADER'
121936 WHEN 2 THEN 'HEADER'
121937 WHEN 3 THEN 'HEADER'
121938 WHEN 4 THEN 'HEADER'
121939 WHEN 5 THEN 'HEADER'
121940 WHEN 6 THEN 'HEADER'
121941
121942 ELSE null
121943 END object_type_code
121944 , CASE r
121945 WHEN 1 THEN '555'
121946 WHEN 2 THEN '555'
121947 WHEN 3 THEN '555'
121948 WHEN 4 THEN '555'
121949 WHEN 5 THEN '555'
121950 WHEN 6 THEN '555'
121951
121952 ELSE null
121953 END source_application_id
121954 , 'S' source_type_code
121955 , CASE r
121956 WHEN 1 THEN 'ENTITY_CODE'
121957 WHEN 2 THEN 'CURRENCY_CODE'
121958 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
121959 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
121960 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
121961 WHEN 6 THEN 'TRANSACTION_DATE'
121962
121963 ELSE null
121964 END source_code
121965 , CASE r
121966 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
121967 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
121968 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
121969 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
121970 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
121971 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
121972
121973 ELSE null
121974 END source_value
121975 , CASE r
121976 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
121977 1010186
121978 ,TO_CHAR(h1.CURRENCY_CODE)
121979 ,'CURRENCY_CODE'
121980 ,'S'
121981 ,555)
121982
121983 ELSE null
121984 END source_meaning
121985 FROM xla_events_gt xet
121986 , GMF_XLA_EXTRACT_HEADERS h1
121987 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
121988 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
121989 AND xet.event_type_code = C_EVENT_TYPE_CODE
121990 AND h1.event_id = xet.event_id
121991
121992 )
121993 ;
121994 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
121995
121996 trace
121997 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
121998 ,p_level => C_LEVEL_STATEMENT
121999 ,p_module => l_log_module);
122000
122001 END IF;
122002 --
122003
122004
122005
122006 --
122007 INSERT INTO xla_diag_sources --line1
122008 (
122009 event_id
122010 , ledger_id
122011 , sla_ledger_id
122012 , description_language
122013 , object_name
122014 , object_type_code
122015 , line_number
122016 , source_application_id
122017 , source_type_code
122018 , source_code
122019 , source_value
122020 , source_meaning
122021 , created_by
122022 , creation_date
122023 , last_update_date
122024 , last_updated_by
122025 , last_update_login
122026 , program_update_date
122030 )
122027 , program_application_id
122028 , program_id
122029 , request_id
122031 SELECT event_id
122032 , p_target_ledger_id
122033 , p_sla_ledger_id
122034 , p_language
122035 , object_name
122036 , object_type_code
122037 , line_number
122038 , source_application_id
122039 , source_type_code
122040 , source_code
122041 , SUBSTR(source_value,1,1996)
122042 , SUBSTR(source_meaning,1,200)
122043 , xla_environment_pkg.g_Usr_Id
122044 , TRUNC(SYSDATE)
122045 , TRUNC(SYSDATE)
122046 , xla_environment_pkg.g_Usr_Id
122047 , xla_environment_pkg.g_Login_Id
122048 , TRUNC(SYSDATE)
122049 , xla_environment_pkg.g_Prog_Appl_Id
122050 , xla_environment_pkg.g_Prog_Id
122051 , xla_environment_pkg.g_Req_Id
122052 FROM (
122053 SELECT xet.event_id event_id
122054 , l2.line_number line_number
122055 , CASE r
122056 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
122057 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
122058 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
122059 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
122060 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
122061
122062 ELSE null
122063 END object_name
122064 , CASE r
122065 WHEN 1 THEN 'LINE'
122066 WHEN 2 THEN 'LINE'
122067 WHEN 3 THEN 'LINE'
122068 WHEN 4 THEN 'LINE'
122069 WHEN 5 THEN 'LINE'
122070
122071 ELSE null
122072 END object_type_code
122073 , CASE r
122074 WHEN 1 THEN '555'
122075 WHEN 2 THEN '555'
122076 WHEN 3 THEN '555'
122077 WHEN 4 THEN '555'
122078 WHEN 5 THEN '555'
122079
122080 ELSE null
122081 END source_application_id
122082 , 'S' source_type_code
122083 , CASE r
122084 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
122085 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
122086 WHEN 3 THEN 'ENTERED_AMOUNT'
122087 WHEN 4 THEN 'LINE_ID'
122088 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
122089
122090 ELSE null
122091 END source_code
122092 , CASE r
122093 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
122094 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
122095 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
122096 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
122097 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
122098
122099 ELSE null
122100 END source_value
122101 , null source_meaning
122102 FROM xla_events_gt xet
122103 , GMF_XLA_EXTRACT_LINES l2
122104 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
122105 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
122106 AND xet.event_type_code = C_EVENT_TYPE_CODE
122107 AND l2.event_id = xet.event_id
122108
122109 )
122110 ;
122111 --
122112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122113
122114 trace
122115 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
122116 ,p_level => C_LEVEL_STATEMENT
122117 ,p_module => l_log_module);
122118
122119 END IF;
122120
122121
122122 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122123 trace
122124 (p_msg => 'END of insert_sources_250'
122125 ,p_level => C_LEVEL_PROCEDURE
122126 ,p_module => l_log_module);
122127 END IF;
122128 EXCEPTION
122129 WHEN xla_exceptions_pkg.application_exception THEN
122130 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
122131 trace
122132 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
122133 ,p_level => C_LEVEL_EXCEPTION
122134 ,p_module => l_log_module);
122135 END IF;
122136 RAISE;
122137 WHEN OTHERS THEN
122138 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
122139 trace
122140 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
122141 ,p_level => C_LEVEL_EXCEPTION
122142 ,p_module => l_log_module);
122143 END IF;
122144 xla_exceptions_pkg.raise_message
122145 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_250');
122146 END insert_sources_250;
122147 --
122148
122149 ---------------------------------------
122150 --
122151 -- PRIVATE FUNCTION
122152 -- EventType_250
122153 --
122154 ----------------------------------------
122155 --
122156 FUNCTION EventType_250
122157 (p_application_id IN NUMBER
122158 ,p_base_ledger_id IN NUMBER
122159 ,p_target_ledger_id IN NUMBER
122160 ,p_language IN VARCHAR2
122161 ,p_currency_code IN VARCHAR2
122162 ,p_sla_ledger_id IN NUMBER
122163 ,p_pad_start_date IN DATE
122167 --
122164 ,p_pad_end_date IN DATE
122165 ,p_primary_ledger_id IN NUMBER)
122166 RETURN BOOLEAN IS
122168 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ADJUST_RECEIVE';
122169 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
122170
122171 l_calculate_acctd_flag VARCHAR2(1) :='N';
122172 l_calculate_g_l_flag VARCHAR2(1) :='N';
122173 --
122174 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122175 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122176 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
122177 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122178 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122179 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
122180 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
122181 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122182 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122183 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122184 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122185 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122186 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122187 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
122188 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122189 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122190 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122191 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
122192 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122193 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122194 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122195 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
122196 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
122197 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
122198 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
122199 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
122200
122201 l_event_id NUMBER;
122202 l_previous_event_id NUMBER;
122203 l_first_event_id NUMBER;
122204 l_last_event_id NUMBER;
122205
122206 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
122207 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
122208 --
122209 --
122210 l_result BOOLEAN := TRUE;
122211 l_rows NUMBER := 1000;
122212 l_event_type_name VARCHAR2(80) := 'Adjust Receive';
122213 l_event_class_name VARCHAR2(80) := 'Receiving';
122214 l_description VARCHAR2(4000);
122215 l_transaction_reversal NUMBER;
122216 l_ae_header_id NUMBER;
122217 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
122218 l_log_module VARCHAR2(240);
122219 --
122220 l_acct_reversal_source VARCHAR2(30);
122221 l_trx_reversal_source VARCHAR2(30);
122222
122223 l_continue_with_lines BOOLEAN := TRUE;
122224 --
122225 l_acc_rev_gl_date_source DATE; -- 4262811
122226 --
122227 type t_array_event_id is table of number index by binary_integer;
122228
122229 l_rec_array_event t_rec_array_event;
122230 l_null_rec_array_event t_rec_array_event;
122231 l_array_ae_header_id xla_number_array_type;
122232 l_actual_flag VARCHAR2(1) := NULL;
122233 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
122234 l_balance_type_code VARCHAR2(1) :=NULL;
122235 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
122236
122237 --
122238 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
122239 --
122240
122241 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
122242 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
122243 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
122244 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
122245 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
122246 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
122247
122248 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
122249 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
122250 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
122251 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
122252 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
122253
122254 l_array_source_6 t_array_source_6;
122255 l_array_source_7 t_array_source_7;
122259 l_array_source_12 t_array_source_12;
122256 l_array_source_8 t_array_source_8;
122257 l_array_source_9 t_array_source_9;
122258 l_array_source_10 t_array_source_10;
122260
122261 l_array_source_1 t_array_source_1;
122262 l_array_source_2 t_array_source_2;
122263 l_array_source_3 t_array_source_3;
122264 l_array_source_5 t_array_source_5;
122265 l_array_source_11 t_array_source_11;
122266
122267 --
122268 CURSOR header_cur
122269 IS
122270 SELECT /*+ leading(xet) cardinality(xet,1) */
122271 -- Event Type Code: ADJUST_RECEIVE
122272 -- Event Class Code: RECEIVE
122273 xet.entity_id
122274 , xet.legal_entity_id
122275 , xet.entity_code
122276 , xet.transaction_number
122277 , xet.event_id
122278 , xet.event_class_code
122279 , xet.event_type_code
122280 , xet.event_number
122281 , xet.event_date
122282 , xet.transaction_date
122283 , xet.reference_num_1
122284 , xet.reference_num_2
122285 , xet.reference_num_3
122286 , xet.reference_num_4
122287 , xet.reference_char_1
122288 , xet.reference_char_2
122289 , xet.reference_char_3
122290 , xet.reference_char_4
122291 , xet.reference_date_1
122292 , xet.reference_date_2
122293 , xet.reference_date_3
122294 , xet.reference_date_4
122295 , xet.event_created_by
122296 , xet.budgetary_control_flag
122297 , h1.ENTITY_CODE source_6
122298 , h1.CURRENCY_CODE source_7
122299 , h1.CURRENCY_CONVERSION_DATE source_8
122300 , h1.CURRENCY_CONVERSION_RATE source_9
122301 , h1.CURRENCY_CONVERSION_TYPE source_10
122302 , h1.TRANSACTION_DATE source_12
122303 FROM xla_events_gt xet
122304 , GMF_XLA_EXTRACT_HEADERS h1
122305 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
122306 and xet.event_type_code = C_EVENT_TYPE_CODE
122307 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
122308
122309 ORDER BY event_id
122310 ;
122311
122312
122313 --
122314 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
122315 IS
122316 SELECT /*+ leading(xet) cardinality(xet,1) */
122317 -- Event Type Code: ADJUST_RECEIVE
122318 -- Event Class Code: RECEIVE
122319 xet.entity_id
122320 ,xet.legal_entity_id
122321 ,xet.entity_code
122322 ,xet.transaction_number
122323 ,xet.event_id
122324 ,xet.event_class_code
122325 ,xet.event_type_code
122326 ,xet.event_number
122327 ,xet.event_date
122328 ,xet.transaction_date
122329 ,xet.reference_num_1
122330 ,xet.reference_num_2
122331 ,xet.reference_num_3
122332 ,xet.reference_num_4
122333 ,xet.reference_char_1
122334 ,xet.reference_char_2
122335 ,xet.reference_char_3
122336 ,xet.reference_char_4
122337 ,xet.reference_date_1
122338 ,xet.reference_date_2
122339 ,xet.reference_date_3
122340 ,xet.reference_date_4
122341 ,xet.event_created_by
122342 ,xet.budgetary_control_flag , l2.LINE_NUMBER
122343 , l2.TRANSACTION_ACCOUNT_ID source_1
122344 , l2.JOURNAL_LINE_TYPE source_2
122345 , l2.ENTERED_AMOUNT source_3
122346 , l2.LINE_ID source_5
122347 , l2.ACCOUNTED_AMOUNT source_11
122348 FROM xla_events_gt xet
122349 , GMF_XLA_EXTRACT_LINES l2
122350 WHERE xet.event_id between x_first_event_id and x_last_event_id
122351 and xet.event_date between p_pad_start_date and p_pad_end_date
122352 and xet.event_type_code = C_EVENT_TYPE_CODE
122353 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
122354 ;
122355
122356 --
122357 BEGIN
122358 IF g_log_enabled THEN
122359 l_log_module := C_DEFAULT_MODULE||'.EventType_250';
122360 END IF;
122361 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122362 trace
122363 (p_msg => 'BEGIN of EventType_250'
122364 ,p_level => C_LEVEL_PROCEDURE
122365 ,p_module => l_log_module);
122366 END IF;
122367
122368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122369 trace
122370 (p_msg => 'p_application_id = '||p_application_id||
122371 ' - p_base_ledger_id = '||p_base_ledger_id||
122372 ' - p_target_ledger_id = '||p_target_ledger_id||
122373 ' - p_language = '||p_language||
122374 ' - p_currency_code = '||p_currency_code||
122375 ' - p_sla_ledger_id = '||p_sla_ledger_id
122376 ,p_level => C_LEVEL_STATEMENT
122377 ,p_module => l_log_module);
122378 END IF;
122379 --
122380 -- initialze arrays
122381 --
122382 g_array_event.DELETE;
122383 l_rec_array_event := l_null_rec_array_event;
122384 --
122385 --------------------------------------
122386 -- 4262811 Initialze MPA Line Number
122387 --------------------------------------
122388 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
122389
122390 --
122391
122392 --
122393 OPEN header_cur;
122394 --
122395 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122396 trace
122397 (p_msg => 'SQL - FETCH header_cur'
122398 ,p_level => C_LEVEL_STATEMENT
122399 ,p_module => l_log_module);
122400 END IF;
122401 --
122402 LOOP
122403 FETCH header_cur BULK COLLECT INTO
122404 l_array_entity_id
122405 , l_array_legal_entity_id
122406 , l_array_entity_code
122407 , l_array_transaction_num
122408 , l_array_event_id
122412 , l_array_event_date
122409 , l_array_class_code
122410 , l_array_event_type
122411 , l_array_event_number
122413 , l_array_transaction_date
122414 , l_array_reference_num_1
122415 , l_array_reference_num_2
122416 , l_array_reference_num_3
122417 , l_array_reference_num_4
122418 , l_array_reference_char_1
122419 , l_array_reference_char_2
122420 , l_array_reference_char_3
122421 , l_array_reference_char_4
122422 , l_array_reference_date_1
122423 , l_array_reference_date_2
122424 , l_array_reference_date_3
122425 , l_array_reference_date_4
122426 , l_array_event_created_by
122427 , l_array_budgetary_control_flag
122428 , l_array_source_6
122429 , l_array_source_7
122430 , l_array_source_8
122431 , l_array_source_9
122432 , l_array_source_10
122433 , l_array_source_12
122434 LIMIT l_rows;
122435 --
122436 IF (C_LEVEL_EVENT >= g_log_level) THEN
122437 trace
122438 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
122439 ,p_level => C_LEVEL_EVENT
122440 ,p_module => l_log_module);
122441 END IF;
122442 --
122443 EXIT WHEN l_array_entity_id.COUNT = 0;
122444
122445 -- initialize arrays
122446 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
122447 XLA_AE_LINES_PKG.g_rec_lines := NULL;
122448
122449 --
122450 -- Bug 4458708
122451 --
122452 XLA_AE_LINES_PKG.g_LineNumber := 0;
122453
122454
122455 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
122456 g_last_hdr_idx := l_array_event_id.LAST;
122457 --
122458 -- loop for the headers. Each iteration is for each header extract row
122459 -- fetched in header cursor
122460 --
122461 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
122462
122463 --
122464 -- set event info as cache for other routines to refer event attributes
122465 --
122466 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
122467 (p_application_id => p_application_id
122468 ,p_primary_ledger_id => p_primary_ledger_id
122469 ,p_base_ledger_id => p_base_ledger_id
122470 ,p_target_ledger_id => p_target_ledger_id
122471 ,p_entity_id => l_array_entity_id(hdr_idx)
122472 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
122473 ,p_entity_code => l_array_entity_code(hdr_idx)
122474 ,p_transaction_num => l_array_transaction_num(hdr_idx)
122475 ,p_event_id => l_array_event_id(hdr_idx)
122476 ,p_event_class_code => l_array_class_code(hdr_idx)
122477 ,p_event_type_code => l_array_event_type(hdr_idx)
122478 ,p_event_number => l_array_event_number(hdr_idx)
122479 ,p_event_date => l_array_event_date(hdr_idx)
122480 ,p_transaction_date => l_array_transaction_date(hdr_idx)
122481 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
122482 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
122483 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
122484 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
122485 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
122486 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
122487 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
122488 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
122489 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
122490 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
122491 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
122492 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
122493 ,p_event_created_by => l_array_event_created_by(hdr_idx)
122494 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
122495
122496 --
122497 -- set the status of entry to C_VALID (0)
122498 --
122499 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
122500
122501 --
122502 -- initialize a row for ae header
122503 --
122504 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
122505
122506 l_event_id := l_array_event_id(hdr_idx);
122507
122508 --
122509 -- storing the hdr_idx for event. May be used by line cursor.
122510 --
122511 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
122512
122513 --
122514 -- store sources from header extract. This can be improved to
122515 -- store only those sources from header extract that may be used in lines
122516 --
122517
122518 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
122519 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
122520 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
122521 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
122522 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
122523 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
122524
122525 --
122526 -- initilaize the status of ae headers for diffrent balance types
122527 -- the status is initialised to C_NOT_CREATED (2)
122528 --
122529 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
122530 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
122534 -- call api to validate and store accounting attributes for header
122531 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
122532
122533 --
122535 --
122536
122537 ------------------------------------------------------------
122538 -- Accrual Reversal : to get date for Standard Source (NONE)
122539 ------------------------------------------------------------
122540 l_acc_rev_gl_date_source := NULL;
122541
122542 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
122543 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
122544
122545
122546 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
122547
122548 XLA_AE_HEADER_PKG.SetJeCategoryName;
122549
122550 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
122551 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
122552 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
122553 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
122554 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
122555
122556
122557 -- No header level analytical criteria
122558
122559 --
122560 --accounting attribute enhancement, bug 3612931
122561 --
122562 l_trx_reversal_source := SUBSTR(NULL, 1,30);
122563
122564 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
122565 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
122566
122567 xla_accounting_err_pkg.build_message
122568 (p_appli_s_name => 'XLA'
122569 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
122570 ,p_token_1 => 'ACCT_ATTR_NAME'
122571 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
122572 ,p_token_2 => 'PRODUCT_NAME'
122573 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
122574 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
122575 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
122576 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
122577
122578 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
122579 --
122580 -- following sets the accounting attributes needed to reverse
122581 -- accounting for a distributeion
122582 --
122583 xla_ae_lines_pkg.SetTrxReversalAttrs
122584 (p_event_id => l_event_id
122585 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
122586 ,p_trx_reversal_source => l_trx_reversal_source);
122587
122588 END IF;
122589
122590
122591 ----------------------------------------------------------------
122592 -- 4262811 - update the header statuses to invalid in need be
122593 ----------------------------------------------------------------
122594 --
122595 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
122596
122597
122598 -----------------------------------------------
122599 -- No accrual reversal for the event class/type
122600 -----------------------------------------------
122601 ----------------------------------------------------------------
122602
122603 --
122604 -- this ends the header loop iteration for one bulk fetch
122605 --
122606 END LOOP;
122607
122608 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
122609 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
122610
122611 --
122612 -- insert dummy rows into lines gt table that were created due to
122613 -- transaction reversals
122614 --
122615 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
122616 l_result := XLA_AE_LINES_PKG.InsertLines;
122617 END IF;
122618
122619 --
122620 -- reset the temp_line_num for each set of events fetched from header
122621 -- cursor rather than doing it for each new event in line cursor
122622 -- Bug 3939231
122623 --
122624 xla_ae_lines_pkg.g_temp_line_num := 0;
122625
122626
122627
122628 --
122629 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
122630 --
122631 --
122632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122633
122634 trace
122635 (p_msg => 'SQL - FETCH line_cur'
122636 ,p_level => C_LEVEL_STATEMENT
122637 ,p_module => l_log_module);
122638
122639 END IF;
122640 --
122641 --
122642 LOOP
122643 --
122644 FETCH line_cur BULK COLLECT INTO
122645 l_array_entity_id
122646 , l_array_legal_entity_id
122647 , l_array_entity_code
122648 , l_array_transaction_num
122649 , l_array_event_id
122650 , l_array_class_code
122651 , l_array_event_type
122652 , l_array_event_number
122653 , l_array_event_date
122654 , l_array_transaction_date
122655 , l_array_reference_num_1
122656 , l_array_reference_num_2
122657 , l_array_reference_num_3
122658 , l_array_reference_num_4
122659 , l_array_reference_char_1
122660 , l_array_reference_char_2
122661 , l_array_reference_char_3
122662 , l_array_reference_char_4
122663 , l_array_reference_date_1
122664 , l_array_reference_date_2
122665 , l_array_reference_date_3
122669 , l_array_extract_line_num
122666 , l_array_reference_date_4
122667 , l_array_event_created_by
122668 , l_array_budgetary_control_flag
122670 , l_array_source_1
122671 , l_array_source_2
122672 , l_array_source_3
122673 , l_array_source_5
122674 , l_array_source_11
122675 LIMIT l_rows;
122676
122677 --
122678 IF (C_LEVEL_EVENT >= g_log_level) THEN
122679 trace
122680 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
122681 ,p_level => C_LEVEL_EVENT
122682 ,p_module => l_log_module);
122683 END IF;
122684 --
122685 EXIT WHEN l_array_entity_id.count = 0;
122686
122687 XLA_AE_LINES_PKG.g_rec_lines := null;
122688
122689 --
122690 -- Bug 4458708
122691 --
122692 XLA_AE_LINES_PKG.g_LineNumber := 0;
122693 --
122694 --
122695
122696 FOR Idx IN 1..l_array_event_id.count LOOP
122697 --
122698 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
122699 --
122700 l_event_id := l_array_event_id(idx); -- 5648433
122701
122702 --
122703 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
122704 --
122705
122706 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
122707 (g_array_event(l_event_id).array_value_num('header_index'))
122708 ,'N'
122709 ) <> 'Y'
122710 THEN
122711 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122712 trace
122713 (p_msg => 'Trancaction revesal option is not Y '
122714 ,p_level => C_LEVEL_STATEMENT
122715 ,p_module => l_log_module);
122716 END IF;
122717
122718 --
122719 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
122720 --
122721 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
122722 --
122723 -- set event info as cache for other routines to refer event attributes
122724 --
122725
122726 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
122727 l_previous_event_id := l_event_id;
122728
122729 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
122730 (p_application_id => p_application_id
122731 ,p_primary_ledger_id => p_primary_ledger_id
122732 ,p_base_ledger_id => p_base_ledger_id
122733 ,p_target_ledger_id => p_target_ledger_id
122734 ,p_entity_id => l_array_entity_id(Idx)
122735 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
122736 ,p_entity_code => l_array_entity_code(Idx)
122737 ,p_transaction_num => l_array_transaction_num(Idx)
122738 ,p_event_id => l_array_event_id(Idx)
122739 ,p_event_class_code => l_array_class_code(Idx)
122740 ,p_event_type_code => l_array_event_type(Idx)
122741 ,p_event_number => l_array_event_number(Idx)
122742 ,p_event_date => l_array_event_date(Idx)
122743 ,p_transaction_date => l_array_transaction_date(Idx)
122744 ,p_reference_num_1 => l_array_reference_num_1(Idx)
122745 ,p_reference_num_2 => l_array_reference_num_2(Idx)
122746 ,p_reference_num_3 => l_array_reference_num_3(Idx)
122747 ,p_reference_num_4 => l_array_reference_num_4(Idx)
122748 ,p_reference_char_1 => l_array_reference_char_1(Idx)
122749 ,p_reference_char_2 => l_array_reference_char_2(Idx)
122750 ,p_reference_char_3 => l_array_reference_char_3(Idx)
122751 ,p_reference_char_4 => l_array_reference_char_4(Idx)
122752 ,p_reference_date_1 => l_array_reference_date_1(Idx)
122753 ,p_reference_date_2 => l_array_reference_date_2(Idx)
122754 ,p_reference_date_3 => l_array_reference_date_3(Idx)
122755 ,p_reference_date_4 => l_array_reference_date_4(Idx)
122756 ,p_event_created_by => l_array_event_created_by(Idx)
122757 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
122758 --
122759 END IF;
122760
122761
122762
122763 --
122764 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
122765
122766 l_acct_reversal_source := SUBSTR(NULL, 1,30);
122767
122768 IF l_continue_with_lines THEN
122769 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
122770 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
122771
122772 xla_accounting_err_pkg.build_message
122773 (p_appli_s_name => 'XLA'
122774 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
122775 ,p_token_1 => 'LINE_NUMBER'
122776 ,p_value_1 => l_array_extract_line_num(Idx)
122777 ,p_token_2 => 'PRODUCT_NAME'
122778 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
122779 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
122780 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
122781 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
122782
122783 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
122784 --
122785 -- following sets the accounting attributes needed to reverse
122786 -- accounting for a distributeion
122787 --
122788
122789 --
122793 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
122790 -- 5217187
122791 --
122792 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
122794 g_array_event(l_event_id).array_value_num('header_index'));
122795 --
122796 --
122797
122798 -- No reversal code generated
122799
122800 xla_ae_lines_pkg.SetAcctReversalAttrs
122801 (p_event_id => l_event_id
122802 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
122803 ,p_calculate_acctd_flag => l_calculate_acctd_flag
122804 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
122805 END IF;
122806
122807 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
122808 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
122809
122810 --
122811 AcctLineType_46 (
122812 p_application_id => p_application_id
122813 ,p_event_id => l_event_id
122814 ,p_calculate_acctd_flag => l_calculate_acctd_flag
122815 ,p_calculate_g_l_flag => l_calculate_g_l_flag
122816 ,p_actual_flag => l_actual_flag
122817 ,p_balance_type_code => l_balance_type_code
122818 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
122819
122820 , p_source_1 => l_array_source_1(Idx)
122821 , p_source_2 => l_array_source_2(Idx)
122822 , p_source_3 => l_array_source_3(Idx)
122823 , p_source_5 => l_array_source_5(Idx)
122824 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
122825 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
122826 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
122827 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
122828 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
122829 , p_source_11 => l_array_source_11(Idx)
122830 );
122831 If(l_balance_type_code = 'A') THEN
122832 l_actual_gain_loss_ref := l_gain_or_loss_ref;
122833 END IF;
122834
122835 --
122836
122837
122838 --
122839 AcctLineType_118 (
122840 p_application_id => p_application_id
122841 ,p_event_id => l_event_id
122842 ,p_calculate_acctd_flag => l_calculate_acctd_flag
122843 ,p_calculate_g_l_flag => l_calculate_g_l_flag
122844 ,p_actual_flag => l_actual_flag
122845 ,p_balance_type_code => l_balance_type_code
122846 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
122847
122848 , p_source_1 => l_array_source_1(Idx)
122849 , p_source_2 => l_array_source_2(Idx)
122850 , p_source_3 => l_array_source_3(Idx)
122851 , p_source_5 => l_array_source_5(Idx)
122852 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
122853 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
122854 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
122855 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
122856 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
122857 , p_source_11 => l_array_source_11(Idx)
122858 );
122859 If(l_balance_type_code = 'A') THEN
122860 l_actual_gain_loss_ref := l_gain_or_loss_ref;
122861 END IF;
122862
122863 --
122864
122865
122866 --
122867 AcctLineType_200 (
122868 p_application_id => p_application_id
122869 ,p_event_id => l_event_id
122870 ,p_calculate_acctd_flag => l_calculate_acctd_flag
122871 ,p_calculate_g_l_flag => l_calculate_g_l_flag
122872 ,p_actual_flag => l_actual_flag
122873 ,p_balance_type_code => l_balance_type_code
122874 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
122875
122876 , p_source_1 => l_array_source_1(Idx)
122877 , p_source_2 => l_array_source_2(Idx)
122878 , p_source_3 => l_array_source_3(Idx)
122879 , p_source_5 => l_array_source_5(Idx)
122880 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
122881 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
122882 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
122883 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
122884 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
122885 , p_source_11 => l_array_source_11(Idx)
122886 );
122887 If(l_balance_type_code = 'A') THEN
122888 l_actual_gain_loss_ref := l_gain_or_loss_ref;
122889 END IF;
122890
122891 --
122892
122893 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
122894 -- or secondary ledger that has different currency with primary
122895 -- or alc that is calculated by sla
122896 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
122897 (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'))
122898
122899 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
122900 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
122901 AND (l_actual_flag = 'A')) THEN
122902 XLA_AE_LINES_PKG.CreateGainOrLossLines(
122903 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
122904 ,p_application_id => p_application_id
122905 ,p_amb_context_code => 'DEFAULT'
122906 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
122907 ,p_event_class_code => C_EVENT_CLASS_CODE
122908 ,p_event_type_code => C_EVENT_TYPE_CODE
122912
122909
122910 ,p_gain_ccid => -1
122911 ,p_loss_ccid => -1
122913 ,p_actual_flag => l_actual_flag
122914 ,p_enc_flag => null
122915 ,p_actual_g_l_ref => l_actual_gain_loss_ref
122916 ,p_enc_g_l_ref => null
122917 );
122918 END IF;
122919 END IF;
122920 END IF;
122921
122922 ELSE
122923 --
122924 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
122925 --
122926 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122927 trace
122928 (p_msg => 'Trancaction revesal option is Y'
122929 ,p_level => C_LEVEL_STATEMENT
122930 ,p_module => l_log_module);
122931 END IF;
122932 END IF;
122933
122934 END LOOP;
122935 l_result := XLA_AE_LINES_PKG.InsertLines ;
122936 end loop;
122937 close line_cur;
122938
122939
122940 --
122941 -- insert headers into xla_ae_headers_gt table
122942 --
122943 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
122944
122945 -- insert into errors table here.
122946
122947 END LOOP;
122948
122949 --
122950 -- 4865292
122951 --
122952 -- Compare g_hdr_extract_count with event count in
122953 -- CreateHeadersAndLines.
122954 --
122955 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
122956
122957 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
122958 trace (p_msg => '# rows extracted from header extract objects '
122959 || ' (running total): '
122960 || g_hdr_extract_count
122961 ,p_level => C_LEVEL_STATEMENT
122962 ,p_module => l_log_module);
122963 END IF;
122964
122965 CLOSE header_cur;
122966 --
122967
122968 --
122969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122970 trace
122971 (p_msg => 'END of EventType_250'
122972 ,p_level => C_LEVEL_PROCEDURE
122973 ,p_module => l_log_module);
122974 END IF;
122975 --
122976 RETURN l_result;
122977 EXCEPTION
122978 WHEN xla_exceptions_pkg.application_exception THEN
122979
122980 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
122981
122982
122983 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
122984
122985 RAISE;
122986
122987 WHEN NO_DATA_FOUND THEN
122988
122989 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
122990 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
122991
122992 FOR header_record IN header_cur
122993 LOOP
122994 l_array_header_events(header_record.event_id) := header_record.event_id;
122995 END LOOP;
122996
122997 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
122998 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
122999
123000 fnd_file.put_line(fnd_file.LOG, ' ');
123001 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
123002 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
123003 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
123004
123005 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
123006 LOOP
123007 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
123008 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
123009 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
123010 END IF;
123011 END LOOP;
123012
123013 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
123014 fnd_file.put_line(fnd_file.LOG, ' ');
123015
123016
123017 xla_exceptions_pkg.raise_message
123018 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_250');
123019
123020
123021 WHEN OTHERS THEN
123022 xla_exceptions_pkg.raise_message
123023 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_250');
123024 END EventType_250;
123025 --
123026
123027 ---------------------------------------
123028 --
123029 -- PRIVATE PROCEDURE
123030 -- insert_sources_251
123031 --
123032 ----------------------------------------
123033 --
123034 PROCEDURE insert_sources_251(
123035 p_target_ledger_id IN NUMBER
123036 , p_language IN VARCHAR2
123037 , p_sla_ledger_id IN NUMBER
123038 , p_pad_start_date IN DATE
123039 , p_pad_end_date IN DATE
123040 )
123041 IS
123042
123043 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CERT';
123044 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BATCH_MATERIAL';
123045 p_apps_owner VARCHAR2(30);
123046 l_log_module VARCHAR2(240);
123047 BEGIN
123048 IF g_log_enabled THEN
123049 l_log_module := C_DEFAULT_MODULE||'.insert_sources_251';
123050 END IF;
123051 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123052
123053 trace
123054 (p_msg => 'BEGIN of insert_sources_251'
123055 ,p_level => C_LEVEL_PROCEDURE
123056 ,p_module => l_log_module);
123057
123058 END IF;
123059
123063 FROM fnd_oracle_userid
123060 -- select APPS owner
123061 SELECT oracle_username
123062 INTO p_apps_owner
123064 WHERE read_only_flag = 'U'
123065 ;
123066
123067 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123068 trace
123069 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
123070 ' - p_language = '||p_language||
123071 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
123072 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
123073 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
123074 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
123075 ,p_level => C_LEVEL_STATEMENT
123076 ,p_module => l_log_module);
123077 END IF;
123078
123079
123080 --
123081 INSERT INTO xla_diag_sources --hdr1
123082 (
123083 event_id
123084 , ledger_id
123085 , sla_ledger_id
123086 , description_language
123087 , object_name
123088 , object_type_code
123089 , line_number
123090 , source_application_id
123091 , source_type_code
123092 , source_code
123093 , source_value
123094 , source_meaning
123095 , created_by
123096 , creation_date
123097 , last_update_date
123098 , last_updated_by
123099 , last_update_login
123100 , program_update_date
123101 , program_application_id
123102 , program_id
123103 , request_id
123104 )
123105 SELECT
123106 event_id
123107 , p_target_ledger_id
123108 , p_sla_ledger_id
123109 , p_language
123110 , object_name
123111 , object_type_code
123112 , line_number
123113 , source_application_id
123114 , source_type_code
123115 , source_code
123116 , SUBSTR(source_value ,1,1996)
123117 , SUBSTR(source_meaning,1,200)
123118 , xla_environment_pkg.g_Usr_Id
123119 , TRUNC(SYSDATE)
123120 , TRUNC(SYSDATE)
123121 , xla_environment_pkg.g_Usr_Id
123122 , xla_environment_pkg.g_Login_Id
123123 , TRUNC(SYSDATE)
123124 , xla_environment_pkg.g_Prog_Appl_Id
123125 , xla_environment_pkg.g_Prog_Id
123126 , xla_environment_pkg.g_Req_Id
123127 FROM (
123128 SELECT xet.event_id event_id
123129 , 0 line_number
123130 , CASE r
123131 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
123132 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
123133 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
123134 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
123135 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
123136 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
123137
123138 ELSE null
123139 END object_name
123140 , CASE r
123141 WHEN 1 THEN 'HEADER'
123142 WHEN 2 THEN 'HEADER'
123143 WHEN 3 THEN 'HEADER'
123144 WHEN 4 THEN 'HEADER'
123145 WHEN 5 THEN 'HEADER'
123146 WHEN 6 THEN 'HEADER'
123147
123148 ELSE null
123149 END object_type_code
123150 , CASE r
123151 WHEN 1 THEN '555'
123152 WHEN 2 THEN '555'
123153 WHEN 3 THEN '555'
123154 WHEN 4 THEN '555'
123155 WHEN 5 THEN '555'
123156 WHEN 6 THEN '555'
123157
123158 ELSE null
123159 END source_application_id
123160 , 'S' source_type_code
123161 , CASE r
123162 WHEN 1 THEN 'ENTITY_CODE'
123163 WHEN 2 THEN 'CURRENCY_CODE'
123164 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
123165 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
123166 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
123167 WHEN 6 THEN 'TRANSACTION_DATE'
123168
123169 ELSE null
123170 END source_code
123171 , CASE r
123172 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
123173 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
123174 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
123175 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
123176 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
123177 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
123178
123179 ELSE null
123180 END source_value
123181 , CASE r
123182 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
123183 1010186
123184 ,TO_CHAR(h1.CURRENCY_CODE)
123185 ,'CURRENCY_CODE'
123186 ,'S'
123187 ,555)
123188
123189 ELSE null
123190 END source_meaning
123191 FROM xla_events_gt xet
123192 , GMF_XLA_EXTRACT_HEADERS h1
123193 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
123194 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
123195 AND xet.event_type_code = C_EVENT_TYPE_CODE
123199 ;
123196 AND h1.event_id = xet.event_id
123197
123198 )
123200 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123201
123202 trace
123203 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
123204 ,p_level => C_LEVEL_STATEMENT
123205 ,p_module => l_log_module);
123206
123207 END IF;
123208 --
123209
123210
123211
123212 --
123213 INSERT INTO xla_diag_sources --line1
123214 (
123215 event_id
123216 , ledger_id
123217 , sla_ledger_id
123218 , description_language
123219 , object_name
123220 , object_type_code
123221 , line_number
123222 , source_application_id
123223 , source_type_code
123224 , source_code
123225 , source_value
123226 , source_meaning
123227 , created_by
123228 , creation_date
123229 , last_update_date
123230 , last_updated_by
123231 , last_update_login
123232 , program_update_date
123233 , program_application_id
123234 , program_id
123235 , request_id
123236 )
123237 SELECT event_id
123238 , p_target_ledger_id
123239 , p_sla_ledger_id
123240 , p_language
123241 , object_name
123242 , object_type_code
123243 , line_number
123244 , source_application_id
123245 , source_type_code
123246 , source_code
123247 , SUBSTR(source_value,1,1996)
123248 , SUBSTR(source_meaning,1,200)
123249 , xla_environment_pkg.g_Usr_Id
123250 , TRUNC(SYSDATE)
123251 , TRUNC(SYSDATE)
123252 , xla_environment_pkg.g_Usr_Id
123253 , xla_environment_pkg.g_Login_Id
123254 , TRUNC(SYSDATE)
123255 , xla_environment_pkg.g_Prog_Appl_Id
123256 , xla_environment_pkg.g_Prog_Id
123257 , xla_environment_pkg.g_Req_Id
123258 FROM (
123259 SELECT xet.event_id event_id
123260 , l2.line_number line_number
123261 , CASE r
123262 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
123263 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
123264 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
123265 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
123266 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
123267
123268 ELSE null
123269 END object_name
123270 , CASE r
123271 WHEN 1 THEN 'LINE'
123272 WHEN 2 THEN 'LINE'
123273 WHEN 3 THEN 'LINE'
123274 WHEN 4 THEN 'LINE'
123275 WHEN 5 THEN 'LINE'
123276
123277 ELSE null
123278 END object_type_code
123279 , CASE r
123280 WHEN 1 THEN '555'
123281 WHEN 2 THEN '555'
123282 WHEN 3 THEN '555'
123283 WHEN 4 THEN '555'
123284 WHEN 5 THEN '555'
123285
123286 ELSE null
123287 END source_application_id
123288 , 'S' source_type_code
123289 , CASE r
123290 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
123291 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
123292 WHEN 3 THEN 'ENTERED_AMOUNT'
123293 WHEN 4 THEN 'LINE_ID'
123294 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
123295
123296 ELSE null
123297 END source_code
123298 , CASE r
123299 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
123300 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
123301 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
123302 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
123303 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
123304
123305 ELSE null
123306 END source_value
123307 , null source_meaning
123308 FROM xla_events_gt xet
123309 , GMF_XLA_EXTRACT_LINES l2
123310 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
123311 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
123312 AND xet.event_type_code = C_EVENT_TYPE_CODE
123313 AND l2.event_id = xet.event_id
123314
123315 )
123316 ;
123317 --
123318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123319
123320 trace
123321 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
123322 ,p_level => C_LEVEL_STATEMENT
123323 ,p_module => l_log_module);
123324
123325 END IF;
123326
123327
123328 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123329 trace
123330 (p_msg => 'END of insert_sources_251'
123331 ,p_level => C_LEVEL_PROCEDURE
123332 ,p_module => l_log_module);
123333 END IF;
123334 EXCEPTION
123335 WHEN xla_exceptions_pkg.application_exception THEN
123336 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
123337 trace
123338 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
123339 ,p_level => C_LEVEL_EXCEPTION
123340 ,p_module => l_log_module);
123341 END IF;
123342 RAISE;
123346 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
123343 WHEN OTHERS THEN
123344 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
123345 trace
123347 ,p_level => C_LEVEL_EXCEPTION
123348 ,p_module => l_log_module);
123349 END IF;
123350 xla_exceptions_pkg.raise_message
123351 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_251');
123352 END insert_sources_251;
123353 --
123354
123355 ---------------------------------------
123356 --
123357 -- PRIVATE FUNCTION
123358 -- EventType_251
123359 --
123360 ----------------------------------------
123361 --
123362 FUNCTION EventType_251
123363 (p_application_id IN NUMBER
123364 ,p_base_ledger_id IN NUMBER
123365 ,p_target_ledger_id IN NUMBER
123366 ,p_language IN VARCHAR2
123367 ,p_currency_code IN VARCHAR2
123368 ,p_sla_ledger_id IN NUMBER
123369 ,p_pad_start_date IN DATE
123370 ,p_pad_end_date IN DATE
123371 ,p_primary_ledger_id IN NUMBER)
123372 RETURN BOOLEAN IS
123373 --
123374 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CERT';
123375 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BATCH_MATERIAL';
123376
123377 l_calculate_acctd_flag VARCHAR2(1) :='N';
123378 l_calculate_g_l_flag VARCHAR2(1) :='N';
123379 --
123380 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123381 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123382 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
123383 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123384 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123385 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
123386 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
123387 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123388 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123389 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123390 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123391 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123392 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123393 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
123394 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123395 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123396 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123397 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
123398 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123399 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123400 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123401 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
123402 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
123403 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
123404 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
123405 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
123406
123407 l_event_id NUMBER;
123408 l_previous_event_id NUMBER;
123409 l_first_event_id NUMBER;
123410 l_last_event_id NUMBER;
123411
123412 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
123413 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
123414 --
123415 --
123416 l_result BOOLEAN := TRUE;
123417 l_rows NUMBER := 1000;
123418 l_event_type_name VARCHAR2(80) := 'Batch Completion';
123419 l_event_class_name VARCHAR2(80) := 'Batch Material Transactions';
123420 l_description VARCHAR2(4000);
123421 l_transaction_reversal NUMBER;
123422 l_ae_header_id NUMBER;
123423 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
123424 l_log_module VARCHAR2(240);
123425 --
123426 l_acct_reversal_source VARCHAR2(30);
123427 l_trx_reversal_source VARCHAR2(30);
123428
123429 l_continue_with_lines BOOLEAN := TRUE;
123430 --
123431 l_acc_rev_gl_date_source DATE; -- 4262811
123432 --
123433 type t_array_event_id is table of number index by binary_integer;
123434
123435 l_rec_array_event t_rec_array_event;
123436 l_null_rec_array_event t_rec_array_event;
123437 l_array_ae_header_id xla_number_array_type;
123438 l_actual_flag VARCHAR2(1) := NULL;
123439 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
123440 l_balance_type_code VARCHAR2(1) :=NULL;
123441 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
123442
123443 --
123444 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
123445 --
123446
123447 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
123451 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
123448 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
123449 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
123450 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
123452 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
123453
123454 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
123455 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
123456 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
123457 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
123458 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
123459
123460 l_array_source_6 t_array_source_6;
123461 l_array_source_7 t_array_source_7;
123462 l_array_source_8 t_array_source_8;
123463 l_array_source_9 t_array_source_9;
123464 l_array_source_10 t_array_source_10;
123465 l_array_source_12 t_array_source_12;
123466
123467 l_array_source_1 t_array_source_1;
123468 l_array_source_2 t_array_source_2;
123469 l_array_source_3 t_array_source_3;
123470 l_array_source_5 t_array_source_5;
123471 l_array_source_11 t_array_source_11;
123472
123473 --
123474 CURSOR header_cur
123475 IS
123476 SELECT /*+ leading(xet) cardinality(xet,1) */
123477 -- Event Type Code: CERT
123478 -- Event Class Code: BATCH_MATERIAL
123479 xet.entity_id
123480 , xet.legal_entity_id
123481 , xet.entity_code
123482 , xet.transaction_number
123483 , xet.event_id
123484 , xet.event_class_code
123485 , xet.event_type_code
123486 , xet.event_number
123487 , xet.event_date
123488 , xet.transaction_date
123489 , xet.reference_num_1
123490 , xet.reference_num_2
123491 , xet.reference_num_3
123492 , xet.reference_num_4
123493 , xet.reference_char_1
123494 , xet.reference_char_2
123495 , xet.reference_char_3
123496 , xet.reference_char_4
123497 , xet.reference_date_1
123498 , xet.reference_date_2
123499 , xet.reference_date_3
123500 , xet.reference_date_4
123501 , xet.event_created_by
123502 , xet.budgetary_control_flag
123503 , h1.ENTITY_CODE source_6
123504 , h1.CURRENCY_CODE source_7
123505 , h1.CURRENCY_CONVERSION_DATE source_8
123506 , h1.CURRENCY_CONVERSION_RATE source_9
123507 , h1.CURRENCY_CONVERSION_TYPE source_10
123508 , h1.TRANSACTION_DATE source_12
123509 FROM xla_events_gt xet
123510 , GMF_XLA_EXTRACT_HEADERS h1
123511 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
123512 and xet.event_type_code = C_EVENT_TYPE_CODE
123513 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
123514
123515 ORDER BY event_id
123516 ;
123517
123518
123519 --
123520 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
123521 IS
123522 SELECT /*+ leading(xet) cardinality(xet,1) */
123523 -- Event Type Code: CERT
123524 -- Event Class Code: BATCH_MATERIAL
123525 xet.entity_id
123526 ,xet.legal_entity_id
123527 ,xet.entity_code
123528 ,xet.transaction_number
123529 ,xet.event_id
123530 ,xet.event_class_code
123531 ,xet.event_type_code
123532 ,xet.event_number
123533 ,xet.event_date
123534 ,xet.transaction_date
123535 ,xet.reference_num_1
123536 ,xet.reference_num_2
123537 ,xet.reference_num_3
123538 ,xet.reference_num_4
123539 ,xet.reference_char_1
123540 ,xet.reference_char_2
123541 ,xet.reference_char_3
123542 ,xet.reference_char_4
123543 ,xet.reference_date_1
123544 ,xet.reference_date_2
123545 ,xet.reference_date_3
123546 ,xet.reference_date_4
123547 ,xet.event_created_by
123548 ,xet.budgetary_control_flag , l2.LINE_NUMBER
123549 , l2.TRANSACTION_ACCOUNT_ID source_1
123550 , l2.JOURNAL_LINE_TYPE source_2
123551 , l2.ENTERED_AMOUNT source_3
123552 , l2.LINE_ID source_5
123553 , l2.ACCOUNTED_AMOUNT source_11
123554 FROM xla_events_gt xet
123555 , GMF_XLA_EXTRACT_LINES l2
123556 WHERE xet.event_id between x_first_event_id and x_last_event_id
123557 and xet.event_date between p_pad_start_date and p_pad_end_date
123558 and xet.event_type_code = C_EVENT_TYPE_CODE
123559 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
123560 ;
123561
123562 --
123563 BEGIN
123564 IF g_log_enabled THEN
123565 l_log_module := C_DEFAULT_MODULE||'.EventType_251';
123566 END IF;
123567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123568 trace
123569 (p_msg => 'BEGIN of EventType_251'
123570 ,p_level => C_LEVEL_PROCEDURE
123571 ,p_module => l_log_module);
123572 END IF;
123573
123574 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123575 trace
123576 (p_msg => 'p_application_id = '||p_application_id||
123577 ' - p_base_ledger_id = '||p_base_ledger_id||
123578 ' - p_target_ledger_id = '||p_target_ledger_id||
123579 ' - p_language = '||p_language||
123583 ,p_module => l_log_module);
123580 ' - p_currency_code = '||p_currency_code||
123581 ' - p_sla_ledger_id = '||p_sla_ledger_id
123582 ,p_level => C_LEVEL_STATEMENT
123584 END IF;
123585 --
123586 -- initialze arrays
123587 --
123588 g_array_event.DELETE;
123589 l_rec_array_event := l_null_rec_array_event;
123590 --
123591 --------------------------------------
123592 -- 4262811 Initialze MPA Line Number
123593 --------------------------------------
123594 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
123595
123596 --
123597
123598 --
123599 OPEN header_cur;
123600 --
123601 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123602 trace
123603 (p_msg => 'SQL - FETCH header_cur'
123604 ,p_level => C_LEVEL_STATEMENT
123605 ,p_module => l_log_module);
123606 END IF;
123607 --
123608 LOOP
123609 FETCH header_cur BULK COLLECT INTO
123610 l_array_entity_id
123611 , l_array_legal_entity_id
123612 , l_array_entity_code
123613 , l_array_transaction_num
123614 , l_array_event_id
123615 , l_array_class_code
123616 , l_array_event_type
123617 , l_array_event_number
123618 , l_array_event_date
123619 , l_array_transaction_date
123620 , l_array_reference_num_1
123621 , l_array_reference_num_2
123622 , l_array_reference_num_3
123623 , l_array_reference_num_4
123624 , l_array_reference_char_1
123625 , l_array_reference_char_2
123626 , l_array_reference_char_3
123627 , l_array_reference_char_4
123628 , l_array_reference_date_1
123629 , l_array_reference_date_2
123630 , l_array_reference_date_3
123631 , l_array_reference_date_4
123632 , l_array_event_created_by
123633 , l_array_budgetary_control_flag
123634 , l_array_source_6
123635 , l_array_source_7
123636 , l_array_source_8
123637 , l_array_source_9
123638 , l_array_source_10
123639 , l_array_source_12
123640 LIMIT l_rows;
123641 --
123642 IF (C_LEVEL_EVENT >= g_log_level) THEN
123643 trace
123644 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
123645 ,p_level => C_LEVEL_EVENT
123646 ,p_module => l_log_module);
123647 END IF;
123648 --
123649 EXIT WHEN l_array_entity_id.COUNT = 0;
123650
123651 -- initialize arrays
123652 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
123653 XLA_AE_LINES_PKG.g_rec_lines := NULL;
123654
123655 --
123656 -- Bug 4458708
123657 --
123658 XLA_AE_LINES_PKG.g_LineNumber := 0;
123659
123660
123661 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
123662 g_last_hdr_idx := l_array_event_id.LAST;
123663 --
123664 -- loop for the headers. Each iteration is for each header extract row
123665 -- fetched in header cursor
123666 --
123667 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
123668
123669 --
123670 -- set event info as cache for other routines to refer event attributes
123671 --
123672 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
123673 (p_application_id => p_application_id
123674 ,p_primary_ledger_id => p_primary_ledger_id
123675 ,p_base_ledger_id => p_base_ledger_id
123676 ,p_target_ledger_id => p_target_ledger_id
123677 ,p_entity_id => l_array_entity_id(hdr_idx)
123678 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
123679 ,p_entity_code => l_array_entity_code(hdr_idx)
123680 ,p_transaction_num => l_array_transaction_num(hdr_idx)
123681 ,p_event_id => l_array_event_id(hdr_idx)
123682 ,p_event_class_code => l_array_class_code(hdr_idx)
123683 ,p_event_type_code => l_array_event_type(hdr_idx)
123684 ,p_event_number => l_array_event_number(hdr_idx)
123685 ,p_event_date => l_array_event_date(hdr_idx)
123686 ,p_transaction_date => l_array_transaction_date(hdr_idx)
123687 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
123688 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
123689 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
123690 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
123691 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
123692 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
123693 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
123694 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
123695 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
123696 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
123697 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
123698 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
123699 ,p_event_created_by => l_array_event_created_by(hdr_idx)
123700 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
123701
123702 --
123703 -- set the status of entry to C_VALID (0)
123704 --
123705 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
123706
123707 --
123708 -- initialize a row for ae header
123709 --
123710 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
123711
123712 l_event_id := l_array_event_id(hdr_idx);
123713
123714 --
123715 -- storing the hdr_idx for event. May be used by line cursor.
123716 --
123720 -- store sources from header extract. This can be improved to
123717 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
123718
123719 --
123721 -- store only those sources from header extract that may be used in lines
123722 --
123723
123724 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
123725 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
123726 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
123727 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
123728 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
123729 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
123730
123731 --
123732 -- initilaize the status of ae headers for diffrent balance types
123733 -- the status is initialised to C_NOT_CREATED (2)
123734 --
123735 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
123736 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
123737 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
123738
123739 --
123740 -- call api to validate and store accounting attributes for header
123741 --
123742
123743 ------------------------------------------------------------
123744 -- Accrual Reversal : to get date for Standard Source (NONE)
123745 ------------------------------------------------------------
123746 l_acc_rev_gl_date_source := NULL;
123747
123748 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
123749 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
123750
123751
123752 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
123753
123754 XLA_AE_HEADER_PKG.SetJeCategoryName;
123755
123756 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
123757 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
123758 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
123759 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
123760 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
123761
123762
123763 -- No header level analytical criteria
123764
123765 --
123766 --accounting attribute enhancement, bug 3612931
123767 --
123768 l_trx_reversal_source := SUBSTR(NULL, 1,30);
123769
123770 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
123771 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
123772
123773 xla_accounting_err_pkg.build_message
123774 (p_appli_s_name => 'XLA'
123775 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
123776 ,p_token_1 => 'ACCT_ATTR_NAME'
123777 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
123778 ,p_token_2 => 'PRODUCT_NAME'
123779 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
123780 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
123781 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
123782 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
123783
123784 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
123785 --
123786 -- following sets the accounting attributes needed to reverse
123787 -- accounting for a distributeion
123788 --
123789 xla_ae_lines_pkg.SetTrxReversalAttrs
123790 (p_event_id => l_event_id
123791 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
123792 ,p_trx_reversal_source => l_trx_reversal_source);
123793
123794 END IF;
123795
123796
123797 ----------------------------------------------------------------
123798 -- 4262811 - update the header statuses to invalid in need be
123799 ----------------------------------------------------------------
123800 --
123801 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
123802
123803
123804 -----------------------------------------------
123805 -- No accrual reversal for the event class/type
123806 -----------------------------------------------
123807 ----------------------------------------------------------------
123808
123809 --
123810 -- this ends the header loop iteration for one bulk fetch
123811 --
123812 END LOOP;
123813
123814 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
123815 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
123816
123817 --
123818 -- insert dummy rows into lines gt table that were created due to
123819 -- transaction reversals
123820 --
123821 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
123822 l_result := XLA_AE_LINES_PKG.InsertLines;
123823 END IF;
123824
123825 --
123826 -- reset the temp_line_num for each set of events fetched from header
123827 -- cursor rather than doing it for each new event in line cursor
123828 -- Bug 3939231
123829 --
123830 xla_ae_lines_pkg.g_temp_line_num := 0;
123831
123832
123833
123834 --
123835 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
123836 --
123837 --
123838 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123842 ,p_level => C_LEVEL_STATEMENT
123839
123840 trace
123841 (p_msg => 'SQL - FETCH line_cur'
123843 ,p_module => l_log_module);
123844
123845 END IF;
123846 --
123847 --
123848 LOOP
123849 --
123850 FETCH line_cur BULK COLLECT INTO
123851 l_array_entity_id
123852 , l_array_legal_entity_id
123853 , l_array_entity_code
123854 , l_array_transaction_num
123855 , l_array_event_id
123856 , l_array_class_code
123857 , l_array_event_type
123858 , l_array_event_number
123859 , l_array_event_date
123860 , l_array_transaction_date
123861 , l_array_reference_num_1
123862 , l_array_reference_num_2
123863 , l_array_reference_num_3
123864 , l_array_reference_num_4
123865 , l_array_reference_char_1
123866 , l_array_reference_char_2
123867 , l_array_reference_char_3
123868 , l_array_reference_char_4
123869 , l_array_reference_date_1
123870 , l_array_reference_date_2
123871 , l_array_reference_date_3
123872 , l_array_reference_date_4
123873 , l_array_event_created_by
123874 , l_array_budgetary_control_flag
123875 , l_array_extract_line_num
123876 , l_array_source_1
123877 , l_array_source_2
123878 , l_array_source_3
123879 , l_array_source_5
123880 , l_array_source_11
123881 LIMIT l_rows;
123882
123883 --
123884 IF (C_LEVEL_EVENT >= g_log_level) THEN
123885 trace
123886 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
123887 ,p_level => C_LEVEL_EVENT
123888 ,p_module => l_log_module);
123889 END IF;
123890 --
123891 EXIT WHEN l_array_entity_id.count = 0;
123892
123893 XLA_AE_LINES_PKG.g_rec_lines := null;
123894
123895 --
123896 -- Bug 4458708
123897 --
123898 XLA_AE_LINES_PKG.g_LineNumber := 0;
123899 --
123900 --
123901
123902 FOR Idx IN 1..l_array_event_id.count LOOP
123903 --
123904 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
123905 --
123906 l_event_id := l_array_event_id(idx); -- 5648433
123907
123908 --
123909 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
123910 --
123911
123912 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
123913 (g_array_event(l_event_id).array_value_num('header_index'))
123914 ,'N'
123915 ) <> 'Y'
123916 THEN
123917 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
123918 trace
123919 (p_msg => 'Trancaction revesal option is not Y '
123920 ,p_level => C_LEVEL_STATEMENT
123921 ,p_module => l_log_module);
123922 END IF;
123923
123924 --
123925 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
123926 --
123927 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
123928 --
123929 -- set event info as cache for other routines to refer event attributes
123930 --
123931
123932 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
123933 l_previous_event_id := l_event_id;
123934
123935 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
123936 (p_application_id => p_application_id
123937 ,p_primary_ledger_id => p_primary_ledger_id
123938 ,p_base_ledger_id => p_base_ledger_id
123939 ,p_target_ledger_id => p_target_ledger_id
123940 ,p_entity_id => l_array_entity_id(Idx)
123941 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
123942 ,p_entity_code => l_array_entity_code(Idx)
123943 ,p_transaction_num => l_array_transaction_num(Idx)
123944 ,p_event_id => l_array_event_id(Idx)
123945 ,p_event_class_code => l_array_class_code(Idx)
123946 ,p_event_type_code => l_array_event_type(Idx)
123947 ,p_event_number => l_array_event_number(Idx)
123948 ,p_event_date => l_array_event_date(Idx)
123949 ,p_transaction_date => l_array_transaction_date(Idx)
123950 ,p_reference_num_1 => l_array_reference_num_1(Idx)
123951 ,p_reference_num_2 => l_array_reference_num_2(Idx)
123952 ,p_reference_num_3 => l_array_reference_num_3(Idx)
123953 ,p_reference_num_4 => l_array_reference_num_4(Idx)
123954 ,p_reference_char_1 => l_array_reference_char_1(Idx)
123955 ,p_reference_char_2 => l_array_reference_char_2(Idx)
123956 ,p_reference_char_3 => l_array_reference_char_3(Idx)
123957 ,p_reference_char_4 => l_array_reference_char_4(Idx)
123958 ,p_reference_date_1 => l_array_reference_date_1(Idx)
123959 ,p_reference_date_2 => l_array_reference_date_2(Idx)
123960 ,p_reference_date_3 => l_array_reference_date_3(Idx)
123961 ,p_reference_date_4 => l_array_reference_date_4(Idx)
123962 ,p_event_created_by => l_array_event_created_by(Idx)
123963 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
123964 --
123965 END IF;
123966
123967
123968
123969 --
123970 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
123971
123972 l_acct_reversal_source := SUBSTR(NULL, 1,30);
123973
123974 IF l_continue_with_lines THEN
123978 xla_accounting_err_pkg.build_message
123975 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
123976 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
123977
123979 (p_appli_s_name => 'XLA'
123980 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
123981 ,p_token_1 => 'LINE_NUMBER'
123982 ,p_value_1 => l_array_extract_line_num(Idx)
123983 ,p_token_2 => 'PRODUCT_NAME'
123984 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
123985 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
123986 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
123987 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
123988
123989 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
123990 --
123991 -- following sets the accounting attributes needed to reverse
123992 -- accounting for a distributeion
123993 --
123994
123995 --
123996 -- 5217187
123997 --
123998 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
123999 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
124000 g_array_event(l_event_id).array_value_num('header_index'));
124001 --
124002 --
124003
124004 -- No reversal code generated
124005
124006 xla_ae_lines_pkg.SetAcctReversalAttrs
124007 (p_event_id => l_event_id
124008 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
124009 ,p_calculate_acctd_flag => l_calculate_acctd_flag
124010 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
124011 END IF;
124012
124013 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
124014 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
124015
124016 --
124017 AcctLineType_59 (
124018 p_application_id => p_application_id
124019 ,p_event_id => l_event_id
124020 ,p_calculate_acctd_flag => l_calculate_acctd_flag
124021 ,p_calculate_g_l_flag => l_calculate_g_l_flag
124022 ,p_actual_flag => l_actual_flag
124023 ,p_balance_type_code => l_balance_type_code
124024 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124025
124026 , p_source_1 => l_array_source_1(Idx)
124027 , p_source_2 => l_array_source_2(Idx)
124028 , p_source_3 => l_array_source_3(Idx)
124029 , p_source_5 => l_array_source_5(Idx)
124030 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124031 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124032 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124033 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124034 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124035 , p_source_11 => l_array_source_11(Idx)
124036 );
124037 If(l_balance_type_code = 'A') THEN
124038 l_actual_gain_loss_ref := l_gain_or_loss_ref;
124039 END IF;
124040
124041 --
124042
124043
124044 --
124045 AcctLineType_154 (
124046 p_application_id => p_application_id
124047 ,p_event_id => l_event_id
124048 ,p_calculate_acctd_flag => l_calculate_acctd_flag
124049 ,p_calculate_g_l_flag => l_calculate_g_l_flag
124050 ,p_actual_flag => l_actual_flag
124051 ,p_balance_type_code => l_balance_type_code
124052 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124053
124054 , p_source_1 => l_array_source_1(Idx)
124055 , p_source_2 => l_array_source_2(Idx)
124056 , p_source_3 => l_array_source_3(Idx)
124057 , p_source_5 => l_array_source_5(Idx)
124058 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124059 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124060 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124061 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124062 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124063 , p_source_11 => l_array_source_11(Idx)
124064 );
124065 If(l_balance_type_code = 'A') THEN
124066 l_actual_gain_loss_ref := l_gain_or_loss_ref;
124067 END IF;
124068
124069 --
124070
124071
124072 --
124073 AcctLineType_215 (
124074 p_application_id => p_application_id
124075 ,p_event_id => l_event_id
124076 ,p_calculate_acctd_flag => l_calculate_acctd_flag
124077 ,p_calculate_g_l_flag => l_calculate_g_l_flag
124078 ,p_actual_flag => l_actual_flag
124079 ,p_balance_type_code => l_balance_type_code
124080 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124081
124082 , p_source_1 => l_array_source_1(Idx)
124083 , p_source_2 => l_array_source_2(Idx)
124084 , p_source_3 => l_array_source_3(Idx)
124085 , p_source_5 => l_array_source_5(Idx)
124086 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124087 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124088 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124089 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124090 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124091 , p_source_11 => l_array_source_11(Idx)
124092 );
124093 If(l_balance_type_code = 'A') THEN
124094 l_actual_gain_loss_ref := l_gain_or_loss_ref;
124095 END IF;
124096
124097 --
124098
124099
124100 --
124101 AcctLineType_230 (
124105 ,p_calculate_g_l_flag => l_calculate_g_l_flag
124102 p_application_id => p_application_id
124103 ,p_event_id => l_event_id
124104 ,p_calculate_acctd_flag => l_calculate_acctd_flag
124106 ,p_actual_flag => l_actual_flag
124107 ,p_balance_type_code => l_balance_type_code
124108 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124109
124110 , p_source_1 => l_array_source_1(Idx)
124111 , p_source_2 => l_array_source_2(Idx)
124112 , p_source_3 => l_array_source_3(Idx)
124113 , p_source_5 => l_array_source_5(Idx)
124114 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124115 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124116 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124117 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124118 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124119 , p_source_11 => l_array_source_11(Idx)
124120 );
124121 If(l_balance_type_code = 'A') THEN
124122 l_actual_gain_loss_ref := l_gain_or_loss_ref;
124123 END IF;
124124
124125 --
124126
124127
124128 --
124129 AcctLineType_239 (
124130 p_application_id => p_application_id
124131 ,p_event_id => l_event_id
124132 ,p_calculate_acctd_flag => l_calculate_acctd_flag
124133 ,p_calculate_g_l_flag => l_calculate_g_l_flag
124134 ,p_actual_flag => l_actual_flag
124135 ,p_balance_type_code => l_balance_type_code
124136 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
124137
124138 , p_source_1 => l_array_source_1(Idx)
124139 , p_source_2 => l_array_source_2(Idx)
124140 , p_source_3 => l_array_source_3(Idx)
124141 , p_source_5 => l_array_source_5(Idx)
124142 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
124143 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
124144 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
124145 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
124146 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
124147 , p_source_11 => l_array_source_11(Idx)
124148 );
124149 If(l_balance_type_code = 'A') THEN
124150 l_actual_gain_loss_ref := l_gain_or_loss_ref;
124151 END IF;
124152
124153 --
124154
124155 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
124156 -- or secondary ledger that has different currency with primary
124157 -- or alc that is calculated by sla
124158 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
124159 (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'))
124160
124161 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
124162 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
124163 AND (l_actual_flag = 'A')) THEN
124164 XLA_AE_LINES_PKG.CreateGainOrLossLines(
124165 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
124166 ,p_application_id => p_application_id
124167 ,p_amb_context_code => 'DEFAULT'
124168 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
124169 ,p_event_class_code => C_EVENT_CLASS_CODE
124170 ,p_event_type_code => C_EVENT_TYPE_CODE
124171
124172 ,p_gain_ccid => -1
124173 ,p_loss_ccid => -1
124174
124175 ,p_actual_flag => l_actual_flag
124176 ,p_enc_flag => null
124177 ,p_actual_g_l_ref => l_actual_gain_loss_ref
124178 ,p_enc_g_l_ref => null
124179 );
124180 END IF;
124181 END IF;
124182 END IF;
124183
124184 ELSE
124185 --
124186 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
124187 --
124188 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124189 trace
124190 (p_msg => 'Trancaction revesal option is Y'
124191 ,p_level => C_LEVEL_STATEMENT
124192 ,p_module => l_log_module);
124193 END IF;
124194 END IF;
124195
124196 END LOOP;
124197 l_result := XLA_AE_LINES_PKG.InsertLines ;
124198 end loop;
124199 close line_cur;
124200
124201
124202 --
124203 -- insert headers into xla_ae_headers_gt table
124204 --
124205 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
124206
124207 -- insert into errors table here.
124208
124209 END LOOP;
124210
124211 --
124212 -- 4865292
124213 --
124214 -- Compare g_hdr_extract_count with event count in
124215 -- CreateHeadersAndLines.
124216 --
124217 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
124218
124219 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124220 trace (p_msg => '# rows extracted from header extract objects '
124221 || ' (running total): '
124222 || g_hdr_extract_count
124223 ,p_level => C_LEVEL_STATEMENT
124224 ,p_module => l_log_module);
124225 END IF;
124226
124227 CLOSE header_cur;
124228 --
124229
124230 --
124231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124232 trace
124233 (p_msg => 'END of EventType_251'
124234 ,p_level => C_LEVEL_PROCEDURE
124235 ,p_module => l_log_module);
124236 END IF;
124237 --
124238 RETURN l_result;
124242 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
124239 EXCEPTION
124240 WHEN xla_exceptions_pkg.application_exception THEN
124241
124243
124244
124245 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
124246
124247 RAISE;
124248
124249 WHEN NO_DATA_FOUND THEN
124250
124251 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
124252 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
124253
124254 FOR header_record IN header_cur
124255 LOOP
124256 l_array_header_events(header_record.event_id) := header_record.event_id;
124257 END LOOP;
124258
124259 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
124260 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
124261
124262 fnd_file.put_line(fnd_file.LOG, ' ');
124263 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
124264 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
124265 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
124266
124267 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
124268 LOOP
124269 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
124270 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
124271 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
124272 END IF;
124273 END LOOP;
124274
124275 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
124276 fnd_file.put_line(fnd_file.LOG, ' ');
124277
124278
124279 xla_exceptions_pkg.raise_message
124280 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_251');
124281
124282
124283 WHEN OTHERS THEN
124284 xla_exceptions_pkg.raise_message
124285 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_251');
124286 END EventType_251;
124287 --
124288
124289 ---------------------------------------
124290 --
124291 -- PRIVATE PROCEDURE
124292 -- insert_sources_252
124293 --
124294 ----------------------------------------
124295 --
124296 PROCEDURE insert_sources_252(
124297 p_target_ledger_id IN NUMBER
124298 , p_language IN VARCHAR2
124299 , p_sla_ledger_id IN NUMBER
124300 , p_pad_start_date IN DATE
124301 , p_pad_end_date IN DATE
124302 )
124303 IS
124304
124305 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CLOS';
124306 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BATCH_CLOSE';
124307 p_apps_owner VARCHAR2(30);
124308 l_log_module VARCHAR2(240);
124309 BEGIN
124310 IF g_log_enabled THEN
124311 l_log_module := C_DEFAULT_MODULE||'.insert_sources_252';
124312 END IF;
124313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124314
124315 trace
124316 (p_msg => 'BEGIN of insert_sources_252'
124317 ,p_level => C_LEVEL_PROCEDURE
124318 ,p_module => l_log_module);
124319
124320 END IF;
124321
124322 -- select APPS owner
124323 SELECT oracle_username
124324 INTO p_apps_owner
124325 FROM fnd_oracle_userid
124326 WHERE read_only_flag = 'U'
124327 ;
124328
124329 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124330 trace
124331 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
124332 ' - p_language = '||p_language||
124333 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
124334 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
124335 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
124336 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
124337 ,p_level => C_LEVEL_STATEMENT
124338 ,p_module => l_log_module);
124339 END IF;
124340
124341
124342 --
124343 INSERT INTO xla_diag_sources --hdr1
124344 (
124345 event_id
124346 , ledger_id
124347 , sla_ledger_id
124348 , description_language
124349 , object_name
124350 , object_type_code
124351 , line_number
124352 , source_application_id
124353 , source_type_code
124354 , source_code
124355 , source_value
124356 , source_meaning
124357 , created_by
124358 , creation_date
124359 , last_update_date
124360 , last_updated_by
124361 , last_update_login
124362 , program_update_date
124363 , program_application_id
124364 , program_id
124365 , request_id
124366 )
124367 SELECT
124368 event_id
124369 , p_target_ledger_id
124370 , p_sla_ledger_id
124371 , p_language
124372 , object_name
124373 , object_type_code
124374 , line_number
124375 , source_application_id
124376 , source_type_code
124377 , source_code
124378 , SUBSTR(source_value ,1,1996)
124379 , SUBSTR(source_meaning,1,200)
124380 , xla_environment_pkg.g_Usr_Id
124381 , TRUNC(SYSDATE)
124382 , TRUNC(SYSDATE)
124383 , xla_environment_pkg.g_Usr_Id
124384 , xla_environment_pkg.g_Login_Id
124385 , TRUNC(SYSDATE)
124389 FROM (
124386 , xla_environment_pkg.g_Prog_Appl_Id
124387 , xla_environment_pkg.g_Prog_Id
124388 , xla_environment_pkg.g_Req_Id
124390 SELECT xet.event_id event_id
124391 , 0 line_number
124392 , CASE r
124393 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
124394 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
124395 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
124396 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
124397 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
124398 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
124399
124400 ELSE null
124401 END object_name
124402 , CASE r
124403 WHEN 1 THEN 'HEADER'
124404 WHEN 2 THEN 'HEADER'
124405 WHEN 3 THEN 'HEADER'
124406 WHEN 4 THEN 'HEADER'
124407 WHEN 5 THEN 'HEADER'
124408 WHEN 6 THEN 'HEADER'
124409
124410 ELSE null
124411 END object_type_code
124412 , CASE r
124413 WHEN 1 THEN '555'
124414 WHEN 2 THEN '555'
124415 WHEN 3 THEN '555'
124416 WHEN 4 THEN '555'
124417 WHEN 5 THEN '555'
124418 WHEN 6 THEN '555'
124419
124420 ELSE null
124421 END source_application_id
124422 , 'S' source_type_code
124423 , CASE r
124424 WHEN 1 THEN 'ENTITY_CODE'
124425 WHEN 2 THEN 'CURRENCY_CODE'
124426 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
124427 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
124428 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
124429 WHEN 6 THEN 'TRANSACTION_DATE'
124430
124431 ELSE null
124432 END source_code
124433 , CASE r
124434 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
124435 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
124436 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
124437 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
124438 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
124439 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
124440
124441 ELSE null
124442 END source_value
124443 , CASE r
124444 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
124445 1010186
124446 ,TO_CHAR(h1.CURRENCY_CODE)
124447 ,'CURRENCY_CODE'
124448 ,'S'
124449 ,555)
124450
124451 ELSE null
124452 END source_meaning
124453 FROM xla_events_gt xet
124454 , GMF_XLA_EXTRACT_HEADERS h1
124455 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
124456 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
124457 AND xet.event_type_code = C_EVENT_TYPE_CODE
124458 AND h1.event_id = xet.event_id
124459
124460 )
124461 ;
124462 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124463
124464 trace
124465 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
124466 ,p_level => C_LEVEL_STATEMENT
124467 ,p_module => l_log_module);
124468
124469 END IF;
124470 --
124471
124472
124473
124474 --
124475 INSERT INTO xla_diag_sources --line1
124476 (
124477 event_id
124478 , ledger_id
124479 , sla_ledger_id
124480 , description_language
124481 , object_name
124482 , object_type_code
124483 , line_number
124484 , source_application_id
124485 , source_type_code
124486 , source_code
124487 , source_value
124488 , source_meaning
124489 , created_by
124490 , creation_date
124491 , last_update_date
124492 , last_updated_by
124493 , last_update_login
124494 , program_update_date
124495 , program_application_id
124496 , program_id
124497 , request_id
124498 )
124499 SELECT event_id
124500 , p_target_ledger_id
124501 , p_sla_ledger_id
124502 , p_language
124503 , object_name
124504 , object_type_code
124505 , line_number
124506 , source_application_id
124507 , source_type_code
124508 , source_code
124509 , SUBSTR(source_value,1,1996)
124510 , SUBSTR(source_meaning,1,200)
124511 , xla_environment_pkg.g_Usr_Id
124512 , TRUNC(SYSDATE)
124513 , TRUNC(SYSDATE)
124514 , xla_environment_pkg.g_Usr_Id
124515 , xla_environment_pkg.g_Login_Id
124516 , TRUNC(SYSDATE)
124517 , xla_environment_pkg.g_Prog_Appl_Id
124518 , xla_environment_pkg.g_Prog_Id
124519 , xla_environment_pkg.g_Req_Id
124520 FROM (
124521 SELECT xet.event_id event_id
124522 , l2.line_number line_number
124523 , CASE r
124527 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
124524 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
124525 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
124526 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
124528 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
124529
124530 ELSE null
124531 END object_name
124532 , CASE r
124533 WHEN 1 THEN 'LINE'
124534 WHEN 2 THEN 'LINE'
124535 WHEN 3 THEN 'LINE'
124536 WHEN 4 THEN 'LINE'
124537 WHEN 5 THEN 'LINE'
124538
124539 ELSE null
124540 END object_type_code
124541 , CASE r
124542 WHEN 1 THEN '555'
124543 WHEN 2 THEN '555'
124544 WHEN 3 THEN '555'
124545 WHEN 4 THEN '555'
124546 WHEN 5 THEN '555'
124547
124548 ELSE null
124549 END source_application_id
124550 , 'S' source_type_code
124551 , CASE r
124552 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
124553 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
124554 WHEN 3 THEN 'ENTERED_AMOUNT'
124555 WHEN 4 THEN 'LINE_ID'
124556 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
124557
124558 ELSE null
124559 END source_code
124560 , CASE r
124561 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
124562 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
124563 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
124564 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
124565 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
124566
124567 ELSE null
124568 END source_value
124569 , null source_meaning
124570 FROM xla_events_gt xet
124571 , GMF_XLA_EXTRACT_LINES l2
124572 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
124573 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
124574 AND xet.event_type_code = C_EVENT_TYPE_CODE
124575 AND l2.event_id = xet.event_id
124576
124577 )
124578 ;
124579 --
124580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124581
124582 trace
124583 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
124584 ,p_level => C_LEVEL_STATEMENT
124585 ,p_module => l_log_module);
124586
124587 END IF;
124588
124589
124590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124591 trace
124592 (p_msg => 'END of insert_sources_252'
124593 ,p_level => C_LEVEL_PROCEDURE
124594 ,p_module => l_log_module);
124595 END IF;
124596 EXCEPTION
124597 WHEN xla_exceptions_pkg.application_exception THEN
124598 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
124599 trace
124600 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
124601 ,p_level => C_LEVEL_EXCEPTION
124602 ,p_module => l_log_module);
124603 END IF;
124604 RAISE;
124605 WHEN OTHERS THEN
124606 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
124607 trace
124608 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
124609 ,p_level => C_LEVEL_EXCEPTION
124610 ,p_module => l_log_module);
124611 END IF;
124612 xla_exceptions_pkg.raise_message
124613 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_252');
124614 END insert_sources_252;
124615 --
124616
124617 ---------------------------------------
124618 --
124619 -- PRIVATE FUNCTION
124620 -- EventType_252
124621 --
124622 ----------------------------------------
124623 --
124624 FUNCTION EventType_252
124625 (p_application_id IN NUMBER
124626 ,p_base_ledger_id IN NUMBER
124627 ,p_target_ledger_id IN NUMBER
124628 ,p_language IN VARCHAR2
124629 ,p_currency_code IN VARCHAR2
124630 ,p_sla_ledger_id IN NUMBER
124631 ,p_pad_start_date IN DATE
124632 ,p_pad_end_date IN DATE
124633 ,p_primary_ledger_id IN NUMBER)
124634 RETURN BOOLEAN IS
124635 --
124636 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CLOS';
124637 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BATCH_CLOSE';
124638
124639 l_calculate_acctd_flag VARCHAR2(1) :='N';
124640 l_calculate_g_l_flag VARCHAR2(1) :='N';
124641 --
124642 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124643 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124644 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
124645 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124646 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124647 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
124648 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
124649 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124653 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124650 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124651 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124652 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124654 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124655 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
124656 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124657 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124658 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124659 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
124660 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124661 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124662 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124663 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
124664 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
124665 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
124666 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
124667 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
124668
124669 l_event_id NUMBER;
124670 l_previous_event_id NUMBER;
124671 l_first_event_id NUMBER;
124672 l_last_event_id NUMBER;
124673
124674 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
124675 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
124676 --
124677 --
124678 l_result BOOLEAN := TRUE;
124679 l_rows NUMBER := 1000;
124680 l_event_type_name VARCHAR2(80) := 'Batch Close';
124681 l_event_class_name VARCHAR2(80) := 'Batch Close Variances';
124682 l_description VARCHAR2(4000);
124683 l_transaction_reversal NUMBER;
124684 l_ae_header_id NUMBER;
124685 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
124686 l_log_module VARCHAR2(240);
124687 --
124688 l_acct_reversal_source VARCHAR2(30);
124689 l_trx_reversal_source VARCHAR2(30);
124690
124691 l_continue_with_lines BOOLEAN := TRUE;
124692 --
124693 l_acc_rev_gl_date_source DATE; -- 4262811
124694 --
124695 type t_array_event_id is table of number index by binary_integer;
124696
124697 l_rec_array_event t_rec_array_event;
124698 l_null_rec_array_event t_rec_array_event;
124699 l_array_ae_header_id xla_number_array_type;
124700 l_actual_flag VARCHAR2(1) := NULL;
124701 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
124702 l_balance_type_code VARCHAR2(1) :=NULL;
124703 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
124704
124705 --
124706 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
124707 --
124708
124709 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
124710 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
124711 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
124712 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
124713 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
124714 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
124715
124716 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
124717 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
124718 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
124719 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
124720 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
124721
124722 l_array_source_6 t_array_source_6;
124723 l_array_source_7 t_array_source_7;
124724 l_array_source_8 t_array_source_8;
124725 l_array_source_9 t_array_source_9;
124726 l_array_source_10 t_array_source_10;
124727 l_array_source_12 t_array_source_12;
124728
124729 l_array_source_1 t_array_source_1;
124730 l_array_source_2 t_array_source_2;
124731 l_array_source_3 t_array_source_3;
124732 l_array_source_5 t_array_source_5;
124733 l_array_source_11 t_array_source_11;
124734
124735 --
124736 CURSOR header_cur
124737 IS
124738 SELECT /*+ leading(xet) cardinality(xet,1) */
124739 -- Event Type Code: CLOS
124740 -- Event Class Code: BATCH_CLOSE
124741 xet.entity_id
124742 , xet.legal_entity_id
124743 , xet.entity_code
124744 , xet.transaction_number
124745 , xet.event_id
124746 , xet.event_class_code
124747 , xet.event_type_code
124748 , xet.event_number
124749 , xet.event_date
124750 , xet.transaction_date
124751 , xet.reference_num_1
124755 , xet.reference_char_1
124752 , xet.reference_num_2
124753 , xet.reference_num_3
124754 , xet.reference_num_4
124756 , xet.reference_char_2
124757 , xet.reference_char_3
124758 , xet.reference_char_4
124759 , xet.reference_date_1
124760 , xet.reference_date_2
124761 , xet.reference_date_3
124762 , xet.reference_date_4
124763 , xet.event_created_by
124764 , xet.budgetary_control_flag
124765 , h1.ENTITY_CODE source_6
124766 , h1.CURRENCY_CODE source_7
124767 , h1.CURRENCY_CONVERSION_DATE source_8
124768 , h1.CURRENCY_CONVERSION_RATE source_9
124769 , h1.CURRENCY_CONVERSION_TYPE source_10
124770 , h1.TRANSACTION_DATE source_12
124771 FROM xla_events_gt xet
124772 , GMF_XLA_EXTRACT_HEADERS h1
124773 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
124774 and xet.event_type_code = C_EVENT_TYPE_CODE
124775 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
124776
124777 ORDER BY event_id
124778 ;
124779
124780
124781 --
124782 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
124783 IS
124784 SELECT /*+ leading(xet) cardinality(xet,1) */
124785 -- Event Type Code: CLOS
124786 -- Event Class Code: BATCH_CLOSE
124787 xet.entity_id
124788 ,xet.legal_entity_id
124789 ,xet.entity_code
124790 ,xet.transaction_number
124791 ,xet.event_id
124792 ,xet.event_class_code
124793 ,xet.event_type_code
124794 ,xet.event_number
124795 ,xet.event_date
124796 ,xet.transaction_date
124797 ,xet.reference_num_1
124798 ,xet.reference_num_2
124799 ,xet.reference_num_3
124800 ,xet.reference_num_4
124801 ,xet.reference_char_1
124802 ,xet.reference_char_2
124803 ,xet.reference_char_3
124804 ,xet.reference_char_4
124805 ,xet.reference_date_1
124806 ,xet.reference_date_2
124807 ,xet.reference_date_3
124808 ,xet.reference_date_4
124809 ,xet.event_created_by
124810 ,xet.budgetary_control_flag , l2.LINE_NUMBER
124811 , l2.TRANSACTION_ACCOUNT_ID source_1
124812 , l2.JOURNAL_LINE_TYPE source_2
124813 , l2.ENTERED_AMOUNT source_3
124814 , l2.LINE_ID source_5
124815 , l2.ACCOUNTED_AMOUNT source_11
124816 FROM xla_events_gt xet
124817 , GMF_XLA_EXTRACT_LINES l2
124818 WHERE xet.event_id between x_first_event_id and x_last_event_id
124819 and xet.event_date between p_pad_start_date and p_pad_end_date
124820 and xet.event_type_code = C_EVENT_TYPE_CODE
124821 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
124822 ;
124823
124824 --
124825 BEGIN
124826 IF g_log_enabled THEN
124827 l_log_module := C_DEFAULT_MODULE||'.EventType_252';
124828 END IF;
124829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124830 trace
124831 (p_msg => 'BEGIN of EventType_252'
124832 ,p_level => C_LEVEL_PROCEDURE
124833 ,p_module => l_log_module);
124834 END IF;
124835
124836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124837 trace
124838 (p_msg => 'p_application_id = '||p_application_id||
124839 ' - p_base_ledger_id = '||p_base_ledger_id||
124840 ' - p_target_ledger_id = '||p_target_ledger_id||
124841 ' - p_language = '||p_language||
124842 ' - p_currency_code = '||p_currency_code||
124843 ' - p_sla_ledger_id = '||p_sla_ledger_id
124844 ,p_level => C_LEVEL_STATEMENT
124845 ,p_module => l_log_module);
124846 END IF;
124847 --
124848 -- initialze arrays
124849 --
124850 g_array_event.DELETE;
124851 l_rec_array_event := l_null_rec_array_event;
124852 --
124853 --------------------------------------
124854 -- 4262811 Initialze MPA Line Number
124855 --------------------------------------
124856 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
124857
124858 --
124859
124860 --
124861 OPEN header_cur;
124862 --
124863 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
124864 trace
124865 (p_msg => 'SQL - FETCH header_cur'
124866 ,p_level => C_LEVEL_STATEMENT
124867 ,p_module => l_log_module);
124868 END IF;
124869 --
124870 LOOP
124871 FETCH header_cur BULK COLLECT INTO
124872 l_array_entity_id
124873 , l_array_legal_entity_id
124874 , l_array_entity_code
124875 , l_array_transaction_num
124876 , l_array_event_id
124877 , l_array_class_code
124878 , l_array_event_type
124879 , l_array_event_number
124880 , l_array_event_date
124881 , l_array_transaction_date
124882 , l_array_reference_num_1
124883 , l_array_reference_num_2
124884 , l_array_reference_num_3
124885 , l_array_reference_num_4
124886 , l_array_reference_char_1
124887 , l_array_reference_char_2
124888 , l_array_reference_char_3
124889 , l_array_reference_char_4
124890 , l_array_reference_date_1
124891 , l_array_reference_date_2
124892 , l_array_reference_date_3
124893 , l_array_reference_date_4
124894 , l_array_event_created_by
124895 , l_array_budgetary_control_flag
124896 , l_array_source_6
124897 , l_array_source_7
124898 , l_array_source_8
124899 , l_array_source_9
124900 , l_array_source_10
124901 , l_array_source_12
124902 LIMIT l_rows;
124903 --
124904 IF (C_LEVEL_EVENT >= g_log_level) THEN
124905 trace
124909 END IF;
124906 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
124907 ,p_level => C_LEVEL_EVENT
124908 ,p_module => l_log_module);
124910 --
124911 EXIT WHEN l_array_entity_id.COUNT = 0;
124912
124913 -- initialize arrays
124914 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
124915 XLA_AE_LINES_PKG.g_rec_lines := NULL;
124916
124917 --
124918 -- Bug 4458708
124919 --
124920 XLA_AE_LINES_PKG.g_LineNumber := 0;
124921
124922
124923 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
124924 g_last_hdr_idx := l_array_event_id.LAST;
124925 --
124926 -- loop for the headers. Each iteration is for each header extract row
124927 -- fetched in header cursor
124928 --
124929 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
124930
124931 --
124932 -- set event info as cache for other routines to refer event attributes
124933 --
124934 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
124935 (p_application_id => p_application_id
124936 ,p_primary_ledger_id => p_primary_ledger_id
124937 ,p_base_ledger_id => p_base_ledger_id
124938 ,p_target_ledger_id => p_target_ledger_id
124939 ,p_entity_id => l_array_entity_id(hdr_idx)
124940 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
124941 ,p_entity_code => l_array_entity_code(hdr_idx)
124942 ,p_transaction_num => l_array_transaction_num(hdr_idx)
124943 ,p_event_id => l_array_event_id(hdr_idx)
124944 ,p_event_class_code => l_array_class_code(hdr_idx)
124945 ,p_event_type_code => l_array_event_type(hdr_idx)
124946 ,p_event_number => l_array_event_number(hdr_idx)
124947 ,p_event_date => l_array_event_date(hdr_idx)
124948 ,p_transaction_date => l_array_transaction_date(hdr_idx)
124949 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
124950 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
124951 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
124952 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
124953 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
124954 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
124955 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
124956 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
124957 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
124958 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
124959 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
124960 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
124961 ,p_event_created_by => l_array_event_created_by(hdr_idx)
124962 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
124963
124964 --
124965 -- set the status of entry to C_VALID (0)
124966 --
124967 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
124968
124969 --
124970 -- initialize a row for ae header
124971 --
124972 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
124973
124974 l_event_id := l_array_event_id(hdr_idx);
124975
124976 --
124977 -- storing the hdr_idx for event. May be used by line cursor.
124978 --
124979 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
124980
124981 --
124982 -- store sources from header extract. This can be improved to
124983 -- store only those sources from header extract that may be used in lines
124984 --
124985
124986 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
124987 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
124988 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
124989 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
124990 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
124991 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
124992
124993 --
124994 -- initilaize the status of ae headers for diffrent balance types
124995 -- the status is initialised to C_NOT_CREATED (2)
124996 --
124997 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
124998 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
124999 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
125000
125001 --
125002 -- call api to validate and store accounting attributes for header
125003 --
125004
125005 ------------------------------------------------------------
125006 -- Accrual Reversal : to get date for Standard Source (NONE)
125007 ------------------------------------------------------------
125008 l_acc_rev_gl_date_source := NULL;
125009
125010 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
125011 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
125012
125013
125014 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
125015
125016 XLA_AE_HEADER_PKG.SetJeCategoryName;
125017
125018 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
125019 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
125020 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
125024
125021 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
125022 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
125023
125025 -- No header level analytical criteria
125026
125027 --
125028 --accounting attribute enhancement, bug 3612931
125029 --
125030 l_trx_reversal_source := SUBSTR(NULL, 1,30);
125031
125032 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
125033 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
125034
125035 xla_accounting_err_pkg.build_message
125036 (p_appli_s_name => 'XLA'
125037 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
125038 ,p_token_1 => 'ACCT_ATTR_NAME'
125039 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
125040 ,p_token_2 => 'PRODUCT_NAME'
125041 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
125042 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
125043 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
125044 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
125045
125046 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
125047 --
125048 -- following sets the accounting attributes needed to reverse
125049 -- accounting for a distributeion
125050 --
125051 xla_ae_lines_pkg.SetTrxReversalAttrs
125052 (p_event_id => l_event_id
125053 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
125054 ,p_trx_reversal_source => l_trx_reversal_source);
125055
125056 END IF;
125057
125058
125059 ----------------------------------------------------------------
125060 -- 4262811 - update the header statuses to invalid in need be
125061 ----------------------------------------------------------------
125062 --
125063 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
125064
125065
125066 -----------------------------------------------
125067 -- No accrual reversal for the event class/type
125068 -----------------------------------------------
125069 ----------------------------------------------------------------
125070
125071 --
125072 -- this ends the header loop iteration for one bulk fetch
125073 --
125074 END LOOP;
125075
125076 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
125077 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
125078
125079 --
125080 -- insert dummy rows into lines gt table that were created due to
125081 -- transaction reversals
125082 --
125083 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
125084 l_result := XLA_AE_LINES_PKG.InsertLines;
125085 END IF;
125086
125087 --
125088 -- reset the temp_line_num for each set of events fetched from header
125089 -- cursor rather than doing it for each new event in line cursor
125090 -- Bug 3939231
125091 --
125092 xla_ae_lines_pkg.g_temp_line_num := 0;
125093
125094
125095
125096 --
125097 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
125098 --
125099 --
125100 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125101
125102 trace
125103 (p_msg => 'SQL - FETCH line_cur'
125104 ,p_level => C_LEVEL_STATEMENT
125105 ,p_module => l_log_module);
125106
125107 END IF;
125108 --
125109 --
125110 LOOP
125111 --
125112 FETCH line_cur BULK COLLECT INTO
125113 l_array_entity_id
125114 , l_array_legal_entity_id
125115 , l_array_entity_code
125116 , l_array_transaction_num
125117 , l_array_event_id
125118 , l_array_class_code
125119 , l_array_event_type
125120 , l_array_event_number
125121 , l_array_event_date
125122 , l_array_transaction_date
125123 , l_array_reference_num_1
125124 , l_array_reference_num_2
125125 , l_array_reference_num_3
125126 , l_array_reference_num_4
125127 , l_array_reference_char_1
125128 , l_array_reference_char_2
125129 , l_array_reference_char_3
125130 , l_array_reference_char_4
125131 , l_array_reference_date_1
125132 , l_array_reference_date_2
125133 , l_array_reference_date_3
125134 , l_array_reference_date_4
125135 , l_array_event_created_by
125136 , l_array_budgetary_control_flag
125137 , l_array_extract_line_num
125138 , l_array_source_1
125139 , l_array_source_2
125140 , l_array_source_3
125141 , l_array_source_5
125142 , l_array_source_11
125143 LIMIT l_rows;
125144
125145 --
125146 IF (C_LEVEL_EVENT >= g_log_level) THEN
125147 trace
125148 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
125149 ,p_level => C_LEVEL_EVENT
125150 ,p_module => l_log_module);
125151 END IF;
125152 --
125153 EXIT WHEN l_array_entity_id.count = 0;
125154
125155 XLA_AE_LINES_PKG.g_rec_lines := null;
125156
125157 --
125158 -- Bug 4458708
125159 --
125160 XLA_AE_LINES_PKG.g_LineNumber := 0;
125161 --
125162 --
125163
125164 FOR Idx IN 1..l_array_event_id.count LOOP
125165 --
125169
125166 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
125167 --
125168 l_event_id := l_array_event_id(idx); -- 5648433
125170 --
125171 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
125172 --
125173
125174 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
125175 (g_array_event(l_event_id).array_value_num('header_index'))
125176 ,'N'
125177 ) <> 'Y'
125178 THEN
125179 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125180 trace
125181 (p_msg => 'Trancaction revesal option is not Y '
125182 ,p_level => C_LEVEL_STATEMENT
125183 ,p_module => l_log_module);
125184 END IF;
125185
125186 --
125187 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
125188 --
125189 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
125190 --
125191 -- set event info as cache for other routines to refer event attributes
125192 --
125193
125194 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
125195 l_previous_event_id := l_event_id;
125196
125197 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
125198 (p_application_id => p_application_id
125199 ,p_primary_ledger_id => p_primary_ledger_id
125200 ,p_base_ledger_id => p_base_ledger_id
125201 ,p_target_ledger_id => p_target_ledger_id
125202 ,p_entity_id => l_array_entity_id(Idx)
125203 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
125204 ,p_entity_code => l_array_entity_code(Idx)
125205 ,p_transaction_num => l_array_transaction_num(Idx)
125206 ,p_event_id => l_array_event_id(Idx)
125207 ,p_event_class_code => l_array_class_code(Idx)
125208 ,p_event_type_code => l_array_event_type(Idx)
125209 ,p_event_number => l_array_event_number(Idx)
125210 ,p_event_date => l_array_event_date(Idx)
125211 ,p_transaction_date => l_array_transaction_date(Idx)
125212 ,p_reference_num_1 => l_array_reference_num_1(Idx)
125213 ,p_reference_num_2 => l_array_reference_num_2(Idx)
125214 ,p_reference_num_3 => l_array_reference_num_3(Idx)
125215 ,p_reference_num_4 => l_array_reference_num_4(Idx)
125216 ,p_reference_char_1 => l_array_reference_char_1(Idx)
125217 ,p_reference_char_2 => l_array_reference_char_2(Idx)
125218 ,p_reference_char_3 => l_array_reference_char_3(Idx)
125219 ,p_reference_char_4 => l_array_reference_char_4(Idx)
125220 ,p_reference_date_1 => l_array_reference_date_1(Idx)
125221 ,p_reference_date_2 => l_array_reference_date_2(Idx)
125222 ,p_reference_date_3 => l_array_reference_date_3(Idx)
125223 ,p_reference_date_4 => l_array_reference_date_4(Idx)
125224 ,p_event_created_by => l_array_event_created_by(Idx)
125225 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
125226 --
125227 END IF;
125228
125229
125230
125231 --
125232 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
125233
125234 l_acct_reversal_source := SUBSTR(NULL, 1,30);
125235
125236 IF l_continue_with_lines THEN
125237 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
125238 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
125239
125240 xla_accounting_err_pkg.build_message
125241 (p_appli_s_name => 'XLA'
125242 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
125243 ,p_token_1 => 'LINE_NUMBER'
125244 ,p_value_1 => l_array_extract_line_num(Idx)
125245 ,p_token_2 => 'PRODUCT_NAME'
125246 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
125247 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
125248 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
125249 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
125250
125251 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
125252 --
125253 -- following sets the accounting attributes needed to reverse
125254 -- accounting for a distributeion
125255 --
125256
125257 --
125258 -- 5217187
125259 --
125260 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
125261 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
125262 g_array_event(l_event_id).array_value_num('header_index'));
125263 --
125264 --
125265
125266 -- No reversal code generated
125267
125268 xla_ae_lines_pkg.SetAcctReversalAttrs
125269 (p_event_id => l_event_id
125270 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
125271 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125272 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
125273 END IF;
125274
125275 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
125276 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
125277
125278 --
125279 AcctLineType_61 (
125280 p_application_id => p_application_id
125284 ,p_actual_flag => l_actual_flag
125281 ,p_event_id => l_event_id
125282 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125283 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125285 ,p_balance_type_code => l_balance_type_code
125286 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125287
125288 , p_source_1 => l_array_source_1(Idx)
125289 , p_source_2 => l_array_source_2(Idx)
125290 , p_source_3 => l_array_source_3(Idx)
125291 , p_source_5 => l_array_source_5(Idx)
125292 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125293 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125294 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125295 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125296 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125297 , p_source_11 => l_array_source_11(Idx)
125298 );
125299 If(l_balance_type_code = 'A') THEN
125300 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125301 END IF;
125302
125303 --
125304
125305
125306 --
125307 AcctLineType_68 (
125308 p_application_id => p_application_id
125309 ,p_event_id => l_event_id
125310 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125311 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125312 ,p_actual_flag => l_actual_flag
125313 ,p_balance_type_code => l_balance_type_code
125314 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125315
125316 , p_source_1 => l_array_source_1(Idx)
125317 , p_source_2 => l_array_source_2(Idx)
125318 , p_source_3 => l_array_source_3(Idx)
125319 , p_source_5 => l_array_source_5(Idx)
125320 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125321 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125322 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125323 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125324 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125325 , p_source_11 => l_array_source_11(Idx)
125326 );
125327 If(l_balance_type_code = 'A') THEN
125328 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125329 END IF;
125330
125331 --
125332
125333
125334 --
125335 AcctLineType_214 (
125336 p_application_id => p_application_id
125337 ,p_event_id => l_event_id
125338 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125339 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125340 ,p_actual_flag => l_actual_flag
125341 ,p_balance_type_code => l_balance_type_code
125342 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125343
125344 , p_source_1 => l_array_source_1(Idx)
125345 , p_source_2 => l_array_source_2(Idx)
125346 , p_source_3 => l_array_source_3(Idx)
125347 , p_source_5 => l_array_source_5(Idx)
125348 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125349 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125350 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125351 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125352 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125353 , p_source_11 => l_array_source_11(Idx)
125354 );
125355 If(l_balance_type_code = 'A') THEN
125356 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125357 END IF;
125358
125359 --
125360
125361
125362 --
125363 AcctLineType_232 (
125364 p_application_id => p_application_id
125365 ,p_event_id => l_event_id
125366 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125367 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125368 ,p_actual_flag => l_actual_flag
125369 ,p_balance_type_code => l_balance_type_code
125370 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125371
125372 , p_source_1 => l_array_source_1(Idx)
125373 , p_source_2 => l_array_source_2(Idx)
125374 , p_source_3 => l_array_source_3(Idx)
125375 , p_source_5 => l_array_source_5(Idx)
125376 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125377 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125378 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125379 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125380 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125381 , p_source_11 => l_array_source_11(Idx)
125382 );
125383 If(l_balance_type_code = 'A') THEN
125384 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125385 END IF;
125386
125387 --
125388
125389
125390 --
125391 AcctLineType_235 (
125392 p_application_id => p_application_id
125393 ,p_event_id => l_event_id
125394 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125395 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125396 ,p_actual_flag => l_actual_flag
125397 ,p_balance_type_code => l_balance_type_code
125398 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125399
125400 , p_source_1 => l_array_source_1(Idx)
125401 , p_source_2 => l_array_source_2(Idx)
125402 , p_source_3 => l_array_source_3(Idx)
125403 , p_source_5 => l_array_source_5(Idx)
125404 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125405 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125406 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125407 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125408 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125412 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125409 , p_source_11 => l_array_source_11(Idx)
125410 );
125411 If(l_balance_type_code = 'A') THEN
125413 END IF;
125414
125415 --
125416
125417
125418 --
125419 AcctLineType_236 (
125420 p_application_id => p_application_id
125421 ,p_event_id => l_event_id
125422 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125423 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125424 ,p_actual_flag => l_actual_flag
125425 ,p_balance_type_code => l_balance_type_code
125426 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125427
125428 , p_source_1 => l_array_source_1(Idx)
125429 , p_source_2 => l_array_source_2(Idx)
125430 , p_source_3 => l_array_source_3(Idx)
125431 , p_source_5 => l_array_source_5(Idx)
125432 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125433 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125434 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125435 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125436 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125437 , p_source_11 => l_array_source_11(Idx)
125438 );
125439 If(l_balance_type_code = 'A') THEN
125440 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125441 END IF;
125442
125443 --
125444
125445
125446 --
125447 AcctLineType_237 (
125448 p_application_id => p_application_id
125449 ,p_event_id => l_event_id
125450 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125451 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125452 ,p_actual_flag => l_actual_flag
125453 ,p_balance_type_code => l_balance_type_code
125454 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125455
125456 , p_source_1 => l_array_source_1(Idx)
125457 , p_source_2 => l_array_source_2(Idx)
125458 , p_source_3 => l_array_source_3(Idx)
125459 , p_source_5 => l_array_source_5(Idx)
125460 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125461 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125462 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125463 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125464 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125465 , p_source_11 => l_array_source_11(Idx)
125466 );
125467 If(l_balance_type_code = 'A') THEN
125468 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125469 END IF;
125470
125471 --
125472
125473
125474 --
125475 AcctLineType_238 (
125476 p_application_id => p_application_id
125477 ,p_event_id => l_event_id
125478 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125479 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125480 ,p_actual_flag => l_actual_flag
125481 ,p_balance_type_code => l_balance_type_code
125482 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125483
125484 , p_source_1 => l_array_source_1(Idx)
125485 , p_source_2 => l_array_source_2(Idx)
125486 , p_source_3 => l_array_source_3(Idx)
125487 , p_source_5 => l_array_source_5(Idx)
125488 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125489 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125490 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125491 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125492 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125493 , p_source_11 => l_array_source_11(Idx)
125494 );
125495 If(l_balance_type_code = 'A') THEN
125496 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125497 END IF;
125498
125499 --
125500
125501
125502 --
125503 AcctLineType_241 (
125504 p_application_id => p_application_id
125505 ,p_event_id => l_event_id
125506 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125507 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125508 ,p_actual_flag => l_actual_flag
125509 ,p_balance_type_code => l_balance_type_code
125510 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125511
125512 , p_source_1 => l_array_source_1(Idx)
125513 , p_source_2 => l_array_source_2(Idx)
125514 , p_source_3 => l_array_source_3(Idx)
125515 , p_source_5 => l_array_source_5(Idx)
125516 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125517 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125518 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125519 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125520 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125521 , p_source_11 => l_array_source_11(Idx)
125522 );
125523 If(l_balance_type_code = 'A') THEN
125524 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125525 END IF;
125526
125527 --
125528
125529
125530 --
125531 AcctLineType_247 (
125532 p_application_id => p_application_id
125533 ,p_event_id => l_event_id
125534 ,p_calculate_acctd_flag => l_calculate_acctd_flag
125535 ,p_calculate_g_l_flag => l_calculate_g_l_flag
125536 ,p_actual_flag => l_actual_flag
125537 ,p_balance_type_code => l_balance_type_code
125538 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
125539
125540 , p_source_1 => l_array_source_1(Idx)
125541 , p_source_2 => l_array_source_2(Idx)
125542 , p_source_3 => l_array_source_3(Idx)
125543 , p_source_5 => l_array_source_5(Idx)
125544 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
125545 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
125549 , p_source_11 => l_array_source_11(Idx)
125546 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
125547 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
125548 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
125550 );
125551 If(l_balance_type_code = 'A') THEN
125552 l_actual_gain_loss_ref := l_gain_or_loss_ref;
125553 END IF;
125554
125555 --
125556
125557 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
125558 -- or secondary ledger that has different currency with primary
125559 -- or alc that is calculated by sla
125560 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
125561 (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'))
125562
125563 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
125564 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
125565 AND (l_actual_flag = 'A')) THEN
125566 XLA_AE_LINES_PKG.CreateGainOrLossLines(
125567 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
125568 ,p_application_id => p_application_id
125569 ,p_amb_context_code => 'DEFAULT'
125570 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
125571 ,p_event_class_code => C_EVENT_CLASS_CODE
125572 ,p_event_type_code => C_EVENT_TYPE_CODE
125573
125574 ,p_gain_ccid => -1
125575 ,p_loss_ccid => -1
125576
125577 ,p_actual_flag => l_actual_flag
125578 ,p_enc_flag => null
125579 ,p_actual_g_l_ref => l_actual_gain_loss_ref
125580 ,p_enc_g_l_ref => null
125581 );
125582 END IF;
125583 END IF;
125584 END IF;
125585
125586 ELSE
125587 --
125588 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
125589 --
125590 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125591 trace
125592 (p_msg => 'Trancaction revesal option is Y'
125593 ,p_level => C_LEVEL_STATEMENT
125594 ,p_module => l_log_module);
125595 END IF;
125596 END IF;
125597
125598 END LOOP;
125599 l_result := XLA_AE_LINES_PKG.InsertLines ;
125600 end loop;
125601 close line_cur;
125602
125603
125604 --
125605 -- insert headers into xla_ae_headers_gt table
125606 --
125607 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
125608
125609 -- insert into errors table here.
125610
125611 END LOOP;
125612
125613 --
125614 -- 4865292
125615 --
125616 -- Compare g_hdr_extract_count with event count in
125617 -- CreateHeadersAndLines.
125618 --
125619 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
125620
125621 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125622 trace (p_msg => '# rows extracted from header extract objects '
125623 || ' (running total): '
125624 || g_hdr_extract_count
125625 ,p_level => C_LEVEL_STATEMENT
125626 ,p_module => l_log_module);
125627 END IF;
125628
125629 CLOSE header_cur;
125630 --
125631
125632 --
125633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125634 trace
125635 (p_msg => 'END of EventType_252'
125636 ,p_level => C_LEVEL_PROCEDURE
125637 ,p_module => l_log_module);
125638 END IF;
125639 --
125640 RETURN l_result;
125641 EXCEPTION
125642 WHEN xla_exceptions_pkg.application_exception THEN
125643
125644 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
125645
125646
125647 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
125648
125649 RAISE;
125650
125651 WHEN NO_DATA_FOUND THEN
125652
125653 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
125654 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
125655
125656 FOR header_record IN header_cur
125657 LOOP
125658 l_array_header_events(header_record.event_id) := header_record.event_id;
125659 END LOOP;
125660
125661 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
125662 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
125663
125664 fnd_file.put_line(fnd_file.LOG, ' ');
125665 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
125666 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
125667 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
125668
125669 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
125670 LOOP
125671 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
125672 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
125673 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
125674 END IF;
125675 END LOOP;
125676
125677 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
125678 fnd_file.put_line(fnd_file.LOG, ' ');
125679
125680
125681 xla_exceptions_pkg.raise_message
125682 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_252');
125686 xla_exceptions_pkg.raise_message
125683
125684
125685 WHEN OTHERS THEN
125687 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_252');
125688 END EventType_252;
125689 --
125690
125691 ---------------------------------------
125692 --
125693 -- PRIVATE PROCEDURE
125694 -- insert_sources_253
125695 --
125696 ----------------------------------------
125697 --
125698 PROCEDURE insert_sources_253(
125699 p_target_ledger_id IN NUMBER
125700 , p_language IN VARCHAR2
125701 , p_sla_ledger_id IN NUMBER
125702 , p_pad_start_date IN DATE
125703 , p_pad_end_date IN DATE
125704 )
125705 IS
125706
125707 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'COGS_RECOGNITION';
125708 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SHIPPING';
125709 p_apps_owner VARCHAR2(30);
125710 l_log_module VARCHAR2(240);
125711 BEGIN
125712 IF g_log_enabled THEN
125713 l_log_module := C_DEFAULT_MODULE||'.insert_sources_253';
125714 END IF;
125715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125716
125717 trace
125718 (p_msg => 'BEGIN of insert_sources_253'
125719 ,p_level => C_LEVEL_PROCEDURE
125720 ,p_module => l_log_module);
125721
125722 END IF;
125723
125724 -- select APPS owner
125725 SELECT oracle_username
125726 INTO p_apps_owner
125727 FROM fnd_oracle_userid
125728 WHERE read_only_flag = 'U'
125729 ;
125730
125731 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125732 trace
125733 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
125734 ' - p_language = '||p_language||
125735 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
125736 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
125737 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
125738 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
125739 ,p_level => C_LEVEL_STATEMENT
125740 ,p_module => l_log_module);
125741 END IF;
125742
125743
125744 --
125745 INSERT INTO xla_diag_sources --hdr1
125746 (
125747 event_id
125748 , ledger_id
125749 , sla_ledger_id
125750 , description_language
125751 , object_name
125752 , object_type_code
125753 , line_number
125754 , source_application_id
125755 , source_type_code
125756 , source_code
125757 , source_value
125758 , source_meaning
125759 , created_by
125760 , creation_date
125761 , last_update_date
125762 , last_updated_by
125763 , last_update_login
125764 , program_update_date
125765 , program_application_id
125766 , program_id
125767 , request_id
125768 )
125769 SELECT
125770 event_id
125771 , p_target_ledger_id
125772 , p_sla_ledger_id
125773 , p_language
125774 , object_name
125775 , object_type_code
125776 , line_number
125777 , source_application_id
125778 , source_type_code
125779 , source_code
125780 , SUBSTR(source_value ,1,1996)
125781 , SUBSTR(source_meaning,1,200)
125782 , xla_environment_pkg.g_Usr_Id
125783 , TRUNC(SYSDATE)
125784 , TRUNC(SYSDATE)
125785 , xla_environment_pkg.g_Usr_Id
125786 , xla_environment_pkg.g_Login_Id
125787 , TRUNC(SYSDATE)
125788 , xla_environment_pkg.g_Prog_Appl_Id
125789 , xla_environment_pkg.g_Prog_Id
125790 , xla_environment_pkg.g_Req_Id
125791 FROM (
125792 SELECT xet.event_id event_id
125793 , 0 line_number
125794 , CASE r
125795 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
125796 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
125797 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
125798 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
125799 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
125800 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
125801
125802 ELSE null
125803 END object_name
125804 , CASE r
125805 WHEN 1 THEN 'HEADER'
125806 WHEN 2 THEN 'HEADER'
125807 WHEN 3 THEN 'HEADER'
125808 WHEN 4 THEN 'HEADER'
125809 WHEN 5 THEN 'HEADER'
125810 WHEN 6 THEN 'HEADER'
125811
125812 ELSE null
125813 END object_type_code
125814 , CASE r
125815 WHEN 1 THEN '555'
125816 WHEN 2 THEN '555'
125817 WHEN 3 THEN '555'
125818 WHEN 4 THEN '555'
125819 WHEN 5 THEN '555'
125820 WHEN 6 THEN '555'
125821
125822 ELSE null
125823 END source_application_id
125824 , 'S' source_type_code
125825 , CASE r
125826 WHEN 1 THEN 'ENTITY_CODE'
125827 WHEN 2 THEN 'CURRENCY_CODE'
125831 WHEN 6 THEN 'TRANSACTION_DATE'
125828 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
125829 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
125830 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
125832
125833 ELSE null
125834 END source_code
125835 , CASE r
125836 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
125837 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
125838 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
125839 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
125840 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
125841 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
125842
125843 ELSE null
125844 END source_value
125845 , CASE r
125846 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
125847 1010186
125848 ,TO_CHAR(h1.CURRENCY_CODE)
125849 ,'CURRENCY_CODE'
125850 ,'S'
125851 ,555)
125852
125853 ELSE null
125854 END source_meaning
125855 FROM xla_events_gt xet
125856 , GMF_XLA_EXTRACT_HEADERS h1
125857 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
125858 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
125859 AND xet.event_type_code = C_EVENT_TYPE_CODE
125860 AND h1.event_id = xet.event_id
125861
125862 )
125863 ;
125864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125865
125866 trace
125867 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
125868 ,p_level => C_LEVEL_STATEMENT
125869 ,p_module => l_log_module);
125870
125871 END IF;
125872 --
125873
125874
125875
125876 --
125877 INSERT INTO xla_diag_sources --line1
125878 (
125879 event_id
125880 , ledger_id
125881 , sla_ledger_id
125882 , description_language
125883 , object_name
125884 , object_type_code
125885 , line_number
125886 , source_application_id
125887 , source_type_code
125888 , source_code
125889 , source_value
125890 , source_meaning
125891 , created_by
125892 , creation_date
125893 , last_update_date
125894 , last_updated_by
125895 , last_update_login
125896 , program_update_date
125897 , program_application_id
125898 , program_id
125899 , request_id
125900 )
125901 SELECT event_id
125902 , p_target_ledger_id
125903 , p_sla_ledger_id
125904 , p_language
125905 , object_name
125906 , object_type_code
125907 , line_number
125908 , source_application_id
125909 , source_type_code
125910 , source_code
125911 , SUBSTR(source_value,1,1996)
125912 , SUBSTR(source_meaning,1,200)
125913 , xla_environment_pkg.g_Usr_Id
125914 , TRUNC(SYSDATE)
125915 , TRUNC(SYSDATE)
125916 , xla_environment_pkg.g_Usr_Id
125917 , xla_environment_pkg.g_Login_Id
125918 , TRUNC(SYSDATE)
125919 , xla_environment_pkg.g_Prog_Appl_Id
125920 , xla_environment_pkg.g_Prog_Id
125921 , xla_environment_pkg.g_Req_Id
125922 FROM (
125923 SELECT xet.event_id event_id
125924 , l2.line_number line_number
125925 , CASE r
125926 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
125927 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
125928 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
125929 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
125930 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
125931
125932 ELSE null
125933 END object_name
125934 , CASE r
125935 WHEN 1 THEN 'LINE'
125936 WHEN 2 THEN 'LINE'
125937 WHEN 3 THEN 'LINE'
125938 WHEN 4 THEN 'LINE'
125939 WHEN 5 THEN 'LINE'
125940
125941 ELSE null
125942 END object_type_code
125943 , CASE r
125944 WHEN 1 THEN '555'
125945 WHEN 2 THEN '555'
125946 WHEN 3 THEN '555'
125947 WHEN 4 THEN '555'
125948 WHEN 5 THEN '555'
125949
125950 ELSE null
125951 END source_application_id
125952 , 'S' source_type_code
125953 , CASE r
125954 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
125955 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
125956 WHEN 3 THEN 'ENTERED_AMOUNT'
125957 WHEN 4 THEN 'LINE_ID'
125958 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
125959
125960 ELSE null
125961 END source_code
125962 , CASE r
125963 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
125964 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
125968
125965 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
125966 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
125967 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
125969 ELSE null
125970 END source_value
125971 , null source_meaning
125972 FROM xla_events_gt xet
125973 , GMF_XLA_EXTRACT_LINES l2
125974 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
125975 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
125976 AND xet.event_type_code = C_EVENT_TYPE_CODE
125977 AND l2.event_id = xet.event_id
125978
125979 )
125980 ;
125981 --
125982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
125983
125984 trace
125985 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
125986 ,p_level => C_LEVEL_STATEMENT
125987 ,p_module => l_log_module);
125988
125989 END IF;
125990
125991
125992 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125993 trace
125994 (p_msg => 'END of insert_sources_253'
125995 ,p_level => C_LEVEL_PROCEDURE
125996 ,p_module => l_log_module);
125997 END IF;
125998 EXCEPTION
125999 WHEN xla_exceptions_pkg.application_exception THEN
126000 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
126001 trace
126002 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
126003 ,p_level => C_LEVEL_EXCEPTION
126004 ,p_module => l_log_module);
126005 END IF;
126006 RAISE;
126007 WHEN OTHERS THEN
126008 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
126009 trace
126010 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
126011 ,p_level => C_LEVEL_EXCEPTION
126012 ,p_module => l_log_module);
126013 END IF;
126014 xla_exceptions_pkg.raise_message
126015 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_253');
126016 END insert_sources_253;
126017 --
126018
126019 ---------------------------------------
126020 --
126021 -- PRIVATE FUNCTION
126022 -- EventType_253
126023 --
126024 ----------------------------------------
126025 --
126026 FUNCTION EventType_253
126027 (p_application_id IN NUMBER
126028 ,p_base_ledger_id IN NUMBER
126029 ,p_target_ledger_id IN NUMBER
126030 ,p_language IN VARCHAR2
126031 ,p_currency_code IN VARCHAR2
126032 ,p_sla_ledger_id IN NUMBER
126033 ,p_pad_start_date IN DATE
126034 ,p_pad_end_date IN DATE
126035 ,p_primary_ledger_id IN NUMBER)
126036 RETURN BOOLEAN IS
126037 --
126038 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'COGS_RECOGNITION';
126039 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SHIPPING';
126040
126041 l_calculate_acctd_flag VARCHAR2(1) :='N';
126042 l_calculate_g_l_flag VARCHAR2(1) :='N';
126043 --
126044 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126045 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126046 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
126047 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126048 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126049 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
126050 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
126051 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126052 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126053 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126054 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126055 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126056 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126057 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
126058 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126059 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126060 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126061 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
126062 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126063 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126064 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126065 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
126066 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
126067 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
126068 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
126069 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
126070
126071 l_event_id NUMBER;
126072 l_previous_event_id NUMBER;
126073 l_first_event_id NUMBER;
126074 l_last_event_id NUMBER;
126075
126076 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
126077 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
126078 --
126079 --
126080 l_result BOOLEAN := TRUE;
126084 l_description VARCHAR2(4000);
126081 l_rows NUMBER := 1000;
126082 l_event_type_name VARCHAR2(80) := 'COGS Recognition';
126083 l_event_class_name VARCHAR2(80) := 'Shipments';
126085 l_transaction_reversal NUMBER;
126086 l_ae_header_id NUMBER;
126087 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
126088 l_log_module VARCHAR2(240);
126089 --
126090 l_acct_reversal_source VARCHAR2(30);
126091 l_trx_reversal_source VARCHAR2(30);
126092
126093 l_continue_with_lines BOOLEAN := TRUE;
126094 --
126095 l_acc_rev_gl_date_source DATE; -- 4262811
126096 --
126097 type t_array_event_id is table of number index by binary_integer;
126098
126099 l_rec_array_event t_rec_array_event;
126100 l_null_rec_array_event t_rec_array_event;
126101 l_array_ae_header_id xla_number_array_type;
126102 l_actual_flag VARCHAR2(1) := NULL;
126103 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
126104 l_balance_type_code VARCHAR2(1) :=NULL;
126105 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
126106
126107 --
126108 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
126109 --
126110
126111 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
126112 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
126113 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
126114 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
126115 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
126116 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
126117
126118 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
126119 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
126120 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
126121 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
126122 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
126123
126124 l_array_source_6 t_array_source_6;
126125 l_array_source_7 t_array_source_7;
126126 l_array_source_8 t_array_source_8;
126127 l_array_source_9 t_array_source_9;
126128 l_array_source_10 t_array_source_10;
126129 l_array_source_12 t_array_source_12;
126130
126131 l_array_source_1 t_array_source_1;
126132 l_array_source_2 t_array_source_2;
126133 l_array_source_3 t_array_source_3;
126134 l_array_source_5 t_array_source_5;
126135 l_array_source_11 t_array_source_11;
126136
126137 --
126138 CURSOR header_cur
126139 IS
126140 SELECT /*+ leading(xet) cardinality(xet,1) */
126141 -- Event Type Code: COGS_RECOGNITION
126142 -- Event Class Code: SHIPPING
126143 xet.entity_id
126144 , xet.legal_entity_id
126145 , xet.entity_code
126146 , xet.transaction_number
126147 , xet.event_id
126148 , xet.event_class_code
126149 , xet.event_type_code
126150 , xet.event_number
126151 , xet.event_date
126152 , xet.transaction_date
126153 , xet.reference_num_1
126154 , xet.reference_num_2
126155 , xet.reference_num_3
126156 , xet.reference_num_4
126157 , xet.reference_char_1
126158 , xet.reference_char_2
126159 , xet.reference_char_3
126160 , xet.reference_char_4
126161 , xet.reference_date_1
126162 , xet.reference_date_2
126163 , xet.reference_date_3
126164 , xet.reference_date_4
126165 , xet.event_created_by
126166 , xet.budgetary_control_flag
126167 , h1.ENTITY_CODE source_6
126168 , h1.CURRENCY_CODE source_7
126169 , h1.CURRENCY_CONVERSION_DATE source_8
126170 , h1.CURRENCY_CONVERSION_RATE source_9
126171 , h1.CURRENCY_CONVERSION_TYPE source_10
126172 , h1.TRANSACTION_DATE source_12
126173 FROM xla_events_gt xet
126174 , GMF_XLA_EXTRACT_HEADERS h1
126175 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
126176 and xet.event_type_code = C_EVENT_TYPE_CODE
126177 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
126178
126179 ORDER BY event_id
126180 ;
126181
126182
126183 --
126184 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
126185 IS
126186 SELECT /*+ leading(xet) cardinality(xet,1) */
126187 -- Event Type Code: COGS_RECOGNITION
126188 -- Event Class Code: SHIPPING
126189 xet.entity_id
126190 ,xet.legal_entity_id
126191 ,xet.entity_code
126192 ,xet.transaction_number
126193 ,xet.event_id
126194 ,xet.event_class_code
126195 ,xet.event_type_code
126196 ,xet.event_number
126197 ,xet.event_date
126198 ,xet.transaction_date
126199 ,xet.reference_num_1
126200 ,xet.reference_num_2
126201 ,xet.reference_num_3
126202 ,xet.reference_num_4
126203 ,xet.reference_char_1
126204 ,xet.reference_char_2
126205 ,xet.reference_char_3
126206 ,xet.reference_char_4
126207 ,xet.reference_date_1
126208 ,xet.reference_date_2
126212 ,xet.budgetary_control_flag , l2.LINE_NUMBER
126209 ,xet.reference_date_3
126210 ,xet.reference_date_4
126211 ,xet.event_created_by
126213 , l2.TRANSACTION_ACCOUNT_ID source_1
126214 , l2.JOURNAL_LINE_TYPE source_2
126215 , l2.ENTERED_AMOUNT source_3
126216 , l2.LINE_ID source_5
126217 , l2.ACCOUNTED_AMOUNT source_11
126218 FROM xla_events_gt xet
126219 , GMF_XLA_EXTRACT_LINES l2
126220 WHERE xet.event_id between x_first_event_id and x_last_event_id
126221 and xet.event_date between p_pad_start_date and p_pad_end_date
126222 and xet.event_type_code = C_EVENT_TYPE_CODE
126223 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
126224 ;
126225
126226 --
126227 BEGIN
126228 IF g_log_enabled THEN
126229 l_log_module := C_DEFAULT_MODULE||'.EventType_253';
126230 END IF;
126231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126232 trace
126233 (p_msg => 'BEGIN of EventType_253'
126234 ,p_level => C_LEVEL_PROCEDURE
126235 ,p_module => l_log_module);
126236 END IF;
126237
126238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126239 trace
126240 (p_msg => 'p_application_id = '||p_application_id||
126241 ' - p_base_ledger_id = '||p_base_ledger_id||
126242 ' - p_target_ledger_id = '||p_target_ledger_id||
126243 ' - p_language = '||p_language||
126244 ' - p_currency_code = '||p_currency_code||
126245 ' - p_sla_ledger_id = '||p_sla_ledger_id
126246 ,p_level => C_LEVEL_STATEMENT
126247 ,p_module => l_log_module);
126248 END IF;
126249 --
126250 -- initialze arrays
126251 --
126252 g_array_event.DELETE;
126253 l_rec_array_event := l_null_rec_array_event;
126254 --
126255 --------------------------------------
126256 -- 4262811 Initialze MPA Line Number
126257 --------------------------------------
126258 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
126259
126260 --
126261
126262 --
126263 OPEN header_cur;
126264 --
126265 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126266 trace
126267 (p_msg => 'SQL - FETCH header_cur'
126268 ,p_level => C_LEVEL_STATEMENT
126269 ,p_module => l_log_module);
126270 END IF;
126271 --
126272 LOOP
126273 FETCH header_cur BULK COLLECT INTO
126274 l_array_entity_id
126275 , l_array_legal_entity_id
126276 , l_array_entity_code
126277 , l_array_transaction_num
126278 , l_array_event_id
126279 , l_array_class_code
126280 , l_array_event_type
126281 , l_array_event_number
126282 , l_array_event_date
126283 , l_array_transaction_date
126284 , l_array_reference_num_1
126285 , l_array_reference_num_2
126286 , l_array_reference_num_3
126287 , l_array_reference_num_4
126288 , l_array_reference_char_1
126289 , l_array_reference_char_2
126290 , l_array_reference_char_3
126291 , l_array_reference_char_4
126292 , l_array_reference_date_1
126293 , l_array_reference_date_2
126294 , l_array_reference_date_3
126295 , l_array_reference_date_4
126296 , l_array_event_created_by
126297 , l_array_budgetary_control_flag
126298 , l_array_source_6
126299 , l_array_source_7
126300 , l_array_source_8
126301 , l_array_source_9
126302 , l_array_source_10
126303 , l_array_source_12
126304 LIMIT l_rows;
126305 --
126306 IF (C_LEVEL_EVENT >= g_log_level) THEN
126307 trace
126308 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
126309 ,p_level => C_LEVEL_EVENT
126310 ,p_module => l_log_module);
126311 END IF;
126312 --
126313 EXIT WHEN l_array_entity_id.COUNT = 0;
126314
126315 -- initialize arrays
126316 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
126317 XLA_AE_LINES_PKG.g_rec_lines := NULL;
126318
126319 --
126320 -- Bug 4458708
126321 --
126322 XLA_AE_LINES_PKG.g_LineNumber := 0;
126323
126324
126325 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
126326 g_last_hdr_idx := l_array_event_id.LAST;
126327 --
126328 -- loop for the headers. Each iteration is for each header extract row
126329 -- fetched in header cursor
126330 --
126331 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
126332
126333 --
126334 -- set event info as cache for other routines to refer event attributes
126335 --
126336 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
126337 (p_application_id => p_application_id
126338 ,p_primary_ledger_id => p_primary_ledger_id
126339 ,p_base_ledger_id => p_base_ledger_id
126340 ,p_target_ledger_id => p_target_ledger_id
126341 ,p_entity_id => l_array_entity_id(hdr_idx)
126342 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
126343 ,p_entity_code => l_array_entity_code(hdr_idx)
126344 ,p_transaction_num => l_array_transaction_num(hdr_idx)
126345 ,p_event_id => l_array_event_id(hdr_idx)
126346 ,p_event_class_code => l_array_class_code(hdr_idx)
126347 ,p_event_type_code => l_array_event_type(hdr_idx)
126348 ,p_event_number => l_array_event_number(hdr_idx)
126349 ,p_event_date => l_array_event_date(hdr_idx)
126353 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
126350 ,p_transaction_date => l_array_transaction_date(hdr_idx)
126351 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
126352 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
126354 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
126355 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
126356 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
126357 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
126358 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
126359 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
126360 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
126361 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
126362 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
126363 ,p_event_created_by => l_array_event_created_by(hdr_idx)
126364 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
126365
126366 --
126367 -- set the status of entry to C_VALID (0)
126368 --
126369 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
126370
126371 --
126372 -- initialize a row for ae header
126373 --
126374 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
126375
126376 l_event_id := l_array_event_id(hdr_idx);
126377
126378 --
126379 -- storing the hdr_idx for event. May be used by line cursor.
126380 --
126381 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
126382
126383 --
126384 -- store sources from header extract. This can be improved to
126385 -- store only those sources from header extract that may be used in lines
126386 --
126387
126388 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
126389 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
126390 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
126391 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
126392 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
126393 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
126394
126395 --
126396 -- initilaize the status of ae headers for diffrent balance types
126397 -- the status is initialised to C_NOT_CREATED (2)
126398 --
126399 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
126400 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
126401 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
126402
126403 --
126404 -- call api to validate and store accounting attributes for header
126405 --
126406
126407 ------------------------------------------------------------
126408 -- Accrual Reversal : to get date for Standard Source (NONE)
126409 ------------------------------------------------------------
126410 l_acc_rev_gl_date_source := NULL;
126411
126412 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
126413 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
126414
126415
126416 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
126417
126418 XLA_AE_HEADER_PKG.SetJeCategoryName;
126419
126420 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
126421 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
126422 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
126423 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
126424 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
126425
126426
126427 -- No header level analytical criteria
126428
126429 --
126430 --accounting attribute enhancement, bug 3612931
126431 --
126432 l_trx_reversal_source := SUBSTR(NULL, 1,30);
126433
126434 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
126435 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
126436
126437 xla_accounting_err_pkg.build_message
126438 (p_appli_s_name => 'XLA'
126439 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
126440 ,p_token_1 => 'ACCT_ATTR_NAME'
126441 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
126442 ,p_token_2 => 'PRODUCT_NAME'
126443 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
126444 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
126445 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
126446 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
126447
126448 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
126449 --
126450 -- following sets the accounting attributes needed to reverse
126451 -- accounting for a distributeion
126452 --
126453 xla_ae_lines_pkg.SetTrxReversalAttrs
126454 (p_event_id => l_event_id
126455 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
126456 ,p_trx_reversal_source => l_trx_reversal_source);
126457
126461 ----------------------------------------------------------------
126458 END IF;
126459
126460
126462 -- 4262811 - update the header statuses to invalid in need be
126463 ----------------------------------------------------------------
126464 --
126465 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
126466
126467
126468 -----------------------------------------------
126469 -- No accrual reversal for the event class/type
126470 -----------------------------------------------
126471 ----------------------------------------------------------------
126472
126473 --
126474 -- this ends the header loop iteration for one bulk fetch
126475 --
126476 END LOOP;
126477
126478 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
126479 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
126480
126481 --
126482 -- insert dummy rows into lines gt table that were created due to
126483 -- transaction reversals
126484 --
126485 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
126486 l_result := XLA_AE_LINES_PKG.InsertLines;
126487 END IF;
126488
126489 --
126490 -- reset the temp_line_num for each set of events fetched from header
126491 -- cursor rather than doing it for each new event in line cursor
126492 -- Bug 3939231
126493 --
126494 xla_ae_lines_pkg.g_temp_line_num := 0;
126495
126496
126497
126498 --
126499 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
126500 --
126501 --
126502 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126503
126504 trace
126505 (p_msg => 'SQL - FETCH line_cur'
126506 ,p_level => C_LEVEL_STATEMENT
126507 ,p_module => l_log_module);
126508
126509 END IF;
126510 --
126511 --
126512 LOOP
126513 --
126514 FETCH line_cur BULK COLLECT INTO
126515 l_array_entity_id
126516 , l_array_legal_entity_id
126517 , l_array_entity_code
126518 , l_array_transaction_num
126519 , l_array_event_id
126520 , l_array_class_code
126521 , l_array_event_type
126522 , l_array_event_number
126523 , l_array_event_date
126524 , l_array_transaction_date
126525 , l_array_reference_num_1
126526 , l_array_reference_num_2
126527 , l_array_reference_num_3
126528 , l_array_reference_num_4
126529 , l_array_reference_char_1
126530 , l_array_reference_char_2
126531 , l_array_reference_char_3
126532 , l_array_reference_char_4
126533 , l_array_reference_date_1
126534 , l_array_reference_date_2
126535 , l_array_reference_date_3
126536 , l_array_reference_date_4
126537 , l_array_event_created_by
126538 , l_array_budgetary_control_flag
126539 , l_array_extract_line_num
126540 , l_array_source_1
126541 , l_array_source_2
126542 , l_array_source_3
126543 , l_array_source_5
126544 , l_array_source_11
126545 LIMIT l_rows;
126546
126547 --
126548 IF (C_LEVEL_EVENT >= g_log_level) THEN
126549 trace
126550 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
126551 ,p_level => C_LEVEL_EVENT
126552 ,p_module => l_log_module);
126553 END IF;
126554 --
126555 EXIT WHEN l_array_entity_id.count = 0;
126556
126557 XLA_AE_LINES_PKG.g_rec_lines := null;
126558
126559 --
126560 -- Bug 4458708
126561 --
126562 XLA_AE_LINES_PKG.g_LineNumber := 0;
126563 --
126564 --
126565
126566 FOR Idx IN 1..l_array_event_id.count LOOP
126567 --
126568 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
126569 --
126570 l_event_id := l_array_event_id(idx); -- 5648433
126571
126572 --
126573 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
126574 --
126575
126576 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
126577 (g_array_event(l_event_id).array_value_num('header_index'))
126578 ,'N'
126579 ) <> 'Y'
126580 THEN
126581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126582 trace
126583 (p_msg => 'Trancaction revesal option is not Y '
126584 ,p_level => C_LEVEL_STATEMENT
126585 ,p_module => l_log_module);
126586 END IF;
126587
126588 --
126589 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
126590 --
126591 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
126592 --
126593 -- set event info as cache for other routines to refer event attributes
126594 --
126595
126596 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
126597 l_previous_event_id := l_event_id;
126598
126599 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
126600 (p_application_id => p_application_id
126601 ,p_primary_ledger_id => p_primary_ledger_id
126602 ,p_base_ledger_id => p_base_ledger_id
126603 ,p_target_ledger_id => p_target_ledger_id
126604 ,p_entity_id => l_array_entity_id(Idx)
126605 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
126606 ,p_entity_code => l_array_entity_code(Idx)
126607 ,p_transaction_num => l_array_transaction_num(Idx)
126611 ,p_event_number => l_array_event_number(Idx)
126608 ,p_event_id => l_array_event_id(Idx)
126609 ,p_event_class_code => l_array_class_code(Idx)
126610 ,p_event_type_code => l_array_event_type(Idx)
126612 ,p_event_date => l_array_event_date(Idx)
126613 ,p_transaction_date => l_array_transaction_date(Idx)
126614 ,p_reference_num_1 => l_array_reference_num_1(Idx)
126615 ,p_reference_num_2 => l_array_reference_num_2(Idx)
126616 ,p_reference_num_3 => l_array_reference_num_3(Idx)
126617 ,p_reference_num_4 => l_array_reference_num_4(Idx)
126618 ,p_reference_char_1 => l_array_reference_char_1(Idx)
126619 ,p_reference_char_2 => l_array_reference_char_2(Idx)
126620 ,p_reference_char_3 => l_array_reference_char_3(Idx)
126621 ,p_reference_char_4 => l_array_reference_char_4(Idx)
126622 ,p_reference_date_1 => l_array_reference_date_1(Idx)
126623 ,p_reference_date_2 => l_array_reference_date_2(Idx)
126624 ,p_reference_date_3 => l_array_reference_date_3(Idx)
126625 ,p_reference_date_4 => l_array_reference_date_4(Idx)
126626 ,p_event_created_by => l_array_event_created_by(Idx)
126627 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
126628 --
126629 END IF;
126630
126631
126632
126633 --
126634 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
126635
126636 l_acct_reversal_source := SUBSTR(NULL, 1,30);
126637
126638 IF l_continue_with_lines THEN
126639 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
126640 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
126641
126642 xla_accounting_err_pkg.build_message
126643 (p_appli_s_name => 'XLA'
126644 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
126645 ,p_token_1 => 'LINE_NUMBER'
126646 ,p_value_1 => l_array_extract_line_num(Idx)
126647 ,p_token_2 => 'PRODUCT_NAME'
126648 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
126649 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
126650 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
126651 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
126652
126653 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
126654 --
126655 -- following sets the accounting attributes needed to reverse
126656 -- accounting for a distributeion
126657 --
126658
126659 --
126660 -- 5217187
126661 --
126662 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
126663 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
126664 g_array_event(l_event_id).array_value_num('header_index'));
126665 --
126666 --
126667
126668 -- No reversal code generated
126669
126670 xla_ae_lines_pkg.SetAcctReversalAttrs
126671 (p_event_id => l_event_id
126672 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
126673 ,p_calculate_acctd_flag => l_calculate_acctd_flag
126674 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
126675 END IF;
126676
126677 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
126678 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
126679
126680 --
126681 AcctLineType_71 (
126682 p_application_id => p_application_id
126683 ,p_event_id => l_event_id
126684 ,p_calculate_acctd_flag => l_calculate_acctd_flag
126685 ,p_calculate_g_l_flag => l_calculate_g_l_flag
126686 ,p_actual_flag => l_actual_flag
126687 ,p_balance_type_code => l_balance_type_code
126688 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
126689
126690 , p_source_1 => l_array_source_1(Idx)
126691 , p_source_2 => l_array_source_2(Idx)
126692 , p_source_3 => l_array_source_3(Idx)
126693 , p_source_5 => l_array_source_5(Idx)
126694 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
126695 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
126696 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
126697 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
126698 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
126699 , p_source_11 => l_array_source_11(Idx)
126700 );
126701 If(l_balance_type_code = 'A') THEN
126702 l_actual_gain_loss_ref := l_gain_or_loss_ref;
126703 END IF;
126704
126705 --
126706
126707
126708 --
126709 AcctLineType_77 (
126710 p_application_id => p_application_id
126711 ,p_event_id => l_event_id
126712 ,p_calculate_acctd_flag => l_calculate_acctd_flag
126713 ,p_calculate_g_l_flag => l_calculate_g_l_flag
126714 ,p_actual_flag => l_actual_flag
126715 ,p_balance_type_code => l_balance_type_code
126716 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
126717
126718 , p_source_1 => l_array_source_1(Idx)
126719 , p_source_2 => l_array_source_2(Idx)
126720 , p_source_3 => l_array_source_3(Idx)
126721 , p_source_5 => l_array_source_5(Idx)
126722 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
126723 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
126724 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
126728 );
126725 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
126726 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
126727 , p_source_11 => l_array_source_11(Idx)
126729 If(l_balance_type_code = 'A') THEN
126730 l_actual_gain_loss_ref := l_gain_or_loss_ref;
126731 END IF;
126732
126733 --
126734
126735 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
126736 -- or secondary ledger that has different currency with primary
126737 -- or alc that is calculated by sla
126738 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
126739 (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'))
126740
126741 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
126742 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
126743 AND (l_actual_flag = 'A')) THEN
126744 XLA_AE_LINES_PKG.CreateGainOrLossLines(
126745 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
126746 ,p_application_id => p_application_id
126747 ,p_amb_context_code => 'DEFAULT'
126748 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
126749 ,p_event_class_code => C_EVENT_CLASS_CODE
126750 ,p_event_type_code => C_EVENT_TYPE_CODE
126751
126752 ,p_gain_ccid => -1
126753 ,p_loss_ccid => -1
126754
126755 ,p_actual_flag => l_actual_flag
126756 ,p_enc_flag => null
126757 ,p_actual_g_l_ref => l_actual_gain_loss_ref
126758 ,p_enc_g_l_ref => null
126759 );
126760 END IF;
126761 END IF;
126762 END IF;
126763
126764 ELSE
126765 --
126766 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
126767 --
126768 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126769 trace
126770 (p_msg => 'Trancaction revesal option is Y'
126771 ,p_level => C_LEVEL_STATEMENT
126772 ,p_module => l_log_module);
126773 END IF;
126774 END IF;
126775
126776 END LOOP;
126777 l_result := XLA_AE_LINES_PKG.InsertLines ;
126778 end loop;
126779 close line_cur;
126780
126781
126782 --
126783 -- insert headers into xla_ae_headers_gt table
126784 --
126785 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
126786
126787 -- insert into errors table here.
126788
126789 END LOOP;
126790
126791 --
126792 -- 4865292
126793 --
126794 -- Compare g_hdr_extract_count with event count in
126795 -- CreateHeadersAndLines.
126796 --
126797 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
126798
126799 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126800 trace (p_msg => '# rows extracted from header extract objects '
126801 || ' (running total): '
126802 || g_hdr_extract_count
126803 ,p_level => C_LEVEL_STATEMENT
126804 ,p_module => l_log_module);
126805 END IF;
126806
126807 CLOSE header_cur;
126808 --
126809
126810 --
126811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126812 trace
126813 (p_msg => 'END of EventType_253'
126814 ,p_level => C_LEVEL_PROCEDURE
126815 ,p_module => l_log_module);
126816 END IF;
126817 --
126818 RETURN l_result;
126819 EXCEPTION
126820 WHEN xla_exceptions_pkg.application_exception THEN
126821
126822 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
126823
126824
126825 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
126826
126827 RAISE;
126828
126829 WHEN NO_DATA_FOUND THEN
126830
126831 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
126832 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
126833
126834 FOR header_record IN header_cur
126835 LOOP
126836 l_array_header_events(header_record.event_id) := header_record.event_id;
126837 END LOOP;
126838
126839 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
126840 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
126841
126842 fnd_file.put_line(fnd_file.LOG, ' ');
126843 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
126844 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
126845 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
126846
126847 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
126848 LOOP
126849 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
126850 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
126851 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
126852 END IF;
126853 END LOOP;
126854
126855 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
126856 fnd_file.put_line(fnd_file.LOG, ' ');
126857
126858
126859 xla_exceptions_pkg.raise_message
126860 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_253');
126861
126862
126863 WHEN OTHERS THEN
126867 --
126864 xla_exceptions_pkg.raise_message
126865 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_253');
126866 END EventType_253;
126868
126869 ---------------------------------------
126870 --
126871 -- PRIVATE PROCEDURE
126872 -- insert_sources_254
126873 --
126874 ----------------------------------------
126875 --
126876 PROCEDURE insert_sources_254(
126877 p_target_ledger_id IN NUMBER
126878 , p_language IN VARCHAR2
126879 , p_sla_ledger_id IN NUMBER
126880 , p_pad_start_date IN DATE
126881 , p_pad_end_date IN DATE
126882 )
126883 IS
126884
126885 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'COGS_RECOGNITION_ADJ';
126886 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SHIPPING';
126887 p_apps_owner VARCHAR2(30);
126888 l_log_module VARCHAR2(240);
126889 BEGIN
126890 IF g_log_enabled THEN
126891 l_log_module := C_DEFAULT_MODULE||'.insert_sources_254';
126892 END IF;
126893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126894
126895 trace
126896 (p_msg => 'BEGIN of insert_sources_254'
126897 ,p_level => C_LEVEL_PROCEDURE
126898 ,p_module => l_log_module);
126899
126900 END IF;
126901
126902 -- select APPS owner
126903 SELECT oracle_username
126904 INTO p_apps_owner
126905 FROM fnd_oracle_userid
126906 WHERE read_only_flag = 'U'
126907 ;
126908
126909 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
126910 trace
126911 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
126912 ' - p_language = '||p_language||
126913 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
126914 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
126915 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
126916 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
126917 ,p_level => C_LEVEL_STATEMENT
126918 ,p_module => l_log_module);
126919 END IF;
126920
126921
126922 --
126923 INSERT INTO xla_diag_sources --hdr1
126924 (
126925 event_id
126926 , ledger_id
126927 , sla_ledger_id
126928 , description_language
126929 , object_name
126930 , object_type_code
126931 , line_number
126932 , source_application_id
126933 , source_type_code
126934 , source_code
126935 , source_value
126936 , source_meaning
126937 , created_by
126938 , creation_date
126939 , last_update_date
126940 , last_updated_by
126941 , last_update_login
126942 , program_update_date
126943 , program_application_id
126944 , program_id
126945 , request_id
126946 )
126947 SELECT
126948 event_id
126949 , p_target_ledger_id
126950 , p_sla_ledger_id
126951 , p_language
126952 , object_name
126953 , object_type_code
126954 , line_number
126955 , source_application_id
126956 , source_type_code
126957 , source_code
126958 , SUBSTR(source_value ,1,1996)
126959 , SUBSTR(source_meaning,1,200)
126960 , xla_environment_pkg.g_Usr_Id
126961 , TRUNC(SYSDATE)
126962 , TRUNC(SYSDATE)
126963 , xla_environment_pkg.g_Usr_Id
126964 , xla_environment_pkg.g_Login_Id
126965 , TRUNC(SYSDATE)
126966 , xla_environment_pkg.g_Prog_Appl_Id
126967 , xla_environment_pkg.g_Prog_Id
126968 , xla_environment_pkg.g_Req_Id
126969 FROM (
126970 SELECT xet.event_id event_id
126971 , 0 line_number
126972 , CASE r
126973 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
126974 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
126975 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
126976 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
126977 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
126978 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
126979
126980 ELSE null
126981 END object_name
126982 , CASE r
126983 WHEN 1 THEN 'HEADER'
126984 WHEN 2 THEN 'HEADER'
126985 WHEN 3 THEN 'HEADER'
126986 WHEN 4 THEN 'HEADER'
126987 WHEN 5 THEN 'HEADER'
126988 WHEN 6 THEN 'HEADER'
126989
126990 ELSE null
126991 END object_type_code
126992 , CASE r
126993 WHEN 1 THEN '555'
126994 WHEN 2 THEN '555'
126995 WHEN 3 THEN '555'
126996 WHEN 4 THEN '555'
126997 WHEN 5 THEN '555'
126998 WHEN 6 THEN '555'
126999
127000 ELSE null
127001 END source_application_id
127002 , 'S' source_type_code
127003 , CASE r
127004 WHEN 1 THEN 'ENTITY_CODE'
127005 WHEN 2 THEN 'CURRENCY_CODE'
127006 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
127010
127007 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
127008 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
127009 WHEN 6 THEN 'TRANSACTION_DATE'
127011 ELSE null
127012 END source_code
127013 , CASE r
127014 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
127015 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
127016 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
127017 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
127018 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
127019 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
127020
127021 ELSE null
127022 END source_value
127023 , CASE r
127024 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
127025 1010186
127026 ,TO_CHAR(h1.CURRENCY_CODE)
127027 ,'CURRENCY_CODE'
127028 ,'S'
127029 ,555)
127030
127031 ELSE null
127032 END source_meaning
127033 FROM xla_events_gt xet
127034 , GMF_XLA_EXTRACT_HEADERS h1
127035 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
127036 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
127037 AND xet.event_type_code = C_EVENT_TYPE_CODE
127038 AND h1.event_id = xet.event_id
127039
127040 )
127041 ;
127042 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127043
127044 trace
127045 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
127046 ,p_level => C_LEVEL_STATEMENT
127047 ,p_module => l_log_module);
127048
127049 END IF;
127050 --
127051
127052
127053
127054 --
127055 INSERT INTO xla_diag_sources --line1
127056 (
127057 event_id
127058 , ledger_id
127059 , sla_ledger_id
127060 , description_language
127061 , object_name
127062 , object_type_code
127063 , line_number
127064 , source_application_id
127065 , source_type_code
127066 , source_code
127067 , source_value
127068 , source_meaning
127069 , created_by
127070 , creation_date
127071 , last_update_date
127072 , last_updated_by
127073 , last_update_login
127074 , program_update_date
127075 , program_application_id
127076 , program_id
127077 , request_id
127078 )
127079 SELECT event_id
127080 , p_target_ledger_id
127081 , p_sla_ledger_id
127082 , p_language
127083 , object_name
127084 , object_type_code
127085 , line_number
127086 , source_application_id
127087 , source_type_code
127088 , source_code
127089 , SUBSTR(source_value,1,1996)
127090 , SUBSTR(source_meaning,1,200)
127091 , xla_environment_pkg.g_Usr_Id
127092 , TRUNC(SYSDATE)
127093 , TRUNC(SYSDATE)
127094 , xla_environment_pkg.g_Usr_Id
127095 , xla_environment_pkg.g_Login_Id
127096 , TRUNC(SYSDATE)
127097 , xla_environment_pkg.g_Prog_Appl_Id
127098 , xla_environment_pkg.g_Prog_Id
127099 , xla_environment_pkg.g_Req_Id
127100 FROM (
127101 SELECT xet.event_id event_id
127102 , l2.line_number line_number
127103 , CASE r
127104 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
127105 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
127106 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
127107 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
127108 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
127109
127110 ELSE null
127111 END object_name
127112 , CASE r
127113 WHEN 1 THEN 'LINE'
127114 WHEN 2 THEN 'LINE'
127115 WHEN 3 THEN 'LINE'
127116 WHEN 4 THEN 'LINE'
127117 WHEN 5 THEN 'LINE'
127118
127119 ELSE null
127120 END object_type_code
127121 , CASE r
127122 WHEN 1 THEN '555'
127123 WHEN 2 THEN '555'
127124 WHEN 3 THEN '555'
127125 WHEN 4 THEN '555'
127126 WHEN 5 THEN '555'
127127
127128 ELSE null
127129 END source_application_id
127130 , 'S' source_type_code
127131 , CASE r
127132 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
127133 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
127134 WHEN 3 THEN 'ENTERED_AMOUNT'
127135 WHEN 4 THEN 'LINE_ID'
127136 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
127137
127138 ELSE null
127139 END source_code
127140 , CASE r
127141 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
127142 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
127143 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
127144 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
127148 END source_value
127145 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
127146
127147 ELSE null
127149 , null source_meaning
127150 FROM xla_events_gt xet
127151 , GMF_XLA_EXTRACT_LINES l2
127152 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
127153 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
127154 AND xet.event_type_code = C_EVENT_TYPE_CODE
127155 AND l2.event_id = xet.event_id
127156
127157 )
127158 ;
127159 --
127160 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127161
127162 trace
127163 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
127164 ,p_level => C_LEVEL_STATEMENT
127165 ,p_module => l_log_module);
127166
127167 END IF;
127168
127169
127170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127171 trace
127172 (p_msg => 'END of insert_sources_254'
127173 ,p_level => C_LEVEL_PROCEDURE
127174 ,p_module => l_log_module);
127175 END IF;
127176 EXCEPTION
127177 WHEN xla_exceptions_pkg.application_exception THEN
127178 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
127179 trace
127180 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
127181 ,p_level => C_LEVEL_EXCEPTION
127182 ,p_module => l_log_module);
127183 END IF;
127184 RAISE;
127185 WHEN OTHERS THEN
127186 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
127187 trace
127188 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
127189 ,p_level => C_LEVEL_EXCEPTION
127190 ,p_module => l_log_module);
127191 END IF;
127192 xla_exceptions_pkg.raise_message
127193 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_254');
127194 END insert_sources_254;
127195 --
127196
127197 ---------------------------------------
127198 --
127199 -- PRIVATE FUNCTION
127200 -- EventType_254
127201 --
127202 ----------------------------------------
127203 --
127204 FUNCTION EventType_254
127205 (p_application_id IN NUMBER
127206 ,p_base_ledger_id IN NUMBER
127207 ,p_target_ledger_id IN NUMBER
127208 ,p_language IN VARCHAR2
127209 ,p_currency_code IN VARCHAR2
127210 ,p_sla_ledger_id IN NUMBER
127211 ,p_pad_start_date IN DATE
127212 ,p_pad_end_date IN DATE
127213 ,p_primary_ledger_id IN NUMBER)
127214 RETURN BOOLEAN IS
127215 --
127216 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'COGS_RECOGNITION_ADJ';
127217 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SHIPPING';
127218
127219 l_calculate_acctd_flag VARCHAR2(1) :='N';
127220 l_calculate_g_l_flag VARCHAR2(1) :='N';
127221 --
127222 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127223 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127224 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
127225 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127226 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127227 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
127228 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
127229 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127230 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127231 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127232 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127233 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127234 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127235 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
127236 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127237 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127238 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127239 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
127240 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127241 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127242 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127243 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
127244 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
127245 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
127246 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
127247 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
127248
127249 l_event_id NUMBER;
127250 l_previous_event_id NUMBER;
127251 l_first_event_id NUMBER;
127252 l_last_event_id NUMBER;
127253
127254 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
127255 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
127256 --
127257 --
127258 l_result BOOLEAN := TRUE;
127259 l_rows NUMBER := 1000;
127263 l_transaction_reversal NUMBER;
127260 l_event_type_name VARCHAR2(80) := 'COGS Recognition Adjustment';
127261 l_event_class_name VARCHAR2(80) := 'Shipments';
127262 l_description VARCHAR2(4000);
127264 l_ae_header_id NUMBER;
127265 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
127266 l_log_module VARCHAR2(240);
127267 --
127268 l_acct_reversal_source VARCHAR2(30);
127269 l_trx_reversal_source VARCHAR2(30);
127270
127271 l_continue_with_lines BOOLEAN := TRUE;
127272 --
127273 l_acc_rev_gl_date_source DATE; -- 4262811
127274 --
127275 type t_array_event_id is table of number index by binary_integer;
127276
127277 l_rec_array_event t_rec_array_event;
127278 l_null_rec_array_event t_rec_array_event;
127279 l_array_ae_header_id xla_number_array_type;
127280 l_actual_flag VARCHAR2(1) := NULL;
127281 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
127282 l_balance_type_code VARCHAR2(1) :=NULL;
127283 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
127284
127285 --
127286 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
127287 --
127288
127289 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
127290 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
127291 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
127292 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
127293 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
127294 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
127295
127296 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
127297 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
127298 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
127299 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
127300 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
127301
127302 l_array_source_6 t_array_source_6;
127303 l_array_source_7 t_array_source_7;
127304 l_array_source_8 t_array_source_8;
127305 l_array_source_9 t_array_source_9;
127306 l_array_source_10 t_array_source_10;
127307 l_array_source_12 t_array_source_12;
127308
127309 l_array_source_1 t_array_source_1;
127310 l_array_source_2 t_array_source_2;
127311 l_array_source_3 t_array_source_3;
127312 l_array_source_5 t_array_source_5;
127313 l_array_source_11 t_array_source_11;
127314
127315 --
127316 CURSOR header_cur
127317 IS
127318 SELECT /*+ leading(xet) cardinality(xet,1) */
127319 -- Event Type Code: COGS_RECOGNITION_ADJ
127320 -- Event Class Code: SHIPPING
127321 xet.entity_id
127322 , xet.legal_entity_id
127323 , xet.entity_code
127324 , xet.transaction_number
127325 , xet.event_id
127326 , xet.event_class_code
127327 , xet.event_type_code
127328 , xet.event_number
127329 , xet.event_date
127330 , xet.transaction_date
127331 , xet.reference_num_1
127332 , xet.reference_num_2
127333 , xet.reference_num_3
127334 , xet.reference_num_4
127335 , xet.reference_char_1
127336 , xet.reference_char_2
127337 , xet.reference_char_3
127338 , xet.reference_char_4
127339 , xet.reference_date_1
127340 , xet.reference_date_2
127341 , xet.reference_date_3
127342 , xet.reference_date_4
127343 , xet.event_created_by
127344 , xet.budgetary_control_flag
127345 , h1.ENTITY_CODE source_6
127346 , h1.CURRENCY_CODE source_7
127347 , h1.CURRENCY_CONVERSION_DATE source_8
127348 , h1.CURRENCY_CONVERSION_RATE source_9
127349 , h1.CURRENCY_CONVERSION_TYPE source_10
127350 , h1.TRANSACTION_DATE source_12
127351 FROM xla_events_gt xet
127352 , GMF_XLA_EXTRACT_HEADERS h1
127353 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
127354 and xet.event_type_code = C_EVENT_TYPE_CODE
127355 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
127356
127357 ORDER BY event_id
127358 ;
127359
127360
127361 --
127362 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
127363 IS
127364 SELECT /*+ leading(xet) cardinality(xet,1) */
127365 -- Event Type Code: COGS_RECOGNITION_ADJ
127366 -- Event Class Code: SHIPPING
127367 xet.entity_id
127368 ,xet.legal_entity_id
127369 ,xet.entity_code
127370 ,xet.transaction_number
127371 ,xet.event_id
127372 ,xet.event_class_code
127373 ,xet.event_type_code
127374 ,xet.event_number
127375 ,xet.event_date
127376 ,xet.transaction_date
127377 ,xet.reference_num_1
127378 ,xet.reference_num_2
127379 ,xet.reference_num_3
127380 ,xet.reference_num_4
127381 ,xet.reference_char_1
127382 ,xet.reference_char_2
127383 ,xet.reference_char_3
127384 ,xet.reference_char_4
127385 ,xet.reference_date_1
127386 ,xet.reference_date_2
127387 ,xet.reference_date_3
127388 ,xet.reference_date_4
127392 , l2.JOURNAL_LINE_TYPE source_2
127389 ,xet.event_created_by
127390 ,xet.budgetary_control_flag , l2.LINE_NUMBER
127391 , l2.TRANSACTION_ACCOUNT_ID source_1
127393 , l2.ENTERED_AMOUNT source_3
127394 , l2.LINE_ID source_5
127395 , l2.ACCOUNTED_AMOUNT source_11
127396 FROM xla_events_gt xet
127397 , GMF_XLA_EXTRACT_LINES l2
127398 WHERE xet.event_id between x_first_event_id and x_last_event_id
127399 and xet.event_date between p_pad_start_date and p_pad_end_date
127400 and xet.event_type_code = C_EVENT_TYPE_CODE
127401 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
127402 ;
127403
127404 --
127405 BEGIN
127406 IF g_log_enabled THEN
127407 l_log_module := C_DEFAULT_MODULE||'.EventType_254';
127408 END IF;
127409 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127410 trace
127411 (p_msg => 'BEGIN of EventType_254'
127412 ,p_level => C_LEVEL_PROCEDURE
127413 ,p_module => l_log_module);
127414 END IF;
127415
127416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127417 trace
127418 (p_msg => 'p_application_id = '||p_application_id||
127419 ' - p_base_ledger_id = '||p_base_ledger_id||
127420 ' - p_target_ledger_id = '||p_target_ledger_id||
127421 ' - p_language = '||p_language||
127422 ' - p_currency_code = '||p_currency_code||
127423 ' - p_sla_ledger_id = '||p_sla_ledger_id
127424 ,p_level => C_LEVEL_STATEMENT
127425 ,p_module => l_log_module);
127426 END IF;
127427 --
127428 -- initialze arrays
127429 --
127430 g_array_event.DELETE;
127431 l_rec_array_event := l_null_rec_array_event;
127432 --
127433 --------------------------------------
127434 -- 4262811 Initialze MPA Line Number
127435 --------------------------------------
127436 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
127437
127438 --
127439
127440 --
127441 OPEN header_cur;
127442 --
127443 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127444 trace
127445 (p_msg => 'SQL - FETCH header_cur'
127446 ,p_level => C_LEVEL_STATEMENT
127447 ,p_module => l_log_module);
127448 END IF;
127449 --
127450 LOOP
127451 FETCH header_cur BULK COLLECT INTO
127452 l_array_entity_id
127453 , l_array_legal_entity_id
127454 , l_array_entity_code
127455 , l_array_transaction_num
127456 , l_array_event_id
127457 , l_array_class_code
127458 , l_array_event_type
127459 , l_array_event_number
127460 , l_array_event_date
127461 , l_array_transaction_date
127462 , l_array_reference_num_1
127463 , l_array_reference_num_2
127464 , l_array_reference_num_3
127465 , l_array_reference_num_4
127466 , l_array_reference_char_1
127467 , l_array_reference_char_2
127468 , l_array_reference_char_3
127469 , l_array_reference_char_4
127470 , l_array_reference_date_1
127471 , l_array_reference_date_2
127472 , l_array_reference_date_3
127473 , l_array_reference_date_4
127474 , l_array_event_created_by
127475 , l_array_budgetary_control_flag
127476 , l_array_source_6
127477 , l_array_source_7
127478 , l_array_source_8
127479 , l_array_source_9
127480 , l_array_source_10
127481 , l_array_source_12
127482 LIMIT l_rows;
127483 --
127484 IF (C_LEVEL_EVENT >= g_log_level) THEN
127485 trace
127486 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
127487 ,p_level => C_LEVEL_EVENT
127488 ,p_module => l_log_module);
127489 END IF;
127490 --
127491 EXIT WHEN l_array_entity_id.COUNT = 0;
127492
127493 -- initialize arrays
127494 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
127495 XLA_AE_LINES_PKG.g_rec_lines := NULL;
127496
127497 --
127498 -- Bug 4458708
127499 --
127500 XLA_AE_LINES_PKG.g_LineNumber := 0;
127501
127502
127503 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
127504 g_last_hdr_idx := l_array_event_id.LAST;
127505 --
127506 -- loop for the headers. Each iteration is for each header extract row
127507 -- fetched in header cursor
127508 --
127509 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
127510
127511 --
127512 -- set event info as cache for other routines to refer event attributes
127513 --
127514 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
127515 (p_application_id => p_application_id
127516 ,p_primary_ledger_id => p_primary_ledger_id
127517 ,p_base_ledger_id => p_base_ledger_id
127518 ,p_target_ledger_id => p_target_ledger_id
127519 ,p_entity_id => l_array_entity_id(hdr_idx)
127520 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
127521 ,p_entity_code => l_array_entity_code(hdr_idx)
127522 ,p_transaction_num => l_array_transaction_num(hdr_idx)
127523 ,p_event_id => l_array_event_id(hdr_idx)
127524 ,p_event_class_code => l_array_class_code(hdr_idx)
127525 ,p_event_type_code => l_array_event_type(hdr_idx)
127526 ,p_event_number => l_array_event_number(hdr_idx)
127527 ,p_event_date => l_array_event_date(hdr_idx)
127528 ,p_transaction_date => l_array_transaction_date(hdr_idx)
127532 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
127529 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
127530 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
127531 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
127533 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
127534 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
127535 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
127536 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
127537 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
127538 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
127539 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
127540 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
127541 ,p_event_created_by => l_array_event_created_by(hdr_idx)
127542 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
127543
127544 --
127545 -- set the status of entry to C_VALID (0)
127546 --
127547 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
127548
127549 --
127550 -- initialize a row for ae header
127551 --
127552 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
127553
127554 l_event_id := l_array_event_id(hdr_idx);
127555
127556 --
127557 -- storing the hdr_idx for event. May be used by line cursor.
127558 --
127559 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
127560
127561 --
127562 -- store sources from header extract. This can be improved to
127563 -- store only those sources from header extract that may be used in lines
127564 --
127565
127566 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
127567 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
127568 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
127569 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
127570 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
127571 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
127572
127573 --
127574 -- initilaize the status of ae headers for diffrent balance types
127575 -- the status is initialised to C_NOT_CREATED (2)
127576 --
127577 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
127578 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
127579 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
127580
127581 --
127582 -- call api to validate and store accounting attributes for header
127583 --
127584
127585 ------------------------------------------------------------
127586 -- Accrual Reversal : to get date for Standard Source (NONE)
127587 ------------------------------------------------------------
127588 l_acc_rev_gl_date_source := NULL;
127589
127590 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
127591 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
127592
127593
127594 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
127595
127596 XLA_AE_HEADER_PKG.SetJeCategoryName;
127597
127598 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
127599 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
127600 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
127601 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
127602 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
127603
127604
127605 -- No header level analytical criteria
127606
127607 --
127608 --accounting attribute enhancement, bug 3612931
127609 --
127610 l_trx_reversal_source := SUBSTR(NULL, 1,30);
127611
127612 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
127613 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
127614
127615 xla_accounting_err_pkg.build_message
127616 (p_appli_s_name => 'XLA'
127617 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
127618 ,p_token_1 => 'ACCT_ATTR_NAME'
127619 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
127620 ,p_token_2 => 'PRODUCT_NAME'
127621 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
127622 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
127623 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
127624 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
127625
127626 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
127627 --
127628 -- following sets the accounting attributes needed to reverse
127629 -- accounting for a distributeion
127630 --
127631 xla_ae_lines_pkg.SetTrxReversalAttrs
127632 (p_event_id => l_event_id
127633 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
127634 ,p_trx_reversal_source => l_trx_reversal_source);
127635
127636 END IF;
127637
127638
127642 --
127639 ----------------------------------------------------------------
127640 -- 4262811 - update the header statuses to invalid in need be
127641 ----------------------------------------------------------------
127643 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
127644
127645
127646 -----------------------------------------------
127647 -- No accrual reversal for the event class/type
127648 -----------------------------------------------
127649 ----------------------------------------------------------------
127650
127651 --
127652 -- this ends the header loop iteration for one bulk fetch
127653 --
127654 END LOOP;
127655
127656 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
127657 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
127658
127659 --
127660 -- insert dummy rows into lines gt table that were created due to
127661 -- transaction reversals
127662 --
127663 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
127664 l_result := XLA_AE_LINES_PKG.InsertLines;
127665 END IF;
127666
127667 --
127668 -- reset the temp_line_num for each set of events fetched from header
127669 -- cursor rather than doing it for each new event in line cursor
127670 -- Bug 3939231
127671 --
127672 xla_ae_lines_pkg.g_temp_line_num := 0;
127673
127674
127675
127676 --
127677 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
127678 --
127679 --
127680 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127681
127682 trace
127683 (p_msg => 'SQL - FETCH line_cur'
127684 ,p_level => C_LEVEL_STATEMENT
127685 ,p_module => l_log_module);
127686
127687 END IF;
127688 --
127689 --
127690 LOOP
127691 --
127692 FETCH line_cur BULK COLLECT INTO
127693 l_array_entity_id
127694 , l_array_legal_entity_id
127695 , l_array_entity_code
127696 , l_array_transaction_num
127697 , l_array_event_id
127698 , l_array_class_code
127699 , l_array_event_type
127700 , l_array_event_number
127701 , l_array_event_date
127702 , l_array_transaction_date
127703 , l_array_reference_num_1
127704 , l_array_reference_num_2
127705 , l_array_reference_num_3
127706 , l_array_reference_num_4
127707 , l_array_reference_char_1
127708 , l_array_reference_char_2
127709 , l_array_reference_char_3
127710 , l_array_reference_char_4
127711 , l_array_reference_date_1
127712 , l_array_reference_date_2
127713 , l_array_reference_date_3
127714 , l_array_reference_date_4
127715 , l_array_event_created_by
127716 , l_array_budgetary_control_flag
127717 , l_array_extract_line_num
127718 , l_array_source_1
127719 , l_array_source_2
127720 , l_array_source_3
127721 , l_array_source_5
127722 , l_array_source_11
127723 LIMIT l_rows;
127724
127725 --
127726 IF (C_LEVEL_EVENT >= g_log_level) THEN
127727 trace
127728 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
127729 ,p_level => C_LEVEL_EVENT
127730 ,p_module => l_log_module);
127731 END IF;
127732 --
127733 EXIT WHEN l_array_entity_id.count = 0;
127734
127735 XLA_AE_LINES_PKG.g_rec_lines := null;
127736
127737 --
127738 -- Bug 4458708
127739 --
127740 XLA_AE_LINES_PKG.g_LineNumber := 0;
127741 --
127742 --
127743
127744 FOR Idx IN 1..l_array_event_id.count LOOP
127745 --
127746 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
127747 --
127748 l_event_id := l_array_event_id(idx); -- 5648433
127749
127750 --
127751 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
127752 --
127753
127754 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
127755 (g_array_event(l_event_id).array_value_num('header_index'))
127756 ,'N'
127757 ) <> 'Y'
127758 THEN
127759 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127760 trace
127761 (p_msg => 'Trancaction revesal option is not Y '
127762 ,p_level => C_LEVEL_STATEMENT
127763 ,p_module => l_log_module);
127764 END IF;
127765
127766 --
127767 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
127768 --
127769 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
127770 --
127771 -- set event info as cache for other routines to refer event attributes
127772 --
127773
127774 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
127775 l_previous_event_id := l_event_id;
127776
127777 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
127778 (p_application_id => p_application_id
127779 ,p_primary_ledger_id => p_primary_ledger_id
127780 ,p_base_ledger_id => p_base_ledger_id
127781 ,p_target_ledger_id => p_target_ledger_id
127782 ,p_entity_id => l_array_entity_id(Idx)
127783 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
127784 ,p_entity_code => l_array_entity_code(Idx)
127785 ,p_transaction_num => l_array_transaction_num(Idx)
127786 ,p_event_id => l_array_event_id(Idx)
127787 ,p_event_class_code => l_array_class_code(Idx)
127791 ,p_transaction_date => l_array_transaction_date(Idx)
127788 ,p_event_type_code => l_array_event_type(Idx)
127789 ,p_event_number => l_array_event_number(Idx)
127790 ,p_event_date => l_array_event_date(Idx)
127792 ,p_reference_num_1 => l_array_reference_num_1(Idx)
127793 ,p_reference_num_2 => l_array_reference_num_2(Idx)
127794 ,p_reference_num_3 => l_array_reference_num_3(Idx)
127795 ,p_reference_num_4 => l_array_reference_num_4(Idx)
127796 ,p_reference_char_1 => l_array_reference_char_1(Idx)
127797 ,p_reference_char_2 => l_array_reference_char_2(Idx)
127798 ,p_reference_char_3 => l_array_reference_char_3(Idx)
127799 ,p_reference_char_4 => l_array_reference_char_4(Idx)
127800 ,p_reference_date_1 => l_array_reference_date_1(Idx)
127801 ,p_reference_date_2 => l_array_reference_date_2(Idx)
127802 ,p_reference_date_3 => l_array_reference_date_3(Idx)
127803 ,p_reference_date_4 => l_array_reference_date_4(Idx)
127804 ,p_event_created_by => l_array_event_created_by(Idx)
127805 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
127806 --
127807 END IF;
127808
127809
127810
127811 --
127812 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
127813
127814 l_acct_reversal_source := SUBSTR(NULL, 1,30);
127815
127816 IF l_continue_with_lines THEN
127817 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
127818 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
127819
127820 xla_accounting_err_pkg.build_message
127821 (p_appli_s_name => 'XLA'
127822 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
127823 ,p_token_1 => 'LINE_NUMBER'
127824 ,p_value_1 => l_array_extract_line_num(Idx)
127825 ,p_token_2 => 'PRODUCT_NAME'
127826 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
127827 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
127828 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
127829 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
127830
127831 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
127832 --
127833 -- following sets the accounting attributes needed to reverse
127834 -- accounting for a distributeion
127835 --
127836
127837 --
127838 -- 5217187
127839 --
127840 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
127841 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
127842 g_array_event(l_event_id).array_value_num('header_index'));
127843 --
127844 --
127845
127846 -- No reversal code generated
127847
127848 xla_ae_lines_pkg.SetAcctReversalAttrs
127849 (p_event_id => l_event_id
127850 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
127851 ,p_calculate_acctd_flag => l_calculate_acctd_flag
127852 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
127853 END IF;
127854
127855 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
127856 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
127857
127858 --
127859 AcctLineType_69 (
127860 p_application_id => p_application_id
127861 ,p_event_id => l_event_id
127862 ,p_calculate_acctd_flag => l_calculate_acctd_flag
127863 ,p_calculate_g_l_flag => l_calculate_g_l_flag
127864 ,p_actual_flag => l_actual_flag
127865 ,p_balance_type_code => l_balance_type_code
127866 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
127867
127868 , p_source_1 => l_array_source_1(Idx)
127869 , p_source_2 => l_array_source_2(Idx)
127870 , p_source_3 => l_array_source_3(Idx)
127871 , p_source_5 => l_array_source_5(Idx)
127872 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
127873 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
127874 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
127875 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
127876 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
127877 , p_source_11 => l_array_source_11(Idx)
127878 );
127879 If(l_balance_type_code = 'A') THEN
127880 l_actual_gain_loss_ref := l_gain_or_loss_ref;
127881 END IF;
127882
127883 --
127884
127885
127886 --
127887 AcctLineType_78 (
127888 p_application_id => p_application_id
127889 ,p_event_id => l_event_id
127890 ,p_calculate_acctd_flag => l_calculate_acctd_flag
127891 ,p_calculate_g_l_flag => l_calculate_g_l_flag
127892 ,p_actual_flag => l_actual_flag
127893 ,p_balance_type_code => l_balance_type_code
127894 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
127895
127896 , p_source_1 => l_array_source_1(Idx)
127897 , p_source_2 => l_array_source_2(Idx)
127898 , p_source_3 => l_array_source_3(Idx)
127899 , p_source_5 => l_array_source_5(Idx)
127900 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
127901 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
127902 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
127903 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
127907 If(l_balance_type_code = 'A') THEN
127904 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
127905 , p_source_11 => l_array_source_11(Idx)
127906 );
127908 l_actual_gain_loss_ref := l_gain_or_loss_ref;
127909 END IF;
127910
127911 --
127912
127913
127914 --
127915 AcctLineType_132 (
127916 p_application_id => p_application_id
127917 ,p_event_id => l_event_id
127918 ,p_calculate_acctd_flag => l_calculate_acctd_flag
127919 ,p_calculate_g_l_flag => l_calculate_g_l_flag
127920 ,p_actual_flag => l_actual_flag
127921 ,p_balance_type_code => l_balance_type_code
127922 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
127923
127924 , p_source_1 => l_array_source_1(Idx)
127925 , p_source_2 => l_array_source_2(Idx)
127926 , p_source_3 => l_array_source_3(Idx)
127927 , p_source_5 => l_array_source_5(Idx)
127928 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
127929 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
127930 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
127931 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
127932 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
127933 , p_source_11 => l_array_source_11(Idx)
127934 );
127935 If(l_balance_type_code = 'A') THEN
127936 l_actual_gain_loss_ref := l_gain_or_loss_ref;
127937 END IF;
127938
127939 --
127940
127941 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
127942 -- or secondary ledger that has different currency with primary
127943 -- or alc that is calculated by sla
127944 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
127945 (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'))
127946
127947 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
127948 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
127949 AND (l_actual_flag = 'A')) THEN
127950 XLA_AE_LINES_PKG.CreateGainOrLossLines(
127951 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
127952 ,p_application_id => p_application_id
127953 ,p_amb_context_code => 'DEFAULT'
127954 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
127955 ,p_event_class_code => C_EVENT_CLASS_CODE
127956 ,p_event_type_code => C_EVENT_TYPE_CODE
127957
127958 ,p_gain_ccid => -1
127959 ,p_loss_ccid => -1
127960
127961 ,p_actual_flag => l_actual_flag
127962 ,p_enc_flag => null
127963 ,p_actual_g_l_ref => l_actual_gain_loss_ref
127964 ,p_enc_g_l_ref => null
127965 );
127966 END IF;
127967 END IF;
127968 END IF;
127969
127970 ELSE
127971 --
127972 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
127973 --
127974 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
127975 trace
127976 (p_msg => 'Trancaction revesal option is Y'
127977 ,p_level => C_LEVEL_STATEMENT
127978 ,p_module => l_log_module);
127979 END IF;
127980 END IF;
127981
127982 END LOOP;
127983 l_result := XLA_AE_LINES_PKG.InsertLines ;
127984 end loop;
127985 close line_cur;
127986
127987
127988 --
127989 -- insert headers into xla_ae_headers_gt table
127990 --
127991 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
127992
127993 -- insert into errors table here.
127994
127995 END LOOP;
127996
127997 --
127998 -- 4865292
127999 --
128000 -- Compare g_hdr_extract_count with event count in
128001 -- CreateHeadersAndLines.
128002 --
128003 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
128004
128005 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128006 trace (p_msg => '# rows extracted from header extract objects '
128007 || ' (running total): '
128008 || g_hdr_extract_count
128009 ,p_level => C_LEVEL_STATEMENT
128010 ,p_module => l_log_module);
128011 END IF;
128012
128013 CLOSE header_cur;
128014 --
128015
128016 --
128017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128018 trace
128019 (p_msg => 'END of EventType_254'
128020 ,p_level => C_LEVEL_PROCEDURE
128021 ,p_module => l_log_module);
128022 END IF;
128023 --
128024 RETURN l_result;
128025 EXCEPTION
128026 WHEN xla_exceptions_pkg.application_exception THEN
128027
128028 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
128029
128030
128031 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
128032
128033 RAISE;
128034
128035 WHEN NO_DATA_FOUND THEN
128036
128037 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
128038 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
128039
128040 FOR header_record IN header_cur
128041 LOOP
128042 l_array_header_events(header_record.event_id) := header_record.event_id;
128043 END LOOP;
128044
128045 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
128046 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
128047
128048 fnd_file.put_line(fnd_file.LOG, ' ');
128052
128049 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
128050 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
128051 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
128053 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
128054 LOOP
128055 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
128056 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
128057 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
128058 END IF;
128059 END LOOP;
128060
128061 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
128062 fnd_file.put_line(fnd_file.LOG, ' ');
128063
128064
128065 xla_exceptions_pkg.raise_message
128066 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_254');
128067
128068
128069 WHEN OTHERS THEN
128070 xla_exceptions_pkg.raise_message
128071 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_254');
128072 END EventType_254;
128073 --
128074
128075 ---------------------------------------
128076 --
128077 -- PRIVATE PROCEDURE
128078 -- insert_sources_255
128079 --
128080 ----------------------------------------
128081 --
128082 PROCEDURE insert_sources_255(
128083 p_target_ledger_id IN NUMBER
128084 , p_language IN VARCHAR2
128085 , p_sla_ledger_id IN NUMBER
128086 , p_pad_start_date IN DATE
128087 , p_pad_end_date IN DATE
128088 )
128089 IS
128090
128091 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CORRECTION_RECEIVE';
128092 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
128093 p_apps_owner VARCHAR2(30);
128094 l_log_module VARCHAR2(240);
128095 BEGIN
128096 IF g_log_enabled THEN
128097 l_log_module := C_DEFAULT_MODULE||'.insert_sources_255';
128098 END IF;
128099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128100
128101 trace
128102 (p_msg => 'BEGIN of insert_sources_255'
128103 ,p_level => C_LEVEL_PROCEDURE
128104 ,p_module => l_log_module);
128105
128106 END IF;
128107
128108 -- select APPS owner
128109 SELECT oracle_username
128110 INTO p_apps_owner
128111 FROM fnd_oracle_userid
128112 WHERE read_only_flag = 'U'
128113 ;
128114
128115 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128116 trace
128117 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
128118 ' - p_language = '||p_language||
128119 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
128120 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
128121 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
128122 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
128123 ,p_level => C_LEVEL_STATEMENT
128124 ,p_module => l_log_module);
128125 END IF;
128126
128127
128128 --
128129 INSERT INTO xla_diag_sources --hdr1
128130 (
128131 event_id
128132 , ledger_id
128133 , sla_ledger_id
128134 , description_language
128135 , object_name
128136 , object_type_code
128137 , line_number
128138 , source_application_id
128139 , source_type_code
128140 , source_code
128141 , source_value
128142 , source_meaning
128143 , created_by
128144 , creation_date
128145 , last_update_date
128146 , last_updated_by
128147 , last_update_login
128148 , program_update_date
128149 , program_application_id
128150 , program_id
128151 , request_id
128152 )
128153 SELECT
128154 event_id
128155 , p_target_ledger_id
128156 , p_sla_ledger_id
128157 , p_language
128158 , object_name
128159 , object_type_code
128160 , line_number
128161 , source_application_id
128162 , source_type_code
128163 , source_code
128164 , SUBSTR(source_value ,1,1996)
128165 , SUBSTR(source_meaning,1,200)
128166 , xla_environment_pkg.g_Usr_Id
128167 , TRUNC(SYSDATE)
128168 , TRUNC(SYSDATE)
128169 , xla_environment_pkg.g_Usr_Id
128170 , xla_environment_pkg.g_Login_Id
128171 , TRUNC(SYSDATE)
128172 , xla_environment_pkg.g_Prog_Appl_Id
128173 , xla_environment_pkg.g_Prog_Id
128174 , xla_environment_pkg.g_Req_Id
128175 FROM (
128176 SELECT xet.event_id event_id
128177 , 0 line_number
128178 , CASE r
128179 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
128180 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
128181 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
128182 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
128183 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
128184 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
128185
128186 ELSE null
128190 WHEN 2 THEN 'HEADER'
128187 END object_name
128188 , CASE r
128189 WHEN 1 THEN 'HEADER'
128191 WHEN 3 THEN 'HEADER'
128192 WHEN 4 THEN 'HEADER'
128193 WHEN 5 THEN 'HEADER'
128194 WHEN 6 THEN 'HEADER'
128195
128196 ELSE null
128197 END object_type_code
128198 , CASE r
128199 WHEN 1 THEN '555'
128200 WHEN 2 THEN '555'
128201 WHEN 3 THEN '555'
128202 WHEN 4 THEN '555'
128203 WHEN 5 THEN '555'
128204 WHEN 6 THEN '555'
128205
128206 ELSE null
128207 END source_application_id
128208 , 'S' source_type_code
128209 , CASE r
128210 WHEN 1 THEN 'ENTITY_CODE'
128211 WHEN 2 THEN 'CURRENCY_CODE'
128212 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
128213 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
128214 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
128215 WHEN 6 THEN 'TRANSACTION_DATE'
128216
128217 ELSE null
128218 END source_code
128219 , CASE r
128220 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
128221 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
128222 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
128223 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
128224 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
128225 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
128226
128227 ELSE null
128228 END source_value
128229 , CASE r
128230 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
128231 1010186
128232 ,TO_CHAR(h1.CURRENCY_CODE)
128233 ,'CURRENCY_CODE'
128234 ,'S'
128235 ,555)
128236
128237 ELSE null
128238 END source_meaning
128239 FROM xla_events_gt xet
128240 , GMF_XLA_EXTRACT_HEADERS h1
128241 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
128242 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
128243 AND xet.event_type_code = C_EVENT_TYPE_CODE
128244 AND h1.event_id = xet.event_id
128245
128246 )
128247 ;
128248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128249
128250 trace
128251 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
128252 ,p_level => C_LEVEL_STATEMENT
128253 ,p_module => l_log_module);
128254
128255 END IF;
128256 --
128257
128258
128259
128260 --
128261 INSERT INTO xla_diag_sources --line1
128262 (
128263 event_id
128264 , ledger_id
128265 , sla_ledger_id
128266 , description_language
128267 , object_name
128268 , object_type_code
128269 , line_number
128270 , source_application_id
128271 , source_type_code
128272 , source_code
128273 , source_value
128274 , source_meaning
128275 , created_by
128276 , creation_date
128277 , last_update_date
128278 , last_updated_by
128279 , last_update_login
128280 , program_update_date
128281 , program_application_id
128282 , program_id
128283 , request_id
128284 )
128285 SELECT event_id
128286 , p_target_ledger_id
128287 , p_sla_ledger_id
128288 , p_language
128289 , object_name
128290 , object_type_code
128291 , line_number
128292 , source_application_id
128293 , source_type_code
128294 , source_code
128295 , SUBSTR(source_value,1,1996)
128296 , SUBSTR(source_meaning,1,200)
128297 , xla_environment_pkg.g_Usr_Id
128298 , TRUNC(SYSDATE)
128299 , TRUNC(SYSDATE)
128300 , xla_environment_pkg.g_Usr_Id
128301 , xla_environment_pkg.g_Login_Id
128302 , TRUNC(SYSDATE)
128303 , xla_environment_pkg.g_Prog_Appl_Id
128304 , xla_environment_pkg.g_Prog_Id
128305 , xla_environment_pkg.g_Req_Id
128306 FROM (
128307 SELECT xet.event_id event_id
128308 , l2.line_number line_number
128309 , CASE r
128310 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
128311 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
128312 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
128313 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
128314 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
128315
128316 ELSE null
128317 END object_name
128318 , CASE r
128319 WHEN 1 THEN 'LINE'
128320 WHEN 2 THEN 'LINE'
128321 WHEN 3 THEN 'LINE'
128322 WHEN 4 THEN 'LINE'
128323 WHEN 5 THEN 'LINE'
128324
128325 ELSE null
128329 WHEN 2 THEN '555'
128326 END object_type_code
128327 , CASE r
128328 WHEN 1 THEN '555'
128330 WHEN 3 THEN '555'
128331 WHEN 4 THEN '555'
128332 WHEN 5 THEN '555'
128333
128334 ELSE null
128335 END source_application_id
128336 , 'S' source_type_code
128337 , CASE r
128338 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
128339 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
128340 WHEN 3 THEN 'ENTERED_AMOUNT'
128341 WHEN 4 THEN 'LINE_ID'
128342 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
128343
128344 ELSE null
128345 END source_code
128346 , CASE r
128347 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
128348 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
128349 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
128350 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
128351 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
128352
128353 ELSE null
128354 END source_value
128355 , null source_meaning
128356 FROM xla_events_gt xet
128357 , GMF_XLA_EXTRACT_LINES l2
128358 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
128359 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
128360 AND xet.event_type_code = C_EVENT_TYPE_CODE
128361 AND l2.event_id = xet.event_id
128362
128363 )
128364 ;
128365 --
128366 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128367
128368 trace
128369 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
128370 ,p_level => C_LEVEL_STATEMENT
128371 ,p_module => l_log_module);
128372
128373 END IF;
128374
128375
128376 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128377 trace
128378 (p_msg => 'END of insert_sources_255'
128379 ,p_level => C_LEVEL_PROCEDURE
128380 ,p_module => l_log_module);
128381 END IF;
128382 EXCEPTION
128383 WHEN xla_exceptions_pkg.application_exception THEN
128384 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
128385 trace
128386 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
128387 ,p_level => C_LEVEL_EXCEPTION
128388 ,p_module => l_log_module);
128389 END IF;
128390 RAISE;
128391 WHEN OTHERS THEN
128392 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
128393 trace
128394 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
128395 ,p_level => C_LEVEL_EXCEPTION
128396 ,p_module => l_log_module);
128397 END IF;
128398 xla_exceptions_pkg.raise_message
128399 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_255');
128400 END insert_sources_255;
128401 --
128402
128403 ---------------------------------------
128404 --
128405 -- PRIVATE FUNCTION
128406 -- EventType_255
128407 --
128408 ----------------------------------------
128409 --
128410 FUNCTION EventType_255
128411 (p_application_id IN NUMBER
128412 ,p_base_ledger_id IN NUMBER
128413 ,p_target_ledger_id IN NUMBER
128414 ,p_language IN VARCHAR2
128415 ,p_currency_code IN VARCHAR2
128416 ,p_sla_ledger_id IN NUMBER
128417 ,p_pad_start_date IN DATE
128418 ,p_pad_end_date IN DATE
128419 ,p_primary_ledger_id IN NUMBER)
128420 RETURN BOOLEAN IS
128421 --
128422 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CORRECTION_RECEIVE';
128423 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
128424
128425 l_calculate_acctd_flag VARCHAR2(1) :='N';
128426 l_calculate_g_l_flag VARCHAR2(1) :='N';
128427 --
128428 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128429 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128430 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
128431 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128432 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128433 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
128434 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
128435 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128436 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128437 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128438 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128439 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128440 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128441 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
128442 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128443 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128444 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128445 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
128449 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128446 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128447 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128448 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
128450 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
128451 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
128452 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
128453 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
128454
128455 l_event_id NUMBER;
128456 l_previous_event_id NUMBER;
128457 l_first_event_id NUMBER;
128458 l_last_event_id NUMBER;
128459
128460 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
128461 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
128462 --
128463 --
128464 l_result BOOLEAN := TRUE;
128465 l_rows NUMBER := 1000;
128466 l_event_type_name VARCHAR2(80) := 'Correction Receive';
128467 l_event_class_name VARCHAR2(80) := 'Receiving';
128468 l_description VARCHAR2(4000);
128469 l_transaction_reversal NUMBER;
128470 l_ae_header_id NUMBER;
128471 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
128472 l_log_module VARCHAR2(240);
128473 --
128474 l_acct_reversal_source VARCHAR2(30);
128475 l_trx_reversal_source VARCHAR2(30);
128476
128477 l_continue_with_lines BOOLEAN := TRUE;
128478 --
128479 l_acc_rev_gl_date_source DATE; -- 4262811
128480 --
128481 type t_array_event_id is table of number index by binary_integer;
128482
128483 l_rec_array_event t_rec_array_event;
128484 l_null_rec_array_event t_rec_array_event;
128485 l_array_ae_header_id xla_number_array_type;
128486 l_actual_flag VARCHAR2(1) := NULL;
128487 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
128488 l_balance_type_code VARCHAR2(1) :=NULL;
128489 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
128490
128491 --
128492 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
128493 --
128494
128495 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
128496 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
128497 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
128498 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
128499 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
128500 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
128501
128502 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
128503 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
128504 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
128505 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
128506 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
128507
128508 l_array_source_6 t_array_source_6;
128509 l_array_source_7 t_array_source_7;
128510 l_array_source_8 t_array_source_8;
128511 l_array_source_9 t_array_source_9;
128512 l_array_source_10 t_array_source_10;
128513 l_array_source_12 t_array_source_12;
128514
128515 l_array_source_1 t_array_source_1;
128516 l_array_source_2 t_array_source_2;
128517 l_array_source_3 t_array_source_3;
128518 l_array_source_5 t_array_source_5;
128519 l_array_source_11 t_array_source_11;
128520
128521 --
128522 CURSOR header_cur
128523 IS
128524 SELECT /*+ leading(xet) cardinality(xet,1) */
128525 -- Event Type Code: CORRECTION_RECEIVE
128526 -- Event Class Code: RECEIVE
128527 xet.entity_id
128528 , xet.legal_entity_id
128529 , xet.entity_code
128530 , xet.transaction_number
128531 , xet.event_id
128532 , xet.event_class_code
128533 , xet.event_type_code
128534 , xet.event_number
128535 , xet.event_date
128536 , xet.transaction_date
128537 , xet.reference_num_1
128538 , xet.reference_num_2
128539 , xet.reference_num_3
128540 , xet.reference_num_4
128541 , xet.reference_char_1
128542 , xet.reference_char_2
128543 , xet.reference_char_3
128544 , xet.reference_char_4
128545 , xet.reference_date_1
128546 , xet.reference_date_2
128547 , xet.reference_date_3
128548 , xet.reference_date_4
128549 , xet.event_created_by
128550 , xet.budgetary_control_flag
128551 , h1.ENTITY_CODE source_6
128552 , h1.CURRENCY_CODE source_7
128553 , h1.CURRENCY_CONVERSION_DATE source_8
128554 , h1.CURRENCY_CONVERSION_RATE source_9
128555 , h1.CURRENCY_CONVERSION_TYPE source_10
128556 , h1.TRANSACTION_DATE source_12
128557 FROM xla_events_gt xet
128558 , GMF_XLA_EXTRACT_HEADERS h1
128559 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
128563 ORDER BY event_id
128560 and xet.event_type_code = C_EVENT_TYPE_CODE
128561 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
128562
128564 ;
128565
128566
128567 --
128568 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
128569 IS
128570 SELECT /*+ leading(xet) cardinality(xet,1) */
128571 -- Event Type Code: CORRECTION_RECEIVE
128572 -- Event Class Code: RECEIVE
128573 xet.entity_id
128574 ,xet.legal_entity_id
128575 ,xet.entity_code
128576 ,xet.transaction_number
128577 ,xet.event_id
128578 ,xet.event_class_code
128579 ,xet.event_type_code
128580 ,xet.event_number
128581 ,xet.event_date
128582 ,xet.transaction_date
128583 ,xet.reference_num_1
128584 ,xet.reference_num_2
128585 ,xet.reference_num_3
128586 ,xet.reference_num_4
128587 ,xet.reference_char_1
128588 ,xet.reference_char_2
128589 ,xet.reference_char_3
128590 ,xet.reference_char_4
128591 ,xet.reference_date_1
128592 ,xet.reference_date_2
128593 ,xet.reference_date_3
128594 ,xet.reference_date_4
128595 ,xet.event_created_by
128596 ,xet.budgetary_control_flag , l2.LINE_NUMBER
128597 , l2.TRANSACTION_ACCOUNT_ID source_1
128598 , l2.JOURNAL_LINE_TYPE source_2
128599 , l2.ENTERED_AMOUNT source_3
128600 , l2.LINE_ID source_5
128601 , l2.ACCOUNTED_AMOUNT source_11
128602 FROM xla_events_gt xet
128603 , GMF_XLA_EXTRACT_LINES l2
128604 WHERE xet.event_id between x_first_event_id and x_last_event_id
128605 and xet.event_date between p_pad_start_date and p_pad_end_date
128606 and xet.event_type_code = C_EVENT_TYPE_CODE
128607 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
128608 ;
128609
128610 --
128611 BEGIN
128612 IF g_log_enabled THEN
128613 l_log_module := C_DEFAULT_MODULE||'.EventType_255';
128614 END IF;
128615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128616 trace
128617 (p_msg => 'BEGIN of EventType_255'
128618 ,p_level => C_LEVEL_PROCEDURE
128619 ,p_module => l_log_module);
128620 END IF;
128621
128622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128623 trace
128624 (p_msg => 'p_application_id = '||p_application_id||
128625 ' - p_base_ledger_id = '||p_base_ledger_id||
128626 ' - p_target_ledger_id = '||p_target_ledger_id||
128627 ' - p_language = '||p_language||
128628 ' - p_currency_code = '||p_currency_code||
128629 ' - p_sla_ledger_id = '||p_sla_ledger_id
128630 ,p_level => C_LEVEL_STATEMENT
128631 ,p_module => l_log_module);
128632 END IF;
128633 --
128634 -- initialze arrays
128635 --
128636 g_array_event.DELETE;
128637 l_rec_array_event := l_null_rec_array_event;
128638 --
128639 --------------------------------------
128640 -- 4262811 Initialze MPA Line Number
128641 --------------------------------------
128642 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
128643
128644 --
128645
128646 --
128647 OPEN header_cur;
128648 --
128649 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128650 trace
128651 (p_msg => 'SQL - FETCH header_cur'
128652 ,p_level => C_LEVEL_STATEMENT
128653 ,p_module => l_log_module);
128654 END IF;
128655 --
128656 LOOP
128657 FETCH header_cur BULK COLLECT INTO
128658 l_array_entity_id
128659 , l_array_legal_entity_id
128660 , l_array_entity_code
128661 , l_array_transaction_num
128662 , l_array_event_id
128663 , l_array_class_code
128664 , l_array_event_type
128665 , l_array_event_number
128666 , l_array_event_date
128667 , l_array_transaction_date
128668 , l_array_reference_num_1
128669 , l_array_reference_num_2
128670 , l_array_reference_num_3
128671 , l_array_reference_num_4
128672 , l_array_reference_char_1
128673 , l_array_reference_char_2
128674 , l_array_reference_char_3
128675 , l_array_reference_char_4
128676 , l_array_reference_date_1
128677 , l_array_reference_date_2
128678 , l_array_reference_date_3
128679 , l_array_reference_date_4
128680 , l_array_event_created_by
128681 , l_array_budgetary_control_flag
128682 , l_array_source_6
128683 , l_array_source_7
128684 , l_array_source_8
128685 , l_array_source_9
128686 , l_array_source_10
128687 , l_array_source_12
128688 LIMIT l_rows;
128689 --
128690 IF (C_LEVEL_EVENT >= g_log_level) THEN
128691 trace
128692 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
128693 ,p_level => C_LEVEL_EVENT
128694 ,p_module => l_log_module);
128695 END IF;
128696 --
128697 EXIT WHEN l_array_entity_id.COUNT = 0;
128698
128699 -- initialize arrays
128700 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
128701 XLA_AE_LINES_PKG.g_rec_lines := NULL;
128702
128703 --
128704 -- Bug 4458708
128705 --
128706 XLA_AE_LINES_PKG.g_LineNumber := 0;
128707
128708
128709 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
128710 g_last_hdr_idx := l_array_event_id.LAST;
128711 --
128712 -- loop for the headers. Each iteration is for each header extract row
128716
128713 -- fetched in header cursor
128714 --
128715 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
128717 --
128718 -- set event info as cache for other routines to refer event attributes
128719 --
128720 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
128721 (p_application_id => p_application_id
128722 ,p_primary_ledger_id => p_primary_ledger_id
128723 ,p_base_ledger_id => p_base_ledger_id
128724 ,p_target_ledger_id => p_target_ledger_id
128725 ,p_entity_id => l_array_entity_id(hdr_idx)
128726 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
128727 ,p_entity_code => l_array_entity_code(hdr_idx)
128728 ,p_transaction_num => l_array_transaction_num(hdr_idx)
128729 ,p_event_id => l_array_event_id(hdr_idx)
128730 ,p_event_class_code => l_array_class_code(hdr_idx)
128731 ,p_event_type_code => l_array_event_type(hdr_idx)
128732 ,p_event_number => l_array_event_number(hdr_idx)
128733 ,p_event_date => l_array_event_date(hdr_idx)
128734 ,p_transaction_date => l_array_transaction_date(hdr_idx)
128735 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
128736 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
128737 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
128738 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
128739 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
128740 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
128741 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
128742 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
128743 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
128744 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
128745 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
128746 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
128747 ,p_event_created_by => l_array_event_created_by(hdr_idx)
128748 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
128749
128750 --
128751 -- set the status of entry to C_VALID (0)
128752 --
128753 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
128754
128755 --
128756 -- initialize a row for ae header
128757 --
128758 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
128759
128760 l_event_id := l_array_event_id(hdr_idx);
128761
128762 --
128763 -- storing the hdr_idx for event. May be used by line cursor.
128764 --
128765 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
128766
128767 --
128768 -- store sources from header extract. This can be improved to
128769 -- store only those sources from header extract that may be used in lines
128770 --
128771
128772 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
128773 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
128774 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
128775 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
128776 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
128777 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
128778
128779 --
128780 -- initilaize the status of ae headers for diffrent balance types
128781 -- the status is initialised to C_NOT_CREATED (2)
128782 --
128783 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
128784 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
128785 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
128786
128787 --
128788 -- call api to validate and store accounting attributes for header
128789 --
128790
128791 ------------------------------------------------------------
128792 -- Accrual Reversal : to get date for Standard Source (NONE)
128793 ------------------------------------------------------------
128794 l_acc_rev_gl_date_source := NULL;
128795
128796 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
128797 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
128798
128799
128800 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
128801
128802 XLA_AE_HEADER_PKG.SetJeCategoryName;
128803
128804 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
128805 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
128806 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
128807 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
128808 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
128809
128810
128811 -- No header level analytical criteria
128812
128813 --
128814 --accounting attribute enhancement, bug 3612931
128815 --
128816 l_trx_reversal_source := SUBSTR(NULL, 1,30);
128817
128818 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
128819 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
128820
128821 xla_accounting_err_pkg.build_message
128822 (p_appli_s_name => 'XLA'
128826 ,p_token_2 => 'PRODUCT_NAME'
128823 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
128824 ,p_token_1 => 'ACCT_ATTR_NAME'
128825 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
128827 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
128828 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
128829 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
128830 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
128831
128832 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
128833 --
128834 -- following sets the accounting attributes needed to reverse
128835 -- accounting for a distributeion
128836 --
128837 xla_ae_lines_pkg.SetTrxReversalAttrs
128838 (p_event_id => l_event_id
128839 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
128840 ,p_trx_reversal_source => l_trx_reversal_source);
128841
128842 END IF;
128843
128844
128845 ----------------------------------------------------------------
128846 -- 4262811 - update the header statuses to invalid in need be
128847 ----------------------------------------------------------------
128848 --
128849 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
128850
128851
128852 -----------------------------------------------
128853 -- No accrual reversal for the event class/type
128854 -----------------------------------------------
128855 ----------------------------------------------------------------
128856
128857 --
128858 -- this ends the header loop iteration for one bulk fetch
128859 --
128860 END LOOP;
128861
128862 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
128863 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
128864
128865 --
128866 -- insert dummy rows into lines gt table that were created due to
128867 -- transaction reversals
128868 --
128869 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
128870 l_result := XLA_AE_LINES_PKG.InsertLines;
128871 END IF;
128872
128873 --
128874 -- reset the temp_line_num for each set of events fetched from header
128875 -- cursor rather than doing it for each new event in line cursor
128876 -- Bug 3939231
128877 --
128878 xla_ae_lines_pkg.g_temp_line_num := 0;
128879
128880
128881
128882 --
128883 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
128884 --
128885 --
128886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128887
128888 trace
128889 (p_msg => 'SQL - FETCH line_cur'
128890 ,p_level => C_LEVEL_STATEMENT
128891 ,p_module => l_log_module);
128892
128893 END IF;
128894 --
128895 --
128896 LOOP
128897 --
128898 FETCH line_cur BULK COLLECT INTO
128899 l_array_entity_id
128900 , l_array_legal_entity_id
128901 , l_array_entity_code
128902 , l_array_transaction_num
128903 , l_array_event_id
128904 , l_array_class_code
128905 , l_array_event_type
128906 , l_array_event_number
128907 , l_array_event_date
128908 , l_array_transaction_date
128909 , l_array_reference_num_1
128910 , l_array_reference_num_2
128911 , l_array_reference_num_3
128912 , l_array_reference_num_4
128913 , l_array_reference_char_1
128914 , l_array_reference_char_2
128915 , l_array_reference_char_3
128916 , l_array_reference_char_4
128917 , l_array_reference_date_1
128918 , l_array_reference_date_2
128919 , l_array_reference_date_3
128920 , l_array_reference_date_4
128921 , l_array_event_created_by
128922 , l_array_budgetary_control_flag
128923 , l_array_extract_line_num
128924 , l_array_source_1
128925 , l_array_source_2
128926 , l_array_source_3
128927 , l_array_source_5
128928 , l_array_source_11
128929 LIMIT l_rows;
128930
128931 --
128932 IF (C_LEVEL_EVENT >= g_log_level) THEN
128933 trace
128934 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
128935 ,p_level => C_LEVEL_EVENT
128936 ,p_module => l_log_module);
128937 END IF;
128938 --
128939 EXIT WHEN l_array_entity_id.count = 0;
128940
128941 XLA_AE_LINES_PKG.g_rec_lines := null;
128942
128943 --
128944 -- Bug 4458708
128945 --
128946 XLA_AE_LINES_PKG.g_LineNumber := 0;
128947 --
128948 --
128949
128950 FOR Idx IN 1..l_array_event_id.count LOOP
128951 --
128952 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
128953 --
128954 l_event_id := l_array_event_id(idx); -- 5648433
128955
128956 --
128957 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
128958 --
128959
128960 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
128961 (g_array_event(l_event_id).array_value_num('header_index'))
128962 ,'N'
128963 ) <> 'Y'
128964 THEN
128965 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
128966 trace
128967 (p_msg => 'Trancaction revesal option is not Y '
128968 ,p_level => C_LEVEL_STATEMENT
128972 --
128969 ,p_module => l_log_module);
128970 END IF;
128971
128973 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
128974 --
128975 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
128976 --
128977 -- set event info as cache for other routines to refer event attributes
128978 --
128979
128980 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
128981 l_previous_event_id := l_event_id;
128982
128983 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
128984 (p_application_id => p_application_id
128985 ,p_primary_ledger_id => p_primary_ledger_id
128986 ,p_base_ledger_id => p_base_ledger_id
128987 ,p_target_ledger_id => p_target_ledger_id
128988 ,p_entity_id => l_array_entity_id(Idx)
128989 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
128990 ,p_entity_code => l_array_entity_code(Idx)
128991 ,p_transaction_num => l_array_transaction_num(Idx)
128992 ,p_event_id => l_array_event_id(Idx)
128993 ,p_event_class_code => l_array_class_code(Idx)
128994 ,p_event_type_code => l_array_event_type(Idx)
128995 ,p_event_number => l_array_event_number(Idx)
128996 ,p_event_date => l_array_event_date(Idx)
128997 ,p_transaction_date => l_array_transaction_date(Idx)
128998 ,p_reference_num_1 => l_array_reference_num_1(Idx)
128999 ,p_reference_num_2 => l_array_reference_num_2(Idx)
129000 ,p_reference_num_3 => l_array_reference_num_3(Idx)
129001 ,p_reference_num_4 => l_array_reference_num_4(Idx)
129002 ,p_reference_char_1 => l_array_reference_char_1(Idx)
129003 ,p_reference_char_2 => l_array_reference_char_2(Idx)
129004 ,p_reference_char_3 => l_array_reference_char_3(Idx)
129005 ,p_reference_char_4 => l_array_reference_char_4(Idx)
129006 ,p_reference_date_1 => l_array_reference_date_1(Idx)
129007 ,p_reference_date_2 => l_array_reference_date_2(Idx)
129008 ,p_reference_date_3 => l_array_reference_date_3(Idx)
129009 ,p_reference_date_4 => l_array_reference_date_4(Idx)
129010 ,p_event_created_by => l_array_event_created_by(Idx)
129011 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
129012 --
129013 END IF;
129014
129015
129016
129017 --
129018 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
129019
129020 l_acct_reversal_source := SUBSTR(NULL, 1,30);
129021
129022 IF l_continue_with_lines THEN
129023 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
129024 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
129025
129026 xla_accounting_err_pkg.build_message
129027 (p_appli_s_name => 'XLA'
129028 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
129029 ,p_token_1 => 'LINE_NUMBER'
129030 ,p_value_1 => l_array_extract_line_num(Idx)
129031 ,p_token_2 => 'PRODUCT_NAME'
129032 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
129033 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
129034 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
129035 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
129036
129037 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
129038 --
129039 -- following sets the accounting attributes needed to reverse
129040 -- accounting for a distributeion
129041 --
129042
129043 --
129044 -- 5217187
129045 --
129046 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
129047 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
129048 g_array_event(l_event_id).array_value_num('header_index'));
129049 --
129050 --
129051
129052 -- No reversal code generated
129053
129054 xla_ae_lines_pkg.SetAcctReversalAttrs
129055 (p_event_id => l_event_id
129056 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
129057 ,p_calculate_acctd_flag => l_calculate_acctd_flag
129058 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
129059 END IF;
129060
129061 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
129062 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
129063
129064 --
129065 AcctLineType_52 (
129066 p_application_id => p_application_id
129067 ,p_event_id => l_event_id
129068 ,p_calculate_acctd_flag => l_calculate_acctd_flag
129069 ,p_calculate_g_l_flag => l_calculate_g_l_flag
129070 ,p_actual_flag => l_actual_flag
129071 ,p_balance_type_code => l_balance_type_code
129072 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
129073
129074 , p_source_1 => l_array_source_1(Idx)
129075 , p_source_2 => l_array_source_2(Idx)
129076 , p_source_3 => l_array_source_3(Idx)
129077 , p_source_5 => l_array_source_5(Idx)
129078 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
129079 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
129080 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
129081 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
129082 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
129086 l_actual_gain_loss_ref := l_gain_or_loss_ref;
129083 , p_source_11 => l_array_source_11(Idx)
129084 );
129085 If(l_balance_type_code = 'A') THEN
129087 END IF;
129088
129089 --
129090
129091
129092 --
129093 AcctLineType_120 (
129094 p_application_id => p_application_id
129095 ,p_event_id => l_event_id
129096 ,p_calculate_acctd_flag => l_calculate_acctd_flag
129097 ,p_calculate_g_l_flag => l_calculate_g_l_flag
129098 ,p_actual_flag => l_actual_flag
129099 ,p_balance_type_code => l_balance_type_code
129100 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
129101
129102 , p_source_1 => l_array_source_1(Idx)
129103 , p_source_2 => l_array_source_2(Idx)
129104 , p_source_3 => l_array_source_3(Idx)
129105 , p_source_5 => l_array_source_5(Idx)
129106 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
129107 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
129108 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
129109 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
129110 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
129111 , p_source_11 => l_array_source_11(Idx)
129112 );
129113 If(l_balance_type_code = 'A') THEN
129114 l_actual_gain_loss_ref := l_gain_or_loss_ref;
129115 END IF;
129116
129117 --
129118
129119
129120 --
129121 AcctLineType_206 (
129122 p_application_id => p_application_id
129123 ,p_event_id => l_event_id
129124 ,p_calculate_acctd_flag => l_calculate_acctd_flag
129125 ,p_calculate_g_l_flag => l_calculate_g_l_flag
129126 ,p_actual_flag => l_actual_flag
129127 ,p_balance_type_code => l_balance_type_code
129128 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
129129
129130 , p_source_1 => l_array_source_1(Idx)
129131 , p_source_2 => l_array_source_2(Idx)
129132 , p_source_3 => l_array_source_3(Idx)
129133 , p_source_5 => l_array_source_5(Idx)
129134 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
129135 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
129136 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
129137 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
129138 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
129139 , p_source_11 => l_array_source_11(Idx)
129140 );
129141 If(l_balance_type_code = 'A') THEN
129142 l_actual_gain_loss_ref := l_gain_or_loss_ref;
129143 END IF;
129144
129145 --
129146
129147 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
129148 -- or secondary ledger that has different currency with primary
129149 -- or alc that is calculated by sla
129150 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
129151 (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'))
129152
129153 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
129154 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
129155 AND (l_actual_flag = 'A')) THEN
129156 XLA_AE_LINES_PKG.CreateGainOrLossLines(
129157 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
129158 ,p_application_id => p_application_id
129159 ,p_amb_context_code => 'DEFAULT'
129160 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
129161 ,p_event_class_code => C_EVENT_CLASS_CODE
129162 ,p_event_type_code => C_EVENT_TYPE_CODE
129163
129164 ,p_gain_ccid => -1
129165 ,p_loss_ccid => -1
129166
129167 ,p_actual_flag => l_actual_flag
129168 ,p_enc_flag => null
129169 ,p_actual_g_l_ref => l_actual_gain_loss_ref
129170 ,p_enc_g_l_ref => null
129171 );
129172 END IF;
129173 END IF;
129174 END IF;
129175
129176 ELSE
129177 --
129178 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
129179 --
129180 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129181 trace
129182 (p_msg => 'Trancaction revesal option is Y'
129183 ,p_level => C_LEVEL_STATEMENT
129184 ,p_module => l_log_module);
129185 END IF;
129186 END IF;
129187
129188 END LOOP;
129189 l_result := XLA_AE_LINES_PKG.InsertLines ;
129190 end loop;
129191 close line_cur;
129192
129193
129194 --
129195 -- insert headers into xla_ae_headers_gt table
129196 --
129197 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
129198
129199 -- insert into errors table here.
129200
129201 END LOOP;
129202
129203 --
129204 -- 4865292
129205 --
129206 -- Compare g_hdr_extract_count with event count in
129207 -- CreateHeadersAndLines.
129208 --
129209 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
129210
129211 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129212 trace (p_msg => '# rows extracted from header extract objects '
129213 || ' (running total): '
129214 || g_hdr_extract_count
129215 ,p_level => C_LEVEL_STATEMENT
129216 ,p_module => l_log_module);
129217 END IF;
129218
129219 CLOSE header_cur;
129220 --
129221
129225 (p_msg => 'END of EventType_255'
129222 --
129223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129224 trace
129226 ,p_level => C_LEVEL_PROCEDURE
129227 ,p_module => l_log_module);
129228 END IF;
129229 --
129230 RETURN l_result;
129231 EXCEPTION
129232 WHEN xla_exceptions_pkg.application_exception THEN
129233
129234 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
129235
129236
129237 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
129238
129239 RAISE;
129240
129241 WHEN NO_DATA_FOUND THEN
129242
129243 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
129244 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
129245
129246 FOR header_record IN header_cur
129247 LOOP
129248 l_array_header_events(header_record.event_id) := header_record.event_id;
129249 END LOOP;
129250
129251 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
129252 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
129253
129254 fnd_file.put_line(fnd_file.LOG, ' ');
129255 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
129256 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
129257 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
129258
129259 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
129260 LOOP
129261 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
129262 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
129263 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
129264 END IF;
129265 END LOOP;
129266
129267 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
129268 fnd_file.put_line(fnd_file.LOG, ' ');
129269
129270
129271 xla_exceptions_pkg.raise_message
129272 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_255');
129273
129274
129275 WHEN OTHERS THEN
129276 xla_exceptions_pkg.raise_message
129277 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_255');
129278 END EventType_255;
129279 --
129280
129281 ---------------------------------------
129282 --
129283 -- PRIVATE PROCEDURE
129284 -- insert_sources_256
129285 --
129286 ----------------------------------------
129287 --
129288 PROCEDURE insert_sources_256(
129289 p_target_ledger_id IN NUMBER
129290 , p_language IN VARCHAR2
129291 , p_sla_ledger_id IN NUMBER
129292 , p_pad_start_date IN DATE
129293 , p_pad_end_date IN DATE
129294 )
129295 IS
129296
129297 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'COSTREVAL';
129298 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'COSTREVAL';
129299 p_apps_owner VARCHAR2(30);
129300 l_log_module VARCHAR2(240);
129301 BEGIN
129302 IF g_log_enabled THEN
129303 l_log_module := C_DEFAULT_MODULE||'.insert_sources_256';
129304 END IF;
129305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129306
129307 trace
129308 (p_msg => 'BEGIN of insert_sources_256'
129309 ,p_level => C_LEVEL_PROCEDURE
129310 ,p_module => l_log_module);
129311
129312 END IF;
129313
129314 -- select APPS owner
129315 SELECT oracle_username
129316 INTO p_apps_owner
129317 FROM fnd_oracle_userid
129318 WHERE read_only_flag = 'U'
129319 ;
129320
129321 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129322 trace
129323 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
129324 ' - p_language = '||p_language||
129325 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
129326 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
129327 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
129328 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
129329 ,p_level => C_LEVEL_STATEMENT
129330 ,p_module => l_log_module);
129331 END IF;
129332
129333
129334 --
129335 INSERT INTO xla_diag_sources --hdr1
129336 (
129337 event_id
129338 , ledger_id
129339 , sla_ledger_id
129340 , description_language
129341 , object_name
129342 , object_type_code
129343 , line_number
129344 , source_application_id
129345 , source_type_code
129346 , source_code
129347 , source_value
129348 , source_meaning
129349 , created_by
129350 , creation_date
129351 , last_update_date
129352 , last_updated_by
129353 , last_update_login
129354 , program_update_date
129355 , program_application_id
129356 , program_id
129357 , request_id
129358 )
129359 SELECT
129360 event_id
129361 , p_target_ledger_id
129362 , p_sla_ledger_id
129363 , p_language
129364 , object_name
129365 , object_type_code
129366 , line_number
129367 , source_application_id
129368 , source_type_code
129372 , xla_environment_pkg.g_Usr_Id
129369 , source_code
129370 , SUBSTR(source_value ,1,1996)
129371 , SUBSTR(source_meaning,1,200)
129373 , TRUNC(SYSDATE)
129374 , TRUNC(SYSDATE)
129375 , xla_environment_pkg.g_Usr_Id
129376 , xla_environment_pkg.g_Login_Id
129377 , TRUNC(SYSDATE)
129378 , xla_environment_pkg.g_Prog_Appl_Id
129379 , xla_environment_pkg.g_Prog_Id
129380 , xla_environment_pkg.g_Req_Id
129381 FROM (
129382 SELECT xet.event_id event_id
129383 , 0 line_number
129384 , CASE r
129385 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
129386 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
129387 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
129388 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
129389 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
129390 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
129391
129392 ELSE null
129393 END object_name
129394 , CASE r
129395 WHEN 1 THEN 'HEADER'
129396 WHEN 2 THEN 'HEADER'
129397 WHEN 3 THEN 'HEADER'
129398 WHEN 4 THEN 'HEADER'
129399 WHEN 5 THEN 'HEADER'
129400 WHEN 6 THEN 'HEADER'
129401
129402 ELSE null
129403 END object_type_code
129404 , CASE r
129405 WHEN 1 THEN '555'
129406 WHEN 2 THEN '555'
129407 WHEN 3 THEN '555'
129408 WHEN 4 THEN '555'
129409 WHEN 5 THEN '555'
129410 WHEN 6 THEN '555'
129411
129412 ELSE null
129413 END source_application_id
129414 , 'S' source_type_code
129415 , CASE r
129416 WHEN 1 THEN 'ENTITY_CODE'
129417 WHEN 2 THEN 'CURRENCY_CODE'
129418 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
129419 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
129420 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
129421 WHEN 6 THEN 'TRANSACTION_DATE'
129422
129423 ELSE null
129424 END source_code
129425 , CASE r
129426 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
129427 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
129428 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
129429 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
129430 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
129431 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
129432
129433 ELSE null
129434 END source_value
129435 , CASE r
129436 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
129437 1010186
129438 ,TO_CHAR(h1.CURRENCY_CODE)
129439 ,'CURRENCY_CODE'
129440 ,'S'
129441 ,555)
129442
129443 ELSE null
129444 END source_meaning
129445 FROM xla_events_gt xet
129446 , GMF_XLA_EXTRACT_HEADERS h1
129447 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
129448 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
129449 AND xet.event_type_code = C_EVENT_TYPE_CODE
129450 AND h1.event_id = xet.event_id
129451
129452 )
129453 ;
129454 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129455
129456 trace
129457 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
129458 ,p_level => C_LEVEL_STATEMENT
129459 ,p_module => l_log_module);
129460
129461 END IF;
129462 --
129463
129464
129465
129466 --
129467 INSERT INTO xla_diag_sources --line1
129468 (
129469 event_id
129470 , ledger_id
129471 , sla_ledger_id
129472 , description_language
129473 , object_name
129474 , object_type_code
129475 , line_number
129476 , source_application_id
129477 , source_type_code
129478 , source_code
129479 , source_value
129480 , source_meaning
129481 , created_by
129482 , creation_date
129483 , last_update_date
129484 , last_updated_by
129485 , last_update_login
129486 , program_update_date
129487 , program_application_id
129488 , program_id
129489 , request_id
129490 )
129491 SELECT event_id
129492 , p_target_ledger_id
129493 , p_sla_ledger_id
129494 , p_language
129495 , object_name
129496 , object_type_code
129497 , line_number
129498 , source_application_id
129499 , source_type_code
129500 , source_code
129501 , SUBSTR(source_value,1,1996)
129502 , SUBSTR(source_meaning,1,200)
129503 , xla_environment_pkg.g_Usr_Id
129504 , TRUNC(SYSDATE)
129505 , TRUNC(SYSDATE)
129506 , xla_environment_pkg.g_Usr_Id
129507 , xla_environment_pkg.g_Login_Id
129511 , xla_environment_pkg.g_Req_Id
129508 , TRUNC(SYSDATE)
129509 , xla_environment_pkg.g_Prog_Appl_Id
129510 , xla_environment_pkg.g_Prog_Id
129512 FROM (
129513 SELECT xet.event_id event_id
129514 , l2.line_number line_number
129515 , CASE r
129516 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
129517 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
129518 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
129519 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
129520 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
129521
129522 ELSE null
129523 END object_name
129524 , CASE r
129525 WHEN 1 THEN 'LINE'
129526 WHEN 2 THEN 'LINE'
129527 WHEN 3 THEN 'LINE'
129528 WHEN 4 THEN 'LINE'
129529 WHEN 5 THEN 'LINE'
129530
129531 ELSE null
129532 END object_type_code
129533 , CASE r
129534 WHEN 1 THEN '555'
129535 WHEN 2 THEN '555'
129536 WHEN 3 THEN '555'
129537 WHEN 4 THEN '555'
129538 WHEN 5 THEN '555'
129539
129540 ELSE null
129541 END source_application_id
129542 , 'S' source_type_code
129543 , CASE r
129544 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
129545 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
129546 WHEN 3 THEN 'ENTERED_AMOUNT'
129547 WHEN 4 THEN 'LINE_ID'
129548 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
129549
129550 ELSE null
129551 END source_code
129552 , CASE r
129553 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
129554 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
129555 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
129556 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
129557 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
129558
129559 ELSE null
129560 END source_value
129561 , null source_meaning
129562 FROM xla_events_gt xet
129563 , GMF_XLA_EXTRACT_LINES l2
129564 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
129565 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
129566 AND xet.event_type_code = C_EVENT_TYPE_CODE
129567 AND l2.event_id = xet.event_id
129568
129569 )
129570 ;
129571 --
129572 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129573
129574 trace
129575 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
129576 ,p_level => C_LEVEL_STATEMENT
129577 ,p_module => l_log_module);
129578
129579 END IF;
129580
129581
129582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129583 trace
129584 (p_msg => 'END of insert_sources_256'
129585 ,p_level => C_LEVEL_PROCEDURE
129586 ,p_module => l_log_module);
129587 END IF;
129588 EXCEPTION
129589 WHEN xla_exceptions_pkg.application_exception THEN
129590 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
129591 trace
129592 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
129593 ,p_level => C_LEVEL_EXCEPTION
129594 ,p_module => l_log_module);
129595 END IF;
129596 RAISE;
129597 WHEN OTHERS THEN
129598 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
129599 trace
129600 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
129601 ,p_level => C_LEVEL_EXCEPTION
129602 ,p_module => l_log_module);
129603 END IF;
129604 xla_exceptions_pkg.raise_message
129605 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_256');
129606 END insert_sources_256;
129607 --
129608
129609 ---------------------------------------
129610 --
129611 -- PRIVATE FUNCTION
129612 -- EventType_256
129613 --
129614 ----------------------------------------
129615 --
129616 FUNCTION EventType_256
129617 (p_application_id IN NUMBER
129618 ,p_base_ledger_id IN NUMBER
129619 ,p_target_ledger_id IN NUMBER
129620 ,p_language IN VARCHAR2
129621 ,p_currency_code IN VARCHAR2
129622 ,p_sla_ledger_id IN NUMBER
129623 ,p_pad_start_date IN DATE
129624 ,p_pad_end_date IN DATE
129625 ,p_primary_ledger_id IN NUMBER)
129626 RETURN BOOLEAN IS
129627 --
129628 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'COSTREVAL';
129629 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'COSTREVAL';
129630
129631 l_calculate_acctd_flag VARCHAR2(1) :='N';
129632 l_calculate_g_l_flag VARCHAR2(1) :='N';
129633 --
129634 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129635 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129636 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
129637 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129638 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129642 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129639 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
129640 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
129641 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129643 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129644 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129645 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129646 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129647 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
129648 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129649 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129650 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129651 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
129652 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129653 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129654 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129655 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
129656 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
129657 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
129658 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
129659 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
129660
129661 l_event_id NUMBER;
129662 l_previous_event_id NUMBER;
129663 l_first_event_id NUMBER;
129664 l_last_event_id NUMBER;
129665
129666 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
129667 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
129668 --
129669 --
129670 l_result BOOLEAN := TRUE;
129671 l_rows NUMBER := 1000;
129672 l_event_type_name VARCHAR2(80) := 'Cost Revaluation';
129673 l_event_class_name VARCHAR2(80) := 'Cost Revaluation';
129674 l_description VARCHAR2(4000);
129675 l_transaction_reversal NUMBER;
129676 l_ae_header_id NUMBER;
129677 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
129678 l_log_module VARCHAR2(240);
129679 --
129680 l_acct_reversal_source VARCHAR2(30);
129681 l_trx_reversal_source VARCHAR2(30);
129682
129683 l_continue_with_lines BOOLEAN := TRUE;
129684 --
129685 l_acc_rev_gl_date_source DATE; -- 4262811
129686 --
129687 type t_array_event_id is table of number index by binary_integer;
129688
129689 l_rec_array_event t_rec_array_event;
129690 l_null_rec_array_event t_rec_array_event;
129691 l_array_ae_header_id xla_number_array_type;
129692 l_actual_flag VARCHAR2(1) := NULL;
129693 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
129694 l_balance_type_code VARCHAR2(1) :=NULL;
129695 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
129696
129697 --
129698 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
129699 --
129700
129701 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
129702 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
129703 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
129704 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
129705 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
129706 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
129707
129708 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
129709 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
129710 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
129711 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
129712 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
129713
129714 l_array_source_6 t_array_source_6;
129715 l_array_source_7 t_array_source_7;
129716 l_array_source_8 t_array_source_8;
129717 l_array_source_9 t_array_source_9;
129718 l_array_source_10 t_array_source_10;
129719 l_array_source_12 t_array_source_12;
129720
129721 l_array_source_1 t_array_source_1;
129722 l_array_source_2 t_array_source_2;
129723 l_array_source_3 t_array_source_3;
129724 l_array_source_5 t_array_source_5;
129725 l_array_source_11 t_array_source_11;
129726
129727 --
129728 CURSOR header_cur
129729 IS
129730 SELECT /*+ leading(xet) cardinality(xet,1) */
129731 -- Event Type Code: COSTREVAL
129732 -- Event Class Code: COSTREVAL
129733 xet.entity_id
129734 , xet.legal_entity_id
129735 , xet.entity_code
129736 , xet.transaction_number
129737 , xet.event_id
129741 , xet.event_date
129738 , xet.event_class_code
129739 , xet.event_type_code
129740 , xet.event_number
129742 , xet.transaction_date
129743 , xet.reference_num_1
129744 , xet.reference_num_2
129745 , xet.reference_num_3
129746 , xet.reference_num_4
129747 , xet.reference_char_1
129748 , xet.reference_char_2
129749 , xet.reference_char_3
129750 , xet.reference_char_4
129751 , xet.reference_date_1
129752 , xet.reference_date_2
129753 , xet.reference_date_3
129754 , xet.reference_date_4
129755 , xet.event_created_by
129756 , xet.budgetary_control_flag
129757 , h1.ENTITY_CODE source_6
129758 , h1.CURRENCY_CODE source_7
129759 , h1.CURRENCY_CONVERSION_DATE source_8
129760 , h1.CURRENCY_CONVERSION_RATE source_9
129761 , h1.CURRENCY_CONVERSION_TYPE source_10
129762 , h1.TRANSACTION_DATE source_12
129763 FROM xla_events_gt xet
129764 , GMF_XLA_EXTRACT_HEADERS h1
129765 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
129766 and xet.event_type_code = C_EVENT_TYPE_CODE
129767 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
129768
129769 ORDER BY event_id
129770 ;
129771
129772
129773 --
129774 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
129775 IS
129776 SELECT /*+ leading(xet) cardinality(xet,1) */
129777 -- Event Type Code: COSTREVAL
129778 -- Event Class Code: COSTREVAL
129779 xet.entity_id
129780 ,xet.legal_entity_id
129781 ,xet.entity_code
129782 ,xet.transaction_number
129783 ,xet.event_id
129784 ,xet.event_class_code
129785 ,xet.event_type_code
129786 ,xet.event_number
129787 ,xet.event_date
129788 ,xet.transaction_date
129789 ,xet.reference_num_1
129790 ,xet.reference_num_2
129791 ,xet.reference_num_3
129792 ,xet.reference_num_4
129793 ,xet.reference_char_1
129794 ,xet.reference_char_2
129795 ,xet.reference_char_3
129796 ,xet.reference_char_4
129797 ,xet.reference_date_1
129798 ,xet.reference_date_2
129799 ,xet.reference_date_3
129800 ,xet.reference_date_4
129801 ,xet.event_created_by
129802 ,xet.budgetary_control_flag , l2.LINE_NUMBER
129803 , l2.TRANSACTION_ACCOUNT_ID source_1
129804 , l2.JOURNAL_LINE_TYPE source_2
129805 , l2.ENTERED_AMOUNT source_3
129806 , l2.LINE_ID source_5
129807 , l2.ACCOUNTED_AMOUNT source_11
129808 FROM xla_events_gt xet
129809 , GMF_XLA_EXTRACT_LINES l2
129810 WHERE xet.event_id between x_first_event_id and x_last_event_id
129811 and xet.event_date between p_pad_start_date and p_pad_end_date
129812 and xet.event_type_code = C_EVENT_TYPE_CODE
129813 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
129814 ;
129815
129816 --
129817 BEGIN
129818 IF g_log_enabled THEN
129819 l_log_module := C_DEFAULT_MODULE||'.EventType_256';
129820 END IF;
129821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129822 trace
129823 (p_msg => 'BEGIN of EventType_256'
129824 ,p_level => C_LEVEL_PROCEDURE
129825 ,p_module => l_log_module);
129826 END IF;
129827
129828 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129829 trace
129830 (p_msg => 'p_application_id = '||p_application_id||
129831 ' - p_base_ledger_id = '||p_base_ledger_id||
129832 ' - p_target_ledger_id = '||p_target_ledger_id||
129833 ' - p_language = '||p_language||
129834 ' - p_currency_code = '||p_currency_code||
129835 ' - p_sla_ledger_id = '||p_sla_ledger_id
129836 ,p_level => C_LEVEL_STATEMENT
129837 ,p_module => l_log_module);
129838 END IF;
129839 --
129840 -- initialze arrays
129841 --
129842 g_array_event.DELETE;
129843 l_rec_array_event := l_null_rec_array_event;
129844 --
129845 --------------------------------------
129846 -- 4262811 Initialze MPA Line Number
129847 --------------------------------------
129848 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
129849
129850 --
129851
129852 --
129853 OPEN header_cur;
129854 --
129855 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
129856 trace
129857 (p_msg => 'SQL - FETCH header_cur'
129858 ,p_level => C_LEVEL_STATEMENT
129859 ,p_module => l_log_module);
129860 END IF;
129861 --
129862 LOOP
129863 FETCH header_cur BULK COLLECT INTO
129864 l_array_entity_id
129865 , l_array_legal_entity_id
129866 , l_array_entity_code
129867 , l_array_transaction_num
129868 , l_array_event_id
129869 , l_array_class_code
129870 , l_array_event_type
129871 , l_array_event_number
129872 , l_array_event_date
129873 , l_array_transaction_date
129874 , l_array_reference_num_1
129875 , l_array_reference_num_2
129876 , l_array_reference_num_3
129877 , l_array_reference_num_4
129878 , l_array_reference_char_1
129879 , l_array_reference_char_2
129880 , l_array_reference_char_3
129881 , l_array_reference_char_4
129882 , l_array_reference_date_1
129883 , l_array_reference_date_2
129884 , l_array_reference_date_3
129885 , l_array_reference_date_4
129886 , l_array_event_created_by
129887 , l_array_budgetary_control_flag
129888 , l_array_source_6
129889 , l_array_source_7
129893 , l_array_source_12
129890 , l_array_source_8
129891 , l_array_source_9
129892 , l_array_source_10
129894 LIMIT l_rows;
129895 --
129896 IF (C_LEVEL_EVENT >= g_log_level) THEN
129897 trace
129898 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
129899 ,p_level => C_LEVEL_EVENT
129900 ,p_module => l_log_module);
129901 END IF;
129902 --
129903 EXIT WHEN l_array_entity_id.COUNT = 0;
129904
129905 -- initialize arrays
129906 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
129907 XLA_AE_LINES_PKG.g_rec_lines := NULL;
129908
129909 --
129910 -- Bug 4458708
129911 --
129912 XLA_AE_LINES_PKG.g_LineNumber := 0;
129913
129914
129915 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
129916 g_last_hdr_idx := l_array_event_id.LAST;
129917 --
129918 -- loop for the headers. Each iteration is for each header extract row
129919 -- fetched in header cursor
129920 --
129921 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
129922
129923 --
129924 -- set event info as cache for other routines to refer event attributes
129925 --
129926 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
129927 (p_application_id => p_application_id
129928 ,p_primary_ledger_id => p_primary_ledger_id
129929 ,p_base_ledger_id => p_base_ledger_id
129930 ,p_target_ledger_id => p_target_ledger_id
129931 ,p_entity_id => l_array_entity_id(hdr_idx)
129932 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
129933 ,p_entity_code => l_array_entity_code(hdr_idx)
129934 ,p_transaction_num => l_array_transaction_num(hdr_idx)
129935 ,p_event_id => l_array_event_id(hdr_idx)
129936 ,p_event_class_code => l_array_class_code(hdr_idx)
129937 ,p_event_type_code => l_array_event_type(hdr_idx)
129938 ,p_event_number => l_array_event_number(hdr_idx)
129939 ,p_event_date => l_array_event_date(hdr_idx)
129940 ,p_transaction_date => l_array_transaction_date(hdr_idx)
129941 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
129942 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
129943 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
129944 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
129945 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
129946 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
129947 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
129948 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
129949 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
129950 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
129951 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
129952 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
129953 ,p_event_created_by => l_array_event_created_by(hdr_idx)
129954 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
129955
129956 --
129957 -- set the status of entry to C_VALID (0)
129958 --
129959 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
129960
129961 --
129962 -- initialize a row for ae header
129963 --
129964 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
129965
129966 l_event_id := l_array_event_id(hdr_idx);
129967
129968 --
129969 -- storing the hdr_idx for event. May be used by line cursor.
129970 --
129971 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
129972
129973 --
129974 -- store sources from header extract. This can be improved to
129975 -- store only those sources from header extract that may be used in lines
129976 --
129977
129978 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
129979 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
129980 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
129981 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
129982 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
129983 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
129984
129985 --
129986 -- initilaize the status of ae headers for diffrent balance types
129987 -- the status is initialised to C_NOT_CREATED (2)
129988 --
129989 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
129990 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
129991 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
129992
129993 --
129994 -- call api to validate and store accounting attributes for header
129995 --
129996
129997 ------------------------------------------------------------
129998 -- Accrual Reversal : to get date for Standard Source (NONE)
129999 ------------------------------------------------------------
130000 l_acc_rev_gl_date_source := NULL;
130001
130002 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
130003 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
130004
130005
130006 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
130010 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
130007
130008 XLA_AE_HEADER_PKG.SetJeCategoryName;
130009
130011 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
130012 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
130013 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
130014 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
130015
130016
130017 -- No header level analytical criteria
130018
130019 --
130020 --accounting attribute enhancement, bug 3612931
130021 --
130022 l_trx_reversal_source := SUBSTR(NULL, 1,30);
130023
130024 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
130025 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
130026
130027 xla_accounting_err_pkg.build_message
130028 (p_appli_s_name => 'XLA'
130029 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
130030 ,p_token_1 => 'ACCT_ATTR_NAME'
130031 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
130032 ,p_token_2 => 'PRODUCT_NAME'
130033 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
130034 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
130035 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
130036 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
130037
130038 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
130039 --
130040 -- following sets the accounting attributes needed to reverse
130041 -- accounting for a distributeion
130042 --
130043 xla_ae_lines_pkg.SetTrxReversalAttrs
130044 (p_event_id => l_event_id
130045 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
130046 ,p_trx_reversal_source => l_trx_reversal_source);
130047
130048 END IF;
130049
130050
130051 ----------------------------------------------------------------
130052 -- 4262811 - update the header statuses to invalid in need be
130053 ----------------------------------------------------------------
130054 --
130055 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
130056
130057
130058 -----------------------------------------------
130059 -- No accrual reversal for the event class/type
130060 -----------------------------------------------
130061 ----------------------------------------------------------------
130062
130063 --
130064 -- this ends the header loop iteration for one bulk fetch
130065 --
130066 END LOOP;
130067
130068 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
130069 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
130070
130071 --
130072 -- insert dummy rows into lines gt table that were created due to
130073 -- transaction reversals
130074 --
130075 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
130076 l_result := XLA_AE_LINES_PKG.InsertLines;
130077 END IF;
130078
130079 --
130080 -- reset the temp_line_num for each set of events fetched from header
130081 -- cursor rather than doing it for each new event in line cursor
130082 -- Bug 3939231
130083 --
130084 xla_ae_lines_pkg.g_temp_line_num := 0;
130085
130086
130087
130088 --
130089 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
130090 --
130091 --
130092 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130093
130094 trace
130095 (p_msg => 'SQL - FETCH line_cur'
130096 ,p_level => C_LEVEL_STATEMENT
130097 ,p_module => l_log_module);
130098
130099 END IF;
130100 --
130101 --
130102 LOOP
130103 --
130104 FETCH line_cur BULK COLLECT INTO
130105 l_array_entity_id
130106 , l_array_legal_entity_id
130107 , l_array_entity_code
130108 , l_array_transaction_num
130109 , l_array_event_id
130110 , l_array_class_code
130111 , l_array_event_type
130112 , l_array_event_number
130113 , l_array_event_date
130114 , l_array_transaction_date
130115 , l_array_reference_num_1
130116 , l_array_reference_num_2
130117 , l_array_reference_num_3
130118 , l_array_reference_num_4
130119 , l_array_reference_char_1
130120 , l_array_reference_char_2
130121 , l_array_reference_char_3
130122 , l_array_reference_char_4
130123 , l_array_reference_date_1
130124 , l_array_reference_date_2
130125 , l_array_reference_date_3
130126 , l_array_reference_date_4
130127 , l_array_event_created_by
130128 , l_array_budgetary_control_flag
130129 , l_array_extract_line_num
130130 , l_array_source_1
130131 , l_array_source_2
130132 , l_array_source_3
130133 , l_array_source_5
130134 , l_array_source_11
130135 LIMIT l_rows;
130136
130137 --
130138 IF (C_LEVEL_EVENT >= g_log_level) THEN
130139 trace
130140 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
130141 ,p_level => C_LEVEL_EVENT
130142 ,p_module => l_log_module);
130143 END IF;
130144 --
130145 EXIT WHEN l_array_entity_id.count = 0;
130146
130150 -- Bug 4458708
130147 XLA_AE_LINES_PKG.g_rec_lines := null;
130148
130149 --
130151 --
130152 XLA_AE_LINES_PKG.g_LineNumber := 0;
130153 --
130154 --
130155
130156 FOR Idx IN 1..l_array_event_id.count LOOP
130157 --
130158 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
130159 --
130160 l_event_id := l_array_event_id(idx); -- 5648433
130161
130162 --
130163 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
130164 --
130165
130166 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
130167 (g_array_event(l_event_id).array_value_num('header_index'))
130168 ,'N'
130169 ) <> 'Y'
130170 THEN
130171 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130172 trace
130173 (p_msg => 'Trancaction revesal option is not Y '
130174 ,p_level => C_LEVEL_STATEMENT
130175 ,p_module => l_log_module);
130176 END IF;
130177
130178 --
130179 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
130180 --
130181 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
130182 --
130183 -- set event info as cache for other routines to refer event attributes
130184 --
130185
130186 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
130187 l_previous_event_id := l_event_id;
130188
130189 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
130190 (p_application_id => p_application_id
130191 ,p_primary_ledger_id => p_primary_ledger_id
130192 ,p_base_ledger_id => p_base_ledger_id
130193 ,p_target_ledger_id => p_target_ledger_id
130194 ,p_entity_id => l_array_entity_id(Idx)
130195 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
130196 ,p_entity_code => l_array_entity_code(Idx)
130197 ,p_transaction_num => l_array_transaction_num(Idx)
130198 ,p_event_id => l_array_event_id(Idx)
130199 ,p_event_class_code => l_array_class_code(Idx)
130200 ,p_event_type_code => l_array_event_type(Idx)
130201 ,p_event_number => l_array_event_number(Idx)
130202 ,p_event_date => l_array_event_date(Idx)
130203 ,p_transaction_date => l_array_transaction_date(Idx)
130204 ,p_reference_num_1 => l_array_reference_num_1(Idx)
130205 ,p_reference_num_2 => l_array_reference_num_2(Idx)
130206 ,p_reference_num_3 => l_array_reference_num_3(Idx)
130207 ,p_reference_num_4 => l_array_reference_num_4(Idx)
130208 ,p_reference_char_1 => l_array_reference_char_1(Idx)
130209 ,p_reference_char_2 => l_array_reference_char_2(Idx)
130210 ,p_reference_char_3 => l_array_reference_char_3(Idx)
130211 ,p_reference_char_4 => l_array_reference_char_4(Idx)
130212 ,p_reference_date_1 => l_array_reference_date_1(Idx)
130213 ,p_reference_date_2 => l_array_reference_date_2(Idx)
130214 ,p_reference_date_3 => l_array_reference_date_3(Idx)
130215 ,p_reference_date_4 => l_array_reference_date_4(Idx)
130216 ,p_event_created_by => l_array_event_created_by(Idx)
130217 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
130218 --
130219 END IF;
130220
130221
130222
130223 --
130224 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
130225
130226 l_acct_reversal_source := SUBSTR(NULL, 1,30);
130227
130228 IF l_continue_with_lines THEN
130229 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
130230 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
130231
130232 xla_accounting_err_pkg.build_message
130233 (p_appli_s_name => 'XLA'
130234 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
130235 ,p_token_1 => 'LINE_NUMBER'
130236 ,p_value_1 => l_array_extract_line_num(Idx)
130237 ,p_token_2 => 'PRODUCT_NAME'
130238 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
130239 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
130240 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
130241 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
130242
130243 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
130244 --
130245 -- following sets the accounting attributes needed to reverse
130246 -- accounting for a distributeion
130247 --
130248
130249 --
130250 -- 5217187
130251 --
130252 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
130253 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
130254 g_array_event(l_event_id).array_value_num('header_index'));
130255 --
130256 --
130257
130258 -- No reversal code generated
130259
130260 xla_ae_lines_pkg.SetAcctReversalAttrs
130261 (p_event_id => l_event_id
130262 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
130263 ,p_calculate_acctd_flag => l_calculate_acctd_flag
130264 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
130265 END IF;
130266
130270 --
130267 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
130268 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
130269
130271 AcctLineType_146 (
130272 p_application_id => p_application_id
130273 ,p_event_id => l_event_id
130274 ,p_calculate_acctd_flag => l_calculate_acctd_flag
130275 ,p_calculate_g_l_flag => l_calculate_g_l_flag
130276 ,p_actual_flag => l_actual_flag
130277 ,p_balance_type_code => l_balance_type_code
130278 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
130279
130280 , p_source_1 => l_array_source_1(Idx)
130281 , p_source_2 => l_array_source_2(Idx)
130282 , p_source_3 => l_array_source_3(Idx)
130283 , p_source_5 => l_array_source_5(Idx)
130284 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
130285 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
130286 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
130287 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
130288 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
130289 , p_source_11 => l_array_source_11(Idx)
130290 );
130291 If(l_balance_type_code = 'A') THEN
130292 l_actual_gain_loss_ref := l_gain_or_loss_ref;
130293 END IF;
130294
130295 --
130296
130297
130298 --
130299 AcctLineType_193 (
130300 p_application_id => p_application_id
130301 ,p_event_id => l_event_id
130302 ,p_calculate_acctd_flag => l_calculate_acctd_flag
130303 ,p_calculate_g_l_flag => l_calculate_g_l_flag
130304 ,p_actual_flag => l_actual_flag
130305 ,p_balance_type_code => l_balance_type_code
130306 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
130307
130308 , p_source_1 => l_array_source_1(Idx)
130309 , p_source_2 => l_array_source_2(Idx)
130310 , p_source_3 => l_array_source_3(Idx)
130311 , p_source_5 => l_array_source_5(Idx)
130312 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
130313 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
130314 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
130315 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
130316 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
130317 , p_source_11 => l_array_source_11(Idx)
130318 );
130319 If(l_balance_type_code = 'A') THEN
130320 l_actual_gain_loss_ref := l_gain_or_loss_ref;
130321 END IF;
130322
130323 --
130324
130325 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
130326 -- or secondary ledger that has different currency with primary
130327 -- or alc that is calculated by sla
130328 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
130329 (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'))
130330
130331 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
130332 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
130333 AND (l_actual_flag = 'A')) THEN
130334 XLA_AE_LINES_PKG.CreateGainOrLossLines(
130335 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
130336 ,p_application_id => p_application_id
130337 ,p_amb_context_code => 'DEFAULT'
130338 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
130339 ,p_event_class_code => C_EVENT_CLASS_CODE
130340 ,p_event_type_code => C_EVENT_TYPE_CODE
130341
130342 ,p_gain_ccid => -1
130343 ,p_loss_ccid => -1
130344
130345 ,p_actual_flag => l_actual_flag
130346 ,p_enc_flag => null
130347 ,p_actual_g_l_ref => l_actual_gain_loss_ref
130348 ,p_enc_g_l_ref => null
130349 );
130350 END IF;
130351 END IF;
130352 END IF;
130353
130354 ELSE
130355 --
130356 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
130357 --
130358 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130359 trace
130360 (p_msg => 'Trancaction revesal option is Y'
130361 ,p_level => C_LEVEL_STATEMENT
130362 ,p_module => l_log_module);
130363 END IF;
130364 END IF;
130365
130366 END LOOP;
130367 l_result := XLA_AE_LINES_PKG.InsertLines ;
130368 end loop;
130369 close line_cur;
130370
130371
130372 --
130373 -- insert headers into xla_ae_headers_gt table
130374 --
130375 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
130376
130377 -- insert into errors table here.
130378
130379 END LOOP;
130380
130381 --
130382 -- 4865292
130383 --
130384 -- Compare g_hdr_extract_count with event count in
130385 -- CreateHeadersAndLines.
130386 --
130387 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
130388
130389 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130390 trace (p_msg => '# rows extracted from header extract objects '
130391 || ' (running total): '
130392 || g_hdr_extract_count
130393 ,p_level => C_LEVEL_STATEMENT
130394 ,p_module => l_log_module);
130395 END IF;
130396
130397 CLOSE header_cur;
130398 --
130399
130400 --
130401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130402 trace
130406 END IF;
130403 (p_msg => 'END of EventType_256'
130404 ,p_level => C_LEVEL_PROCEDURE
130405 ,p_module => l_log_module);
130407 --
130408 RETURN l_result;
130409 EXCEPTION
130410 WHEN xla_exceptions_pkg.application_exception THEN
130411
130412 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
130413
130414
130415 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
130416
130417 RAISE;
130418
130419 WHEN NO_DATA_FOUND THEN
130420
130421 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
130422 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
130423
130424 FOR header_record IN header_cur
130425 LOOP
130426 l_array_header_events(header_record.event_id) := header_record.event_id;
130427 END LOOP;
130428
130429 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
130430 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
130431
130432 fnd_file.put_line(fnd_file.LOG, ' ');
130433 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
130434 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
130435 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
130436
130437 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
130438 LOOP
130439 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
130440 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
130441 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
130442 END IF;
130443 END LOOP;
130444
130445 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
130446 fnd_file.put_line(fnd_file.LOG, ' ');
130447
130448
130449 xla_exceptions_pkg.raise_message
130450 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_256');
130451
130452
130453 WHEN OTHERS THEN
130454 xla_exceptions_pkg.raise_message
130455 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_256');
130456 END EventType_256;
130457 --
130458
130459 ---------------------------------------
130460 --
130461 -- PRIVATE PROCEDURE
130462 -- insert_sources_257
130463 --
130464 ----------------------------------------
130465 --
130466 PROCEDURE insert_sources_257(
130467 p_target_ledger_id IN NUMBER
130468 , p_language IN VARCHAR2
130469 , p_sla_ledger_id IN NUMBER
130470 , p_pad_start_date IN DATE
130471 , p_pad_end_date IN DATE
130472 )
130473 IS
130474
130475 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE';
130476 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
130477 p_apps_owner VARCHAR2(30);
130478 l_log_module VARCHAR2(240);
130479 BEGIN
130480 IF g_log_enabled THEN
130481 l_log_module := C_DEFAULT_MODULE||'.insert_sources_257';
130482 END IF;
130483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130484
130485 trace
130486 (p_msg => 'BEGIN of insert_sources_257'
130487 ,p_level => C_LEVEL_PROCEDURE
130488 ,p_module => l_log_module);
130489
130490 END IF;
130491
130492 -- select APPS owner
130493 SELECT oracle_username
130494 INTO p_apps_owner
130495 FROM fnd_oracle_userid
130496 WHERE read_only_flag = 'U'
130497 ;
130498
130499 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130500 trace
130501 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
130502 ' - p_language = '||p_language||
130503 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
130504 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
130505 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
130506 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
130507 ,p_level => C_LEVEL_STATEMENT
130508 ,p_module => l_log_module);
130509 END IF;
130510
130511
130512 --
130513 INSERT INTO xla_diag_sources --hdr1
130514 (
130515 event_id
130516 , ledger_id
130517 , sla_ledger_id
130518 , description_language
130519 , object_name
130520 , object_type_code
130521 , line_number
130522 , source_application_id
130523 , source_type_code
130524 , source_code
130525 , source_value
130526 , source_meaning
130527 , created_by
130528 , creation_date
130529 , last_update_date
130530 , last_updated_by
130531 , last_update_login
130532 , program_update_date
130533 , program_application_id
130534 , program_id
130535 , request_id
130536 )
130537 SELECT
130538 event_id
130539 , p_target_ledger_id
130540 , p_sla_ledger_id
130541 , p_language
130542 , object_name
130543 , object_type_code
130544 , line_number
130545 , source_application_id
130546 , source_type_code
130547 , source_code
130548 , SUBSTR(source_value ,1,1996)
130552 , TRUNC(SYSDATE)
130549 , SUBSTR(source_meaning,1,200)
130550 , xla_environment_pkg.g_Usr_Id
130551 , TRUNC(SYSDATE)
130553 , xla_environment_pkg.g_Usr_Id
130554 , xla_environment_pkg.g_Login_Id
130555 , TRUNC(SYSDATE)
130556 , xla_environment_pkg.g_Prog_Appl_Id
130557 , xla_environment_pkg.g_Prog_Id
130558 , xla_environment_pkg.g_Req_Id
130559 FROM (
130560 SELECT xet.event_id event_id
130561 , 0 line_number
130562 , CASE r
130563 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
130564 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
130565 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
130566 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
130567 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
130568 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
130569
130570 ELSE null
130571 END object_name
130572 , CASE r
130573 WHEN 1 THEN 'HEADER'
130574 WHEN 2 THEN 'HEADER'
130575 WHEN 3 THEN 'HEADER'
130576 WHEN 4 THEN 'HEADER'
130577 WHEN 5 THEN 'HEADER'
130578 WHEN 6 THEN 'HEADER'
130579
130580 ELSE null
130581 END object_type_code
130582 , CASE r
130583 WHEN 1 THEN '555'
130584 WHEN 2 THEN '555'
130585 WHEN 3 THEN '555'
130586 WHEN 4 THEN '555'
130587 WHEN 5 THEN '555'
130588 WHEN 6 THEN '555'
130589
130590 ELSE null
130591 END source_application_id
130592 , 'S' source_type_code
130593 , CASE r
130594 WHEN 1 THEN 'ENTITY_CODE'
130595 WHEN 2 THEN 'CURRENCY_CODE'
130596 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
130597 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
130598 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
130599 WHEN 6 THEN 'TRANSACTION_DATE'
130600
130601 ELSE null
130602 END source_code
130603 , CASE r
130604 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
130605 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
130606 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
130607 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
130608 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
130609 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
130610
130611 ELSE null
130612 END source_value
130613 , CASE r
130614 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
130615 1010186
130616 ,TO_CHAR(h1.CURRENCY_CODE)
130617 ,'CURRENCY_CODE'
130618 ,'S'
130619 ,555)
130620
130621 ELSE null
130622 END source_meaning
130623 FROM xla_events_gt xet
130624 , GMF_XLA_EXTRACT_HEADERS h1
130625 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
130626 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
130627 AND xet.event_type_code = C_EVENT_TYPE_CODE
130628 AND h1.event_id = xet.event_id
130629
130630 )
130631 ;
130632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130633
130634 trace
130635 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
130636 ,p_level => C_LEVEL_STATEMENT
130637 ,p_module => l_log_module);
130638
130639 END IF;
130640 --
130641
130642
130643
130644 --
130645 INSERT INTO xla_diag_sources --line1
130646 (
130647 event_id
130648 , ledger_id
130649 , sla_ledger_id
130650 , description_language
130651 , object_name
130652 , object_type_code
130653 , line_number
130654 , source_application_id
130655 , source_type_code
130656 , source_code
130657 , source_value
130658 , source_meaning
130659 , created_by
130660 , creation_date
130661 , last_update_date
130662 , last_updated_by
130663 , last_update_login
130664 , program_update_date
130665 , program_application_id
130666 , program_id
130667 , request_id
130668 )
130669 SELECT event_id
130670 , p_target_ledger_id
130671 , p_sla_ledger_id
130672 , p_language
130673 , object_name
130674 , object_type_code
130675 , line_number
130676 , source_application_id
130677 , source_type_code
130678 , source_code
130679 , SUBSTR(source_value,1,1996)
130680 , SUBSTR(source_meaning,1,200)
130681 , xla_environment_pkg.g_Usr_Id
130682 , TRUNC(SYSDATE)
130683 , TRUNC(SYSDATE)
130684 , xla_environment_pkg.g_Usr_Id
130685 , xla_environment_pkg.g_Login_Id
130686 , TRUNC(SYSDATE)
130687 , xla_environment_pkg.g_Prog_Appl_Id
130688 , xla_environment_pkg.g_Prog_Id
130692 , l2.line_number line_number
130689 , xla_environment_pkg.g_Req_Id
130690 FROM (
130691 SELECT xet.event_id event_id
130693 , CASE r
130694 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
130695 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
130696 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
130697 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
130698 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
130699
130700 ELSE null
130701 END object_name
130702 , CASE r
130703 WHEN 1 THEN 'LINE'
130704 WHEN 2 THEN 'LINE'
130705 WHEN 3 THEN 'LINE'
130706 WHEN 4 THEN 'LINE'
130707 WHEN 5 THEN 'LINE'
130708
130709 ELSE null
130710 END object_type_code
130711 , CASE r
130712 WHEN 1 THEN '555'
130713 WHEN 2 THEN '555'
130714 WHEN 3 THEN '555'
130715 WHEN 4 THEN '555'
130716 WHEN 5 THEN '555'
130717
130718 ELSE null
130719 END source_application_id
130720 , 'S' source_type_code
130721 , CASE r
130722 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
130723 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
130724 WHEN 3 THEN 'ENTERED_AMOUNT'
130725 WHEN 4 THEN 'LINE_ID'
130726 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
130727
130728 ELSE null
130729 END source_code
130730 , CASE r
130731 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
130732 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
130733 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
130734 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
130735 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
130736
130737 ELSE null
130738 END source_value
130739 , null source_meaning
130740 FROM xla_events_gt xet
130741 , GMF_XLA_EXTRACT_LINES l2
130742 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
130743 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
130744 AND xet.event_type_code = C_EVENT_TYPE_CODE
130745 AND l2.event_id = xet.event_id
130746
130747 )
130748 ;
130749 --
130750 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
130751
130752 trace
130753 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
130754 ,p_level => C_LEVEL_STATEMENT
130755 ,p_module => l_log_module);
130756
130757 END IF;
130758
130759
130760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130761 trace
130762 (p_msg => 'END of insert_sources_257'
130763 ,p_level => C_LEVEL_PROCEDURE
130764 ,p_module => l_log_module);
130765 END IF;
130766 EXCEPTION
130767 WHEN xla_exceptions_pkg.application_exception THEN
130768 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
130769 trace
130770 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
130771 ,p_level => C_LEVEL_EXCEPTION
130772 ,p_module => l_log_module);
130773 END IF;
130774 RAISE;
130775 WHEN OTHERS THEN
130776 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
130777 trace
130778 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
130779 ,p_level => C_LEVEL_EXCEPTION
130780 ,p_module => l_log_module);
130781 END IF;
130782 xla_exceptions_pkg.raise_message
130783 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_257');
130784 END insert_sources_257;
130785 --
130786
130787 ---------------------------------------
130788 --
130789 -- PRIVATE FUNCTION
130790 -- EventType_257
130791 --
130792 ----------------------------------------
130793 --
130794 FUNCTION EventType_257
130795 (p_application_id IN NUMBER
130796 ,p_base_ledger_id IN NUMBER
130797 ,p_target_ledger_id IN NUMBER
130798 ,p_language IN VARCHAR2
130799 ,p_currency_code IN VARCHAR2
130800 ,p_sla_ledger_id IN NUMBER
130801 ,p_pad_start_date IN DATE
130802 ,p_pad_end_date IN DATE
130803 ,p_primary_ledger_id IN NUMBER)
130804 RETURN BOOLEAN IS
130805 --
130806 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE';
130807 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
130808
130809 l_calculate_acctd_flag VARCHAR2(1) :='N';
130810 l_calculate_g_l_flag VARCHAR2(1) :='N';
130811 --
130812 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130813 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130814 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
130815 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130816 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130817 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
130821 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130818 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
130819 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130820 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130822 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130823 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130824 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130825 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
130826 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130827 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130828 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130829 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
130830 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130831 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130832 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130833 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
130834 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
130835 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
130836 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
130837 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
130838
130839 l_event_id NUMBER;
130840 l_previous_event_id NUMBER;
130841 l_first_event_id NUMBER;
130842 l_last_event_id NUMBER;
130843
130844 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
130845 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
130846 --
130847 --
130848 l_result BOOLEAN := TRUE;
130849 l_rows NUMBER := 1000;
130850 l_event_type_name VARCHAR2(80) := 'Deliver to Expense';
130851 l_event_class_name VARCHAR2(80) := 'Receiving';
130852 l_description VARCHAR2(4000);
130853 l_transaction_reversal NUMBER;
130854 l_ae_header_id NUMBER;
130855 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
130856 l_log_module VARCHAR2(240);
130857 --
130858 l_acct_reversal_source VARCHAR2(30);
130859 l_trx_reversal_source VARCHAR2(30);
130860
130861 l_continue_with_lines BOOLEAN := TRUE;
130862 --
130863 l_acc_rev_gl_date_source DATE; -- 4262811
130864 --
130865 type t_array_event_id is table of number index by binary_integer;
130866
130867 l_rec_array_event t_rec_array_event;
130868 l_null_rec_array_event t_rec_array_event;
130869 l_array_ae_header_id xla_number_array_type;
130870 l_actual_flag VARCHAR2(1) := NULL;
130871 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
130872 l_balance_type_code VARCHAR2(1) :=NULL;
130873 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
130874
130875 --
130876 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
130877 --
130878
130879 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
130880 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
130881 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
130882 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
130883 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
130884 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
130885
130886 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
130887 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
130888 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
130889 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
130890 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
130891
130892 l_array_source_6 t_array_source_6;
130893 l_array_source_7 t_array_source_7;
130894 l_array_source_8 t_array_source_8;
130895 l_array_source_9 t_array_source_9;
130896 l_array_source_10 t_array_source_10;
130897 l_array_source_12 t_array_source_12;
130898
130899 l_array_source_1 t_array_source_1;
130900 l_array_source_2 t_array_source_2;
130901 l_array_source_3 t_array_source_3;
130902 l_array_source_5 t_array_source_5;
130903 l_array_source_11 t_array_source_11;
130904
130905 --
130906 CURSOR header_cur
130907 IS
130908 SELECT /*+ leading(xet) cardinality(xet,1) */
130909 -- Event Type Code: DELIVER_EXPENSE
130910 -- Event Class Code: RECEIVE
130911 xet.entity_id
130912 , xet.legal_entity_id
130913 , xet.entity_code
130914 , xet.transaction_number
130915 , xet.event_id
130916 , xet.event_class_code
130917 , xet.event_type_code
130918 , xet.event_number
130922 , xet.reference_num_2
130919 , xet.event_date
130920 , xet.transaction_date
130921 , xet.reference_num_1
130923 , xet.reference_num_3
130924 , xet.reference_num_4
130925 , xet.reference_char_1
130926 , xet.reference_char_2
130927 , xet.reference_char_3
130928 , xet.reference_char_4
130929 , xet.reference_date_1
130930 , xet.reference_date_2
130931 , xet.reference_date_3
130932 , xet.reference_date_4
130933 , xet.event_created_by
130934 , xet.budgetary_control_flag
130935 , h1.ENTITY_CODE source_6
130936 , h1.CURRENCY_CODE source_7
130937 , h1.CURRENCY_CONVERSION_DATE source_8
130938 , h1.CURRENCY_CONVERSION_RATE source_9
130939 , h1.CURRENCY_CONVERSION_TYPE source_10
130940 , h1.TRANSACTION_DATE source_12
130941 FROM xla_events_gt xet
130942 , GMF_XLA_EXTRACT_HEADERS h1
130943 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
130944 and xet.event_type_code = C_EVENT_TYPE_CODE
130945 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
130946
130947 ORDER BY event_id
130948 ;
130949
130950
130951 --
130952 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
130953 IS
130954 SELECT /*+ leading(xet) cardinality(xet,1) */
130955 -- Event Type Code: DELIVER_EXPENSE
130956 -- Event Class Code: RECEIVE
130957 xet.entity_id
130958 ,xet.legal_entity_id
130959 ,xet.entity_code
130960 ,xet.transaction_number
130961 ,xet.event_id
130962 ,xet.event_class_code
130963 ,xet.event_type_code
130964 ,xet.event_number
130965 ,xet.event_date
130966 ,xet.transaction_date
130967 ,xet.reference_num_1
130968 ,xet.reference_num_2
130969 ,xet.reference_num_3
130970 ,xet.reference_num_4
130971 ,xet.reference_char_1
130972 ,xet.reference_char_2
130973 ,xet.reference_char_3
130974 ,xet.reference_char_4
130975 ,xet.reference_date_1
130976 ,xet.reference_date_2
130977 ,xet.reference_date_3
130978 ,xet.reference_date_4
130979 ,xet.event_created_by
130980 ,xet.budgetary_control_flag , l2.LINE_NUMBER
130981 , l2.TRANSACTION_ACCOUNT_ID source_1
130982 , l2.JOURNAL_LINE_TYPE source_2
130983 , l2.ENTERED_AMOUNT source_3
130984 , l2.LINE_ID source_5
130985 , l2.ACCOUNTED_AMOUNT source_11
130986 FROM xla_events_gt xet
130987 , GMF_XLA_EXTRACT_LINES l2
130988 WHERE xet.event_id between x_first_event_id and x_last_event_id
130989 and xet.event_date between p_pad_start_date and p_pad_end_date
130990 and xet.event_type_code = C_EVENT_TYPE_CODE
130991 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
130992 ;
130993
130994 --
130995 BEGIN
130996 IF g_log_enabled THEN
130997 l_log_module := C_DEFAULT_MODULE||'.EventType_257';
130998 END IF;
130999 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131000 trace
131001 (p_msg => 'BEGIN of EventType_257'
131002 ,p_level => C_LEVEL_PROCEDURE
131003 ,p_module => l_log_module);
131004 END IF;
131005
131006 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131007 trace
131008 (p_msg => 'p_application_id = '||p_application_id||
131009 ' - p_base_ledger_id = '||p_base_ledger_id||
131010 ' - p_target_ledger_id = '||p_target_ledger_id||
131011 ' - p_language = '||p_language||
131012 ' - p_currency_code = '||p_currency_code||
131013 ' - p_sla_ledger_id = '||p_sla_ledger_id
131014 ,p_level => C_LEVEL_STATEMENT
131015 ,p_module => l_log_module);
131016 END IF;
131017 --
131018 -- initialze arrays
131019 --
131020 g_array_event.DELETE;
131021 l_rec_array_event := l_null_rec_array_event;
131022 --
131023 --------------------------------------
131024 -- 4262811 Initialze MPA Line Number
131025 --------------------------------------
131026 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
131027
131028 --
131029
131030 --
131031 OPEN header_cur;
131032 --
131033 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131034 trace
131035 (p_msg => 'SQL - FETCH header_cur'
131036 ,p_level => C_LEVEL_STATEMENT
131037 ,p_module => l_log_module);
131038 END IF;
131039 --
131040 LOOP
131041 FETCH header_cur BULK COLLECT INTO
131042 l_array_entity_id
131043 , l_array_legal_entity_id
131044 , l_array_entity_code
131045 , l_array_transaction_num
131046 , l_array_event_id
131047 , l_array_class_code
131048 , l_array_event_type
131049 , l_array_event_number
131050 , l_array_event_date
131051 , l_array_transaction_date
131052 , l_array_reference_num_1
131053 , l_array_reference_num_2
131054 , l_array_reference_num_3
131055 , l_array_reference_num_4
131056 , l_array_reference_char_1
131057 , l_array_reference_char_2
131058 , l_array_reference_char_3
131059 , l_array_reference_char_4
131060 , l_array_reference_date_1
131061 , l_array_reference_date_2
131062 , l_array_reference_date_3
131063 , l_array_reference_date_4
131064 , l_array_event_created_by
131065 , l_array_budgetary_control_flag
131066 , l_array_source_6
131067 , l_array_source_7
131068 , l_array_source_8
131069 , l_array_source_9
131073 --
131070 , l_array_source_10
131071 , l_array_source_12
131072 LIMIT l_rows;
131074 IF (C_LEVEL_EVENT >= g_log_level) THEN
131075 trace
131076 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
131077 ,p_level => C_LEVEL_EVENT
131078 ,p_module => l_log_module);
131079 END IF;
131080 --
131081 EXIT WHEN l_array_entity_id.COUNT = 0;
131082
131083 -- initialize arrays
131084 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
131085 XLA_AE_LINES_PKG.g_rec_lines := NULL;
131086
131087 --
131088 -- Bug 4458708
131089 --
131090 XLA_AE_LINES_PKG.g_LineNumber := 0;
131091
131092
131093 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
131094 g_last_hdr_idx := l_array_event_id.LAST;
131095 --
131096 -- loop for the headers. Each iteration is for each header extract row
131097 -- fetched in header cursor
131098 --
131099 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
131100
131101 --
131102 -- set event info as cache for other routines to refer event attributes
131103 --
131104 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
131105 (p_application_id => p_application_id
131106 ,p_primary_ledger_id => p_primary_ledger_id
131107 ,p_base_ledger_id => p_base_ledger_id
131108 ,p_target_ledger_id => p_target_ledger_id
131109 ,p_entity_id => l_array_entity_id(hdr_idx)
131110 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
131111 ,p_entity_code => l_array_entity_code(hdr_idx)
131112 ,p_transaction_num => l_array_transaction_num(hdr_idx)
131113 ,p_event_id => l_array_event_id(hdr_idx)
131114 ,p_event_class_code => l_array_class_code(hdr_idx)
131115 ,p_event_type_code => l_array_event_type(hdr_idx)
131116 ,p_event_number => l_array_event_number(hdr_idx)
131117 ,p_event_date => l_array_event_date(hdr_idx)
131118 ,p_transaction_date => l_array_transaction_date(hdr_idx)
131119 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
131120 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
131121 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
131122 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
131123 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
131124 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
131125 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
131126 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
131127 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
131128 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
131129 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
131130 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
131131 ,p_event_created_by => l_array_event_created_by(hdr_idx)
131132 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
131133
131134 --
131135 -- set the status of entry to C_VALID (0)
131136 --
131137 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
131138
131139 --
131140 -- initialize a row for ae header
131141 --
131142 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
131143
131144 l_event_id := l_array_event_id(hdr_idx);
131145
131146 --
131147 -- storing the hdr_idx for event. May be used by line cursor.
131148 --
131149 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
131150
131151 --
131152 -- store sources from header extract. This can be improved to
131153 -- store only those sources from header extract that may be used in lines
131154 --
131155
131156 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
131157 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
131158 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
131159 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
131160 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
131161 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
131162
131163 --
131164 -- initilaize the status of ae headers for diffrent balance types
131165 -- the status is initialised to C_NOT_CREATED (2)
131166 --
131167 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
131168 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
131169 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
131170
131171 --
131172 -- call api to validate and store accounting attributes for header
131173 --
131174
131175 ------------------------------------------------------------
131176 -- Accrual Reversal : to get date for Standard Source (NONE)
131177 ------------------------------------------------------------
131178 l_acc_rev_gl_date_source := NULL;
131179
131180 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
131181 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
131182
131183
131184 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
131185
131186 XLA_AE_HEADER_PKG.SetJeCategoryName;
131187
131191 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
131188 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
131189 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
131190 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
131192 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
131193
131194
131195 -- No header level analytical criteria
131196
131197 --
131198 --accounting attribute enhancement, bug 3612931
131199 --
131200 l_trx_reversal_source := SUBSTR(NULL, 1,30);
131201
131202 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
131203 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
131204
131205 xla_accounting_err_pkg.build_message
131206 (p_appli_s_name => 'XLA'
131207 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
131208 ,p_token_1 => 'ACCT_ATTR_NAME'
131209 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
131210 ,p_token_2 => 'PRODUCT_NAME'
131211 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
131212 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
131213 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
131214 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
131215
131216 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
131217 --
131218 -- following sets the accounting attributes needed to reverse
131219 -- accounting for a distributeion
131220 --
131221 xla_ae_lines_pkg.SetTrxReversalAttrs
131222 (p_event_id => l_event_id
131223 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
131224 ,p_trx_reversal_source => l_trx_reversal_source);
131225
131226 END IF;
131227
131228
131229 ----------------------------------------------------------------
131230 -- 4262811 - update the header statuses to invalid in need be
131231 ----------------------------------------------------------------
131232 --
131233 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
131234
131235
131236 -----------------------------------------------
131237 -- No accrual reversal for the event class/type
131238 -----------------------------------------------
131239 ----------------------------------------------------------------
131240
131241 --
131242 -- this ends the header loop iteration for one bulk fetch
131243 --
131244 END LOOP;
131245
131246 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
131247 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
131248
131249 --
131250 -- insert dummy rows into lines gt table that were created due to
131251 -- transaction reversals
131252 --
131253 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
131254 l_result := XLA_AE_LINES_PKG.InsertLines;
131255 END IF;
131256
131257 --
131258 -- reset the temp_line_num for each set of events fetched from header
131259 -- cursor rather than doing it for each new event in line cursor
131260 -- Bug 3939231
131261 --
131262 xla_ae_lines_pkg.g_temp_line_num := 0;
131263
131264
131265
131266 --
131267 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
131268 --
131269 --
131270 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131271
131272 trace
131273 (p_msg => 'SQL - FETCH line_cur'
131274 ,p_level => C_LEVEL_STATEMENT
131275 ,p_module => l_log_module);
131276
131277 END IF;
131278 --
131279 --
131280 LOOP
131281 --
131282 FETCH line_cur BULK COLLECT INTO
131283 l_array_entity_id
131284 , l_array_legal_entity_id
131285 , l_array_entity_code
131286 , l_array_transaction_num
131287 , l_array_event_id
131288 , l_array_class_code
131289 , l_array_event_type
131290 , l_array_event_number
131291 , l_array_event_date
131292 , l_array_transaction_date
131293 , l_array_reference_num_1
131294 , l_array_reference_num_2
131295 , l_array_reference_num_3
131296 , l_array_reference_num_4
131297 , l_array_reference_char_1
131298 , l_array_reference_char_2
131299 , l_array_reference_char_3
131300 , l_array_reference_char_4
131301 , l_array_reference_date_1
131302 , l_array_reference_date_2
131303 , l_array_reference_date_3
131304 , l_array_reference_date_4
131305 , l_array_event_created_by
131306 , l_array_budgetary_control_flag
131307 , l_array_extract_line_num
131308 , l_array_source_1
131309 , l_array_source_2
131310 , l_array_source_3
131311 , l_array_source_5
131312 , l_array_source_11
131313 LIMIT l_rows;
131314
131315 --
131316 IF (C_LEVEL_EVENT >= g_log_level) THEN
131317 trace
131318 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
131319 ,p_level => C_LEVEL_EVENT
131320 ,p_module => l_log_module);
131321 END IF;
131322 --
131323 EXIT WHEN l_array_entity_id.count = 0;
131324
131325 XLA_AE_LINES_PKG.g_rec_lines := null;
131326
131327 --
131331 --
131328 -- Bug 4458708
131329 --
131330 XLA_AE_LINES_PKG.g_LineNumber := 0;
131332 --
131333
131334 FOR Idx IN 1..l_array_event_id.count LOOP
131335 --
131336 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
131337 --
131338 l_event_id := l_array_event_id(idx); -- 5648433
131339
131340 --
131341 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
131342 --
131343
131344 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
131345 (g_array_event(l_event_id).array_value_num('header_index'))
131346 ,'N'
131347 ) <> 'Y'
131348 THEN
131349 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131350 trace
131351 (p_msg => 'Trancaction revesal option is not Y '
131352 ,p_level => C_LEVEL_STATEMENT
131353 ,p_module => l_log_module);
131354 END IF;
131355
131356 --
131357 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
131358 --
131359 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
131360 --
131361 -- set event info as cache for other routines to refer event attributes
131362 --
131363
131364 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
131365 l_previous_event_id := l_event_id;
131366
131367 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
131368 (p_application_id => p_application_id
131369 ,p_primary_ledger_id => p_primary_ledger_id
131370 ,p_base_ledger_id => p_base_ledger_id
131371 ,p_target_ledger_id => p_target_ledger_id
131372 ,p_entity_id => l_array_entity_id(Idx)
131373 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
131374 ,p_entity_code => l_array_entity_code(Idx)
131375 ,p_transaction_num => l_array_transaction_num(Idx)
131376 ,p_event_id => l_array_event_id(Idx)
131377 ,p_event_class_code => l_array_class_code(Idx)
131378 ,p_event_type_code => l_array_event_type(Idx)
131379 ,p_event_number => l_array_event_number(Idx)
131380 ,p_event_date => l_array_event_date(Idx)
131381 ,p_transaction_date => l_array_transaction_date(Idx)
131382 ,p_reference_num_1 => l_array_reference_num_1(Idx)
131383 ,p_reference_num_2 => l_array_reference_num_2(Idx)
131384 ,p_reference_num_3 => l_array_reference_num_3(Idx)
131385 ,p_reference_num_4 => l_array_reference_num_4(Idx)
131386 ,p_reference_char_1 => l_array_reference_char_1(Idx)
131387 ,p_reference_char_2 => l_array_reference_char_2(Idx)
131388 ,p_reference_char_3 => l_array_reference_char_3(Idx)
131389 ,p_reference_char_4 => l_array_reference_char_4(Idx)
131390 ,p_reference_date_1 => l_array_reference_date_1(Idx)
131391 ,p_reference_date_2 => l_array_reference_date_2(Idx)
131392 ,p_reference_date_3 => l_array_reference_date_3(Idx)
131393 ,p_reference_date_4 => l_array_reference_date_4(Idx)
131394 ,p_event_created_by => l_array_event_created_by(Idx)
131395 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
131396 --
131397 END IF;
131398
131399
131400
131401 --
131402 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
131403
131404 l_acct_reversal_source := SUBSTR(NULL, 1,30);
131405
131406 IF l_continue_with_lines THEN
131407 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
131408 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
131409
131410 xla_accounting_err_pkg.build_message
131411 (p_appli_s_name => 'XLA'
131412 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
131413 ,p_token_1 => 'LINE_NUMBER'
131414 ,p_value_1 => l_array_extract_line_num(Idx)
131415 ,p_token_2 => 'PRODUCT_NAME'
131416 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
131417 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
131418 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
131419 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
131420
131421 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
131422 --
131423 -- following sets the accounting attributes needed to reverse
131424 -- accounting for a distributeion
131425 --
131426
131427 --
131428 -- 5217187
131429 --
131430 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
131431 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
131432 g_array_event(l_event_id).array_value_num('header_index'));
131433 --
131434 --
131435
131436 -- No reversal code generated
131437
131438 xla_ae_lines_pkg.SetAcctReversalAttrs
131439 (p_event_id => l_event_id
131440 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
131441 ,p_calculate_acctd_flag => l_calculate_acctd_flag
131442 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
131443 END IF;
131444
131445 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
131449 AcctLineType_97 (
131446 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
131447
131448 --
131450 p_application_id => p_application_id
131451 ,p_event_id => l_event_id
131452 ,p_calculate_acctd_flag => l_calculate_acctd_flag
131453 ,p_calculate_g_l_flag => l_calculate_g_l_flag
131454 ,p_actual_flag => l_actual_flag
131455 ,p_balance_type_code => l_balance_type_code
131456 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
131457
131458 , p_source_1 => l_array_source_1(Idx)
131459 , p_source_2 => l_array_source_2(Idx)
131460 , p_source_3 => l_array_source_3(Idx)
131461 , p_source_5 => l_array_source_5(Idx)
131462 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
131463 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
131464 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
131465 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
131466 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
131467 , p_source_11 => l_array_source_11(Idx)
131468 );
131469 If(l_balance_type_code = 'A') THEN
131470 l_actual_gain_loss_ref := l_gain_or_loss_ref;
131471 END IF;
131472
131473 --
131474
131475
131476 --
131477 AcctLineType_199 (
131478 p_application_id => p_application_id
131479 ,p_event_id => l_event_id
131480 ,p_calculate_acctd_flag => l_calculate_acctd_flag
131481 ,p_calculate_g_l_flag => l_calculate_g_l_flag
131482 ,p_actual_flag => l_actual_flag
131483 ,p_balance_type_code => l_balance_type_code
131484 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
131485
131486 , p_source_1 => l_array_source_1(Idx)
131487 , p_source_2 => l_array_source_2(Idx)
131488 , p_source_3 => l_array_source_3(Idx)
131489 , p_source_5 => l_array_source_5(Idx)
131490 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
131491 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
131492 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
131493 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
131494 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
131495 , p_source_11 => l_array_source_11(Idx)
131496 );
131497 If(l_balance_type_code = 'A') THEN
131498 l_actual_gain_loss_ref := l_gain_or_loss_ref;
131499 END IF;
131500
131501 --
131502
131503 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
131504 -- or secondary ledger that has different currency with primary
131505 -- or alc that is calculated by sla
131506 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
131507 (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'))
131508
131509 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
131510 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
131511 AND (l_actual_flag = 'A')) THEN
131512 XLA_AE_LINES_PKG.CreateGainOrLossLines(
131513 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
131514 ,p_application_id => p_application_id
131515 ,p_amb_context_code => 'DEFAULT'
131516 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
131517 ,p_event_class_code => C_EVENT_CLASS_CODE
131518 ,p_event_type_code => C_EVENT_TYPE_CODE
131519
131520 ,p_gain_ccid => -1
131521 ,p_loss_ccid => -1
131522
131523 ,p_actual_flag => l_actual_flag
131524 ,p_enc_flag => null
131525 ,p_actual_g_l_ref => l_actual_gain_loss_ref
131526 ,p_enc_g_l_ref => null
131527 );
131528 END IF;
131529 END IF;
131530 END IF;
131531
131532 ELSE
131533 --
131534 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
131535 --
131536 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131537 trace
131538 (p_msg => 'Trancaction revesal option is Y'
131539 ,p_level => C_LEVEL_STATEMENT
131540 ,p_module => l_log_module);
131541 END IF;
131542 END IF;
131543
131544 END LOOP;
131545 l_result := XLA_AE_LINES_PKG.InsertLines ;
131546 end loop;
131547 close line_cur;
131548
131549
131550 --
131551 -- insert headers into xla_ae_headers_gt table
131552 --
131553 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
131554
131555 -- insert into errors table here.
131556
131557 END LOOP;
131558
131559 --
131560 -- 4865292
131561 --
131562 -- Compare g_hdr_extract_count with event count in
131563 -- CreateHeadersAndLines.
131564 --
131565 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
131566
131567 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131568 trace (p_msg => '# rows extracted from header extract objects '
131569 || ' (running total): '
131570 || g_hdr_extract_count
131571 ,p_level => C_LEVEL_STATEMENT
131572 ,p_module => l_log_module);
131573 END IF;
131574
131575 CLOSE header_cur;
131576 --
131577
131578 --
131579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131580 trace
131581 (p_msg => 'END of EventType_257'
131585 --
131582 ,p_level => C_LEVEL_PROCEDURE
131583 ,p_module => l_log_module);
131584 END IF;
131586 RETURN l_result;
131587 EXCEPTION
131588 WHEN xla_exceptions_pkg.application_exception THEN
131589
131590 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
131591
131592
131593 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
131594
131595 RAISE;
131596
131597 WHEN NO_DATA_FOUND THEN
131598
131599 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
131600 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
131601
131602 FOR header_record IN header_cur
131603 LOOP
131604 l_array_header_events(header_record.event_id) := header_record.event_id;
131605 END LOOP;
131606
131607 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
131608 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
131609
131610 fnd_file.put_line(fnd_file.LOG, ' ');
131611 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
131612 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
131613 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
131614
131615 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
131616 LOOP
131617 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
131618 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
131619 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
131620 END IF;
131621 END LOOP;
131622
131623 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
131624 fnd_file.put_line(fnd_file.LOG, ' ');
131625
131626
131627 xla_exceptions_pkg.raise_message
131628 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_257');
131629
131630
131631 WHEN OTHERS THEN
131632 xla_exceptions_pkg.raise_message
131633 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_257');
131634 END EventType_257;
131635 --
131636
131637 ---------------------------------------
131638 --
131639 -- PRIVATE PROCEDURE
131640 -- insert_sources_258
131641 --
131642 ----------------------------------------
131643 --
131644 PROCEDURE insert_sources_258(
131645 p_target_ledger_id IN NUMBER
131646 , p_language IN VARCHAR2
131647 , p_sla_ledger_id IN NUMBER
131648 , p_pad_start_date IN DATE
131649 , p_pad_end_date IN DATE
131650 )
131651 IS
131652
131653 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
131654 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
131655 p_apps_owner VARCHAR2(30);
131656 l_log_module VARCHAR2(240);
131657 BEGIN
131658 IF g_log_enabled THEN
131659 l_log_module := C_DEFAULT_MODULE||'.insert_sources_258';
131660 END IF;
131661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131662
131663 trace
131664 (p_msg => 'BEGIN of insert_sources_258'
131665 ,p_level => C_LEVEL_PROCEDURE
131666 ,p_module => l_log_module);
131667
131668 END IF;
131669
131670 -- select APPS owner
131671 SELECT oracle_username
131672 INTO p_apps_owner
131673 FROM fnd_oracle_userid
131674 WHERE read_only_flag = 'U'
131675 ;
131676
131677 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131678 trace
131679 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
131680 ' - p_language = '||p_language||
131681 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
131682 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
131683 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
131684 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
131685 ,p_level => C_LEVEL_STATEMENT
131686 ,p_module => l_log_module);
131687 END IF;
131688
131689
131690 --
131691 INSERT INTO xla_diag_sources --hdr1
131692 (
131693 event_id
131694 , ledger_id
131695 , sla_ledger_id
131696 , description_language
131697 , object_name
131698 , object_type_code
131699 , line_number
131700 , source_application_id
131701 , source_type_code
131702 , source_code
131703 , source_value
131704 , source_meaning
131705 , created_by
131706 , creation_date
131707 , last_update_date
131708 , last_updated_by
131709 , last_update_login
131710 , program_update_date
131711 , program_application_id
131712 , program_id
131713 , request_id
131714 )
131715 SELECT
131716 event_id
131717 , p_target_ledger_id
131718 , p_sla_ledger_id
131719 , p_language
131720 , object_name
131721 , object_type_code
131722 , line_number
131723 , source_application_id
131724 , source_type_code
131725 , source_code
131726 , SUBSTR(source_value ,1,1996)
131730 , TRUNC(SYSDATE)
131727 , SUBSTR(source_meaning,1,200)
131728 , xla_environment_pkg.g_Usr_Id
131729 , TRUNC(SYSDATE)
131731 , xla_environment_pkg.g_Usr_Id
131732 , xla_environment_pkg.g_Login_Id
131733 , TRUNC(SYSDATE)
131734 , xla_environment_pkg.g_Prog_Appl_Id
131735 , xla_environment_pkg.g_Prog_Id
131736 , xla_environment_pkg.g_Req_Id
131737 FROM (
131738 SELECT xet.event_id event_id
131739 , 0 line_number
131740 , CASE r
131741 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
131742 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
131743 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
131744 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
131745 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
131746 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
131747
131748 ELSE null
131749 END object_name
131750 , CASE r
131751 WHEN 1 THEN 'HEADER'
131752 WHEN 2 THEN 'HEADER'
131753 WHEN 3 THEN 'HEADER'
131754 WHEN 4 THEN 'HEADER'
131755 WHEN 5 THEN 'HEADER'
131756 WHEN 6 THEN 'HEADER'
131757
131758 ELSE null
131759 END object_type_code
131760 , CASE r
131761 WHEN 1 THEN '555'
131762 WHEN 2 THEN '555'
131763 WHEN 3 THEN '555'
131764 WHEN 4 THEN '555'
131765 WHEN 5 THEN '555'
131766 WHEN 6 THEN '555'
131767
131768 ELSE null
131769 END source_application_id
131770 , 'S' source_type_code
131771 , CASE r
131772 WHEN 1 THEN 'ENTITY_CODE'
131773 WHEN 2 THEN 'CURRENCY_CODE'
131774 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
131775 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
131776 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
131777 WHEN 6 THEN 'TRANSACTION_DATE'
131778
131779 ELSE null
131780 END source_code
131781 , CASE r
131782 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
131783 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
131784 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
131785 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
131786 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
131787 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
131788
131789 ELSE null
131790 END source_value
131791 , CASE r
131792 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
131793 1010186
131794 ,TO_CHAR(h1.CURRENCY_CODE)
131795 ,'CURRENCY_CODE'
131796 ,'S'
131797 ,555)
131798
131799 ELSE null
131800 END source_meaning
131801 FROM xla_events_gt xet
131802 , GMF_XLA_EXTRACT_HEADERS h1
131803 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
131804 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
131805 AND xet.event_type_code = C_EVENT_TYPE_CODE
131806 AND h1.event_id = xet.event_id
131807
131808 )
131809 ;
131810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131811
131812 trace
131813 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
131814 ,p_level => C_LEVEL_STATEMENT
131815 ,p_module => l_log_module);
131816
131817 END IF;
131818 --
131819
131820
131821
131822 --
131823 INSERT INTO xla_diag_sources --line1
131824 (
131825 event_id
131826 , ledger_id
131827 , sla_ledger_id
131828 , description_language
131829 , object_name
131830 , object_type_code
131831 , line_number
131832 , source_application_id
131833 , source_type_code
131834 , source_code
131835 , source_value
131836 , source_meaning
131837 , created_by
131838 , creation_date
131839 , last_update_date
131840 , last_updated_by
131841 , last_update_login
131842 , program_update_date
131843 , program_application_id
131844 , program_id
131845 , request_id
131846 )
131847 SELECT event_id
131848 , p_target_ledger_id
131849 , p_sla_ledger_id
131850 , p_language
131851 , object_name
131852 , object_type_code
131853 , line_number
131854 , source_application_id
131855 , source_type_code
131856 , source_code
131857 , SUBSTR(source_value,1,1996)
131858 , SUBSTR(source_meaning,1,200)
131859 , xla_environment_pkg.g_Usr_Id
131860 , TRUNC(SYSDATE)
131861 , TRUNC(SYSDATE)
131862 , xla_environment_pkg.g_Usr_Id
131863 , xla_environment_pkg.g_Login_Id
131864 , TRUNC(SYSDATE)
131865 , xla_environment_pkg.g_Prog_Appl_Id
131866 , xla_environment_pkg.g_Prog_Id
131870 , l2.line_number line_number
131867 , xla_environment_pkg.g_Req_Id
131868 FROM (
131869 SELECT xet.event_id event_id
131871 , CASE r
131872 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
131873 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
131874 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
131875 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
131876 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
131877
131878 ELSE null
131879 END object_name
131880 , CASE r
131881 WHEN 1 THEN 'LINE'
131882 WHEN 2 THEN 'LINE'
131883 WHEN 3 THEN 'LINE'
131884 WHEN 4 THEN 'LINE'
131885 WHEN 5 THEN 'LINE'
131886
131887 ELSE null
131888 END object_type_code
131889 , CASE r
131890 WHEN 1 THEN '555'
131891 WHEN 2 THEN '555'
131892 WHEN 3 THEN '555'
131893 WHEN 4 THEN '555'
131894 WHEN 5 THEN '555'
131895
131896 ELSE null
131897 END source_application_id
131898 , 'S' source_type_code
131899 , CASE r
131900 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
131901 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
131902 WHEN 3 THEN 'ENTERED_AMOUNT'
131903 WHEN 4 THEN 'LINE_ID'
131904 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
131905
131906 ELSE null
131907 END source_code
131908 , CASE r
131909 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
131910 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
131911 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
131912 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
131913 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
131914
131915 ELSE null
131916 END source_value
131917 , null source_meaning
131918 FROM xla_events_gt xet
131919 , GMF_XLA_EXTRACT_LINES l2
131920 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
131921 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
131922 AND xet.event_type_code = C_EVENT_TYPE_CODE
131923 AND l2.event_id = xet.event_id
131924
131925 )
131926 ;
131927 --
131928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
131929
131930 trace
131931 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
131932 ,p_level => C_LEVEL_STATEMENT
131933 ,p_module => l_log_module);
131934
131935 END IF;
131936
131937
131938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131939 trace
131940 (p_msg => 'END of insert_sources_258'
131941 ,p_level => C_LEVEL_PROCEDURE
131942 ,p_module => l_log_module);
131943 END IF;
131944 EXCEPTION
131945 WHEN xla_exceptions_pkg.application_exception THEN
131946 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
131947 trace
131948 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
131949 ,p_level => C_LEVEL_EXCEPTION
131950 ,p_module => l_log_module);
131951 END IF;
131952 RAISE;
131953 WHEN OTHERS THEN
131954 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
131955 trace
131956 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
131957 ,p_level => C_LEVEL_EXCEPTION
131958 ,p_module => l_log_module);
131959 END IF;
131960 xla_exceptions_pkg.raise_message
131961 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_258');
131962 END insert_sources_258;
131963 --
131964
131965 ---------------------------------------
131966 --
131967 -- PRIVATE FUNCTION
131968 -- EventType_258
131969 --
131970 ----------------------------------------
131971 --
131972 FUNCTION EventType_258
131973 (p_application_id IN NUMBER
131974 ,p_base_ledger_id IN NUMBER
131975 ,p_target_ledger_id IN NUMBER
131976 ,p_language IN VARCHAR2
131977 ,p_currency_code IN VARCHAR2
131978 ,p_sla_ledger_id IN NUMBER
131979 ,p_pad_start_date IN DATE
131980 ,p_pad_end_date IN DATE
131981 ,p_primary_ledger_id IN NUMBER)
131982 RETURN BOOLEAN IS
131983 --
131984 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
131985 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
131986
131987 l_calculate_acctd_flag VARCHAR2(1) :='N';
131988 l_calculate_g_l_flag VARCHAR2(1) :='N';
131989 --
131990 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
131991 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
131992 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
131993 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
131994 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
131995 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
131999 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
131996 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
131997 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
131998 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132000 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
132001 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
132002 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
132003 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
132004 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
132005 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
132006 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
132007 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
132008 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132009 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132010 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132011 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
132012 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
132013 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
132014 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
132015 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
132016
132017 l_event_id NUMBER;
132018 l_previous_event_id NUMBER;
132019 l_first_event_id NUMBER;
132020 l_last_event_id NUMBER;
132021
132022 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
132023 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
132024 --
132025 --
132026 l_result BOOLEAN := TRUE;
132027 l_rows NUMBER := 1000;
132028 l_event_type_name VARCHAR2(80) := 'Direct Interorg Receipt, no Transfer Pricing';
132029 l_event_class_name VARCHAR2(80) := 'Direct Interorg Receipt';
132030 l_description VARCHAR2(4000);
132031 l_transaction_reversal NUMBER;
132032 l_ae_header_id NUMBER;
132033 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
132034 l_log_module VARCHAR2(240);
132035 --
132036 l_acct_reversal_source VARCHAR2(30);
132037 l_trx_reversal_source VARCHAR2(30);
132038
132039 l_continue_with_lines BOOLEAN := TRUE;
132040 --
132041 l_acc_rev_gl_date_source DATE; -- 4262811
132042 --
132043 type t_array_event_id is table of number index by binary_integer;
132044
132045 l_rec_array_event t_rec_array_event;
132046 l_null_rec_array_event t_rec_array_event;
132047 l_array_ae_header_id xla_number_array_type;
132048 l_actual_flag VARCHAR2(1) := NULL;
132049 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
132050 l_balance_type_code VARCHAR2(1) :=NULL;
132051 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
132052
132053 --
132054 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
132055 --
132056
132057 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
132058 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
132059 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
132060 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
132061 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
132062 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
132063
132064 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
132065 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
132066 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
132067 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
132068 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
132069
132070 l_array_source_6 t_array_source_6;
132071 l_array_source_7 t_array_source_7;
132072 l_array_source_8 t_array_source_8;
132073 l_array_source_9 t_array_source_9;
132074 l_array_source_10 t_array_source_10;
132075 l_array_source_12 t_array_source_12;
132076
132077 l_array_source_1 t_array_source_1;
132078 l_array_source_2 t_array_source_2;
132079 l_array_source_3 t_array_source_3;
132080 l_array_source_5 t_array_source_5;
132081 l_array_source_11 t_array_source_11;
132082
132083 --
132084 CURSOR header_cur
132085 IS
132086 SELECT /*+ leading(xet) cardinality(xet,1) */
132087 -- Event Type Code: DIR_INTERORG_RCPT
132088 -- Event Class Code: DIR_INTERORG_RCPT
132089 xet.entity_id
132090 , xet.legal_entity_id
132091 , xet.entity_code
132092 , xet.transaction_number
132093 , xet.event_id
132094 , xet.event_class_code
132095 , xet.event_type_code
132099 , xet.reference_num_1
132096 , xet.event_number
132097 , xet.event_date
132098 , xet.transaction_date
132100 , xet.reference_num_2
132101 , xet.reference_num_3
132102 , xet.reference_num_4
132103 , xet.reference_char_1
132104 , xet.reference_char_2
132105 , xet.reference_char_3
132106 , xet.reference_char_4
132107 , xet.reference_date_1
132108 , xet.reference_date_2
132109 , xet.reference_date_3
132110 , xet.reference_date_4
132111 , xet.event_created_by
132112 , xet.budgetary_control_flag
132113 , h1.ENTITY_CODE source_6
132114 , h1.CURRENCY_CODE source_7
132115 , h1.CURRENCY_CONVERSION_DATE source_8
132116 , h1.CURRENCY_CONVERSION_RATE source_9
132117 , h1.CURRENCY_CONVERSION_TYPE source_10
132118 , h1.TRANSACTION_DATE source_12
132119 FROM xla_events_gt xet
132120 , GMF_XLA_EXTRACT_HEADERS h1
132121 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
132122 and xet.event_type_code = C_EVENT_TYPE_CODE
132123 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
132124
132125 ORDER BY event_id
132126 ;
132127
132128
132129 --
132130 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
132131 IS
132132 SELECT /*+ leading(xet) cardinality(xet,1) */
132133 -- Event Type Code: DIR_INTERORG_RCPT
132134 -- Event Class Code: DIR_INTERORG_RCPT
132135 xet.entity_id
132136 ,xet.legal_entity_id
132137 ,xet.entity_code
132138 ,xet.transaction_number
132139 ,xet.event_id
132140 ,xet.event_class_code
132141 ,xet.event_type_code
132142 ,xet.event_number
132143 ,xet.event_date
132144 ,xet.transaction_date
132145 ,xet.reference_num_1
132146 ,xet.reference_num_2
132147 ,xet.reference_num_3
132148 ,xet.reference_num_4
132149 ,xet.reference_char_1
132150 ,xet.reference_char_2
132151 ,xet.reference_char_3
132152 ,xet.reference_char_4
132153 ,xet.reference_date_1
132154 ,xet.reference_date_2
132155 ,xet.reference_date_3
132156 ,xet.reference_date_4
132157 ,xet.event_created_by
132158 ,xet.budgetary_control_flag , l2.LINE_NUMBER
132159 , l2.TRANSACTION_ACCOUNT_ID source_1
132160 , l2.JOURNAL_LINE_TYPE source_2
132161 , l2.ENTERED_AMOUNT source_3
132162 , l2.LINE_ID source_5
132163 , l2.ACCOUNTED_AMOUNT source_11
132164 FROM xla_events_gt xet
132165 , GMF_XLA_EXTRACT_LINES l2
132166 WHERE xet.event_id between x_first_event_id and x_last_event_id
132167 and xet.event_date between p_pad_start_date and p_pad_end_date
132168 and xet.event_type_code = C_EVENT_TYPE_CODE
132169 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
132170 ;
132171
132172 --
132173 BEGIN
132174 IF g_log_enabled THEN
132175 l_log_module := C_DEFAULT_MODULE||'.EventType_258';
132176 END IF;
132177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132178 trace
132179 (p_msg => 'BEGIN of EventType_258'
132180 ,p_level => C_LEVEL_PROCEDURE
132181 ,p_module => l_log_module);
132182 END IF;
132183
132184 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132185 trace
132186 (p_msg => 'p_application_id = '||p_application_id||
132187 ' - p_base_ledger_id = '||p_base_ledger_id||
132188 ' - p_target_ledger_id = '||p_target_ledger_id||
132189 ' - p_language = '||p_language||
132190 ' - p_currency_code = '||p_currency_code||
132191 ' - p_sla_ledger_id = '||p_sla_ledger_id
132192 ,p_level => C_LEVEL_STATEMENT
132193 ,p_module => l_log_module);
132194 END IF;
132195 --
132196 -- initialze arrays
132197 --
132198 g_array_event.DELETE;
132199 l_rec_array_event := l_null_rec_array_event;
132200 --
132201 --------------------------------------
132202 -- 4262811 Initialze MPA Line Number
132203 --------------------------------------
132204 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
132205
132206 --
132207
132208 --
132209 OPEN header_cur;
132210 --
132211 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132212 trace
132213 (p_msg => 'SQL - FETCH header_cur'
132214 ,p_level => C_LEVEL_STATEMENT
132215 ,p_module => l_log_module);
132216 END IF;
132217 --
132218 LOOP
132219 FETCH header_cur BULK COLLECT INTO
132220 l_array_entity_id
132221 , l_array_legal_entity_id
132222 , l_array_entity_code
132223 , l_array_transaction_num
132224 , l_array_event_id
132225 , l_array_class_code
132226 , l_array_event_type
132227 , l_array_event_number
132228 , l_array_event_date
132229 , l_array_transaction_date
132230 , l_array_reference_num_1
132231 , l_array_reference_num_2
132232 , l_array_reference_num_3
132233 , l_array_reference_num_4
132234 , l_array_reference_char_1
132235 , l_array_reference_char_2
132236 , l_array_reference_char_3
132237 , l_array_reference_char_4
132238 , l_array_reference_date_1
132239 , l_array_reference_date_2
132240 , l_array_reference_date_3
132241 , l_array_reference_date_4
132242 , l_array_event_created_by
132243 , l_array_budgetary_control_flag
132244 , l_array_source_6
132245 , l_array_source_7
132246 , l_array_source_8
132250 LIMIT l_rows;
132247 , l_array_source_9
132248 , l_array_source_10
132249 , l_array_source_12
132251 --
132252 IF (C_LEVEL_EVENT >= g_log_level) THEN
132253 trace
132254 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
132255 ,p_level => C_LEVEL_EVENT
132256 ,p_module => l_log_module);
132257 END IF;
132258 --
132259 EXIT WHEN l_array_entity_id.COUNT = 0;
132260
132261 -- initialize arrays
132262 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
132263 XLA_AE_LINES_PKG.g_rec_lines := NULL;
132264
132265 --
132266 -- Bug 4458708
132267 --
132268 XLA_AE_LINES_PKG.g_LineNumber := 0;
132269
132270
132271 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
132272 g_last_hdr_idx := l_array_event_id.LAST;
132273 --
132274 -- loop for the headers. Each iteration is for each header extract row
132275 -- fetched in header cursor
132276 --
132277 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
132278
132279 --
132280 -- set event info as cache for other routines to refer event attributes
132281 --
132282 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
132283 (p_application_id => p_application_id
132284 ,p_primary_ledger_id => p_primary_ledger_id
132285 ,p_base_ledger_id => p_base_ledger_id
132286 ,p_target_ledger_id => p_target_ledger_id
132287 ,p_entity_id => l_array_entity_id(hdr_idx)
132288 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
132289 ,p_entity_code => l_array_entity_code(hdr_idx)
132290 ,p_transaction_num => l_array_transaction_num(hdr_idx)
132291 ,p_event_id => l_array_event_id(hdr_idx)
132292 ,p_event_class_code => l_array_class_code(hdr_idx)
132293 ,p_event_type_code => l_array_event_type(hdr_idx)
132294 ,p_event_number => l_array_event_number(hdr_idx)
132295 ,p_event_date => l_array_event_date(hdr_idx)
132296 ,p_transaction_date => l_array_transaction_date(hdr_idx)
132297 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
132298 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
132299 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
132300 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
132301 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
132302 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
132303 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
132304 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
132305 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
132306 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
132307 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
132308 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
132309 ,p_event_created_by => l_array_event_created_by(hdr_idx)
132310 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
132311
132312 --
132313 -- set the status of entry to C_VALID (0)
132314 --
132315 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
132316
132317 --
132318 -- initialize a row for ae header
132319 --
132320 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
132321
132322 l_event_id := l_array_event_id(hdr_idx);
132323
132324 --
132325 -- storing the hdr_idx for event. May be used by line cursor.
132326 --
132327 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
132328
132329 --
132330 -- store sources from header extract. This can be improved to
132331 -- store only those sources from header extract that may be used in lines
132332 --
132333
132334 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
132335 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
132336 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
132337 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
132338 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
132339 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
132340
132341 --
132342 -- initilaize the status of ae headers for diffrent balance types
132343 -- the status is initialised to C_NOT_CREATED (2)
132344 --
132345 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
132346 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
132347 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
132348
132349 --
132350 -- call api to validate and store accounting attributes for header
132351 --
132352
132353 ------------------------------------------------------------
132354 -- Accrual Reversal : to get date for Standard Source (NONE)
132355 ------------------------------------------------------------
132356 l_acc_rev_gl_date_source := NULL;
132357
132358 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
132359 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
132360
132361
132362 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
132363
132364 XLA_AE_HEADER_PKG.SetJeCategoryName;
132365
132369 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
132366 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
132367 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
132368 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
132370 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
132371
132372
132373 -- No header level analytical criteria
132374
132375 --
132376 --accounting attribute enhancement, bug 3612931
132377 --
132378 l_trx_reversal_source := SUBSTR(NULL, 1,30);
132379
132380 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
132381 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
132382
132383 xla_accounting_err_pkg.build_message
132384 (p_appli_s_name => 'XLA'
132385 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
132386 ,p_token_1 => 'ACCT_ATTR_NAME'
132387 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
132388 ,p_token_2 => 'PRODUCT_NAME'
132389 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
132390 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
132391 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
132392 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
132393
132394 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
132395 --
132396 -- following sets the accounting attributes needed to reverse
132397 -- accounting for a distributeion
132398 --
132399 xla_ae_lines_pkg.SetTrxReversalAttrs
132400 (p_event_id => l_event_id
132401 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
132402 ,p_trx_reversal_source => l_trx_reversal_source);
132403
132404 END IF;
132405
132406
132407 ----------------------------------------------------------------
132408 -- 4262811 - update the header statuses to invalid in need be
132409 ----------------------------------------------------------------
132410 --
132411 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
132412
132413
132414 -----------------------------------------------
132415 -- No accrual reversal for the event class/type
132416 -----------------------------------------------
132417 ----------------------------------------------------------------
132418
132419 --
132420 -- this ends the header loop iteration for one bulk fetch
132421 --
132422 END LOOP;
132423
132424 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
132425 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
132426
132427 --
132428 -- insert dummy rows into lines gt table that were created due to
132429 -- transaction reversals
132430 --
132431 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
132432 l_result := XLA_AE_LINES_PKG.InsertLines;
132433 END IF;
132434
132435 --
132436 -- reset the temp_line_num for each set of events fetched from header
132437 -- cursor rather than doing it for each new event in line cursor
132438 -- Bug 3939231
132439 --
132440 xla_ae_lines_pkg.g_temp_line_num := 0;
132441
132442
132443
132444 --
132445 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
132446 --
132447 --
132448 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132449
132450 trace
132451 (p_msg => 'SQL - FETCH line_cur'
132452 ,p_level => C_LEVEL_STATEMENT
132453 ,p_module => l_log_module);
132454
132455 END IF;
132456 --
132457 --
132458 LOOP
132459 --
132460 FETCH line_cur BULK COLLECT INTO
132461 l_array_entity_id
132462 , l_array_legal_entity_id
132463 , l_array_entity_code
132464 , l_array_transaction_num
132465 , l_array_event_id
132466 , l_array_class_code
132467 , l_array_event_type
132468 , l_array_event_number
132469 , l_array_event_date
132470 , l_array_transaction_date
132471 , l_array_reference_num_1
132472 , l_array_reference_num_2
132473 , l_array_reference_num_3
132474 , l_array_reference_num_4
132475 , l_array_reference_char_1
132476 , l_array_reference_char_2
132477 , l_array_reference_char_3
132478 , l_array_reference_char_4
132479 , l_array_reference_date_1
132480 , l_array_reference_date_2
132481 , l_array_reference_date_3
132482 , l_array_reference_date_4
132483 , l_array_event_created_by
132484 , l_array_budgetary_control_flag
132485 , l_array_extract_line_num
132486 , l_array_source_1
132487 , l_array_source_2
132488 , l_array_source_3
132489 , l_array_source_5
132490 , l_array_source_11
132491 LIMIT l_rows;
132492
132493 --
132494 IF (C_LEVEL_EVENT >= g_log_level) THEN
132495 trace
132496 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
132497 ,p_level => C_LEVEL_EVENT
132498 ,p_module => l_log_module);
132499 END IF;
132500 --
132501 EXIT WHEN l_array_entity_id.count = 0;
132502
132503 XLA_AE_LINES_PKG.g_rec_lines := null;
132504
132505 --
132509 --
132506 -- Bug 4458708
132507 --
132508 XLA_AE_LINES_PKG.g_LineNumber := 0;
132510 --
132511
132512 FOR Idx IN 1..l_array_event_id.count LOOP
132513 --
132514 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
132515 --
132516 l_event_id := l_array_event_id(idx); -- 5648433
132517
132518 --
132519 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
132520 --
132521
132522 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
132523 (g_array_event(l_event_id).array_value_num('header_index'))
132524 ,'N'
132525 ) <> 'Y'
132526 THEN
132527 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132528 trace
132529 (p_msg => 'Trancaction revesal option is not Y '
132530 ,p_level => C_LEVEL_STATEMENT
132531 ,p_module => l_log_module);
132532 END IF;
132533
132534 --
132535 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
132536 --
132537 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
132538 --
132539 -- set event info as cache for other routines to refer event attributes
132540 --
132541
132542 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
132543 l_previous_event_id := l_event_id;
132544
132545 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
132546 (p_application_id => p_application_id
132547 ,p_primary_ledger_id => p_primary_ledger_id
132548 ,p_base_ledger_id => p_base_ledger_id
132549 ,p_target_ledger_id => p_target_ledger_id
132550 ,p_entity_id => l_array_entity_id(Idx)
132551 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
132552 ,p_entity_code => l_array_entity_code(Idx)
132553 ,p_transaction_num => l_array_transaction_num(Idx)
132554 ,p_event_id => l_array_event_id(Idx)
132555 ,p_event_class_code => l_array_class_code(Idx)
132556 ,p_event_type_code => l_array_event_type(Idx)
132557 ,p_event_number => l_array_event_number(Idx)
132558 ,p_event_date => l_array_event_date(Idx)
132559 ,p_transaction_date => l_array_transaction_date(Idx)
132560 ,p_reference_num_1 => l_array_reference_num_1(Idx)
132561 ,p_reference_num_2 => l_array_reference_num_2(Idx)
132562 ,p_reference_num_3 => l_array_reference_num_3(Idx)
132563 ,p_reference_num_4 => l_array_reference_num_4(Idx)
132564 ,p_reference_char_1 => l_array_reference_char_1(Idx)
132565 ,p_reference_char_2 => l_array_reference_char_2(Idx)
132566 ,p_reference_char_3 => l_array_reference_char_3(Idx)
132567 ,p_reference_char_4 => l_array_reference_char_4(Idx)
132568 ,p_reference_date_1 => l_array_reference_date_1(Idx)
132569 ,p_reference_date_2 => l_array_reference_date_2(Idx)
132570 ,p_reference_date_3 => l_array_reference_date_3(Idx)
132571 ,p_reference_date_4 => l_array_reference_date_4(Idx)
132572 ,p_event_created_by => l_array_event_created_by(Idx)
132573 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
132574 --
132575 END IF;
132576
132577
132578
132579 --
132580 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
132581
132582 l_acct_reversal_source := SUBSTR(NULL, 1,30);
132583
132584 IF l_continue_with_lines THEN
132585 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
132586 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
132587
132588 xla_accounting_err_pkg.build_message
132589 (p_appli_s_name => 'XLA'
132590 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
132591 ,p_token_1 => 'LINE_NUMBER'
132592 ,p_value_1 => l_array_extract_line_num(Idx)
132593 ,p_token_2 => 'PRODUCT_NAME'
132594 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
132595 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
132596 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
132597 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
132598
132599 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
132600 --
132601 -- following sets the accounting attributes needed to reverse
132602 -- accounting for a distributeion
132603 --
132604
132605 --
132606 -- 5217187
132607 --
132608 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
132609 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
132610 g_array_event(l_event_id).array_value_num('header_index'));
132611 --
132612 --
132613
132614 -- No reversal code generated
132615
132616 xla_ae_lines_pkg.SetAcctReversalAttrs
132617 (p_event_id => l_event_id
132618 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
132619 ,p_calculate_acctd_flag => l_calculate_acctd_flag
132620 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
132621 END IF;
132622
132623 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
132627 AcctLineType_105 (
132624 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
132625
132626 --
132628 p_application_id => p_application_id
132629 ,p_event_id => l_event_id
132630 ,p_calculate_acctd_flag => l_calculate_acctd_flag
132631 ,p_calculate_g_l_flag => l_calculate_g_l_flag
132632 ,p_actual_flag => l_actual_flag
132633 ,p_balance_type_code => l_balance_type_code
132634 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
132635
132636 , p_source_1 => l_array_source_1(Idx)
132637 , p_source_2 => l_array_source_2(Idx)
132638 , p_source_3 => l_array_source_3(Idx)
132639 , p_source_5 => l_array_source_5(Idx)
132640 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
132641 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
132642 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
132643 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
132644 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
132645 , p_source_11 => l_array_source_11(Idx)
132646 );
132647 If(l_balance_type_code = 'A') THEN
132648 l_actual_gain_loss_ref := l_gain_or_loss_ref;
132649 END IF;
132650
132651 --
132652
132653
132654 --
132655 AcctLineType_157 (
132656 p_application_id => p_application_id
132657 ,p_event_id => l_event_id
132658 ,p_calculate_acctd_flag => l_calculate_acctd_flag
132659 ,p_calculate_g_l_flag => l_calculate_g_l_flag
132660 ,p_actual_flag => l_actual_flag
132661 ,p_balance_type_code => l_balance_type_code
132662 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
132663
132664 , p_source_1 => l_array_source_1(Idx)
132665 , p_source_2 => l_array_source_2(Idx)
132666 , p_source_3 => l_array_source_3(Idx)
132667 , p_source_5 => l_array_source_5(Idx)
132668 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
132669 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
132670 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
132671 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
132672 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
132673 , p_source_11 => l_array_source_11(Idx)
132674 );
132675 If(l_balance_type_code = 'A') THEN
132676 l_actual_gain_loss_ref := l_gain_or_loss_ref;
132677 END IF;
132678
132679 --
132680
132681
132682 --
132683 AcctLineType_175 (
132684 p_application_id => p_application_id
132685 ,p_event_id => l_event_id
132686 ,p_calculate_acctd_flag => l_calculate_acctd_flag
132687 ,p_calculate_g_l_flag => l_calculate_g_l_flag
132688 ,p_actual_flag => l_actual_flag
132689 ,p_balance_type_code => l_balance_type_code
132690 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
132691
132692 , p_source_1 => l_array_source_1(Idx)
132693 , p_source_2 => l_array_source_2(Idx)
132694 , p_source_3 => l_array_source_3(Idx)
132695 , p_source_5 => l_array_source_5(Idx)
132696 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
132697 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
132698 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
132699 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
132700 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
132701 , p_source_11 => l_array_source_11(Idx)
132702 );
132703 If(l_balance_type_code = 'A') THEN
132704 l_actual_gain_loss_ref := l_gain_or_loss_ref;
132705 END IF;
132706
132707 --
132708
132709
132710 --
132711 AcctLineType_224 (
132712 p_application_id => p_application_id
132713 ,p_event_id => l_event_id
132714 ,p_calculate_acctd_flag => l_calculate_acctd_flag
132715 ,p_calculate_g_l_flag => l_calculate_g_l_flag
132716 ,p_actual_flag => l_actual_flag
132717 ,p_balance_type_code => l_balance_type_code
132718 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
132719
132720 , p_source_1 => l_array_source_1(Idx)
132721 , p_source_2 => l_array_source_2(Idx)
132722 , p_source_3 => l_array_source_3(Idx)
132723 , p_source_5 => l_array_source_5(Idx)
132724 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
132725 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
132726 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
132727 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
132728 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
132729 , p_source_11 => l_array_source_11(Idx)
132730 );
132731 If(l_balance_type_code = 'A') THEN
132732 l_actual_gain_loss_ref := l_gain_or_loss_ref;
132733 END IF;
132734
132735 --
132736
132737 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
132738 -- or secondary ledger that has different currency with primary
132739 -- or alc that is calculated by sla
132740 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
132741 (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'))
132742
132743 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
132744 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
132745 AND (l_actual_flag = 'A')) THEN
132746 XLA_AE_LINES_PKG.CreateGainOrLossLines(
132750 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
132747 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
132748 ,p_application_id => p_application_id
132749 ,p_amb_context_code => 'DEFAULT'
132751 ,p_event_class_code => C_EVENT_CLASS_CODE
132752 ,p_event_type_code => C_EVENT_TYPE_CODE
132753
132754 ,p_gain_ccid => -1
132755 ,p_loss_ccid => -1
132756
132757 ,p_actual_flag => l_actual_flag
132758 ,p_enc_flag => null
132759 ,p_actual_g_l_ref => l_actual_gain_loss_ref
132760 ,p_enc_g_l_ref => null
132761 );
132762 END IF;
132763 END IF;
132764 END IF;
132765
132766 ELSE
132767 --
132768 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
132769 --
132770 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132771 trace
132772 (p_msg => 'Trancaction revesal option is Y'
132773 ,p_level => C_LEVEL_STATEMENT
132774 ,p_module => l_log_module);
132775 END IF;
132776 END IF;
132777
132778 END LOOP;
132779 l_result := XLA_AE_LINES_PKG.InsertLines ;
132780 end loop;
132781 close line_cur;
132782
132783
132784 --
132785 -- insert headers into xla_ae_headers_gt table
132786 --
132787 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
132788
132789 -- insert into errors table here.
132790
132791 END LOOP;
132792
132793 --
132794 -- 4865292
132795 --
132796 -- Compare g_hdr_extract_count with event count in
132797 -- CreateHeadersAndLines.
132798 --
132799 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
132800
132801 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132802 trace (p_msg => '# rows extracted from header extract objects '
132803 || ' (running total): '
132804 || g_hdr_extract_count
132805 ,p_level => C_LEVEL_STATEMENT
132806 ,p_module => l_log_module);
132807 END IF;
132808
132809 CLOSE header_cur;
132810 --
132811
132812 --
132813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132814 trace
132815 (p_msg => 'END of EventType_258'
132816 ,p_level => C_LEVEL_PROCEDURE
132817 ,p_module => l_log_module);
132818 END IF;
132819 --
132820 RETURN l_result;
132821 EXCEPTION
132822 WHEN xla_exceptions_pkg.application_exception THEN
132823
132824 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
132825
132826
132827 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
132828
132829 RAISE;
132830
132831 WHEN NO_DATA_FOUND THEN
132832
132833 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
132834 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
132835
132836 FOR header_record IN header_cur
132837 LOOP
132838 l_array_header_events(header_record.event_id) := header_record.event_id;
132839 END LOOP;
132840
132841 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
132842 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
132843
132844 fnd_file.put_line(fnd_file.LOG, ' ');
132845 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
132846 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
132847 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
132848
132849 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
132850 LOOP
132851 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
132852 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
132853 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
132854 END IF;
132855 END LOOP;
132856
132857 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
132858 fnd_file.put_line(fnd_file.LOG, ' ');
132859
132860
132861 xla_exceptions_pkg.raise_message
132862 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_258');
132863
132864
132865 WHEN OTHERS THEN
132866 xla_exceptions_pkg.raise_message
132867 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_258');
132868 END EventType_258;
132869 --
132870
132871 ---------------------------------------
132872 --
132873 -- PRIVATE PROCEDURE
132874 -- insert_sources_259
132875 --
132876 ----------------------------------------
132877 --
132878 PROCEDURE insert_sources_259(
132879 p_target_ledger_id IN NUMBER
132880 , p_language IN VARCHAR2
132881 , p_sla_ledger_id IN NUMBER
132882 , p_pad_start_date IN DATE
132883 , p_pad_end_date IN DATE
132884 )
132885 IS
132886
132887 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT_TP';
132888 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
132889 p_apps_owner VARCHAR2(30);
132890 l_log_module VARCHAR2(240);
132894 END IF;
132891 BEGIN
132892 IF g_log_enabled THEN
132893 l_log_module := C_DEFAULT_MODULE||'.insert_sources_259';
132895 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132896
132897 trace
132898 (p_msg => 'BEGIN of insert_sources_259'
132899 ,p_level => C_LEVEL_PROCEDURE
132900 ,p_module => l_log_module);
132901
132902 END IF;
132903
132904 -- select APPS owner
132905 SELECT oracle_username
132906 INTO p_apps_owner
132907 FROM fnd_oracle_userid
132908 WHERE read_only_flag = 'U'
132909 ;
132910
132911 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
132912 trace
132913 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
132914 ' - p_language = '||p_language||
132915 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
132916 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
132917 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
132918 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
132919 ,p_level => C_LEVEL_STATEMENT
132920 ,p_module => l_log_module);
132921 END IF;
132922
132923
132924 --
132925 INSERT INTO xla_diag_sources --hdr1
132926 (
132927 event_id
132928 , ledger_id
132929 , sla_ledger_id
132930 , description_language
132931 , object_name
132932 , object_type_code
132933 , line_number
132934 , source_application_id
132935 , source_type_code
132936 , source_code
132937 , source_value
132938 , source_meaning
132939 , created_by
132940 , creation_date
132941 , last_update_date
132942 , last_updated_by
132943 , last_update_login
132944 , program_update_date
132945 , program_application_id
132946 , program_id
132947 , request_id
132948 )
132949 SELECT
132950 event_id
132951 , p_target_ledger_id
132952 , p_sla_ledger_id
132953 , p_language
132954 , object_name
132955 , object_type_code
132956 , line_number
132957 , source_application_id
132958 , source_type_code
132959 , source_code
132960 , SUBSTR(source_value ,1,1996)
132961 , SUBSTR(source_meaning,1,200)
132962 , xla_environment_pkg.g_Usr_Id
132963 , TRUNC(SYSDATE)
132964 , TRUNC(SYSDATE)
132965 , xla_environment_pkg.g_Usr_Id
132966 , xla_environment_pkg.g_Login_Id
132967 , TRUNC(SYSDATE)
132968 , xla_environment_pkg.g_Prog_Appl_Id
132969 , xla_environment_pkg.g_Prog_Id
132970 , xla_environment_pkg.g_Req_Id
132971 FROM (
132972 SELECT xet.event_id event_id
132973 , 0 line_number
132974 , CASE r
132975 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
132976 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
132977 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
132978 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
132979 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
132980 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
132981
132982 ELSE null
132983 END object_name
132984 , CASE r
132985 WHEN 1 THEN 'HEADER'
132986 WHEN 2 THEN 'HEADER'
132987 WHEN 3 THEN 'HEADER'
132988 WHEN 4 THEN 'HEADER'
132989 WHEN 5 THEN 'HEADER'
132990 WHEN 6 THEN 'HEADER'
132991
132992 ELSE null
132993 END object_type_code
132994 , CASE r
132995 WHEN 1 THEN '555'
132996 WHEN 2 THEN '555'
132997 WHEN 3 THEN '555'
132998 WHEN 4 THEN '555'
132999 WHEN 5 THEN '555'
133000 WHEN 6 THEN '555'
133001
133002 ELSE null
133003 END source_application_id
133004 , 'S' source_type_code
133005 , CASE r
133006 WHEN 1 THEN 'ENTITY_CODE'
133007 WHEN 2 THEN 'CURRENCY_CODE'
133008 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
133009 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
133010 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
133011 WHEN 6 THEN 'TRANSACTION_DATE'
133012
133013 ELSE null
133014 END source_code
133015 , CASE r
133016 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
133017 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
133018 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
133019 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
133020 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
133021 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
133022
133023 ELSE null
133024 END source_value
133025 , CASE r
133026 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
133027 1010186
133028 ,TO_CHAR(h1.CURRENCY_CODE)
133029 ,'CURRENCY_CODE'
133030 ,'S'
133031 ,555)
133032
133036 , GMF_XLA_EXTRACT_HEADERS h1
133033 ELSE null
133034 END source_meaning
133035 FROM xla_events_gt xet
133037 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
133038 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
133039 AND xet.event_type_code = C_EVENT_TYPE_CODE
133040 AND h1.event_id = xet.event_id
133041
133042 )
133043 ;
133044 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133045
133046 trace
133047 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
133048 ,p_level => C_LEVEL_STATEMENT
133049 ,p_module => l_log_module);
133050
133051 END IF;
133052 --
133053
133054
133055
133056 --
133057 INSERT INTO xla_diag_sources --line1
133058 (
133059 event_id
133060 , ledger_id
133061 , sla_ledger_id
133062 , description_language
133063 , object_name
133064 , object_type_code
133065 , line_number
133066 , source_application_id
133067 , source_type_code
133068 , source_code
133069 , source_value
133070 , source_meaning
133071 , created_by
133072 , creation_date
133073 , last_update_date
133074 , last_updated_by
133075 , last_update_login
133076 , program_update_date
133077 , program_application_id
133078 , program_id
133079 , request_id
133080 )
133081 SELECT event_id
133082 , p_target_ledger_id
133083 , p_sla_ledger_id
133084 , p_language
133085 , object_name
133086 , object_type_code
133087 , line_number
133088 , source_application_id
133089 , source_type_code
133090 , source_code
133091 , SUBSTR(source_value,1,1996)
133092 , SUBSTR(source_meaning,1,200)
133093 , xla_environment_pkg.g_Usr_Id
133094 , TRUNC(SYSDATE)
133095 , TRUNC(SYSDATE)
133096 , xla_environment_pkg.g_Usr_Id
133097 , xla_environment_pkg.g_Login_Id
133098 , TRUNC(SYSDATE)
133099 , xla_environment_pkg.g_Prog_Appl_Id
133100 , xla_environment_pkg.g_Prog_Id
133101 , xla_environment_pkg.g_Req_Id
133102 FROM (
133103 SELECT xet.event_id event_id
133104 , l2.line_number line_number
133105 , CASE r
133106 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
133107 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
133108 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
133109 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
133110 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
133111
133112 ELSE null
133113 END object_name
133114 , CASE r
133115 WHEN 1 THEN 'LINE'
133116 WHEN 2 THEN 'LINE'
133117 WHEN 3 THEN 'LINE'
133118 WHEN 4 THEN 'LINE'
133119 WHEN 5 THEN 'LINE'
133120
133121 ELSE null
133122 END object_type_code
133123 , CASE r
133124 WHEN 1 THEN '555'
133125 WHEN 2 THEN '555'
133126 WHEN 3 THEN '555'
133127 WHEN 4 THEN '555'
133128 WHEN 5 THEN '555'
133129
133130 ELSE null
133131 END source_application_id
133132 , 'S' source_type_code
133133 , CASE r
133134 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
133135 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
133136 WHEN 3 THEN 'ENTERED_AMOUNT'
133137 WHEN 4 THEN 'LINE_ID'
133138 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
133139
133140 ELSE null
133141 END source_code
133142 , CASE r
133143 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
133144 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
133145 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
133146 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
133147 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
133148
133149 ELSE null
133150 END source_value
133151 , null source_meaning
133152 FROM xla_events_gt xet
133153 , GMF_XLA_EXTRACT_LINES l2
133154 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
133155 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
133156 AND xet.event_type_code = C_EVENT_TYPE_CODE
133157 AND l2.event_id = xet.event_id
133158
133159 )
133160 ;
133161 --
133162 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133163
133164 trace
133165 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
133166 ,p_level => C_LEVEL_STATEMENT
133167 ,p_module => l_log_module);
133168
133169 END IF;
133170
133171
133172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133173 trace
133174 (p_msg => 'END of insert_sources_259'
133175 ,p_level => C_LEVEL_PROCEDURE
133179 WHEN xla_exceptions_pkg.application_exception THEN
133176 ,p_module => l_log_module);
133177 END IF;
133178 EXCEPTION
133180 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
133181 trace
133182 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
133183 ,p_level => C_LEVEL_EXCEPTION
133184 ,p_module => l_log_module);
133185 END IF;
133186 RAISE;
133187 WHEN OTHERS THEN
133188 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
133189 trace
133190 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
133191 ,p_level => C_LEVEL_EXCEPTION
133192 ,p_module => l_log_module);
133193 END IF;
133194 xla_exceptions_pkg.raise_message
133195 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_259');
133196 END insert_sources_259;
133197 --
133198
133199 ---------------------------------------
133200 --
133201 -- PRIVATE FUNCTION
133202 -- EventType_259
133203 --
133204 ----------------------------------------
133205 --
133206 FUNCTION EventType_259
133207 (p_application_id IN NUMBER
133208 ,p_base_ledger_id IN NUMBER
133209 ,p_target_ledger_id IN NUMBER
133210 ,p_language IN VARCHAR2
133211 ,p_currency_code IN VARCHAR2
133212 ,p_sla_ledger_id IN NUMBER
133213 ,p_pad_start_date IN DATE
133214 ,p_pad_end_date IN DATE
133215 ,p_primary_ledger_id IN NUMBER)
133216 RETURN BOOLEAN IS
133217 --
133218 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT_TP';
133219 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
133220
133221 l_calculate_acctd_flag VARCHAR2(1) :='N';
133222 l_calculate_g_l_flag VARCHAR2(1) :='N';
133223 --
133224 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133225 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133226 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
133227 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133228 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133229 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
133230 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
133231 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133232 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133233 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133234 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133235 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133236 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133237 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
133238 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133239 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133240 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133241 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
133242 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133243 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133244 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133245 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
133246 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
133247 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
133248 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
133249 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
133250
133251 l_event_id NUMBER;
133252 l_previous_event_id NUMBER;
133253 l_first_event_id NUMBER;
133254 l_last_event_id NUMBER;
133255
133256 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
133257 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
133258 --
133259 --
133260 l_result BOOLEAN := TRUE;
133261 l_rows NUMBER := 1000;
133262 l_event_type_name VARCHAR2(80) := 'Direct Interorg Receipt, Transfer Pricing';
133263 l_event_class_name VARCHAR2(80) := 'Direct Interorg Receipt';
133264 l_description VARCHAR2(4000);
133265 l_transaction_reversal NUMBER;
133266 l_ae_header_id NUMBER;
133267 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
133268 l_log_module VARCHAR2(240);
133269 --
133270 l_acct_reversal_source VARCHAR2(30);
133271 l_trx_reversal_source VARCHAR2(30);
133272
133273 l_continue_with_lines BOOLEAN := TRUE;
133274 --
133275 l_acc_rev_gl_date_source DATE; -- 4262811
133276 --
133277 type t_array_event_id is table of number index by binary_integer;
133278
133279 l_rec_array_event t_rec_array_event;
133280 l_null_rec_array_event t_rec_array_event;
133281 l_array_ae_header_id xla_number_array_type;
133282 l_actual_flag VARCHAR2(1) := NULL;
133283 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
133287 --
133284 l_balance_type_code VARCHAR2(1) :=NULL;
133285 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
133286
133288 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
133289 --
133290
133291 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
133292 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
133293 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
133294 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
133295 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
133296 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
133297
133298 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
133299 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
133300 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
133301 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
133302 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
133303
133304 l_array_source_6 t_array_source_6;
133305 l_array_source_7 t_array_source_7;
133306 l_array_source_8 t_array_source_8;
133307 l_array_source_9 t_array_source_9;
133308 l_array_source_10 t_array_source_10;
133309 l_array_source_12 t_array_source_12;
133310
133311 l_array_source_1 t_array_source_1;
133312 l_array_source_2 t_array_source_2;
133313 l_array_source_3 t_array_source_3;
133314 l_array_source_5 t_array_source_5;
133315 l_array_source_11 t_array_source_11;
133316
133317 --
133318 CURSOR header_cur
133319 IS
133320 SELECT /*+ leading(xet) cardinality(xet,1) */
133321 -- Event Type Code: DIR_INTERORG_RCPT_TP
133322 -- Event Class Code: DIR_INTERORG_RCPT
133323 xet.entity_id
133324 , xet.legal_entity_id
133325 , xet.entity_code
133326 , xet.transaction_number
133327 , xet.event_id
133328 , xet.event_class_code
133329 , xet.event_type_code
133330 , xet.event_number
133331 , xet.event_date
133332 , xet.transaction_date
133333 , xet.reference_num_1
133334 , xet.reference_num_2
133335 , xet.reference_num_3
133336 , xet.reference_num_4
133337 , xet.reference_char_1
133338 , xet.reference_char_2
133339 , xet.reference_char_3
133340 , xet.reference_char_4
133341 , xet.reference_date_1
133342 , xet.reference_date_2
133343 , xet.reference_date_3
133344 , xet.reference_date_4
133345 , xet.event_created_by
133346 , xet.budgetary_control_flag
133347 , h1.ENTITY_CODE source_6
133348 , h1.CURRENCY_CODE source_7
133349 , h1.CURRENCY_CONVERSION_DATE source_8
133350 , h1.CURRENCY_CONVERSION_RATE source_9
133351 , h1.CURRENCY_CONVERSION_TYPE source_10
133352 , h1.TRANSACTION_DATE source_12
133353 FROM xla_events_gt xet
133354 , GMF_XLA_EXTRACT_HEADERS h1
133355 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
133356 and xet.event_type_code = C_EVENT_TYPE_CODE
133357 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
133358
133359 ORDER BY event_id
133360 ;
133361
133362
133363 --
133364 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
133365 IS
133366 SELECT /*+ leading(xet) cardinality(xet,1) */
133367 -- Event Type Code: DIR_INTERORG_RCPT_TP
133368 -- Event Class Code: DIR_INTERORG_RCPT
133369 xet.entity_id
133370 ,xet.legal_entity_id
133371 ,xet.entity_code
133372 ,xet.transaction_number
133373 ,xet.event_id
133374 ,xet.event_class_code
133375 ,xet.event_type_code
133376 ,xet.event_number
133377 ,xet.event_date
133378 ,xet.transaction_date
133379 ,xet.reference_num_1
133380 ,xet.reference_num_2
133381 ,xet.reference_num_3
133382 ,xet.reference_num_4
133383 ,xet.reference_char_1
133384 ,xet.reference_char_2
133385 ,xet.reference_char_3
133386 ,xet.reference_char_4
133387 ,xet.reference_date_1
133388 ,xet.reference_date_2
133389 ,xet.reference_date_3
133390 ,xet.reference_date_4
133391 ,xet.event_created_by
133392 ,xet.budgetary_control_flag , l2.LINE_NUMBER
133393 , l2.TRANSACTION_ACCOUNT_ID source_1
133394 , l2.JOURNAL_LINE_TYPE source_2
133395 , l2.ENTERED_AMOUNT source_3
133396 , l2.LINE_ID source_5
133397 , l2.ACCOUNTED_AMOUNT source_11
133398 FROM xla_events_gt xet
133399 , GMF_XLA_EXTRACT_LINES l2
133400 WHERE xet.event_id between x_first_event_id and x_last_event_id
133401 and xet.event_date between p_pad_start_date and p_pad_end_date
133402 and xet.event_type_code = C_EVENT_TYPE_CODE
133403 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
133404 ;
133405
133406 --
133407 BEGIN
133408 IF g_log_enabled THEN
133409 l_log_module := C_DEFAULT_MODULE||'.EventType_259';
133410 END IF;
133411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133412 trace
133413 (p_msg => 'BEGIN of EventType_259'
133414 ,p_level => C_LEVEL_PROCEDURE
133415 ,p_module => l_log_module);
133419 trace
133416 END IF;
133417
133418 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133420 (p_msg => 'p_application_id = '||p_application_id||
133421 ' - p_base_ledger_id = '||p_base_ledger_id||
133422 ' - p_target_ledger_id = '||p_target_ledger_id||
133423 ' - p_language = '||p_language||
133424 ' - p_currency_code = '||p_currency_code||
133425 ' - p_sla_ledger_id = '||p_sla_ledger_id
133426 ,p_level => C_LEVEL_STATEMENT
133427 ,p_module => l_log_module);
133428 END IF;
133429 --
133430 -- initialze arrays
133431 --
133432 g_array_event.DELETE;
133433 l_rec_array_event := l_null_rec_array_event;
133434 --
133435 --------------------------------------
133436 -- 4262811 Initialze MPA Line Number
133437 --------------------------------------
133438 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
133439
133440 --
133441
133442 --
133443 OPEN header_cur;
133444 --
133445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133446 trace
133447 (p_msg => 'SQL - FETCH header_cur'
133448 ,p_level => C_LEVEL_STATEMENT
133449 ,p_module => l_log_module);
133450 END IF;
133451 --
133452 LOOP
133453 FETCH header_cur BULK COLLECT INTO
133454 l_array_entity_id
133455 , l_array_legal_entity_id
133456 , l_array_entity_code
133457 , l_array_transaction_num
133458 , l_array_event_id
133459 , l_array_class_code
133460 , l_array_event_type
133461 , l_array_event_number
133462 , l_array_event_date
133463 , l_array_transaction_date
133464 , l_array_reference_num_1
133465 , l_array_reference_num_2
133466 , l_array_reference_num_3
133467 , l_array_reference_num_4
133468 , l_array_reference_char_1
133469 , l_array_reference_char_2
133470 , l_array_reference_char_3
133471 , l_array_reference_char_4
133472 , l_array_reference_date_1
133473 , l_array_reference_date_2
133474 , l_array_reference_date_3
133475 , l_array_reference_date_4
133476 , l_array_event_created_by
133477 , l_array_budgetary_control_flag
133478 , l_array_source_6
133479 , l_array_source_7
133480 , l_array_source_8
133481 , l_array_source_9
133482 , l_array_source_10
133483 , l_array_source_12
133484 LIMIT l_rows;
133485 --
133486 IF (C_LEVEL_EVENT >= g_log_level) THEN
133487 trace
133488 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
133489 ,p_level => C_LEVEL_EVENT
133490 ,p_module => l_log_module);
133491 END IF;
133492 --
133493 EXIT WHEN l_array_entity_id.COUNT = 0;
133494
133495 -- initialize arrays
133496 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
133497 XLA_AE_LINES_PKG.g_rec_lines := NULL;
133498
133499 --
133500 -- Bug 4458708
133501 --
133502 XLA_AE_LINES_PKG.g_LineNumber := 0;
133503
133504
133505 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
133506 g_last_hdr_idx := l_array_event_id.LAST;
133507 --
133508 -- loop for the headers. Each iteration is for each header extract row
133509 -- fetched in header cursor
133510 --
133511 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
133512
133513 --
133514 -- set event info as cache for other routines to refer event attributes
133515 --
133516 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
133517 (p_application_id => p_application_id
133518 ,p_primary_ledger_id => p_primary_ledger_id
133519 ,p_base_ledger_id => p_base_ledger_id
133520 ,p_target_ledger_id => p_target_ledger_id
133521 ,p_entity_id => l_array_entity_id(hdr_idx)
133522 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
133523 ,p_entity_code => l_array_entity_code(hdr_idx)
133524 ,p_transaction_num => l_array_transaction_num(hdr_idx)
133525 ,p_event_id => l_array_event_id(hdr_idx)
133526 ,p_event_class_code => l_array_class_code(hdr_idx)
133527 ,p_event_type_code => l_array_event_type(hdr_idx)
133528 ,p_event_number => l_array_event_number(hdr_idx)
133529 ,p_event_date => l_array_event_date(hdr_idx)
133530 ,p_transaction_date => l_array_transaction_date(hdr_idx)
133531 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
133532 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
133533 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
133534 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
133535 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
133536 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
133537 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
133538 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
133539 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
133540 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
133541 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
133542 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
133543 ,p_event_created_by => l_array_event_created_by(hdr_idx)
133544 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
133545
133546 --
133547 -- set the status of entry to C_VALID (0)
133551 --
133548 --
133549 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
133550
133552 -- initialize a row for ae header
133553 --
133554 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
133555
133556 l_event_id := l_array_event_id(hdr_idx);
133557
133558 --
133559 -- storing the hdr_idx for event. May be used by line cursor.
133560 --
133561 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
133562
133563 --
133564 -- store sources from header extract. This can be improved to
133565 -- store only those sources from header extract that may be used in lines
133566 --
133567
133568 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
133569 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
133570 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
133571 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
133572 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
133573 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
133574
133575 --
133576 -- initilaize the status of ae headers for diffrent balance types
133577 -- the status is initialised to C_NOT_CREATED (2)
133578 --
133579 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
133580 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
133581 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
133582
133583 --
133584 -- call api to validate and store accounting attributes for header
133585 --
133586
133587 ------------------------------------------------------------
133588 -- Accrual Reversal : to get date for Standard Source (NONE)
133589 ------------------------------------------------------------
133590 l_acc_rev_gl_date_source := NULL;
133591
133592 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
133593 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
133594
133595
133596 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
133597
133598 XLA_AE_HEADER_PKG.SetJeCategoryName;
133599
133600 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
133601 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
133602 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
133603 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
133604 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
133605
133606
133607 -- No header level analytical criteria
133608
133609 --
133610 --accounting attribute enhancement, bug 3612931
133611 --
133612 l_trx_reversal_source := SUBSTR(NULL, 1,30);
133613
133614 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
133615 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
133616
133617 xla_accounting_err_pkg.build_message
133618 (p_appli_s_name => 'XLA'
133619 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
133620 ,p_token_1 => 'ACCT_ATTR_NAME'
133621 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
133622 ,p_token_2 => 'PRODUCT_NAME'
133623 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
133624 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
133625 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
133626 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
133627
133628 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
133629 --
133630 -- following sets the accounting attributes needed to reverse
133631 -- accounting for a distributeion
133632 --
133633 xla_ae_lines_pkg.SetTrxReversalAttrs
133634 (p_event_id => l_event_id
133635 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
133636 ,p_trx_reversal_source => l_trx_reversal_source);
133637
133638 END IF;
133639
133640
133641 ----------------------------------------------------------------
133642 -- 4262811 - update the header statuses to invalid in need be
133643 ----------------------------------------------------------------
133644 --
133645 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
133646
133647
133648 -----------------------------------------------
133649 -- No accrual reversal for the event class/type
133650 -----------------------------------------------
133651 ----------------------------------------------------------------
133652
133653 --
133654 -- this ends the header loop iteration for one bulk fetch
133655 --
133656 END LOOP;
133657
133658 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
133659 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
133660
133661 --
133662 -- insert dummy rows into lines gt table that were created due to
133663 -- transaction reversals
133664 --
133665 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
133666 l_result := XLA_AE_LINES_PKG.InsertLines;
133667 END IF;
133668
133669 --
133673 --
133670 -- reset the temp_line_num for each set of events fetched from header
133671 -- cursor rather than doing it for each new event in line cursor
133672 -- Bug 3939231
133674 xla_ae_lines_pkg.g_temp_line_num := 0;
133675
133676
133677
133678 --
133679 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
133680 --
133681 --
133682 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133683
133684 trace
133685 (p_msg => 'SQL - FETCH line_cur'
133686 ,p_level => C_LEVEL_STATEMENT
133687 ,p_module => l_log_module);
133688
133689 END IF;
133690 --
133691 --
133692 LOOP
133693 --
133694 FETCH line_cur BULK COLLECT INTO
133695 l_array_entity_id
133696 , l_array_legal_entity_id
133697 , l_array_entity_code
133698 , l_array_transaction_num
133699 , l_array_event_id
133700 , l_array_class_code
133701 , l_array_event_type
133702 , l_array_event_number
133703 , l_array_event_date
133704 , l_array_transaction_date
133705 , l_array_reference_num_1
133706 , l_array_reference_num_2
133707 , l_array_reference_num_3
133708 , l_array_reference_num_4
133709 , l_array_reference_char_1
133710 , l_array_reference_char_2
133711 , l_array_reference_char_3
133712 , l_array_reference_char_4
133713 , l_array_reference_date_1
133714 , l_array_reference_date_2
133715 , l_array_reference_date_3
133716 , l_array_reference_date_4
133717 , l_array_event_created_by
133718 , l_array_budgetary_control_flag
133719 , l_array_extract_line_num
133720 , l_array_source_1
133721 , l_array_source_2
133722 , l_array_source_3
133723 , l_array_source_5
133724 , l_array_source_11
133725 LIMIT l_rows;
133726
133727 --
133728 IF (C_LEVEL_EVENT >= g_log_level) THEN
133729 trace
133730 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
133731 ,p_level => C_LEVEL_EVENT
133732 ,p_module => l_log_module);
133733 END IF;
133734 --
133735 EXIT WHEN l_array_entity_id.count = 0;
133736
133737 XLA_AE_LINES_PKG.g_rec_lines := null;
133738
133739 --
133740 -- Bug 4458708
133741 --
133742 XLA_AE_LINES_PKG.g_LineNumber := 0;
133743 --
133744 --
133745
133746 FOR Idx IN 1..l_array_event_id.count LOOP
133747 --
133748 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
133749 --
133750 l_event_id := l_array_event_id(idx); -- 5648433
133751
133752 --
133753 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
133754 --
133755
133756 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
133757 (g_array_event(l_event_id).array_value_num('header_index'))
133758 ,'N'
133759 ) <> 'Y'
133760 THEN
133761 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133762 trace
133763 (p_msg => 'Trancaction revesal option is not Y '
133764 ,p_level => C_LEVEL_STATEMENT
133765 ,p_module => l_log_module);
133766 END IF;
133767
133768 --
133769 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
133770 --
133771 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
133772 --
133773 -- set event info as cache for other routines to refer event attributes
133774 --
133775
133776 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
133777 l_previous_event_id := l_event_id;
133778
133779 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
133780 (p_application_id => p_application_id
133781 ,p_primary_ledger_id => p_primary_ledger_id
133782 ,p_base_ledger_id => p_base_ledger_id
133783 ,p_target_ledger_id => p_target_ledger_id
133784 ,p_entity_id => l_array_entity_id(Idx)
133785 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
133786 ,p_entity_code => l_array_entity_code(Idx)
133787 ,p_transaction_num => l_array_transaction_num(Idx)
133788 ,p_event_id => l_array_event_id(Idx)
133789 ,p_event_class_code => l_array_class_code(Idx)
133790 ,p_event_type_code => l_array_event_type(Idx)
133791 ,p_event_number => l_array_event_number(Idx)
133792 ,p_event_date => l_array_event_date(Idx)
133793 ,p_transaction_date => l_array_transaction_date(Idx)
133794 ,p_reference_num_1 => l_array_reference_num_1(Idx)
133795 ,p_reference_num_2 => l_array_reference_num_2(Idx)
133796 ,p_reference_num_3 => l_array_reference_num_3(Idx)
133797 ,p_reference_num_4 => l_array_reference_num_4(Idx)
133798 ,p_reference_char_1 => l_array_reference_char_1(Idx)
133799 ,p_reference_char_2 => l_array_reference_char_2(Idx)
133800 ,p_reference_char_3 => l_array_reference_char_3(Idx)
133801 ,p_reference_char_4 => l_array_reference_char_4(Idx)
133802 ,p_reference_date_1 => l_array_reference_date_1(Idx)
133803 ,p_reference_date_2 => l_array_reference_date_2(Idx)
133804 ,p_reference_date_3 => l_array_reference_date_3(Idx)
133805 ,p_reference_date_4 => l_array_reference_date_4(Idx)
133809 END IF;
133806 ,p_event_created_by => l_array_event_created_by(Idx)
133807 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
133808 --
133810
133811
133812
133813 --
133814 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
133815
133816 l_acct_reversal_source := SUBSTR(NULL, 1,30);
133817
133818 IF l_continue_with_lines THEN
133819 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
133820 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
133821
133822 xla_accounting_err_pkg.build_message
133823 (p_appli_s_name => 'XLA'
133824 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
133825 ,p_token_1 => 'LINE_NUMBER'
133826 ,p_value_1 => l_array_extract_line_num(Idx)
133827 ,p_token_2 => 'PRODUCT_NAME'
133828 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
133829 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
133830 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
133831 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
133832
133833 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
133834 --
133835 -- following sets the accounting attributes needed to reverse
133836 -- accounting for a distributeion
133837 --
133838
133839 --
133840 -- 5217187
133841 --
133842 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
133843 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
133844 g_array_event(l_event_id).array_value_num('header_index'));
133845 --
133846 --
133847
133848 -- No reversal code generated
133849
133850 xla_ae_lines_pkg.SetAcctReversalAttrs
133851 (p_event_id => l_event_id
133852 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
133853 ,p_calculate_acctd_flag => l_calculate_acctd_flag
133854 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
133855 END IF;
133856
133857 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
133858 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
133859
133860 --
133861 AcctLineType_158 (
133862 p_application_id => p_application_id
133863 ,p_event_id => l_event_id
133864 ,p_calculate_acctd_flag => l_calculate_acctd_flag
133865 ,p_calculate_g_l_flag => l_calculate_g_l_flag
133866 ,p_actual_flag => l_actual_flag
133867 ,p_balance_type_code => l_balance_type_code
133868 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
133869
133870 , p_source_1 => l_array_source_1(Idx)
133871 , p_source_2 => l_array_source_2(Idx)
133872 , p_source_3 => l_array_source_3(Idx)
133873 , p_source_5 => l_array_source_5(Idx)
133874 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
133875 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
133876 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
133877 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
133878 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
133879 , p_source_11 => l_array_source_11(Idx)
133880 );
133881 If(l_balance_type_code = 'A') THEN
133882 l_actual_gain_loss_ref := l_gain_or_loss_ref;
133883 END IF;
133884
133885 --
133886
133887
133888 --
133889 AcctLineType_171 (
133890 p_application_id => p_application_id
133891 ,p_event_id => l_event_id
133892 ,p_calculate_acctd_flag => l_calculate_acctd_flag
133893 ,p_calculate_g_l_flag => l_calculate_g_l_flag
133894 ,p_actual_flag => l_actual_flag
133895 ,p_balance_type_code => l_balance_type_code
133896 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
133897
133898 , p_source_1 => l_array_source_1(Idx)
133899 , p_source_2 => l_array_source_2(Idx)
133900 , p_source_3 => l_array_source_3(Idx)
133901 , p_source_5 => l_array_source_5(Idx)
133902 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
133903 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
133904 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
133905 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
133906 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
133907 , p_source_11 => l_array_source_11(Idx)
133908 );
133909 If(l_balance_type_code = 'A') THEN
133910 l_actual_gain_loss_ref := l_gain_or_loss_ref;
133911 END IF;
133912
133913 --
133914
133915
133916 --
133917 AcctLineType_218 (
133918 p_application_id => p_application_id
133919 ,p_event_id => l_event_id
133920 ,p_calculate_acctd_flag => l_calculate_acctd_flag
133921 ,p_calculate_g_l_flag => l_calculate_g_l_flag
133922 ,p_actual_flag => l_actual_flag
133923 ,p_balance_type_code => l_balance_type_code
133924 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
133925
133926 , p_source_1 => l_array_source_1(Idx)
133927 , p_source_2 => l_array_source_2(Idx)
133928 , p_source_3 => l_array_source_3(Idx)
133929 , p_source_5 => l_array_source_5(Idx)
133930 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
133931 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
133935 , p_source_11 => l_array_source_11(Idx)
133932 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
133933 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
133934 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
133936 );
133937 If(l_balance_type_code = 'A') THEN
133938 l_actual_gain_loss_ref := l_gain_or_loss_ref;
133939 END IF;
133940
133941 --
133942
133943 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
133944 -- or secondary ledger that has different currency with primary
133945 -- or alc that is calculated by sla
133946 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
133947 (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'))
133948
133949 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
133950 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
133951 AND (l_actual_flag = 'A')) THEN
133952 XLA_AE_LINES_PKG.CreateGainOrLossLines(
133953 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
133954 ,p_application_id => p_application_id
133955 ,p_amb_context_code => 'DEFAULT'
133956 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
133957 ,p_event_class_code => C_EVENT_CLASS_CODE
133958 ,p_event_type_code => C_EVENT_TYPE_CODE
133959
133960 ,p_gain_ccid => -1
133961 ,p_loss_ccid => -1
133962
133963 ,p_actual_flag => l_actual_flag
133964 ,p_enc_flag => null
133965 ,p_actual_g_l_ref => l_actual_gain_loss_ref
133966 ,p_enc_g_l_ref => null
133967 );
133968 END IF;
133969 END IF;
133970 END IF;
133971
133972 ELSE
133973 --
133974 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
133975 --
133976 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
133977 trace
133978 (p_msg => 'Trancaction revesal option is Y'
133979 ,p_level => C_LEVEL_STATEMENT
133980 ,p_module => l_log_module);
133981 END IF;
133982 END IF;
133983
133984 END LOOP;
133985 l_result := XLA_AE_LINES_PKG.InsertLines ;
133986 end loop;
133987 close line_cur;
133988
133989
133990 --
133991 -- insert headers into xla_ae_headers_gt table
133992 --
133993 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
133994
133995 -- insert into errors table here.
133996
133997 END LOOP;
133998
133999 --
134000 -- 4865292
134001 --
134002 -- Compare g_hdr_extract_count with event count in
134003 -- CreateHeadersAndLines.
134004 --
134005 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
134006
134007 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134008 trace (p_msg => '# rows extracted from header extract objects '
134009 || ' (running total): '
134010 || g_hdr_extract_count
134011 ,p_level => C_LEVEL_STATEMENT
134012 ,p_module => l_log_module);
134013 END IF;
134014
134015 CLOSE header_cur;
134016 --
134017
134018 --
134019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134020 trace
134021 (p_msg => 'END of EventType_259'
134022 ,p_level => C_LEVEL_PROCEDURE
134023 ,p_module => l_log_module);
134024 END IF;
134025 --
134026 RETURN l_result;
134027 EXCEPTION
134028 WHEN xla_exceptions_pkg.application_exception THEN
134029
134030 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
134031
134032
134033 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
134034
134035 RAISE;
134036
134037 WHEN NO_DATA_FOUND THEN
134038
134039 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
134040 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
134041
134042 FOR header_record IN header_cur
134043 LOOP
134044 l_array_header_events(header_record.event_id) := header_record.event_id;
134045 END LOOP;
134046
134047 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
134048 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
134049
134050 fnd_file.put_line(fnd_file.LOG, ' ');
134051 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
134052 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
134053 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
134054
134055 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
134056 LOOP
134057 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
134058 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
134059 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
134060 END IF;
134061 END LOOP;
134062
134063 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
134064 fnd_file.put_line(fnd_file.LOG, ' ');
134065
134066
134067 xla_exceptions_pkg.raise_message
134071 WHEN OTHERS THEN
134068 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_259');
134069
134070
134072 xla_exceptions_pkg.raise_message
134073 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_259');
134074 END EventType_259;
134075 --
134076
134077 ---------------------------------------
134078 --
134079 -- PRIVATE PROCEDURE
134080 -- insert_sources_260
134081 --
134082 ----------------------------------------
134083 --
134084 PROCEDURE insert_sources_260(
134085 p_target_ledger_id IN NUMBER
134086 , p_language IN VARCHAR2
134087 , p_sla_ledger_id IN NUMBER
134088 , p_pad_start_date IN DATE
134089 , p_pad_end_date IN DATE
134090 )
134091 IS
134092
134093 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
134094 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
134095 p_apps_owner VARCHAR2(30);
134096 l_log_module VARCHAR2(240);
134097 BEGIN
134098 IF g_log_enabled THEN
134099 l_log_module := C_DEFAULT_MODULE||'.insert_sources_260';
134100 END IF;
134101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134102
134103 trace
134104 (p_msg => 'BEGIN of insert_sources_260'
134105 ,p_level => C_LEVEL_PROCEDURE
134106 ,p_module => l_log_module);
134107
134108 END IF;
134109
134110 -- select APPS owner
134111 SELECT oracle_username
134112 INTO p_apps_owner
134113 FROM fnd_oracle_userid
134114 WHERE read_only_flag = 'U'
134115 ;
134116
134117 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134118 trace
134119 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
134120 ' - p_language = '||p_language||
134121 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
134122 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
134123 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
134124 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
134125 ,p_level => C_LEVEL_STATEMENT
134126 ,p_module => l_log_module);
134127 END IF;
134128
134129
134130 --
134131 INSERT INTO xla_diag_sources --hdr1
134132 (
134133 event_id
134134 , ledger_id
134135 , sla_ledger_id
134136 , description_language
134137 , object_name
134138 , object_type_code
134139 , line_number
134140 , source_application_id
134141 , source_type_code
134142 , source_code
134143 , source_value
134144 , source_meaning
134145 , created_by
134146 , creation_date
134147 , last_update_date
134148 , last_updated_by
134149 , last_update_login
134150 , program_update_date
134151 , program_application_id
134152 , program_id
134153 , request_id
134154 )
134155 SELECT
134156 event_id
134157 , p_target_ledger_id
134158 , p_sla_ledger_id
134159 , p_language
134160 , object_name
134161 , object_type_code
134162 , line_number
134163 , source_application_id
134164 , source_type_code
134165 , source_code
134166 , SUBSTR(source_value ,1,1996)
134167 , SUBSTR(source_meaning,1,200)
134168 , xla_environment_pkg.g_Usr_Id
134169 , TRUNC(SYSDATE)
134170 , TRUNC(SYSDATE)
134171 , xla_environment_pkg.g_Usr_Id
134172 , xla_environment_pkg.g_Login_Id
134173 , TRUNC(SYSDATE)
134174 , xla_environment_pkg.g_Prog_Appl_Id
134175 , xla_environment_pkg.g_Prog_Id
134176 , xla_environment_pkg.g_Req_Id
134177 FROM (
134178 SELECT xet.event_id event_id
134179 , 0 line_number
134180 , CASE r
134181 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
134182 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
134183 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
134184 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
134185 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
134186 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
134187
134188 ELSE null
134189 END object_name
134190 , CASE r
134191 WHEN 1 THEN 'HEADER'
134192 WHEN 2 THEN 'HEADER'
134193 WHEN 3 THEN 'HEADER'
134194 WHEN 4 THEN 'HEADER'
134195 WHEN 5 THEN 'HEADER'
134196 WHEN 6 THEN 'HEADER'
134197
134198 ELSE null
134199 END object_type_code
134200 , CASE r
134201 WHEN 1 THEN '555'
134202 WHEN 2 THEN '555'
134203 WHEN 3 THEN '555'
134204 WHEN 4 THEN '555'
134205 WHEN 5 THEN '555'
134206 WHEN 6 THEN '555'
134207
134208 ELSE null
134209 END source_application_id
134210 , 'S' source_type_code
134211 , CASE r
134212 WHEN 1 THEN 'ENTITY_CODE'
134213 WHEN 2 THEN 'CURRENCY_CODE'
134217 WHEN 6 THEN 'TRANSACTION_DATE'
134214 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
134215 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
134216 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
134218
134219 ELSE null
134220 END source_code
134221 , CASE r
134222 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
134223 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
134224 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
134225 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
134226 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
134227 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
134228
134229 ELSE null
134230 END source_value
134231 , CASE r
134232 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
134233 1010186
134234 ,TO_CHAR(h1.CURRENCY_CODE)
134235 ,'CURRENCY_CODE'
134236 ,'S'
134237 ,555)
134238
134239 ELSE null
134240 END source_meaning
134241 FROM xla_events_gt xet
134242 , GMF_XLA_EXTRACT_HEADERS h1
134243 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
134244 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
134245 AND xet.event_type_code = C_EVENT_TYPE_CODE
134246 AND h1.event_id = xet.event_id
134247
134248 )
134249 ;
134250 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134251
134252 trace
134253 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
134254 ,p_level => C_LEVEL_STATEMENT
134255 ,p_module => l_log_module);
134256
134257 END IF;
134258 --
134259
134260
134261
134262 --
134263 INSERT INTO xla_diag_sources --line1
134264 (
134265 event_id
134266 , ledger_id
134267 , sla_ledger_id
134268 , description_language
134269 , object_name
134270 , object_type_code
134271 , line_number
134272 , source_application_id
134273 , source_type_code
134274 , source_code
134275 , source_value
134276 , source_meaning
134277 , created_by
134278 , creation_date
134279 , last_update_date
134280 , last_updated_by
134281 , last_update_login
134282 , program_update_date
134283 , program_application_id
134284 , program_id
134285 , request_id
134286 )
134287 SELECT event_id
134288 , p_target_ledger_id
134289 , p_sla_ledger_id
134290 , p_language
134291 , object_name
134292 , object_type_code
134293 , line_number
134294 , source_application_id
134295 , source_type_code
134296 , source_code
134297 , SUBSTR(source_value,1,1996)
134298 , SUBSTR(source_meaning,1,200)
134299 , xla_environment_pkg.g_Usr_Id
134300 , TRUNC(SYSDATE)
134301 , TRUNC(SYSDATE)
134302 , xla_environment_pkg.g_Usr_Id
134303 , xla_environment_pkg.g_Login_Id
134304 , TRUNC(SYSDATE)
134305 , xla_environment_pkg.g_Prog_Appl_Id
134306 , xla_environment_pkg.g_Prog_Id
134307 , xla_environment_pkg.g_Req_Id
134308 FROM (
134309 SELECT xet.event_id event_id
134310 , l2.line_number line_number
134311 , CASE r
134312 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
134313 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
134314 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
134315 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
134316 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
134317
134318 ELSE null
134319 END object_name
134320 , CASE r
134321 WHEN 1 THEN 'LINE'
134322 WHEN 2 THEN 'LINE'
134323 WHEN 3 THEN 'LINE'
134324 WHEN 4 THEN 'LINE'
134325 WHEN 5 THEN 'LINE'
134326
134327 ELSE null
134328 END object_type_code
134329 , CASE r
134330 WHEN 1 THEN '555'
134331 WHEN 2 THEN '555'
134332 WHEN 3 THEN '555'
134333 WHEN 4 THEN '555'
134334 WHEN 5 THEN '555'
134335
134336 ELSE null
134337 END source_application_id
134338 , 'S' source_type_code
134339 , CASE r
134340 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
134341 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
134342 WHEN 3 THEN 'ENTERED_AMOUNT'
134343 WHEN 4 THEN 'LINE_ID'
134344 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
134345
134346 ELSE null
134347 END source_code
134348 , CASE r
134349 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
134350 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
134351 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
134355 ELSE null
134352 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
134353 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
134354
134356 END source_value
134357 , null source_meaning
134358 FROM xla_events_gt xet
134359 , GMF_XLA_EXTRACT_LINES l2
134360 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
134361 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
134362 AND xet.event_type_code = C_EVENT_TYPE_CODE
134363 AND l2.event_id = xet.event_id
134364
134365 )
134366 ;
134367 --
134368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134369
134370 trace
134371 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
134372 ,p_level => C_LEVEL_STATEMENT
134373 ,p_module => l_log_module);
134374
134375 END IF;
134376
134377
134378 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134379 trace
134380 (p_msg => 'END of insert_sources_260'
134381 ,p_level => C_LEVEL_PROCEDURE
134382 ,p_module => l_log_module);
134383 END IF;
134384 EXCEPTION
134385 WHEN xla_exceptions_pkg.application_exception THEN
134386 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
134387 trace
134388 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
134389 ,p_level => C_LEVEL_EXCEPTION
134390 ,p_module => l_log_module);
134391 END IF;
134392 RAISE;
134393 WHEN OTHERS THEN
134394 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
134395 trace
134396 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
134397 ,p_level => C_LEVEL_EXCEPTION
134398 ,p_module => l_log_module);
134399 END IF;
134400 xla_exceptions_pkg.raise_message
134401 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_260');
134402 END insert_sources_260;
134403 --
134404
134405 ---------------------------------------
134406 --
134407 -- PRIVATE FUNCTION
134408 -- EventType_260
134409 --
134410 ----------------------------------------
134411 --
134412 FUNCTION EventType_260
134413 (p_application_id IN NUMBER
134414 ,p_base_ledger_id IN NUMBER
134415 ,p_target_ledger_id IN NUMBER
134416 ,p_language IN VARCHAR2
134417 ,p_currency_code IN VARCHAR2
134418 ,p_sla_ledger_id IN NUMBER
134419 ,p_pad_start_date IN DATE
134420 ,p_pad_end_date IN DATE
134421 ,p_primary_ledger_id IN NUMBER)
134422 RETURN BOOLEAN IS
134423 --
134424 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
134425 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
134426
134427 l_calculate_acctd_flag VARCHAR2(1) :='N';
134428 l_calculate_g_l_flag VARCHAR2(1) :='N';
134429 --
134430 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134431 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134432 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
134433 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134434 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134435 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
134436 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
134437 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134438 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134439 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134440 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134441 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134442 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134443 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
134444 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134445 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134446 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134447 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
134448 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134449 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134450 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134451 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
134452 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
134453 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
134454 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
134455 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
134456
134457 l_event_id NUMBER;
134458 l_previous_event_id NUMBER;
134459 l_first_event_id NUMBER;
134460 l_last_event_id NUMBER;
134461
134462 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
134463 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
134464 --
134465 --
134469 l_event_class_name VARCHAR2(80) := 'Direct Interorg Shipment';
134466 l_result BOOLEAN := TRUE;
134467 l_rows NUMBER := 1000;
134468 l_event_type_name VARCHAR2(80) := 'Direct Interorg Shipment, no Transfer Pricing';
134470 l_description VARCHAR2(4000);
134471 l_transaction_reversal NUMBER;
134472 l_ae_header_id NUMBER;
134473 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
134474 l_log_module VARCHAR2(240);
134475 --
134476 l_acct_reversal_source VARCHAR2(30);
134477 l_trx_reversal_source VARCHAR2(30);
134478
134479 l_continue_with_lines BOOLEAN := TRUE;
134480 --
134481 l_acc_rev_gl_date_source DATE; -- 4262811
134482 --
134483 type t_array_event_id is table of number index by binary_integer;
134484
134485 l_rec_array_event t_rec_array_event;
134486 l_null_rec_array_event t_rec_array_event;
134487 l_array_ae_header_id xla_number_array_type;
134488 l_actual_flag VARCHAR2(1) := NULL;
134489 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
134490 l_balance_type_code VARCHAR2(1) :=NULL;
134491 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
134492
134493 --
134494 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
134495 --
134496
134497 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
134498 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
134499 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
134500 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
134501 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
134502 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
134503
134504 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
134505 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
134506 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
134507 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
134508 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
134509
134510 l_array_source_6 t_array_source_6;
134511 l_array_source_7 t_array_source_7;
134512 l_array_source_8 t_array_source_8;
134513 l_array_source_9 t_array_source_9;
134514 l_array_source_10 t_array_source_10;
134515 l_array_source_12 t_array_source_12;
134516
134517 l_array_source_1 t_array_source_1;
134518 l_array_source_2 t_array_source_2;
134519 l_array_source_3 t_array_source_3;
134520 l_array_source_5 t_array_source_5;
134521 l_array_source_11 t_array_source_11;
134522
134523 --
134524 CURSOR header_cur
134525 IS
134526 SELECT /*+ leading(xet) cardinality(xet,1) */
134527 -- Event Type Code: DIR_INTERORG_SHIP
134528 -- Event Class Code: DIR_INTERORG_SHIP
134529 xet.entity_id
134530 , xet.legal_entity_id
134531 , xet.entity_code
134532 , xet.transaction_number
134533 , xet.event_id
134534 , xet.event_class_code
134535 , xet.event_type_code
134536 , xet.event_number
134537 , xet.event_date
134538 , xet.transaction_date
134539 , xet.reference_num_1
134540 , xet.reference_num_2
134541 , xet.reference_num_3
134542 , xet.reference_num_4
134543 , xet.reference_char_1
134544 , xet.reference_char_2
134545 , xet.reference_char_3
134546 , xet.reference_char_4
134547 , xet.reference_date_1
134548 , xet.reference_date_2
134549 , xet.reference_date_3
134550 , xet.reference_date_4
134551 , xet.event_created_by
134552 , xet.budgetary_control_flag
134553 , h1.ENTITY_CODE source_6
134554 , h1.CURRENCY_CODE source_7
134555 , h1.CURRENCY_CONVERSION_DATE source_8
134556 , h1.CURRENCY_CONVERSION_RATE source_9
134557 , h1.CURRENCY_CONVERSION_TYPE source_10
134558 , h1.TRANSACTION_DATE source_12
134559 FROM xla_events_gt xet
134560 , GMF_XLA_EXTRACT_HEADERS h1
134561 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
134562 and xet.event_type_code = C_EVENT_TYPE_CODE
134563 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
134564
134565 ORDER BY event_id
134566 ;
134567
134568
134569 --
134570 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
134571 IS
134572 SELECT /*+ leading(xet) cardinality(xet,1) */
134573 -- Event Type Code: DIR_INTERORG_SHIP
134574 -- Event Class Code: DIR_INTERORG_SHIP
134575 xet.entity_id
134576 ,xet.legal_entity_id
134577 ,xet.entity_code
134578 ,xet.transaction_number
134579 ,xet.event_id
134580 ,xet.event_class_code
134581 ,xet.event_type_code
134582 ,xet.event_number
134583 ,xet.event_date
134584 ,xet.transaction_date
134585 ,xet.reference_num_1
134586 ,xet.reference_num_2
134587 ,xet.reference_num_3
134588 ,xet.reference_num_4
134589 ,xet.reference_char_1
134590 ,xet.reference_char_2
134591 ,xet.reference_char_3
134595 ,xet.reference_date_3
134592 ,xet.reference_char_4
134593 ,xet.reference_date_1
134594 ,xet.reference_date_2
134596 ,xet.reference_date_4
134597 ,xet.event_created_by
134598 ,xet.budgetary_control_flag , l2.LINE_NUMBER
134599 , l2.TRANSACTION_ACCOUNT_ID source_1
134600 , l2.JOURNAL_LINE_TYPE source_2
134601 , l2.ENTERED_AMOUNT source_3
134602 , l2.LINE_ID source_5
134603 , l2.ACCOUNTED_AMOUNT source_11
134604 FROM xla_events_gt xet
134605 , GMF_XLA_EXTRACT_LINES l2
134606 WHERE xet.event_id between x_first_event_id and x_last_event_id
134607 and xet.event_date between p_pad_start_date and p_pad_end_date
134608 and xet.event_type_code = C_EVENT_TYPE_CODE
134609 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
134610 ;
134611
134612 --
134613 BEGIN
134614 IF g_log_enabled THEN
134615 l_log_module := C_DEFAULT_MODULE||'.EventType_260';
134616 END IF;
134617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134618 trace
134619 (p_msg => 'BEGIN of EventType_260'
134620 ,p_level => C_LEVEL_PROCEDURE
134621 ,p_module => l_log_module);
134622 END IF;
134623
134624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134625 trace
134626 (p_msg => 'p_application_id = '||p_application_id||
134627 ' - p_base_ledger_id = '||p_base_ledger_id||
134628 ' - p_target_ledger_id = '||p_target_ledger_id||
134629 ' - p_language = '||p_language||
134630 ' - p_currency_code = '||p_currency_code||
134631 ' - p_sla_ledger_id = '||p_sla_ledger_id
134632 ,p_level => C_LEVEL_STATEMENT
134633 ,p_module => l_log_module);
134634 END IF;
134635 --
134636 -- initialze arrays
134637 --
134638 g_array_event.DELETE;
134639 l_rec_array_event := l_null_rec_array_event;
134640 --
134641 --------------------------------------
134642 -- 4262811 Initialze MPA Line Number
134643 --------------------------------------
134644 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
134645
134646 --
134647
134648 --
134649 OPEN header_cur;
134650 --
134651 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134652 trace
134653 (p_msg => 'SQL - FETCH header_cur'
134654 ,p_level => C_LEVEL_STATEMENT
134655 ,p_module => l_log_module);
134656 END IF;
134657 --
134658 LOOP
134659 FETCH header_cur BULK COLLECT INTO
134660 l_array_entity_id
134661 , l_array_legal_entity_id
134662 , l_array_entity_code
134663 , l_array_transaction_num
134664 , l_array_event_id
134665 , l_array_class_code
134666 , l_array_event_type
134667 , l_array_event_number
134668 , l_array_event_date
134669 , l_array_transaction_date
134670 , l_array_reference_num_1
134671 , l_array_reference_num_2
134672 , l_array_reference_num_3
134673 , l_array_reference_num_4
134674 , l_array_reference_char_1
134675 , l_array_reference_char_2
134676 , l_array_reference_char_3
134677 , l_array_reference_char_4
134678 , l_array_reference_date_1
134679 , l_array_reference_date_2
134680 , l_array_reference_date_3
134681 , l_array_reference_date_4
134682 , l_array_event_created_by
134683 , l_array_budgetary_control_flag
134684 , l_array_source_6
134685 , l_array_source_7
134686 , l_array_source_8
134687 , l_array_source_9
134688 , l_array_source_10
134689 , l_array_source_12
134690 LIMIT l_rows;
134691 --
134692 IF (C_LEVEL_EVENT >= g_log_level) THEN
134693 trace
134694 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
134695 ,p_level => C_LEVEL_EVENT
134696 ,p_module => l_log_module);
134697 END IF;
134698 --
134699 EXIT WHEN l_array_entity_id.COUNT = 0;
134700
134701 -- initialize arrays
134702 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
134703 XLA_AE_LINES_PKG.g_rec_lines := NULL;
134704
134705 --
134706 -- Bug 4458708
134707 --
134708 XLA_AE_LINES_PKG.g_LineNumber := 0;
134709
134710
134711 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
134712 g_last_hdr_idx := l_array_event_id.LAST;
134713 --
134714 -- loop for the headers. Each iteration is for each header extract row
134715 -- fetched in header cursor
134716 --
134717 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
134718
134719 --
134720 -- set event info as cache for other routines to refer event attributes
134721 --
134722 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
134723 (p_application_id => p_application_id
134724 ,p_primary_ledger_id => p_primary_ledger_id
134725 ,p_base_ledger_id => p_base_ledger_id
134726 ,p_target_ledger_id => p_target_ledger_id
134727 ,p_entity_id => l_array_entity_id(hdr_idx)
134728 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
134729 ,p_entity_code => l_array_entity_code(hdr_idx)
134730 ,p_transaction_num => l_array_transaction_num(hdr_idx)
134731 ,p_event_id => l_array_event_id(hdr_idx)
134732 ,p_event_class_code => l_array_class_code(hdr_idx)
134733 ,p_event_type_code => l_array_event_type(hdr_idx)
134734 ,p_event_number => l_array_event_number(hdr_idx)
134738 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
134735 ,p_event_date => l_array_event_date(hdr_idx)
134736 ,p_transaction_date => l_array_transaction_date(hdr_idx)
134737 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
134739 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
134740 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
134741 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
134742 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
134743 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
134744 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
134745 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
134746 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
134747 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
134748 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
134749 ,p_event_created_by => l_array_event_created_by(hdr_idx)
134750 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
134751
134752 --
134753 -- set the status of entry to C_VALID (0)
134754 --
134755 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
134756
134757 --
134758 -- initialize a row for ae header
134759 --
134760 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
134761
134762 l_event_id := l_array_event_id(hdr_idx);
134763
134764 --
134765 -- storing the hdr_idx for event. May be used by line cursor.
134766 --
134767 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
134768
134769 --
134770 -- store sources from header extract. This can be improved to
134771 -- store only those sources from header extract that may be used in lines
134772 --
134773
134774 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
134775 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
134776 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
134777 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
134778 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
134779 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
134780
134781 --
134782 -- initilaize the status of ae headers for diffrent balance types
134783 -- the status is initialised to C_NOT_CREATED (2)
134784 --
134785 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
134786 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
134787 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
134788
134789 --
134790 -- call api to validate and store accounting attributes for header
134791 --
134792
134793 ------------------------------------------------------------
134794 -- Accrual Reversal : to get date for Standard Source (NONE)
134795 ------------------------------------------------------------
134796 l_acc_rev_gl_date_source := NULL;
134797
134798 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
134799 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
134800
134801
134802 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
134803
134804 XLA_AE_HEADER_PKG.SetJeCategoryName;
134805
134806 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
134807 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
134808 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
134809 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
134810 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
134811
134812
134813 -- No header level analytical criteria
134814
134815 --
134816 --accounting attribute enhancement, bug 3612931
134817 --
134818 l_trx_reversal_source := SUBSTR(NULL, 1,30);
134819
134820 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
134821 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
134822
134823 xla_accounting_err_pkg.build_message
134824 (p_appli_s_name => 'XLA'
134825 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
134826 ,p_token_1 => 'ACCT_ATTR_NAME'
134827 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
134828 ,p_token_2 => 'PRODUCT_NAME'
134829 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
134830 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
134831 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
134832 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
134833
134834 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
134835 --
134836 -- following sets the accounting attributes needed to reverse
134837 -- accounting for a distributeion
134838 --
134839 xla_ae_lines_pkg.SetTrxReversalAttrs
134840 (p_event_id => l_event_id
134841 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
134842 ,p_trx_reversal_source => l_trx_reversal_source);
134843
134844 END IF;
134845
134846
134850 --
134847 ----------------------------------------------------------------
134848 -- 4262811 - update the header statuses to invalid in need be
134849 ----------------------------------------------------------------
134851 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
134852
134853
134854 -----------------------------------------------
134855 -- No accrual reversal for the event class/type
134856 -----------------------------------------------
134857 ----------------------------------------------------------------
134858
134859 --
134860 -- this ends the header loop iteration for one bulk fetch
134861 --
134862 END LOOP;
134863
134864 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
134865 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
134866
134867 --
134868 -- insert dummy rows into lines gt table that were created due to
134869 -- transaction reversals
134870 --
134871 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
134872 l_result := XLA_AE_LINES_PKG.InsertLines;
134873 END IF;
134874
134875 --
134876 -- reset the temp_line_num for each set of events fetched from header
134877 -- cursor rather than doing it for each new event in line cursor
134878 -- Bug 3939231
134879 --
134880 xla_ae_lines_pkg.g_temp_line_num := 0;
134881
134882
134883
134884 --
134885 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
134886 --
134887 --
134888 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134889
134890 trace
134891 (p_msg => 'SQL - FETCH line_cur'
134892 ,p_level => C_LEVEL_STATEMENT
134893 ,p_module => l_log_module);
134894
134895 END IF;
134896 --
134897 --
134898 LOOP
134899 --
134900 FETCH line_cur BULK COLLECT INTO
134901 l_array_entity_id
134902 , l_array_legal_entity_id
134903 , l_array_entity_code
134904 , l_array_transaction_num
134905 , l_array_event_id
134906 , l_array_class_code
134907 , l_array_event_type
134908 , l_array_event_number
134909 , l_array_event_date
134910 , l_array_transaction_date
134911 , l_array_reference_num_1
134912 , l_array_reference_num_2
134913 , l_array_reference_num_3
134914 , l_array_reference_num_4
134915 , l_array_reference_char_1
134916 , l_array_reference_char_2
134917 , l_array_reference_char_3
134918 , l_array_reference_char_4
134919 , l_array_reference_date_1
134920 , l_array_reference_date_2
134921 , l_array_reference_date_3
134922 , l_array_reference_date_4
134923 , l_array_event_created_by
134924 , l_array_budgetary_control_flag
134925 , l_array_extract_line_num
134926 , l_array_source_1
134927 , l_array_source_2
134928 , l_array_source_3
134929 , l_array_source_5
134930 , l_array_source_11
134931 LIMIT l_rows;
134932
134933 --
134934 IF (C_LEVEL_EVENT >= g_log_level) THEN
134935 trace
134936 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
134937 ,p_level => C_LEVEL_EVENT
134938 ,p_module => l_log_module);
134939 END IF;
134940 --
134941 EXIT WHEN l_array_entity_id.count = 0;
134942
134943 XLA_AE_LINES_PKG.g_rec_lines := null;
134944
134945 --
134946 -- Bug 4458708
134947 --
134948 XLA_AE_LINES_PKG.g_LineNumber := 0;
134949 --
134950 --
134951
134952 FOR Idx IN 1..l_array_event_id.count LOOP
134953 --
134954 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
134955 --
134956 l_event_id := l_array_event_id(idx); -- 5648433
134957
134958 --
134959 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
134960 --
134961
134962 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
134963 (g_array_event(l_event_id).array_value_num('header_index'))
134964 ,'N'
134965 ) <> 'Y'
134966 THEN
134967 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
134968 trace
134969 (p_msg => 'Trancaction revesal option is not Y '
134970 ,p_level => C_LEVEL_STATEMENT
134971 ,p_module => l_log_module);
134972 END IF;
134973
134974 --
134975 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
134976 --
134977 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
134978 --
134979 -- set event info as cache for other routines to refer event attributes
134980 --
134981
134982 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
134983 l_previous_event_id := l_event_id;
134984
134985 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
134986 (p_application_id => p_application_id
134987 ,p_primary_ledger_id => p_primary_ledger_id
134988 ,p_base_ledger_id => p_base_ledger_id
134989 ,p_target_ledger_id => p_target_ledger_id
134990 ,p_entity_id => l_array_entity_id(Idx)
134991 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
134992 ,p_entity_code => l_array_entity_code(Idx)
134993 ,p_transaction_num => l_array_transaction_num(Idx)
134994 ,p_event_id => l_array_event_id(Idx)
134998 ,p_event_date => l_array_event_date(Idx)
134995 ,p_event_class_code => l_array_class_code(Idx)
134996 ,p_event_type_code => l_array_event_type(Idx)
134997 ,p_event_number => l_array_event_number(Idx)
134999 ,p_transaction_date => l_array_transaction_date(Idx)
135000 ,p_reference_num_1 => l_array_reference_num_1(Idx)
135001 ,p_reference_num_2 => l_array_reference_num_2(Idx)
135002 ,p_reference_num_3 => l_array_reference_num_3(Idx)
135003 ,p_reference_num_4 => l_array_reference_num_4(Idx)
135004 ,p_reference_char_1 => l_array_reference_char_1(Idx)
135005 ,p_reference_char_2 => l_array_reference_char_2(Idx)
135006 ,p_reference_char_3 => l_array_reference_char_3(Idx)
135007 ,p_reference_char_4 => l_array_reference_char_4(Idx)
135008 ,p_reference_date_1 => l_array_reference_date_1(Idx)
135009 ,p_reference_date_2 => l_array_reference_date_2(Idx)
135010 ,p_reference_date_3 => l_array_reference_date_3(Idx)
135011 ,p_reference_date_4 => l_array_reference_date_4(Idx)
135012 ,p_event_created_by => l_array_event_created_by(Idx)
135013 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
135014 --
135015 END IF;
135016
135017
135018
135019 --
135020 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
135021
135022 l_acct_reversal_source := SUBSTR(NULL, 1,30);
135023
135024 IF l_continue_with_lines THEN
135025 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
135026 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
135027
135028 xla_accounting_err_pkg.build_message
135029 (p_appli_s_name => 'XLA'
135030 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
135031 ,p_token_1 => 'LINE_NUMBER'
135032 ,p_value_1 => l_array_extract_line_num(Idx)
135033 ,p_token_2 => 'PRODUCT_NAME'
135034 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
135035 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
135036 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
135037 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
135038
135039 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
135040 --
135041 -- following sets the accounting attributes needed to reverse
135042 -- accounting for a distributeion
135043 --
135044
135045 --
135046 -- 5217187
135047 --
135048 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
135049 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
135050 g_array_event(l_event_id).array_value_num('header_index'));
135051 --
135052 --
135053
135054 -- No reversal code generated
135055
135056 xla_ae_lines_pkg.SetAcctReversalAttrs
135057 (p_event_id => l_event_id
135058 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
135059 ,p_calculate_acctd_flag => l_calculate_acctd_flag
135060 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
135061 END IF;
135062
135063 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
135064 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
135065
135066 --
135067 AcctLineType_98 (
135068 p_application_id => p_application_id
135069 ,p_event_id => l_event_id
135070 ,p_calculate_acctd_flag => l_calculate_acctd_flag
135071 ,p_calculate_g_l_flag => l_calculate_g_l_flag
135072 ,p_actual_flag => l_actual_flag
135073 ,p_balance_type_code => l_balance_type_code
135074 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135075
135076 , p_source_1 => l_array_source_1(Idx)
135077 , p_source_2 => l_array_source_2(Idx)
135078 , p_source_3 => l_array_source_3(Idx)
135079 , p_source_5 => l_array_source_5(Idx)
135080 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135081 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135082 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135083 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135084 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135085 , p_source_11 => l_array_source_11(Idx)
135086 );
135087 If(l_balance_type_code = 'A') THEN
135088 l_actual_gain_loss_ref := l_gain_or_loss_ref;
135089 END IF;
135090
135091 --
135092
135093
135094 --
135095 AcctLineType_115 (
135096 p_application_id => p_application_id
135097 ,p_event_id => l_event_id
135098 ,p_calculate_acctd_flag => l_calculate_acctd_flag
135099 ,p_calculate_g_l_flag => l_calculate_g_l_flag
135100 ,p_actual_flag => l_actual_flag
135101 ,p_balance_type_code => l_balance_type_code
135102 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135103
135104 , p_source_1 => l_array_source_1(Idx)
135105 , p_source_2 => l_array_source_2(Idx)
135106 , p_source_3 => l_array_source_3(Idx)
135107 , p_source_5 => l_array_source_5(Idx)
135108 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135109 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135113 , p_source_11 => l_array_source_11(Idx)
135110 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135111 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135112 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135114 );
135115 If(l_balance_type_code = 'A') THEN
135116 l_actual_gain_loss_ref := l_gain_or_loss_ref;
135117 END IF;
135118
135119 --
135120
135121
135122 --
135123 AcctLineType_164 (
135124 p_application_id => p_application_id
135125 ,p_event_id => l_event_id
135126 ,p_calculate_acctd_flag => l_calculate_acctd_flag
135127 ,p_calculate_g_l_flag => l_calculate_g_l_flag
135128 ,p_actual_flag => l_actual_flag
135129 ,p_balance_type_code => l_balance_type_code
135130 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135131
135132 , p_source_1 => l_array_source_1(Idx)
135133 , p_source_2 => l_array_source_2(Idx)
135134 , p_source_3 => l_array_source_3(Idx)
135135 , p_source_5 => l_array_source_5(Idx)
135136 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135137 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135138 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135139 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135140 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135141 , p_source_11 => l_array_source_11(Idx)
135142 );
135143 If(l_balance_type_code = 'A') THEN
135144 l_actual_gain_loss_ref := l_gain_or_loss_ref;
135145 END IF;
135146
135147 --
135148
135149
135150 --
135151 AcctLineType_190 (
135152 p_application_id => p_application_id
135153 ,p_event_id => l_event_id
135154 ,p_calculate_acctd_flag => l_calculate_acctd_flag
135155 ,p_calculate_g_l_flag => l_calculate_g_l_flag
135156 ,p_actual_flag => l_actual_flag
135157 ,p_balance_type_code => l_balance_type_code
135158 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135159
135160 , p_source_1 => l_array_source_1(Idx)
135161 , p_source_2 => l_array_source_2(Idx)
135162 , p_source_3 => l_array_source_3(Idx)
135163 , p_source_5 => l_array_source_5(Idx)
135164 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135165 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135166 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135167 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135168 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135169 , p_source_11 => l_array_source_11(Idx)
135170 );
135171 If(l_balance_type_code = 'A') THEN
135172 l_actual_gain_loss_ref := l_gain_or_loss_ref;
135173 END IF;
135174
135175 --
135176
135177
135178 --
135179 AcctLineType_246 (
135180 p_application_id => p_application_id
135181 ,p_event_id => l_event_id
135182 ,p_calculate_acctd_flag => l_calculate_acctd_flag
135183 ,p_calculate_g_l_flag => l_calculate_g_l_flag
135184 ,p_actual_flag => l_actual_flag
135185 ,p_balance_type_code => l_balance_type_code
135186 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
135187
135188 , p_source_1 => l_array_source_1(Idx)
135189 , p_source_2 => l_array_source_2(Idx)
135190 , p_source_3 => l_array_source_3(Idx)
135191 , p_source_5 => l_array_source_5(Idx)
135192 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
135193 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
135194 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
135195 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
135196 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
135197 , p_source_11 => l_array_source_11(Idx)
135198 );
135199 If(l_balance_type_code = 'A') THEN
135200 l_actual_gain_loss_ref := l_gain_or_loss_ref;
135201 END IF;
135202
135203 --
135204
135205 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
135206 -- or secondary ledger that has different currency with primary
135207 -- or alc that is calculated by sla
135208 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
135209 (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'))
135210
135211 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
135212 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
135213 AND (l_actual_flag = 'A')) THEN
135214 XLA_AE_LINES_PKG.CreateGainOrLossLines(
135215 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
135216 ,p_application_id => p_application_id
135217 ,p_amb_context_code => 'DEFAULT'
135218 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
135219 ,p_event_class_code => C_EVENT_CLASS_CODE
135220 ,p_event_type_code => C_EVENT_TYPE_CODE
135221
135222 ,p_gain_ccid => -1
135223 ,p_loss_ccid => -1
135224
135225 ,p_actual_flag => l_actual_flag
135226 ,p_enc_flag => null
135227 ,p_actual_g_l_ref => l_actual_gain_loss_ref
135228 ,p_enc_g_l_ref => null
135229 );
135230 END IF;
135231 END IF;
135232 END IF;
135233
135234 ELSE
135235 --
135239 trace
135236 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
135237 --
135238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135240 (p_msg => 'Trancaction revesal option is Y'
135241 ,p_level => C_LEVEL_STATEMENT
135242 ,p_module => l_log_module);
135243 END IF;
135244 END IF;
135245
135246 END LOOP;
135247 l_result := XLA_AE_LINES_PKG.InsertLines ;
135248 end loop;
135249 close line_cur;
135250
135251
135252 --
135253 -- insert headers into xla_ae_headers_gt table
135254 --
135255 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
135256
135257 -- insert into errors table here.
135258
135259 END LOOP;
135260
135261 --
135262 -- 4865292
135263 --
135264 -- Compare g_hdr_extract_count with event count in
135265 -- CreateHeadersAndLines.
135266 --
135267 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
135268
135269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135270 trace (p_msg => '# rows extracted from header extract objects '
135271 || ' (running total): '
135272 || g_hdr_extract_count
135273 ,p_level => C_LEVEL_STATEMENT
135274 ,p_module => l_log_module);
135275 END IF;
135276
135277 CLOSE header_cur;
135278 --
135279
135280 --
135281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135282 trace
135283 (p_msg => 'END of EventType_260'
135284 ,p_level => C_LEVEL_PROCEDURE
135285 ,p_module => l_log_module);
135286 END IF;
135287 --
135288 RETURN l_result;
135289 EXCEPTION
135290 WHEN xla_exceptions_pkg.application_exception THEN
135291
135292 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
135293
135294
135295 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
135296
135297 RAISE;
135298
135299 WHEN NO_DATA_FOUND THEN
135300
135301 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
135302 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
135303
135304 FOR header_record IN header_cur
135305 LOOP
135306 l_array_header_events(header_record.event_id) := header_record.event_id;
135307 END LOOP;
135308
135309 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
135310 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
135311
135312 fnd_file.put_line(fnd_file.LOG, ' ');
135313 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
135314 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
135315 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
135316
135317 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
135318 LOOP
135319 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
135320 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
135321 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
135322 END IF;
135323 END LOOP;
135324
135325 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
135326 fnd_file.put_line(fnd_file.LOG, ' ');
135327
135328
135329 xla_exceptions_pkg.raise_message
135330 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_260');
135331
135332
135333 WHEN OTHERS THEN
135334 xla_exceptions_pkg.raise_message
135335 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_260');
135336 END EventType_260;
135337 --
135338
135339 ---------------------------------------
135340 --
135341 -- PRIVATE PROCEDURE
135342 -- insert_sources_261
135343 --
135344 ----------------------------------------
135345 --
135346 PROCEDURE insert_sources_261(
135347 p_target_ledger_id IN NUMBER
135348 , p_language IN VARCHAR2
135349 , p_sla_ledger_id IN NUMBER
135350 , p_pad_start_date IN DATE
135351 , p_pad_end_date IN DATE
135352 )
135353 IS
135354
135355 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP_TP';
135356 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
135357 p_apps_owner VARCHAR2(30);
135358 l_log_module VARCHAR2(240);
135359 BEGIN
135360 IF g_log_enabled THEN
135361 l_log_module := C_DEFAULT_MODULE||'.insert_sources_261';
135362 END IF;
135363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135364
135365 trace
135366 (p_msg => 'BEGIN of insert_sources_261'
135367 ,p_level => C_LEVEL_PROCEDURE
135368 ,p_module => l_log_module);
135369
135370 END IF;
135371
135372 -- select APPS owner
135373 SELECT oracle_username
135374 INTO p_apps_owner
135375 FROM fnd_oracle_userid
135376 WHERE read_only_flag = 'U'
135377 ;
135378
135379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135380 trace
135381 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
135382 ' - p_language = '||p_language||
135383 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
135384 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
135388 ,p_module => l_log_module);
135385 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
135386 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
135387 ,p_level => C_LEVEL_STATEMENT
135389 END IF;
135390
135391
135392 --
135393 INSERT INTO xla_diag_sources --hdr1
135394 (
135395 event_id
135396 , ledger_id
135397 , sla_ledger_id
135398 , description_language
135399 , object_name
135400 , object_type_code
135401 , line_number
135402 , source_application_id
135403 , source_type_code
135404 , source_code
135405 , source_value
135406 , source_meaning
135407 , created_by
135408 , creation_date
135409 , last_update_date
135410 , last_updated_by
135411 , last_update_login
135412 , program_update_date
135413 , program_application_id
135414 , program_id
135415 , request_id
135416 )
135417 SELECT
135418 event_id
135419 , p_target_ledger_id
135420 , p_sla_ledger_id
135421 , p_language
135422 , object_name
135423 , object_type_code
135424 , line_number
135425 , source_application_id
135426 , source_type_code
135427 , source_code
135428 , SUBSTR(source_value ,1,1996)
135429 , SUBSTR(source_meaning,1,200)
135430 , xla_environment_pkg.g_Usr_Id
135431 , TRUNC(SYSDATE)
135432 , TRUNC(SYSDATE)
135433 , xla_environment_pkg.g_Usr_Id
135434 , xla_environment_pkg.g_Login_Id
135435 , TRUNC(SYSDATE)
135436 , xla_environment_pkg.g_Prog_Appl_Id
135437 , xla_environment_pkg.g_Prog_Id
135438 , xla_environment_pkg.g_Req_Id
135439 FROM (
135440 SELECT xet.event_id event_id
135441 , 0 line_number
135442 , CASE r
135443 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
135444 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
135445 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
135446 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
135447 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
135448 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
135449
135450 ELSE null
135451 END object_name
135452 , CASE r
135453 WHEN 1 THEN 'HEADER'
135454 WHEN 2 THEN 'HEADER'
135455 WHEN 3 THEN 'HEADER'
135456 WHEN 4 THEN 'HEADER'
135457 WHEN 5 THEN 'HEADER'
135458 WHEN 6 THEN 'HEADER'
135459
135460 ELSE null
135461 END object_type_code
135462 , CASE r
135463 WHEN 1 THEN '555'
135464 WHEN 2 THEN '555'
135465 WHEN 3 THEN '555'
135466 WHEN 4 THEN '555'
135467 WHEN 5 THEN '555'
135468 WHEN 6 THEN '555'
135469
135470 ELSE null
135471 END source_application_id
135472 , 'S' source_type_code
135473 , CASE r
135474 WHEN 1 THEN 'ENTITY_CODE'
135475 WHEN 2 THEN 'CURRENCY_CODE'
135476 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
135477 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
135478 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
135479 WHEN 6 THEN 'TRANSACTION_DATE'
135480
135481 ELSE null
135482 END source_code
135483 , CASE r
135484 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
135485 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
135486 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
135487 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
135488 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
135489 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
135490
135491 ELSE null
135492 END source_value
135493 , CASE r
135494 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
135495 1010186
135496 ,TO_CHAR(h1.CURRENCY_CODE)
135497 ,'CURRENCY_CODE'
135498 ,'S'
135499 ,555)
135500
135501 ELSE null
135502 END source_meaning
135503 FROM xla_events_gt xet
135504 , GMF_XLA_EXTRACT_HEADERS h1
135505 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
135506 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
135507 AND xet.event_type_code = C_EVENT_TYPE_CODE
135508 AND h1.event_id = xet.event_id
135509
135510 )
135511 ;
135512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135513
135514 trace
135515 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
135516 ,p_level => C_LEVEL_STATEMENT
135517 ,p_module => l_log_module);
135518
135519 END IF;
135520 --
135521
135522
135523
135524 --
135525 INSERT INTO xla_diag_sources --line1
135526 (
135530 , description_language
135527 event_id
135528 , ledger_id
135529 , sla_ledger_id
135531 , object_name
135532 , object_type_code
135533 , line_number
135534 , source_application_id
135535 , source_type_code
135536 , source_code
135537 , source_value
135538 , source_meaning
135539 , created_by
135540 , creation_date
135541 , last_update_date
135542 , last_updated_by
135543 , last_update_login
135544 , program_update_date
135545 , program_application_id
135546 , program_id
135547 , request_id
135548 )
135549 SELECT event_id
135550 , p_target_ledger_id
135551 , p_sla_ledger_id
135552 , p_language
135553 , object_name
135554 , object_type_code
135555 , line_number
135556 , source_application_id
135557 , source_type_code
135558 , source_code
135559 , SUBSTR(source_value,1,1996)
135560 , SUBSTR(source_meaning,1,200)
135561 , xla_environment_pkg.g_Usr_Id
135562 , TRUNC(SYSDATE)
135563 , TRUNC(SYSDATE)
135564 , xla_environment_pkg.g_Usr_Id
135565 , xla_environment_pkg.g_Login_Id
135566 , TRUNC(SYSDATE)
135567 , xla_environment_pkg.g_Prog_Appl_Id
135568 , xla_environment_pkg.g_Prog_Id
135569 , xla_environment_pkg.g_Req_Id
135570 FROM (
135571 SELECT xet.event_id event_id
135572 , l2.line_number line_number
135573 , CASE r
135574 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
135575 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
135576 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
135577 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
135578 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
135579
135580 ELSE null
135581 END object_name
135582 , CASE r
135583 WHEN 1 THEN 'LINE'
135584 WHEN 2 THEN 'LINE'
135585 WHEN 3 THEN 'LINE'
135586 WHEN 4 THEN 'LINE'
135587 WHEN 5 THEN 'LINE'
135588
135589 ELSE null
135590 END object_type_code
135591 , CASE r
135592 WHEN 1 THEN '555'
135593 WHEN 2 THEN '555'
135594 WHEN 3 THEN '555'
135595 WHEN 4 THEN '555'
135596 WHEN 5 THEN '555'
135597
135598 ELSE null
135599 END source_application_id
135600 , 'S' source_type_code
135601 , CASE r
135602 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
135603 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
135604 WHEN 3 THEN 'ENTERED_AMOUNT'
135605 WHEN 4 THEN 'LINE_ID'
135606 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
135607
135608 ELSE null
135609 END source_code
135610 , CASE r
135611 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
135612 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
135613 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
135614 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
135615 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
135616
135617 ELSE null
135618 END source_value
135619 , null source_meaning
135620 FROM xla_events_gt xet
135621 , GMF_XLA_EXTRACT_LINES l2
135622 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
135623 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
135624 AND xet.event_type_code = C_EVENT_TYPE_CODE
135625 AND l2.event_id = xet.event_id
135626
135627 )
135628 ;
135629 --
135630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135631
135632 trace
135633 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
135634 ,p_level => C_LEVEL_STATEMENT
135635 ,p_module => l_log_module);
135636
135637 END IF;
135638
135639
135640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135641 trace
135642 (p_msg => 'END of insert_sources_261'
135643 ,p_level => C_LEVEL_PROCEDURE
135644 ,p_module => l_log_module);
135645 END IF;
135646 EXCEPTION
135647 WHEN xla_exceptions_pkg.application_exception THEN
135648 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
135649 trace
135650 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
135651 ,p_level => C_LEVEL_EXCEPTION
135652 ,p_module => l_log_module);
135653 END IF;
135654 RAISE;
135655 WHEN OTHERS THEN
135656 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
135657 trace
135658 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
135659 ,p_level => C_LEVEL_EXCEPTION
135660 ,p_module => l_log_module);
135661 END IF;
135662 xla_exceptions_pkg.raise_message
135663 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_261');
135664 END insert_sources_261;
135665 --
135669 -- PRIVATE FUNCTION
135666
135667 ---------------------------------------
135668 --
135670 -- EventType_261
135671 --
135672 ----------------------------------------
135673 --
135674 FUNCTION EventType_261
135675 (p_application_id IN NUMBER
135676 ,p_base_ledger_id IN NUMBER
135677 ,p_target_ledger_id IN NUMBER
135678 ,p_language IN VARCHAR2
135679 ,p_currency_code IN VARCHAR2
135680 ,p_sla_ledger_id IN NUMBER
135681 ,p_pad_start_date IN DATE
135682 ,p_pad_end_date IN DATE
135683 ,p_primary_ledger_id IN NUMBER)
135684 RETURN BOOLEAN IS
135685 --
135686 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP_TP';
135687 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
135688
135689 l_calculate_acctd_flag VARCHAR2(1) :='N';
135690 l_calculate_g_l_flag VARCHAR2(1) :='N';
135691 --
135692 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135693 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135694 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
135695 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135696 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135697 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
135698 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
135699 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135700 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135701 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135702 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135703 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135704 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135705 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
135706 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135707 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135708 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135709 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
135710 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135711 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135712 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135713 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
135714 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
135715 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
135716 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
135717 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
135718
135719 l_event_id NUMBER;
135720 l_previous_event_id NUMBER;
135721 l_first_event_id NUMBER;
135722 l_last_event_id NUMBER;
135723
135724 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
135725 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
135726 --
135727 --
135728 l_result BOOLEAN := TRUE;
135729 l_rows NUMBER := 1000;
135730 l_event_type_name VARCHAR2(80) := 'Direct Interorg Shipment, Transfer Pricing';
135731 l_event_class_name VARCHAR2(80) := 'Direct Interorg Shipment';
135732 l_description VARCHAR2(4000);
135733 l_transaction_reversal NUMBER;
135734 l_ae_header_id NUMBER;
135735 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
135736 l_log_module VARCHAR2(240);
135737 --
135738 l_acct_reversal_source VARCHAR2(30);
135739 l_trx_reversal_source VARCHAR2(30);
135740
135741 l_continue_with_lines BOOLEAN := TRUE;
135742 --
135743 l_acc_rev_gl_date_source DATE; -- 4262811
135744 --
135745 type t_array_event_id is table of number index by binary_integer;
135746
135747 l_rec_array_event t_rec_array_event;
135748 l_null_rec_array_event t_rec_array_event;
135749 l_array_ae_header_id xla_number_array_type;
135750 l_actual_flag VARCHAR2(1) := NULL;
135751 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
135752 l_balance_type_code VARCHAR2(1) :=NULL;
135753 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
135754
135755 --
135756 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
135757 --
135758
135759 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
135760 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
135761 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
135762 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
135763 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
135764 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
135765
135769 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
135766 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
135767 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
135768 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
135770 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
135771
135772 l_array_source_6 t_array_source_6;
135773 l_array_source_7 t_array_source_7;
135774 l_array_source_8 t_array_source_8;
135775 l_array_source_9 t_array_source_9;
135776 l_array_source_10 t_array_source_10;
135777 l_array_source_12 t_array_source_12;
135778
135779 l_array_source_1 t_array_source_1;
135780 l_array_source_2 t_array_source_2;
135781 l_array_source_3 t_array_source_3;
135782 l_array_source_5 t_array_source_5;
135783 l_array_source_11 t_array_source_11;
135784
135785 --
135786 CURSOR header_cur
135787 IS
135788 SELECT /*+ leading(xet) cardinality(xet,1) */
135789 -- Event Type Code: DIR_INTERORG_SHIP_TP
135790 -- Event Class Code: DIR_INTERORG_SHIP
135791 xet.entity_id
135792 , xet.legal_entity_id
135793 , xet.entity_code
135794 , xet.transaction_number
135795 , xet.event_id
135796 , xet.event_class_code
135797 , xet.event_type_code
135798 , xet.event_number
135799 , xet.event_date
135800 , xet.transaction_date
135801 , xet.reference_num_1
135802 , xet.reference_num_2
135803 , xet.reference_num_3
135804 , xet.reference_num_4
135805 , xet.reference_char_1
135806 , xet.reference_char_2
135807 , xet.reference_char_3
135808 , xet.reference_char_4
135809 , xet.reference_date_1
135810 , xet.reference_date_2
135811 , xet.reference_date_3
135812 , xet.reference_date_4
135813 , xet.event_created_by
135814 , xet.budgetary_control_flag
135815 , h1.ENTITY_CODE source_6
135816 , h1.CURRENCY_CODE source_7
135817 , h1.CURRENCY_CONVERSION_DATE source_8
135818 , h1.CURRENCY_CONVERSION_RATE source_9
135819 , h1.CURRENCY_CONVERSION_TYPE source_10
135820 , h1.TRANSACTION_DATE source_12
135821 FROM xla_events_gt xet
135822 , GMF_XLA_EXTRACT_HEADERS h1
135823 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
135824 and xet.event_type_code = C_EVENT_TYPE_CODE
135825 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
135826
135827 ORDER BY event_id
135828 ;
135829
135830
135831 --
135832 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
135833 IS
135834 SELECT /*+ leading(xet) cardinality(xet,1) */
135835 -- Event Type Code: DIR_INTERORG_SHIP_TP
135836 -- Event Class Code: DIR_INTERORG_SHIP
135837 xet.entity_id
135838 ,xet.legal_entity_id
135839 ,xet.entity_code
135840 ,xet.transaction_number
135841 ,xet.event_id
135842 ,xet.event_class_code
135843 ,xet.event_type_code
135844 ,xet.event_number
135845 ,xet.event_date
135846 ,xet.transaction_date
135847 ,xet.reference_num_1
135848 ,xet.reference_num_2
135849 ,xet.reference_num_3
135850 ,xet.reference_num_4
135851 ,xet.reference_char_1
135852 ,xet.reference_char_2
135853 ,xet.reference_char_3
135854 ,xet.reference_char_4
135855 ,xet.reference_date_1
135856 ,xet.reference_date_2
135857 ,xet.reference_date_3
135858 ,xet.reference_date_4
135859 ,xet.event_created_by
135860 ,xet.budgetary_control_flag , l2.LINE_NUMBER
135861 , l2.TRANSACTION_ACCOUNT_ID source_1
135862 , l2.JOURNAL_LINE_TYPE source_2
135863 , l2.ENTERED_AMOUNT source_3
135864 , l2.LINE_ID source_5
135865 , l2.ACCOUNTED_AMOUNT source_11
135866 FROM xla_events_gt xet
135867 , GMF_XLA_EXTRACT_LINES l2
135868 WHERE xet.event_id between x_first_event_id and x_last_event_id
135869 and xet.event_date between p_pad_start_date and p_pad_end_date
135870 and xet.event_type_code = C_EVENT_TYPE_CODE
135871 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
135872 ;
135873
135874 --
135875 BEGIN
135876 IF g_log_enabled THEN
135877 l_log_module := C_DEFAULT_MODULE||'.EventType_261';
135878 END IF;
135879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135880 trace
135881 (p_msg => 'BEGIN of EventType_261'
135882 ,p_level => C_LEVEL_PROCEDURE
135883 ,p_module => l_log_module);
135884 END IF;
135885
135886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135887 trace
135888 (p_msg => 'p_application_id = '||p_application_id||
135889 ' - p_base_ledger_id = '||p_base_ledger_id||
135890 ' - p_target_ledger_id = '||p_target_ledger_id||
135891 ' - p_language = '||p_language||
135892 ' - p_currency_code = '||p_currency_code||
135893 ' - p_sla_ledger_id = '||p_sla_ledger_id
135894 ,p_level => C_LEVEL_STATEMENT
135895 ,p_module => l_log_module);
135896 END IF;
135897 --
135898 -- initialze arrays
135899 --
135900 g_array_event.DELETE;
135901 l_rec_array_event := l_null_rec_array_event;
135902 --
135903 --------------------------------------
135904 -- 4262811 Initialze MPA Line Number
135905 --------------------------------------
135909
135906 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
135907
135908 --
135910 --
135911 OPEN header_cur;
135912 --
135913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
135914 trace
135915 (p_msg => 'SQL - FETCH header_cur'
135916 ,p_level => C_LEVEL_STATEMENT
135917 ,p_module => l_log_module);
135918 END IF;
135919 --
135920 LOOP
135921 FETCH header_cur BULK COLLECT INTO
135922 l_array_entity_id
135923 , l_array_legal_entity_id
135924 , l_array_entity_code
135925 , l_array_transaction_num
135926 , l_array_event_id
135927 , l_array_class_code
135928 , l_array_event_type
135929 , l_array_event_number
135930 , l_array_event_date
135931 , l_array_transaction_date
135932 , l_array_reference_num_1
135933 , l_array_reference_num_2
135934 , l_array_reference_num_3
135935 , l_array_reference_num_4
135936 , l_array_reference_char_1
135937 , l_array_reference_char_2
135938 , l_array_reference_char_3
135939 , l_array_reference_char_4
135940 , l_array_reference_date_1
135941 , l_array_reference_date_2
135942 , l_array_reference_date_3
135943 , l_array_reference_date_4
135944 , l_array_event_created_by
135945 , l_array_budgetary_control_flag
135946 , l_array_source_6
135947 , l_array_source_7
135948 , l_array_source_8
135949 , l_array_source_9
135950 , l_array_source_10
135951 , l_array_source_12
135952 LIMIT l_rows;
135953 --
135954 IF (C_LEVEL_EVENT >= g_log_level) THEN
135955 trace
135956 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
135957 ,p_level => C_LEVEL_EVENT
135958 ,p_module => l_log_module);
135959 END IF;
135960 --
135961 EXIT WHEN l_array_entity_id.COUNT = 0;
135962
135963 -- initialize arrays
135964 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
135965 XLA_AE_LINES_PKG.g_rec_lines := NULL;
135966
135967 --
135968 -- Bug 4458708
135969 --
135970 XLA_AE_LINES_PKG.g_LineNumber := 0;
135971
135972
135973 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
135974 g_last_hdr_idx := l_array_event_id.LAST;
135975 --
135976 -- loop for the headers. Each iteration is for each header extract row
135977 -- fetched in header cursor
135978 --
135979 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
135980
135981 --
135982 -- set event info as cache for other routines to refer event attributes
135983 --
135984 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
135985 (p_application_id => p_application_id
135986 ,p_primary_ledger_id => p_primary_ledger_id
135987 ,p_base_ledger_id => p_base_ledger_id
135988 ,p_target_ledger_id => p_target_ledger_id
135989 ,p_entity_id => l_array_entity_id(hdr_idx)
135990 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
135991 ,p_entity_code => l_array_entity_code(hdr_idx)
135992 ,p_transaction_num => l_array_transaction_num(hdr_idx)
135993 ,p_event_id => l_array_event_id(hdr_idx)
135994 ,p_event_class_code => l_array_class_code(hdr_idx)
135995 ,p_event_type_code => l_array_event_type(hdr_idx)
135996 ,p_event_number => l_array_event_number(hdr_idx)
135997 ,p_event_date => l_array_event_date(hdr_idx)
135998 ,p_transaction_date => l_array_transaction_date(hdr_idx)
135999 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
136000 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
136001 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
136002 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
136003 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
136004 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
136005 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
136006 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
136007 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
136008 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
136009 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
136010 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
136011 ,p_event_created_by => l_array_event_created_by(hdr_idx)
136012 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
136013
136014 --
136015 -- set the status of entry to C_VALID (0)
136016 --
136017 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
136018
136019 --
136020 -- initialize a row for ae header
136021 --
136022 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
136023
136024 l_event_id := l_array_event_id(hdr_idx);
136025
136026 --
136027 -- storing the hdr_idx for event. May be used by line cursor.
136028 --
136029 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
136030
136031 --
136032 -- store sources from header extract. This can be improved to
136033 -- store only those sources from header extract that may be used in lines
136034 --
136035
136036 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
136037 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
136038 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
136042
136039 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
136040 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
136041 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
136043 --
136044 -- initilaize the status of ae headers for diffrent balance types
136045 -- the status is initialised to C_NOT_CREATED (2)
136046 --
136047 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
136048 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
136049 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
136050
136051 --
136052 -- call api to validate and store accounting attributes for header
136053 --
136054
136055 ------------------------------------------------------------
136056 -- Accrual Reversal : to get date for Standard Source (NONE)
136057 ------------------------------------------------------------
136058 l_acc_rev_gl_date_source := NULL;
136059
136060 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
136061 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
136062
136063
136064 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
136065
136066 XLA_AE_HEADER_PKG.SetJeCategoryName;
136067
136068 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
136069 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
136070 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
136071 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
136072 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
136073
136074
136075 -- No header level analytical criteria
136076
136077 --
136078 --accounting attribute enhancement, bug 3612931
136079 --
136080 l_trx_reversal_source := SUBSTR(NULL, 1,30);
136081
136082 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
136083 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
136084
136085 xla_accounting_err_pkg.build_message
136086 (p_appli_s_name => 'XLA'
136087 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
136088 ,p_token_1 => 'ACCT_ATTR_NAME'
136089 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
136090 ,p_token_2 => 'PRODUCT_NAME'
136091 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
136092 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
136093 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
136094 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
136095
136096 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
136097 --
136098 -- following sets the accounting attributes needed to reverse
136099 -- accounting for a distributeion
136100 --
136101 xla_ae_lines_pkg.SetTrxReversalAttrs
136102 (p_event_id => l_event_id
136103 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
136104 ,p_trx_reversal_source => l_trx_reversal_source);
136105
136106 END IF;
136107
136108
136109 ----------------------------------------------------------------
136110 -- 4262811 - update the header statuses to invalid in need be
136111 ----------------------------------------------------------------
136112 --
136113 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
136114
136115
136116 -----------------------------------------------
136117 -- No accrual reversal for the event class/type
136118 -----------------------------------------------
136119 ----------------------------------------------------------------
136120
136121 --
136122 -- this ends the header loop iteration for one bulk fetch
136123 --
136124 END LOOP;
136125
136126 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
136127 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
136128
136129 --
136130 -- insert dummy rows into lines gt table that were created due to
136131 -- transaction reversals
136132 --
136133 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
136134 l_result := XLA_AE_LINES_PKG.InsertLines;
136135 END IF;
136136
136137 --
136138 -- reset the temp_line_num for each set of events fetched from header
136139 -- cursor rather than doing it for each new event in line cursor
136140 -- Bug 3939231
136141 --
136142 xla_ae_lines_pkg.g_temp_line_num := 0;
136143
136144
136145
136146 --
136147 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
136148 --
136149 --
136150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136151
136152 trace
136153 (p_msg => 'SQL - FETCH line_cur'
136154 ,p_level => C_LEVEL_STATEMENT
136155 ,p_module => l_log_module);
136156
136157 END IF;
136158 --
136159 --
136160 LOOP
136161 --
136162 FETCH line_cur BULK COLLECT INTO
136163 l_array_entity_id
136164 , l_array_legal_entity_id
136165 , l_array_entity_code
136166 , l_array_transaction_num
136170 , l_array_event_number
136167 , l_array_event_id
136168 , l_array_class_code
136169 , l_array_event_type
136171 , l_array_event_date
136172 , l_array_transaction_date
136173 , l_array_reference_num_1
136174 , l_array_reference_num_2
136175 , l_array_reference_num_3
136176 , l_array_reference_num_4
136177 , l_array_reference_char_1
136178 , l_array_reference_char_2
136179 , l_array_reference_char_3
136180 , l_array_reference_char_4
136181 , l_array_reference_date_1
136182 , l_array_reference_date_2
136183 , l_array_reference_date_3
136184 , l_array_reference_date_4
136185 , l_array_event_created_by
136186 , l_array_budgetary_control_flag
136187 , l_array_extract_line_num
136188 , l_array_source_1
136189 , l_array_source_2
136190 , l_array_source_3
136191 , l_array_source_5
136192 , l_array_source_11
136193 LIMIT l_rows;
136194
136195 --
136196 IF (C_LEVEL_EVENT >= g_log_level) THEN
136197 trace
136198 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
136199 ,p_level => C_LEVEL_EVENT
136200 ,p_module => l_log_module);
136201 END IF;
136202 --
136203 EXIT WHEN l_array_entity_id.count = 0;
136204
136205 XLA_AE_LINES_PKG.g_rec_lines := null;
136206
136207 --
136208 -- Bug 4458708
136209 --
136210 XLA_AE_LINES_PKG.g_LineNumber := 0;
136211 --
136212 --
136213
136214 FOR Idx IN 1..l_array_event_id.count LOOP
136215 --
136216 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
136217 --
136218 l_event_id := l_array_event_id(idx); -- 5648433
136219
136220 --
136221 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
136222 --
136223
136224 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
136225 (g_array_event(l_event_id).array_value_num('header_index'))
136226 ,'N'
136227 ) <> 'Y'
136228 THEN
136229 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136230 trace
136231 (p_msg => 'Trancaction revesal option is not Y '
136232 ,p_level => C_LEVEL_STATEMENT
136233 ,p_module => l_log_module);
136234 END IF;
136235
136236 --
136237 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
136238 --
136239 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
136240 --
136241 -- set event info as cache for other routines to refer event attributes
136242 --
136243
136244 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
136245 l_previous_event_id := l_event_id;
136246
136247 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
136248 (p_application_id => p_application_id
136249 ,p_primary_ledger_id => p_primary_ledger_id
136250 ,p_base_ledger_id => p_base_ledger_id
136251 ,p_target_ledger_id => p_target_ledger_id
136252 ,p_entity_id => l_array_entity_id(Idx)
136253 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
136254 ,p_entity_code => l_array_entity_code(Idx)
136255 ,p_transaction_num => l_array_transaction_num(Idx)
136256 ,p_event_id => l_array_event_id(Idx)
136257 ,p_event_class_code => l_array_class_code(Idx)
136258 ,p_event_type_code => l_array_event_type(Idx)
136259 ,p_event_number => l_array_event_number(Idx)
136260 ,p_event_date => l_array_event_date(Idx)
136261 ,p_transaction_date => l_array_transaction_date(Idx)
136262 ,p_reference_num_1 => l_array_reference_num_1(Idx)
136263 ,p_reference_num_2 => l_array_reference_num_2(Idx)
136264 ,p_reference_num_3 => l_array_reference_num_3(Idx)
136265 ,p_reference_num_4 => l_array_reference_num_4(Idx)
136266 ,p_reference_char_1 => l_array_reference_char_1(Idx)
136267 ,p_reference_char_2 => l_array_reference_char_2(Idx)
136268 ,p_reference_char_3 => l_array_reference_char_3(Idx)
136269 ,p_reference_char_4 => l_array_reference_char_4(Idx)
136270 ,p_reference_date_1 => l_array_reference_date_1(Idx)
136271 ,p_reference_date_2 => l_array_reference_date_2(Idx)
136272 ,p_reference_date_3 => l_array_reference_date_3(Idx)
136273 ,p_reference_date_4 => l_array_reference_date_4(Idx)
136274 ,p_event_created_by => l_array_event_created_by(Idx)
136275 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
136276 --
136277 END IF;
136278
136279
136280
136281 --
136282 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
136283
136284 l_acct_reversal_source := SUBSTR(NULL, 1,30);
136285
136286 IF l_continue_with_lines THEN
136287 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
136288 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
136289
136290 xla_accounting_err_pkg.build_message
136291 (p_appli_s_name => 'XLA'
136292 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
136293 ,p_token_1 => 'LINE_NUMBER'
136294 ,p_value_1 => l_array_extract_line_num(Idx)
136298 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
136295 ,p_token_2 => 'PRODUCT_NAME'
136296 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
136297 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
136299 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
136300
136301 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
136302 --
136303 -- following sets the accounting attributes needed to reverse
136304 -- accounting for a distributeion
136305 --
136306
136307 --
136308 -- 5217187
136309 --
136310 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
136311 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
136312 g_array_event(l_event_id).array_value_num('header_index'));
136313 --
136314 --
136315
136316 -- No reversal code generated
136317
136318 xla_ae_lines_pkg.SetAcctReversalAttrs
136319 (p_event_id => l_event_id
136320 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
136321 ,p_calculate_acctd_flag => l_calculate_acctd_flag
136322 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
136323 END IF;
136324
136325 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
136326 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
136327
136328 --
136329 AcctLineType_112 (
136330 p_application_id => p_application_id
136331 ,p_event_id => l_event_id
136332 ,p_calculate_acctd_flag => l_calculate_acctd_flag
136333 ,p_calculate_g_l_flag => l_calculate_g_l_flag
136334 ,p_actual_flag => l_actual_flag
136335 ,p_balance_type_code => l_balance_type_code
136336 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
136337
136338 , p_source_1 => l_array_source_1(Idx)
136339 , p_source_2 => l_array_source_2(Idx)
136340 , p_source_3 => l_array_source_3(Idx)
136341 , p_source_5 => l_array_source_5(Idx)
136342 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
136343 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
136344 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
136345 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
136346 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
136347 , p_source_11 => l_array_source_11(Idx)
136348 );
136349 If(l_balance_type_code = 'A') THEN
136350 l_actual_gain_loss_ref := l_gain_or_loss_ref;
136351 END IF;
136352
136353 --
136354
136355
136356 --
136357 AcctLineType_142 (
136358 p_application_id => p_application_id
136359 ,p_event_id => l_event_id
136360 ,p_calculate_acctd_flag => l_calculate_acctd_flag
136361 ,p_calculate_g_l_flag => l_calculate_g_l_flag
136362 ,p_actual_flag => l_actual_flag
136363 ,p_balance_type_code => l_balance_type_code
136364 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
136365
136366 , p_source_1 => l_array_source_1(Idx)
136367 , p_source_2 => l_array_source_2(Idx)
136368 , p_source_3 => l_array_source_3(Idx)
136369 , p_source_5 => l_array_source_5(Idx)
136370 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
136371 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
136372 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
136373 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
136374 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
136375 , p_source_11 => l_array_source_11(Idx)
136376 );
136377 If(l_balance_type_code = 'A') THEN
136378 l_actual_gain_loss_ref := l_gain_or_loss_ref;
136379 END IF;
136380
136381 --
136382
136383
136384 --
136385 AcctLineType_182 (
136386 p_application_id => p_application_id
136387 ,p_event_id => l_event_id
136388 ,p_calculate_acctd_flag => l_calculate_acctd_flag
136389 ,p_calculate_g_l_flag => l_calculate_g_l_flag
136390 ,p_actual_flag => l_actual_flag
136391 ,p_balance_type_code => l_balance_type_code
136392 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
136393
136394 , p_source_1 => l_array_source_1(Idx)
136395 , p_source_2 => l_array_source_2(Idx)
136396 , p_source_3 => l_array_source_3(Idx)
136397 , p_source_5 => l_array_source_5(Idx)
136398 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
136399 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
136400 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
136401 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
136402 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
136403 , p_source_11 => l_array_source_11(Idx)
136404 );
136405 If(l_balance_type_code = 'A') THEN
136406 l_actual_gain_loss_ref := l_gain_or_loss_ref;
136407 END IF;
136408
136409 --
136410
136411
136412 --
136413 AcctLineType_185 (
136414 p_application_id => p_application_id
136415 ,p_event_id => l_event_id
136416 ,p_calculate_acctd_flag => l_calculate_acctd_flag
136417 ,p_calculate_g_l_flag => l_calculate_g_l_flag
136418 ,p_actual_flag => l_actual_flag
136419 ,p_balance_type_code => l_balance_type_code
136420 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
136421
136422 , p_source_1 => l_array_source_1(Idx)
136423 , p_source_2 => l_array_source_2(Idx)
136427 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
136424 , p_source_3 => l_array_source_3(Idx)
136425 , p_source_5 => l_array_source_5(Idx)
136426 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
136428 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
136429 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
136430 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
136431 , p_source_11 => l_array_source_11(Idx)
136432 );
136433 If(l_balance_type_code = 'A') THEN
136434 l_actual_gain_loss_ref := l_gain_or_loss_ref;
136435 END IF;
136436
136437 --
136438
136439 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
136440 -- or secondary ledger that has different currency with primary
136441 -- or alc that is calculated by sla
136442 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
136443 (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'))
136444
136445 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
136446 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
136447 AND (l_actual_flag = 'A')) THEN
136448 XLA_AE_LINES_PKG.CreateGainOrLossLines(
136449 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
136450 ,p_application_id => p_application_id
136451 ,p_amb_context_code => 'DEFAULT'
136452 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
136453 ,p_event_class_code => C_EVENT_CLASS_CODE
136454 ,p_event_type_code => C_EVENT_TYPE_CODE
136455
136456 ,p_gain_ccid => -1
136457 ,p_loss_ccid => -1
136458
136459 ,p_actual_flag => l_actual_flag
136460 ,p_enc_flag => null
136461 ,p_actual_g_l_ref => l_actual_gain_loss_ref
136462 ,p_enc_g_l_ref => null
136463 );
136464 END IF;
136465 END IF;
136466 END IF;
136467
136468 ELSE
136469 --
136470 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
136471 --
136472 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136473 trace
136474 (p_msg => 'Trancaction revesal option is Y'
136475 ,p_level => C_LEVEL_STATEMENT
136476 ,p_module => l_log_module);
136477 END IF;
136478 END IF;
136479
136480 END LOOP;
136481 l_result := XLA_AE_LINES_PKG.InsertLines ;
136482 end loop;
136483 close line_cur;
136484
136485
136486 --
136487 -- insert headers into xla_ae_headers_gt table
136488 --
136489 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
136490
136491 -- insert into errors table here.
136492
136493 END LOOP;
136494
136495 --
136496 -- 4865292
136497 --
136498 -- Compare g_hdr_extract_count with event count in
136499 -- CreateHeadersAndLines.
136500 --
136501 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
136502
136503 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136504 trace (p_msg => '# rows extracted from header extract objects '
136505 || ' (running total): '
136506 || g_hdr_extract_count
136507 ,p_level => C_LEVEL_STATEMENT
136508 ,p_module => l_log_module);
136509 END IF;
136510
136511 CLOSE header_cur;
136512 --
136513
136514 --
136515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136516 trace
136517 (p_msg => 'END of EventType_261'
136518 ,p_level => C_LEVEL_PROCEDURE
136519 ,p_module => l_log_module);
136520 END IF;
136521 --
136522 RETURN l_result;
136523 EXCEPTION
136524 WHEN xla_exceptions_pkg.application_exception THEN
136525
136526 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
136527
136528
136529 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
136530
136531 RAISE;
136532
136533 WHEN NO_DATA_FOUND THEN
136534
136535 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
136536 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
136537
136538 FOR header_record IN header_cur
136539 LOOP
136540 l_array_header_events(header_record.event_id) := header_record.event_id;
136541 END LOOP;
136542
136543 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
136544 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
136545
136546 fnd_file.put_line(fnd_file.LOG, ' ');
136547 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
136548 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
136549 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
136550
136551 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
136552 LOOP
136553 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
136554 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
136555 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
136556 END IF;
136557 END LOOP;
136558
136559 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
136563 xla_exceptions_pkg.raise_message
136560 fnd_file.put_line(fnd_file.LOG, ' ');
136561
136562
136564 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_261');
136565
136566
136567 WHEN OTHERS THEN
136568 xla_exceptions_pkg.raise_message
136569 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_261');
136570 END EventType_261;
136571 --
136572
136573 ---------------------------------------
136574 --
136575 -- PRIVATE PROCEDURE
136576 -- insert_sources_262
136577 --
136578 ----------------------------------------
136579 --
136580 PROCEDURE insert_sources_262(
136581 p_target_ledger_id IN NUMBER
136582 , p_language IN VARCHAR2
136583 , p_sla_ledger_id IN NUMBER
136584 , p_pad_start_date IN DATE
136585 , p_pad_end_date IN DATE
136586 )
136587 IS
136588
136589 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'EXP_REQ_RCPT';
136590 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
136591 p_apps_owner VARCHAR2(30);
136592 l_log_module VARCHAR2(240);
136593 BEGIN
136594 IF g_log_enabled THEN
136595 l_log_module := C_DEFAULT_MODULE||'.insert_sources_262';
136596 END IF;
136597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136598
136599 trace
136600 (p_msg => 'BEGIN of insert_sources_262'
136601 ,p_level => C_LEVEL_PROCEDURE
136602 ,p_module => l_log_module);
136603
136604 END IF;
136605
136606 -- select APPS owner
136607 SELECT oracle_username
136608 INTO p_apps_owner
136609 FROM fnd_oracle_userid
136610 WHERE read_only_flag = 'U'
136611 ;
136612
136613 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136614 trace
136615 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
136616 ' - p_language = '||p_language||
136617 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
136618 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
136619 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
136620 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
136621 ,p_level => C_LEVEL_STATEMENT
136622 ,p_module => l_log_module);
136623 END IF;
136624
136625
136626 --
136627 INSERT INTO xla_diag_sources --hdr1
136628 (
136629 event_id
136630 , ledger_id
136631 , sla_ledger_id
136632 , description_language
136633 , object_name
136634 , object_type_code
136635 , line_number
136636 , source_application_id
136637 , source_type_code
136638 , source_code
136639 , source_value
136640 , source_meaning
136641 , created_by
136642 , creation_date
136643 , last_update_date
136644 , last_updated_by
136645 , last_update_login
136646 , program_update_date
136647 , program_application_id
136648 , program_id
136649 , request_id
136650 )
136651 SELECT
136652 event_id
136653 , p_target_ledger_id
136654 , p_sla_ledger_id
136655 , p_language
136656 , object_name
136657 , object_type_code
136658 , line_number
136659 , source_application_id
136660 , source_type_code
136661 , source_code
136662 , SUBSTR(source_value ,1,1996)
136663 , SUBSTR(source_meaning,1,200)
136664 , xla_environment_pkg.g_Usr_Id
136665 , TRUNC(SYSDATE)
136666 , TRUNC(SYSDATE)
136667 , xla_environment_pkg.g_Usr_Id
136668 , xla_environment_pkg.g_Login_Id
136669 , TRUNC(SYSDATE)
136670 , xla_environment_pkg.g_Prog_Appl_Id
136671 , xla_environment_pkg.g_Prog_Id
136672 , xla_environment_pkg.g_Req_Id
136673 FROM (
136674 SELECT xet.event_id event_id
136675 , 0 line_number
136676 , CASE r
136677 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
136678 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
136679 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
136680 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
136681 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
136682 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
136683
136684 ELSE null
136685 END object_name
136686 , CASE r
136687 WHEN 1 THEN 'HEADER'
136688 WHEN 2 THEN 'HEADER'
136689 WHEN 3 THEN 'HEADER'
136690 WHEN 4 THEN 'HEADER'
136691 WHEN 5 THEN 'HEADER'
136692 WHEN 6 THEN 'HEADER'
136693
136694 ELSE null
136695 END object_type_code
136696 , CASE r
136697 WHEN 1 THEN '555'
136698 WHEN 2 THEN '555'
136699 WHEN 3 THEN '555'
136700 WHEN 4 THEN '555'
136701 WHEN 5 THEN '555'
136702 WHEN 6 THEN '555'
136703
136704 ELSE null
136705 END source_application_id
136709 WHEN 2 THEN 'CURRENCY_CODE'
136706 , 'S' source_type_code
136707 , CASE r
136708 WHEN 1 THEN 'ENTITY_CODE'
136710 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
136711 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
136712 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
136713 WHEN 6 THEN 'TRANSACTION_DATE'
136714
136715 ELSE null
136716 END source_code
136717 , CASE r
136718 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
136719 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
136720 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
136721 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
136722 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
136723 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
136724
136725 ELSE null
136726 END source_value
136727 , CASE r
136728 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
136729 1010186
136730 ,TO_CHAR(h1.CURRENCY_CODE)
136731 ,'CURRENCY_CODE'
136732 ,'S'
136733 ,555)
136734
136735 ELSE null
136736 END source_meaning
136737 FROM xla_events_gt xet
136738 , GMF_XLA_EXTRACT_HEADERS h1
136739 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
136740 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
136741 AND xet.event_type_code = C_EVENT_TYPE_CODE
136742 AND h1.event_id = xet.event_id
136743
136744 )
136745 ;
136746 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136747
136748 trace
136749 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
136750 ,p_level => C_LEVEL_STATEMENT
136751 ,p_module => l_log_module);
136752
136753 END IF;
136754 --
136755
136756
136757
136758 --
136759 INSERT INTO xla_diag_sources --line1
136760 (
136761 event_id
136762 , ledger_id
136763 , sla_ledger_id
136764 , description_language
136765 , object_name
136766 , object_type_code
136767 , line_number
136768 , source_application_id
136769 , source_type_code
136770 , source_code
136771 , source_value
136772 , source_meaning
136773 , created_by
136774 , creation_date
136775 , last_update_date
136776 , last_updated_by
136777 , last_update_login
136778 , program_update_date
136779 , program_application_id
136780 , program_id
136781 , request_id
136782 )
136783 SELECT event_id
136784 , p_target_ledger_id
136785 , p_sla_ledger_id
136786 , p_language
136787 , object_name
136788 , object_type_code
136789 , line_number
136790 , source_application_id
136791 , source_type_code
136792 , source_code
136793 , SUBSTR(source_value,1,1996)
136794 , SUBSTR(source_meaning,1,200)
136795 , xla_environment_pkg.g_Usr_Id
136796 , TRUNC(SYSDATE)
136797 , TRUNC(SYSDATE)
136798 , xla_environment_pkg.g_Usr_Id
136799 , xla_environment_pkg.g_Login_Id
136800 , TRUNC(SYSDATE)
136801 , xla_environment_pkg.g_Prog_Appl_Id
136802 , xla_environment_pkg.g_Prog_Id
136803 , xla_environment_pkg.g_Req_Id
136804 FROM (
136805 SELECT xet.event_id event_id
136806 , l2.line_number line_number
136807 , CASE r
136808 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
136809 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
136810 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
136811 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
136812 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
136813
136814 ELSE null
136815 END object_name
136816 , CASE r
136817 WHEN 1 THEN 'LINE'
136818 WHEN 2 THEN 'LINE'
136819 WHEN 3 THEN 'LINE'
136820 WHEN 4 THEN 'LINE'
136821 WHEN 5 THEN 'LINE'
136822
136823 ELSE null
136824 END object_type_code
136825 , CASE r
136826 WHEN 1 THEN '555'
136827 WHEN 2 THEN '555'
136828 WHEN 3 THEN '555'
136829 WHEN 4 THEN '555'
136830 WHEN 5 THEN '555'
136831
136832 ELSE null
136833 END source_application_id
136834 , 'S' source_type_code
136835 , CASE r
136836 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
136837 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
136838 WHEN 3 THEN 'ENTERED_AMOUNT'
136839 WHEN 4 THEN 'LINE_ID'
136840 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
136841
136842 ELSE null
136843 END source_code
136847 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
136844 , CASE r
136845 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
136846 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
136848 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
136849 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
136850
136851 ELSE null
136852 END source_value
136853 , null source_meaning
136854 FROM xla_events_gt xet
136855 , GMF_XLA_EXTRACT_LINES l2
136856 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
136857 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
136858 AND xet.event_type_code = C_EVENT_TYPE_CODE
136859 AND l2.event_id = xet.event_id
136860
136861 )
136862 ;
136863 --
136864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
136865
136866 trace
136867 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
136868 ,p_level => C_LEVEL_STATEMENT
136869 ,p_module => l_log_module);
136870
136871 END IF;
136872
136873
136874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136875 trace
136876 (p_msg => 'END of insert_sources_262'
136877 ,p_level => C_LEVEL_PROCEDURE
136878 ,p_module => l_log_module);
136879 END IF;
136880 EXCEPTION
136881 WHEN xla_exceptions_pkg.application_exception THEN
136882 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
136883 trace
136884 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
136885 ,p_level => C_LEVEL_EXCEPTION
136886 ,p_module => l_log_module);
136887 END IF;
136888 RAISE;
136889 WHEN OTHERS THEN
136890 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
136891 trace
136892 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
136893 ,p_level => C_LEVEL_EXCEPTION
136894 ,p_module => l_log_module);
136895 END IF;
136896 xla_exceptions_pkg.raise_message
136897 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_262');
136898 END insert_sources_262;
136899 --
136900
136901 ---------------------------------------
136902 --
136903 -- PRIVATE FUNCTION
136904 -- EventType_262
136905 --
136906 ----------------------------------------
136907 --
136908 FUNCTION EventType_262
136909 (p_application_id IN NUMBER
136910 ,p_base_ledger_id IN NUMBER
136911 ,p_target_ledger_id IN NUMBER
136912 ,p_language IN VARCHAR2
136913 ,p_currency_code IN VARCHAR2
136914 ,p_sla_ledger_id IN NUMBER
136915 ,p_pad_start_date IN DATE
136916 ,p_pad_end_date IN DATE
136917 ,p_primary_ledger_id IN NUMBER)
136918 RETURN BOOLEAN IS
136919 --
136920 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'EXP_REQ_RCPT';
136921 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
136922
136923 l_calculate_acctd_flag VARCHAR2(1) :='N';
136924 l_calculate_g_l_flag VARCHAR2(1) :='N';
136925 --
136926 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136927 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136928 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
136929 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136930 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136931 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
136932 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
136933 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136934 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136935 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136936 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136937 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136938 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136939 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
136940 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136941 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136942 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136943 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
136944 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136945 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136946 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136947 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
136948 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
136949 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
136950 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
136951 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
136952
136953 l_event_id NUMBER;
136954 l_previous_event_id NUMBER;
136958 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
136955 l_first_event_id NUMBER;
136956 l_last_event_id NUMBER;
136957
136959 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
136960 --
136961 --
136962 l_result BOOLEAN := TRUE;
136963 l_rows NUMBER := 1000;
136964 l_event_type_name VARCHAR2(80) := 'Internal Order Receipt to Expense';
136965 l_event_class_name VARCHAR2(80) := 'Internal Order to Expense';
136966 l_description VARCHAR2(4000);
136967 l_transaction_reversal NUMBER;
136968 l_ae_header_id NUMBER;
136969 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
136970 l_log_module VARCHAR2(240);
136971 --
136972 l_acct_reversal_source VARCHAR2(30);
136973 l_trx_reversal_source VARCHAR2(30);
136974
136975 l_continue_with_lines BOOLEAN := TRUE;
136976 --
136977 l_acc_rev_gl_date_source DATE; -- 4262811
136978 --
136979 type t_array_event_id is table of number index by binary_integer;
136980
136981 l_rec_array_event t_rec_array_event;
136982 l_null_rec_array_event t_rec_array_event;
136983 l_array_ae_header_id xla_number_array_type;
136984 l_actual_flag VARCHAR2(1) := NULL;
136985 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
136986 l_balance_type_code VARCHAR2(1) :=NULL;
136987 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
136988
136989 --
136990 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
136991 --
136992
136993 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
136994 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
136995 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
136996 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
136997 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
136998 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
136999
137000 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
137001 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
137002 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
137003 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
137004 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
137005
137006 l_array_source_6 t_array_source_6;
137007 l_array_source_7 t_array_source_7;
137008 l_array_source_8 t_array_source_8;
137009 l_array_source_9 t_array_source_9;
137010 l_array_source_10 t_array_source_10;
137011 l_array_source_12 t_array_source_12;
137012
137013 l_array_source_1 t_array_source_1;
137014 l_array_source_2 t_array_source_2;
137015 l_array_source_3 t_array_source_3;
137016 l_array_source_5 t_array_source_5;
137017 l_array_source_11 t_array_source_11;
137018
137019 --
137020 CURSOR header_cur
137021 IS
137022 SELECT /*+ leading(xet) cardinality(xet,1) */
137023 -- Event Type Code: EXP_REQ_RCPT
137024 -- Event Class Code: INT_ORDER_TO_EXP
137025 xet.entity_id
137026 , xet.legal_entity_id
137027 , xet.entity_code
137028 , xet.transaction_number
137029 , xet.event_id
137030 , xet.event_class_code
137031 , xet.event_type_code
137032 , xet.event_number
137033 , xet.event_date
137034 , xet.transaction_date
137035 , xet.reference_num_1
137036 , xet.reference_num_2
137037 , xet.reference_num_3
137038 , xet.reference_num_4
137039 , xet.reference_char_1
137040 , xet.reference_char_2
137041 , xet.reference_char_3
137042 , xet.reference_char_4
137043 , xet.reference_date_1
137044 , xet.reference_date_2
137045 , xet.reference_date_3
137046 , xet.reference_date_4
137047 , xet.event_created_by
137048 , xet.budgetary_control_flag
137049 , h1.ENTITY_CODE source_6
137050 , h1.CURRENCY_CODE source_7
137051 , h1.CURRENCY_CONVERSION_DATE source_8
137052 , h1.CURRENCY_CONVERSION_RATE source_9
137053 , h1.CURRENCY_CONVERSION_TYPE source_10
137054 , h1.TRANSACTION_DATE source_12
137055 FROM xla_events_gt xet
137056 , GMF_XLA_EXTRACT_HEADERS h1
137057 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
137058 and xet.event_type_code = C_EVENT_TYPE_CODE
137059 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
137060
137061 ORDER BY event_id
137062 ;
137063
137064
137065 --
137066 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
137067 IS
137068 SELECT /*+ leading(xet) cardinality(xet,1) */
137069 -- Event Type Code: EXP_REQ_RCPT
137070 -- Event Class Code: INT_ORDER_TO_EXP
137071 xet.entity_id
137072 ,xet.legal_entity_id
137073 ,xet.entity_code
137074 ,xet.transaction_number
137075 ,xet.event_id
137076 ,xet.event_class_code
137077 ,xet.event_type_code
137078 ,xet.event_number
137079 ,xet.event_date
137080 ,xet.transaction_date
137081 ,xet.reference_num_1
137085 ,xet.reference_char_1
137082 ,xet.reference_num_2
137083 ,xet.reference_num_3
137084 ,xet.reference_num_4
137086 ,xet.reference_char_2
137087 ,xet.reference_char_3
137088 ,xet.reference_char_4
137089 ,xet.reference_date_1
137090 ,xet.reference_date_2
137091 ,xet.reference_date_3
137092 ,xet.reference_date_4
137093 ,xet.event_created_by
137094 ,xet.budgetary_control_flag , l2.LINE_NUMBER
137095 , l2.TRANSACTION_ACCOUNT_ID source_1
137096 , l2.JOURNAL_LINE_TYPE source_2
137097 , l2.ENTERED_AMOUNT source_3
137098 , l2.LINE_ID source_5
137099 , l2.ACCOUNTED_AMOUNT source_11
137100 FROM xla_events_gt xet
137101 , GMF_XLA_EXTRACT_LINES l2
137102 WHERE xet.event_id between x_first_event_id and x_last_event_id
137103 and xet.event_date between p_pad_start_date and p_pad_end_date
137104 and xet.event_type_code = C_EVENT_TYPE_CODE
137105 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
137106 ;
137107
137108 --
137109 BEGIN
137110 IF g_log_enabled THEN
137111 l_log_module := C_DEFAULT_MODULE||'.EventType_262';
137112 END IF;
137113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137114 trace
137115 (p_msg => 'BEGIN of EventType_262'
137116 ,p_level => C_LEVEL_PROCEDURE
137117 ,p_module => l_log_module);
137118 END IF;
137119
137120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137121 trace
137122 (p_msg => 'p_application_id = '||p_application_id||
137123 ' - p_base_ledger_id = '||p_base_ledger_id||
137124 ' - p_target_ledger_id = '||p_target_ledger_id||
137125 ' - p_language = '||p_language||
137126 ' - p_currency_code = '||p_currency_code||
137127 ' - p_sla_ledger_id = '||p_sla_ledger_id
137128 ,p_level => C_LEVEL_STATEMENT
137129 ,p_module => l_log_module);
137130 END IF;
137131 --
137132 -- initialze arrays
137133 --
137134 g_array_event.DELETE;
137135 l_rec_array_event := l_null_rec_array_event;
137136 --
137137 --------------------------------------
137138 -- 4262811 Initialze MPA Line Number
137139 --------------------------------------
137140 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
137141
137142 --
137143
137144 --
137145 OPEN header_cur;
137146 --
137147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137148 trace
137149 (p_msg => 'SQL - FETCH header_cur'
137150 ,p_level => C_LEVEL_STATEMENT
137151 ,p_module => l_log_module);
137152 END IF;
137153 --
137154 LOOP
137155 FETCH header_cur BULK COLLECT INTO
137156 l_array_entity_id
137157 , l_array_legal_entity_id
137158 , l_array_entity_code
137159 , l_array_transaction_num
137160 , l_array_event_id
137161 , l_array_class_code
137162 , l_array_event_type
137163 , l_array_event_number
137164 , l_array_event_date
137165 , l_array_transaction_date
137166 , l_array_reference_num_1
137167 , l_array_reference_num_2
137168 , l_array_reference_num_3
137169 , l_array_reference_num_4
137170 , l_array_reference_char_1
137171 , l_array_reference_char_2
137172 , l_array_reference_char_3
137173 , l_array_reference_char_4
137174 , l_array_reference_date_1
137175 , l_array_reference_date_2
137176 , l_array_reference_date_3
137177 , l_array_reference_date_4
137178 , l_array_event_created_by
137179 , l_array_budgetary_control_flag
137180 , l_array_source_6
137181 , l_array_source_7
137182 , l_array_source_8
137183 , l_array_source_9
137184 , l_array_source_10
137185 , l_array_source_12
137186 LIMIT l_rows;
137187 --
137188 IF (C_LEVEL_EVENT >= g_log_level) THEN
137189 trace
137190 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
137191 ,p_level => C_LEVEL_EVENT
137192 ,p_module => l_log_module);
137193 END IF;
137194 --
137195 EXIT WHEN l_array_entity_id.COUNT = 0;
137196
137197 -- initialize arrays
137198 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
137199 XLA_AE_LINES_PKG.g_rec_lines := NULL;
137200
137201 --
137202 -- Bug 4458708
137203 --
137204 XLA_AE_LINES_PKG.g_LineNumber := 0;
137205
137206
137207 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
137208 g_last_hdr_idx := l_array_event_id.LAST;
137209 --
137210 -- loop for the headers. Each iteration is for each header extract row
137211 -- fetched in header cursor
137212 --
137213 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
137214
137215 --
137216 -- set event info as cache for other routines to refer event attributes
137217 --
137218 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
137219 (p_application_id => p_application_id
137220 ,p_primary_ledger_id => p_primary_ledger_id
137221 ,p_base_ledger_id => p_base_ledger_id
137222 ,p_target_ledger_id => p_target_ledger_id
137223 ,p_entity_id => l_array_entity_id(hdr_idx)
137224 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
137225 ,p_entity_code => l_array_entity_code(hdr_idx)
137226 ,p_transaction_num => l_array_transaction_num(hdr_idx)
137227 ,p_event_id => l_array_event_id(hdr_idx)
137231 ,p_event_date => l_array_event_date(hdr_idx)
137228 ,p_event_class_code => l_array_class_code(hdr_idx)
137229 ,p_event_type_code => l_array_event_type(hdr_idx)
137230 ,p_event_number => l_array_event_number(hdr_idx)
137232 ,p_transaction_date => l_array_transaction_date(hdr_idx)
137233 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
137234 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
137235 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
137236 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
137237 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
137238 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
137239 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
137240 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
137241 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
137242 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
137243 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
137244 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
137245 ,p_event_created_by => l_array_event_created_by(hdr_idx)
137246 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
137247
137248 --
137249 -- set the status of entry to C_VALID (0)
137250 --
137251 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
137252
137253 --
137254 -- initialize a row for ae header
137255 --
137256 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
137257
137258 l_event_id := l_array_event_id(hdr_idx);
137259
137260 --
137261 -- storing the hdr_idx for event. May be used by line cursor.
137262 --
137263 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
137264
137265 --
137266 -- store sources from header extract. This can be improved to
137267 -- store only those sources from header extract that may be used in lines
137268 --
137269
137270 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
137271 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
137272 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
137273 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
137274 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
137275 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
137276
137277 --
137278 -- initilaize the status of ae headers for diffrent balance types
137279 -- the status is initialised to C_NOT_CREATED (2)
137280 --
137281 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
137282 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
137283 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
137284
137285 --
137286 -- call api to validate and store accounting attributes for header
137287 --
137288
137289 ------------------------------------------------------------
137290 -- Accrual Reversal : to get date for Standard Source (NONE)
137291 ------------------------------------------------------------
137292 l_acc_rev_gl_date_source := NULL;
137293
137294 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
137295 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
137296
137297
137298 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
137299
137300 XLA_AE_HEADER_PKG.SetJeCategoryName;
137301
137302 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
137303 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
137304 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
137305 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
137306 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
137307
137308
137309 -- No header level analytical criteria
137310
137311 --
137312 --accounting attribute enhancement, bug 3612931
137313 --
137314 l_trx_reversal_source := SUBSTR(NULL, 1,30);
137315
137316 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
137317 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
137318
137319 xla_accounting_err_pkg.build_message
137320 (p_appli_s_name => 'XLA'
137321 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
137322 ,p_token_1 => 'ACCT_ATTR_NAME'
137323 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
137324 ,p_token_2 => 'PRODUCT_NAME'
137325 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
137326 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
137327 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
137328 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
137329
137330 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
137331 --
137332 -- following sets the accounting attributes needed to reverse
137333 -- accounting for a distributeion
137334 --
137335 xla_ae_lines_pkg.SetTrxReversalAttrs
137336 (p_event_id => l_event_id
137340 END IF;
137337 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
137338 ,p_trx_reversal_source => l_trx_reversal_source);
137339
137341
137342
137343 ----------------------------------------------------------------
137344 -- 4262811 - update the header statuses to invalid in need be
137345 ----------------------------------------------------------------
137346 --
137347 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
137348
137349
137350 -----------------------------------------------
137351 -- No accrual reversal for the event class/type
137352 -----------------------------------------------
137353 ----------------------------------------------------------------
137354
137355 --
137356 -- this ends the header loop iteration for one bulk fetch
137357 --
137358 END LOOP;
137359
137360 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
137361 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
137362
137363 --
137364 -- insert dummy rows into lines gt table that were created due to
137365 -- transaction reversals
137366 --
137367 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
137368 l_result := XLA_AE_LINES_PKG.InsertLines;
137369 END IF;
137370
137371 --
137372 -- reset the temp_line_num for each set of events fetched from header
137373 -- cursor rather than doing it for each new event in line cursor
137374 -- Bug 3939231
137375 --
137376 xla_ae_lines_pkg.g_temp_line_num := 0;
137377
137378
137379
137380 --
137381 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
137382 --
137383 --
137384 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137385
137386 trace
137387 (p_msg => 'SQL - FETCH line_cur'
137388 ,p_level => C_LEVEL_STATEMENT
137389 ,p_module => l_log_module);
137390
137391 END IF;
137392 --
137393 --
137394 LOOP
137395 --
137396 FETCH line_cur BULK COLLECT INTO
137397 l_array_entity_id
137398 , l_array_legal_entity_id
137399 , l_array_entity_code
137400 , l_array_transaction_num
137401 , l_array_event_id
137402 , l_array_class_code
137403 , l_array_event_type
137404 , l_array_event_number
137405 , l_array_event_date
137406 , l_array_transaction_date
137407 , l_array_reference_num_1
137408 , l_array_reference_num_2
137409 , l_array_reference_num_3
137410 , l_array_reference_num_4
137411 , l_array_reference_char_1
137412 , l_array_reference_char_2
137413 , l_array_reference_char_3
137414 , l_array_reference_char_4
137415 , l_array_reference_date_1
137416 , l_array_reference_date_2
137417 , l_array_reference_date_3
137418 , l_array_reference_date_4
137419 , l_array_event_created_by
137420 , l_array_budgetary_control_flag
137421 , l_array_extract_line_num
137422 , l_array_source_1
137423 , l_array_source_2
137424 , l_array_source_3
137425 , l_array_source_5
137426 , l_array_source_11
137427 LIMIT l_rows;
137428
137429 --
137430 IF (C_LEVEL_EVENT >= g_log_level) THEN
137431 trace
137432 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
137433 ,p_level => C_LEVEL_EVENT
137434 ,p_module => l_log_module);
137435 END IF;
137436 --
137437 EXIT WHEN l_array_entity_id.count = 0;
137438
137439 XLA_AE_LINES_PKG.g_rec_lines := null;
137440
137441 --
137442 -- Bug 4458708
137443 --
137444 XLA_AE_LINES_PKG.g_LineNumber := 0;
137445 --
137446 --
137447
137448 FOR Idx IN 1..l_array_event_id.count LOOP
137449 --
137450 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
137451 --
137452 l_event_id := l_array_event_id(idx); -- 5648433
137453
137454 --
137455 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
137456 --
137457
137458 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
137459 (g_array_event(l_event_id).array_value_num('header_index'))
137460 ,'N'
137461 ) <> 'Y'
137462 THEN
137463 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137464 trace
137465 (p_msg => 'Trancaction revesal option is not Y '
137466 ,p_level => C_LEVEL_STATEMENT
137467 ,p_module => l_log_module);
137468 END IF;
137469
137470 --
137471 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
137472 --
137473 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
137474 --
137475 -- set event info as cache for other routines to refer event attributes
137476 --
137477
137478 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
137479 l_previous_event_id := l_event_id;
137480
137481 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
137482 (p_application_id => p_application_id
137483 ,p_primary_ledger_id => p_primary_ledger_id
137484 ,p_base_ledger_id => p_base_ledger_id
137485 ,p_target_ledger_id => p_target_ledger_id
137486 ,p_entity_id => l_array_entity_id(Idx)
137490 ,p_event_id => l_array_event_id(Idx)
137487 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
137488 ,p_entity_code => l_array_entity_code(Idx)
137489 ,p_transaction_num => l_array_transaction_num(Idx)
137491 ,p_event_class_code => l_array_class_code(Idx)
137492 ,p_event_type_code => l_array_event_type(Idx)
137493 ,p_event_number => l_array_event_number(Idx)
137494 ,p_event_date => l_array_event_date(Idx)
137495 ,p_transaction_date => l_array_transaction_date(Idx)
137496 ,p_reference_num_1 => l_array_reference_num_1(Idx)
137497 ,p_reference_num_2 => l_array_reference_num_2(Idx)
137498 ,p_reference_num_3 => l_array_reference_num_3(Idx)
137499 ,p_reference_num_4 => l_array_reference_num_4(Idx)
137500 ,p_reference_char_1 => l_array_reference_char_1(Idx)
137501 ,p_reference_char_2 => l_array_reference_char_2(Idx)
137502 ,p_reference_char_3 => l_array_reference_char_3(Idx)
137503 ,p_reference_char_4 => l_array_reference_char_4(Idx)
137504 ,p_reference_date_1 => l_array_reference_date_1(Idx)
137505 ,p_reference_date_2 => l_array_reference_date_2(Idx)
137506 ,p_reference_date_3 => l_array_reference_date_3(Idx)
137507 ,p_reference_date_4 => l_array_reference_date_4(Idx)
137508 ,p_event_created_by => l_array_event_created_by(Idx)
137509 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
137510 --
137511 END IF;
137512
137513
137514
137515 --
137516 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
137517
137518 l_acct_reversal_source := SUBSTR(NULL, 1,30);
137519
137520 IF l_continue_with_lines THEN
137521 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
137522 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
137523
137524 xla_accounting_err_pkg.build_message
137525 (p_appli_s_name => 'XLA'
137526 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
137527 ,p_token_1 => 'LINE_NUMBER'
137528 ,p_value_1 => l_array_extract_line_num(Idx)
137529 ,p_token_2 => 'PRODUCT_NAME'
137530 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
137531 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
137532 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
137533 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
137534
137535 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
137536 --
137537 -- following sets the accounting attributes needed to reverse
137538 -- accounting for a distributeion
137539 --
137540
137541 --
137542 -- 5217187
137543 --
137544 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
137545 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
137546 g_array_event(l_event_id).array_value_num('header_index'));
137547 --
137548 --
137549
137550 -- No reversal code generated
137551
137552 xla_ae_lines_pkg.SetAcctReversalAttrs
137553 (p_event_id => l_event_id
137554 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
137555 ,p_calculate_acctd_flag => l_calculate_acctd_flag
137556 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
137557 END IF;
137558
137559 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
137560 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
137561
137562 --
137563 AcctLineType_106 (
137564 p_application_id => p_application_id
137565 ,p_event_id => l_event_id
137566 ,p_calculate_acctd_flag => l_calculate_acctd_flag
137567 ,p_calculate_g_l_flag => l_calculate_g_l_flag
137568 ,p_actual_flag => l_actual_flag
137569 ,p_balance_type_code => l_balance_type_code
137570 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
137571
137572 , p_source_1 => l_array_source_1(Idx)
137573 , p_source_2 => l_array_source_2(Idx)
137574 , p_source_3 => l_array_source_3(Idx)
137575 , p_source_5 => l_array_source_5(Idx)
137576 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
137577 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
137578 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
137579 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
137580 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
137581 , p_source_11 => l_array_source_11(Idx)
137582 );
137583 If(l_balance_type_code = 'A') THEN
137584 l_actual_gain_loss_ref := l_gain_or_loss_ref;
137585 END IF;
137586
137587 --
137588
137589
137590 --
137591 AcctLineType_172 (
137592 p_application_id => p_application_id
137593 ,p_event_id => l_event_id
137594 ,p_calculate_acctd_flag => l_calculate_acctd_flag
137595 ,p_calculate_g_l_flag => l_calculate_g_l_flag
137596 ,p_actual_flag => l_actual_flag
137597 ,p_balance_type_code => l_balance_type_code
137598 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
137599
137600 , p_source_1 => l_array_source_1(Idx)
137604 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
137601 , p_source_2 => l_array_source_2(Idx)
137602 , p_source_3 => l_array_source_3(Idx)
137603 , p_source_5 => l_array_source_5(Idx)
137605 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
137606 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
137607 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
137608 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
137609 , p_source_11 => l_array_source_11(Idx)
137610 );
137611 If(l_balance_type_code = 'A') THEN
137612 l_actual_gain_loss_ref := l_gain_or_loss_ref;
137613 END IF;
137614
137615 --
137616
137617 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
137618 -- or secondary ledger that has different currency with primary
137619 -- or alc that is calculated by sla
137620 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
137621 (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'))
137622
137623 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
137624 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
137625 AND (l_actual_flag = 'A')) THEN
137626 XLA_AE_LINES_PKG.CreateGainOrLossLines(
137627 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
137628 ,p_application_id => p_application_id
137629 ,p_amb_context_code => 'DEFAULT'
137630 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
137631 ,p_event_class_code => C_EVENT_CLASS_CODE
137632 ,p_event_type_code => C_EVENT_TYPE_CODE
137633
137634 ,p_gain_ccid => -1
137635 ,p_loss_ccid => -1
137636
137637 ,p_actual_flag => l_actual_flag
137638 ,p_enc_flag => null
137639 ,p_actual_g_l_ref => l_actual_gain_loss_ref
137640 ,p_enc_g_l_ref => null
137641 );
137642 END IF;
137643 END IF;
137644 END IF;
137645
137646 ELSE
137647 --
137648 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
137649 --
137650 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137651 trace
137652 (p_msg => 'Trancaction revesal option is Y'
137653 ,p_level => C_LEVEL_STATEMENT
137654 ,p_module => l_log_module);
137655 END IF;
137656 END IF;
137657
137658 END LOOP;
137659 l_result := XLA_AE_LINES_PKG.InsertLines ;
137660 end loop;
137661 close line_cur;
137662
137663
137664 --
137665 -- insert headers into xla_ae_headers_gt table
137666 --
137667 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
137668
137669 -- insert into errors table here.
137670
137671 END LOOP;
137672
137673 --
137674 -- 4865292
137675 --
137676 -- Compare g_hdr_extract_count with event count in
137677 -- CreateHeadersAndLines.
137678 --
137679 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
137680
137681 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137682 trace (p_msg => '# rows extracted from header extract objects '
137683 || ' (running total): '
137684 || g_hdr_extract_count
137685 ,p_level => C_LEVEL_STATEMENT
137686 ,p_module => l_log_module);
137687 END IF;
137688
137689 CLOSE header_cur;
137690 --
137691
137692 --
137693 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137694 trace
137695 (p_msg => 'END of EventType_262'
137696 ,p_level => C_LEVEL_PROCEDURE
137697 ,p_module => l_log_module);
137698 END IF;
137699 --
137700 RETURN l_result;
137701 EXCEPTION
137702 WHEN xla_exceptions_pkg.application_exception THEN
137703
137704 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
137705
137706
137707 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
137708
137709 RAISE;
137710
137711 WHEN NO_DATA_FOUND THEN
137712
137713 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
137714 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
137715
137716 FOR header_record IN header_cur
137717 LOOP
137718 l_array_header_events(header_record.event_id) := header_record.event_id;
137719 END LOOP;
137720
137721 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
137722 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
137723
137724 fnd_file.put_line(fnd_file.LOG, ' ');
137725 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
137726 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
137727 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
137728
137729 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
137730 LOOP
137731 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
137732 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
137733 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
137734 END IF;
137735 END LOOP;
137736
137740
137737 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
137738 fnd_file.put_line(fnd_file.LOG, ' ');
137739
137741 xla_exceptions_pkg.raise_message
137742 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_262');
137743
137744
137745 WHEN OTHERS THEN
137746 xla_exceptions_pkg.raise_message
137747 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_262');
137748 END EventType_262;
137749 --
137750
137751 ---------------------------------------
137752 --
137753 -- PRIVATE PROCEDURE
137754 -- insert_sources_263
137755 --
137756 ----------------------------------------
137757 --
137758 PROCEDURE insert_sources_263(
137759 p_target_ledger_id IN NUMBER
137760 , p_language IN VARCHAR2
137761 , p_sla_ledger_id IN NUMBER
137762 , p_pad_start_date IN DATE
137763 , p_pad_end_date IN DATE
137764 )
137765 IS
137766
137767 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'EXP_REQ_RCPT_TP';
137768 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
137769 p_apps_owner VARCHAR2(30);
137770 l_log_module VARCHAR2(240);
137771 BEGIN
137772 IF g_log_enabled THEN
137773 l_log_module := C_DEFAULT_MODULE||'.insert_sources_263';
137774 END IF;
137775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137776
137777 trace
137778 (p_msg => 'BEGIN of insert_sources_263'
137779 ,p_level => C_LEVEL_PROCEDURE
137780 ,p_module => l_log_module);
137781
137782 END IF;
137783
137784 -- select APPS owner
137785 SELECT oracle_username
137786 INTO p_apps_owner
137787 FROM fnd_oracle_userid
137788 WHERE read_only_flag = 'U'
137789 ;
137790
137791 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137792 trace
137793 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
137794 ' - p_language = '||p_language||
137795 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
137796 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
137797 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
137798 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
137799 ,p_level => C_LEVEL_STATEMENT
137800 ,p_module => l_log_module);
137801 END IF;
137802
137803
137804 --
137805 INSERT INTO xla_diag_sources --hdr1
137806 (
137807 event_id
137808 , ledger_id
137809 , sla_ledger_id
137810 , description_language
137811 , object_name
137812 , object_type_code
137813 , line_number
137814 , source_application_id
137815 , source_type_code
137816 , source_code
137817 , source_value
137818 , source_meaning
137819 , created_by
137820 , creation_date
137821 , last_update_date
137822 , last_updated_by
137823 , last_update_login
137824 , program_update_date
137825 , program_application_id
137826 , program_id
137827 , request_id
137828 )
137829 SELECT
137830 event_id
137831 , p_target_ledger_id
137832 , p_sla_ledger_id
137833 , p_language
137834 , object_name
137835 , object_type_code
137836 , line_number
137837 , source_application_id
137838 , source_type_code
137839 , source_code
137840 , SUBSTR(source_value ,1,1996)
137841 , SUBSTR(source_meaning,1,200)
137842 , xla_environment_pkg.g_Usr_Id
137843 , TRUNC(SYSDATE)
137844 , TRUNC(SYSDATE)
137845 , xla_environment_pkg.g_Usr_Id
137846 , xla_environment_pkg.g_Login_Id
137847 , TRUNC(SYSDATE)
137848 , xla_environment_pkg.g_Prog_Appl_Id
137849 , xla_environment_pkg.g_Prog_Id
137850 , xla_environment_pkg.g_Req_Id
137851 FROM (
137852 SELECT xet.event_id event_id
137853 , 0 line_number
137854 , CASE r
137855 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
137856 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
137857 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
137858 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
137859 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
137860 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
137861
137862 ELSE null
137863 END object_name
137864 , CASE r
137865 WHEN 1 THEN 'HEADER'
137866 WHEN 2 THEN 'HEADER'
137867 WHEN 3 THEN 'HEADER'
137868 WHEN 4 THEN 'HEADER'
137869 WHEN 5 THEN 'HEADER'
137870 WHEN 6 THEN 'HEADER'
137871
137872 ELSE null
137873 END object_type_code
137874 , CASE r
137875 WHEN 1 THEN '555'
137876 WHEN 2 THEN '555'
137877 WHEN 3 THEN '555'
137878 WHEN 4 THEN '555'
137879 WHEN 5 THEN '555'
137880 WHEN 6 THEN '555'
137881
137882 ELSE null
137886 WHEN 1 THEN 'ENTITY_CODE'
137883 END source_application_id
137884 , 'S' source_type_code
137885 , CASE r
137887 WHEN 2 THEN 'CURRENCY_CODE'
137888 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
137889 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
137890 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
137891 WHEN 6 THEN 'TRANSACTION_DATE'
137892
137893 ELSE null
137894 END source_code
137895 , CASE r
137896 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
137897 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
137898 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
137899 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
137900 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
137901 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
137902
137903 ELSE null
137904 END source_value
137905 , CASE r
137906 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
137907 1010186
137908 ,TO_CHAR(h1.CURRENCY_CODE)
137909 ,'CURRENCY_CODE'
137910 ,'S'
137911 ,555)
137912
137913 ELSE null
137914 END source_meaning
137915 FROM xla_events_gt xet
137916 , GMF_XLA_EXTRACT_HEADERS h1
137917 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
137918 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
137919 AND xet.event_type_code = C_EVENT_TYPE_CODE
137920 AND h1.event_id = xet.event_id
137921
137922 )
137923 ;
137924 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
137925
137926 trace
137927 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
137928 ,p_level => C_LEVEL_STATEMENT
137929 ,p_module => l_log_module);
137930
137931 END IF;
137932 --
137933
137934
137935
137936 --
137937 INSERT INTO xla_diag_sources --line1
137938 (
137939 event_id
137940 , ledger_id
137941 , sla_ledger_id
137942 , description_language
137943 , object_name
137944 , object_type_code
137945 , line_number
137946 , source_application_id
137947 , source_type_code
137948 , source_code
137949 , source_value
137950 , source_meaning
137951 , created_by
137952 , creation_date
137953 , last_update_date
137954 , last_updated_by
137955 , last_update_login
137956 , program_update_date
137957 , program_application_id
137958 , program_id
137959 , request_id
137960 )
137961 SELECT event_id
137962 , p_target_ledger_id
137963 , p_sla_ledger_id
137964 , p_language
137965 , object_name
137966 , object_type_code
137967 , line_number
137968 , source_application_id
137969 , source_type_code
137970 , source_code
137971 , SUBSTR(source_value,1,1996)
137972 , SUBSTR(source_meaning,1,200)
137973 , xla_environment_pkg.g_Usr_Id
137974 , TRUNC(SYSDATE)
137975 , TRUNC(SYSDATE)
137976 , xla_environment_pkg.g_Usr_Id
137977 , xla_environment_pkg.g_Login_Id
137978 , TRUNC(SYSDATE)
137979 , xla_environment_pkg.g_Prog_Appl_Id
137980 , xla_environment_pkg.g_Prog_Id
137981 , xla_environment_pkg.g_Req_Id
137982 FROM (
137983 SELECT xet.event_id event_id
137984 , l2.line_number line_number
137985 , CASE r
137986 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
137987 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
137988 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
137989 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
137990 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
137991
137992 ELSE null
137993 END object_name
137994 , CASE r
137995 WHEN 1 THEN 'LINE'
137996 WHEN 2 THEN 'LINE'
137997 WHEN 3 THEN 'LINE'
137998 WHEN 4 THEN 'LINE'
137999 WHEN 5 THEN 'LINE'
138000
138001 ELSE null
138002 END object_type_code
138003 , CASE r
138004 WHEN 1 THEN '555'
138005 WHEN 2 THEN '555'
138006 WHEN 3 THEN '555'
138007 WHEN 4 THEN '555'
138008 WHEN 5 THEN '555'
138009
138010 ELSE null
138011 END source_application_id
138012 , 'S' source_type_code
138013 , CASE r
138014 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
138015 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
138016 WHEN 3 THEN 'ENTERED_AMOUNT'
138017 WHEN 4 THEN 'LINE_ID'
138018 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
138019
138020 ELSE null
138024 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
138021 END source_code
138022 , CASE r
138023 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
138025 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
138026 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
138027 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
138028
138029 ELSE null
138030 END source_value
138031 , null source_meaning
138032 FROM xla_events_gt xet
138033 , GMF_XLA_EXTRACT_LINES l2
138034 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
138035 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
138036 AND xet.event_type_code = C_EVENT_TYPE_CODE
138037 AND l2.event_id = xet.event_id
138038
138039 )
138040 ;
138041 --
138042 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138043
138044 trace
138045 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
138046 ,p_level => C_LEVEL_STATEMENT
138047 ,p_module => l_log_module);
138048
138049 END IF;
138050
138051
138052 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138053 trace
138054 (p_msg => 'END of insert_sources_263'
138055 ,p_level => C_LEVEL_PROCEDURE
138056 ,p_module => l_log_module);
138057 END IF;
138058 EXCEPTION
138059 WHEN xla_exceptions_pkg.application_exception THEN
138060 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
138061 trace
138062 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
138063 ,p_level => C_LEVEL_EXCEPTION
138064 ,p_module => l_log_module);
138065 END IF;
138066 RAISE;
138067 WHEN OTHERS THEN
138068 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
138069 trace
138070 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
138071 ,p_level => C_LEVEL_EXCEPTION
138072 ,p_module => l_log_module);
138073 END IF;
138074 xla_exceptions_pkg.raise_message
138075 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_263');
138076 END insert_sources_263;
138077 --
138078
138079 ---------------------------------------
138080 --
138081 -- PRIVATE FUNCTION
138082 -- EventType_263
138083 --
138084 ----------------------------------------
138085 --
138086 FUNCTION EventType_263
138087 (p_application_id IN NUMBER
138088 ,p_base_ledger_id IN NUMBER
138089 ,p_target_ledger_id IN NUMBER
138090 ,p_language IN VARCHAR2
138091 ,p_currency_code IN VARCHAR2
138092 ,p_sla_ledger_id IN NUMBER
138093 ,p_pad_start_date IN DATE
138094 ,p_pad_end_date IN DATE
138095 ,p_primary_ledger_id IN NUMBER)
138096 RETURN BOOLEAN IS
138097 --
138098 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'EXP_REQ_RCPT_TP';
138099 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
138100
138101 l_calculate_acctd_flag VARCHAR2(1) :='N';
138102 l_calculate_g_l_flag VARCHAR2(1) :='N';
138103 --
138104 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138105 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138106 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138107 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138108 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138109 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138110 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138111 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138112 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138113 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138114 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138115 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138116 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138117 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
138118 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138119 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138120 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138121 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
138122 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138123 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138124 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138125 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
138126 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
138127 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
138128 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
138129 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
138130
138131 l_event_id NUMBER;
138135
138132 l_previous_event_id NUMBER;
138133 l_first_event_id NUMBER;
138134 l_last_event_id NUMBER;
138136 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
138137 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
138138 --
138139 --
138140 l_result BOOLEAN := TRUE;
138141 l_rows NUMBER := 1000;
138142 l_event_type_name VARCHAR2(80) := 'Internal Order Receipt into Expense, Transfer Pricing';
138143 l_event_class_name VARCHAR2(80) := 'Internal Order to Expense';
138144 l_description VARCHAR2(4000);
138145 l_transaction_reversal NUMBER;
138146 l_ae_header_id NUMBER;
138147 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
138148 l_log_module VARCHAR2(240);
138149 --
138150 l_acct_reversal_source VARCHAR2(30);
138151 l_trx_reversal_source VARCHAR2(30);
138152
138153 l_continue_with_lines BOOLEAN := TRUE;
138154 --
138155 l_acc_rev_gl_date_source DATE; -- 4262811
138156 --
138157 type t_array_event_id is table of number index by binary_integer;
138158
138159 l_rec_array_event t_rec_array_event;
138160 l_null_rec_array_event t_rec_array_event;
138161 l_array_ae_header_id xla_number_array_type;
138162 l_actual_flag VARCHAR2(1) := NULL;
138163 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
138164 l_balance_type_code VARCHAR2(1) :=NULL;
138165 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
138166
138167 --
138168 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
138169 --
138170
138171 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
138172 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
138173 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
138174 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
138175 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
138176 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
138177
138178 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
138179 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
138180 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
138181 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
138182 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
138183
138184 l_array_source_6 t_array_source_6;
138185 l_array_source_7 t_array_source_7;
138186 l_array_source_8 t_array_source_8;
138187 l_array_source_9 t_array_source_9;
138188 l_array_source_10 t_array_source_10;
138189 l_array_source_12 t_array_source_12;
138190
138191 l_array_source_1 t_array_source_1;
138192 l_array_source_2 t_array_source_2;
138193 l_array_source_3 t_array_source_3;
138194 l_array_source_5 t_array_source_5;
138195 l_array_source_11 t_array_source_11;
138196
138197 --
138198 CURSOR header_cur
138199 IS
138200 SELECT /*+ leading(xet) cardinality(xet,1) */
138201 -- Event Type Code: EXP_REQ_RCPT_TP
138202 -- Event Class Code: INT_ORDER_TO_EXP
138203 xet.entity_id
138204 , xet.legal_entity_id
138205 , xet.entity_code
138206 , xet.transaction_number
138207 , xet.event_id
138208 , xet.event_class_code
138209 , xet.event_type_code
138210 , xet.event_number
138211 , xet.event_date
138212 , xet.transaction_date
138213 , xet.reference_num_1
138214 , xet.reference_num_2
138215 , xet.reference_num_3
138216 , xet.reference_num_4
138217 , xet.reference_char_1
138218 , xet.reference_char_2
138219 , xet.reference_char_3
138220 , xet.reference_char_4
138221 , xet.reference_date_1
138222 , xet.reference_date_2
138223 , xet.reference_date_3
138224 , xet.reference_date_4
138225 , xet.event_created_by
138226 , xet.budgetary_control_flag
138227 , h1.ENTITY_CODE source_6
138228 , h1.CURRENCY_CODE source_7
138229 , h1.CURRENCY_CONVERSION_DATE source_8
138230 , h1.CURRENCY_CONVERSION_RATE source_9
138231 , h1.CURRENCY_CONVERSION_TYPE source_10
138232 , h1.TRANSACTION_DATE source_12
138233 FROM xla_events_gt xet
138234 , GMF_XLA_EXTRACT_HEADERS h1
138235 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
138236 and xet.event_type_code = C_EVENT_TYPE_CODE
138237 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
138238
138239 ORDER BY event_id
138240 ;
138241
138242
138243 --
138244 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
138245 IS
138246 SELECT /*+ leading(xet) cardinality(xet,1) */
138247 -- Event Type Code: EXP_REQ_RCPT_TP
138248 -- Event Class Code: INT_ORDER_TO_EXP
138249 xet.entity_id
138250 ,xet.legal_entity_id
138251 ,xet.entity_code
138252 ,xet.transaction_number
138253 ,xet.event_id
138254 ,xet.event_class_code
138255 ,xet.event_type_code
138256 ,xet.event_number
138257 ,xet.event_date
138258 ,xet.transaction_date
138262 ,xet.reference_num_4
138259 ,xet.reference_num_1
138260 ,xet.reference_num_2
138261 ,xet.reference_num_3
138263 ,xet.reference_char_1
138264 ,xet.reference_char_2
138265 ,xet.reference_char_3
138266 ,xet.reference_char_4
138267 ,xet.reference_date_1
138268 ,xet.reference_date_2
138269 ,xet.reference_date_3
138270 ,xet.reference_date_4
138271 ,xet.event_created_by
138272 ,xet.budgetary_control_flag , l2.LINE_NUMBER
138273 , l2.TRANSACTION_ACCOUNT_ID source_1
138274 , l2.JOURNAL_LINE_TYPE source_2
138275 , l2.ENTERED_AMOUNT source_3
138276 , l2.LINE_ID source_5
138277 , l2.ACCOUNTED_AMOUNT source_11
138278 FROM xla_events_gt xet
138279 , GMF_XLA_EXTRACT_LINES l2
138280 WHERE xet.event_id between x_first_event_id and x_last_event_id
138281 and xet.event_date between p_pad_start_date and p_pad_end_date
138282 and xet.event_type_code = C_EVENT_TYPE_CODE
138283 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
138284 ;
138285
138286 --
138287 BEGIN
138288 IF g_log_enabled THEN
138289 l_log_module := C_DEFAULT_MODULE||'.EventType_263';
138290 END IF;
138291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138292 trace
138293 (p_msg => 'BEGIN of EventType_263'
138294 ,p_level => C_LEVEL_PROCEDURE
138295 ,p_module => l_log_module);
138296 END IF;
138297
138298 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138299 trace
138300 (p_msg => 'p_application_id = '||p_application_id||
138301 ' - p_base_ledger_id = '||p_base_ledger_id||
138302 ' - p_target_ledger_id = '||p_target_ledger_id||
138303 ' - p_language = '||p_language||
138304 ' - p_currency_code = '||p_currency_code||
138305 ' - p_sla_ledger_id = '||p_sla_ledger_id
138306 ,p_level => C_LEVEL_STATEMENT
138307 ,p_module => l_log_module);
138308 END IF;
138309 --
138310 -- initialze arrays
138311 --
138312 g_array_event.DELETE;
138313 l_rec_array_event := l_null_rec_array_event;
138314 --
138315 --------------------------------------
138316 -- 4262811 Initialze MPA Line Number
138317 --------------------------------------
138318 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
138319
138320 --
138321
138322 --
138323 OPEN header_cur;
138324 --
138325 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138326 trace
138327 (p_msg => 'SQL - FETCH header_cur'
138328 ,p_level => C_LEVEL_STATEMENT
138329 ,p_module => l_log_module);
138330 END IF;
138331 --
138332 LOOP
138333 FETCH header_cur BULK COLLECT INTO
138334 l_array_entity_id
138335 , l_array_legal_entity_id
138336 , l_array_entity_code
138337 , l_array_transaction_num
138338 , l_array_event_id
138339 , l_array_class_code
138340 , l_array_event_type
138341 , l_array_event_number
138342 , l_array_event_date
138343 , l_array_transaction_date
138344 , l_array_reference_num_1
138345 , l_array_reference_num_2
138346 , l_array_reference_num_3
138347 , l_array_reference_num_4
138348 , l_array_reference_char_1
138349 , l_array_reference_char_2
138350 , l_array_reference_char_3
138351 , l_array_reference_char_4
138352 , l_array_reference_date_1
138353 , l_array_reference_date_2
138354 , l_array_reference_date_3
138355 , l_array_reference_date_4
138356 , l_array_event_created_by
138357 , l_array_budgetary_control_flag
138358 , l_array_source_6
138359 , l_array_source_7
138360 , l_array_source_8
138361 , l_array_source_9
138362 , l_array_source_10
138363 , l_array_source_12
138364 LIMIT l_rows;
138365 --
138366 IF (C_LEVEL_EVENT >= g_log_level) THEN
138367 trace
138368 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
138369 ,p_level => C_LEVEL_EVENT
138370 ,p_module => l_log_module);
138371 END IF;
138372 --
138373 EXIT WHEN l_array_entity_id.COUNT = 0;
138374
138375 -- initialize arrays
138376 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
138377 XLA_AE_LINES_PKG.g_rec_lines := NULL;
138378
138379 --
138380 -- Bug 4458708
138381 --
138382 XLA_AE_LINES_PKG.g_LineNumber := 0;
138383
138384
138385 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
138386 g_last_hdr_idx := l_array_event_id.LAST;
138387 --
138388 -- loop for the headers. Each iteration is for each header extract row
138389 -- fetched in header cursor
138390 --
138391 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
138392
138393 --
138394 -- set event info as cache for other routines to refer event attributes
138395 --
138396 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
138397 (p_application_id => p_application_id
138398 ,p_primary_ledger_id => p_primary_ledger_id
138399 ,p_base_ledger_id => p_base_ledger_id
138400 ,p_target_ledger_id => p_target_ledger_id
138401 ,p_entity_id => l_array_entity_id(hdr_idx)
138402 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
138403 ,p_entity_code => l_array_entity_code(hdr_idx)
138404 ,p_transaction_num => l_array_transaction_num(hdr_idx)
138405 ,p_event_id => l_array_event_id(hdr_idx)
138409 ,p_event_date => l_array_event_date(hdr_idx)
138406 ,p_event_class_code => l_array_class_code(hdr_idx)
138407 ,p_event_type_code => l_array_event_type(hdr_idx)
138408 ,p_event_number => l_array_event_number(hdr_idx)
138410 ,p_transaction_date => l_array_transaction_date(hdr_idx)
138411 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
138412 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
138413 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
138414 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
138415 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
138416 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
138417 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
138418 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
138419 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
138420 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
138421 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
138422 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
138423 ,p_event_created_by => l_array_event_created_by(hdr_idx)
138424 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
138425
138426 --
138427 -- set the status of entry to C_VALID (0)
138428 --
138429 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
138430
138431 --
138432 -- initialize a row for ae header
138433 --
138434 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
138435
138436 l_event_id := l_array_event_id(hdr_idx);
138437
138438 --
138439 -- storing the hdr_idx for event. May be used by line cursor.
138440 --
138441 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
138442
138443 --
138444 -- store sources from header extract. This can be improved to
138445 -- store only those sources from header extract that may be used in lines
138446 --
138447
138448 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
138449 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
138450 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
138451 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
138452 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
138453 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
138454
138455 --
138456 -- initilaize the status of ae headers for diffrent balance types
138457 -- the status is initialised to C_NOT_CREATED (2)
138458 --
138459 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138460 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138461 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
138462
138463 --
138464 -- call api to validate and store accounting attributes for header
138465 --
138466
138467 ------------------------------------------------------------
138468 -- Accrual Reversal : to get date for Standard Source (NONE)
138469 ------------------------------------------------------------
138470 l_acc_rev_gl_date_source := NULL;
138471
138472 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
138473 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
138474
138475
138476 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
138477
138478 XLA_AE_HEADER_PKG.SetJeCategoryName;
138479
138480 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
138481 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
138482 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
138483 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
138484 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
138485
138486
138487 -- No header level analytical criteria
138488
138489 --
138490 --accounting attribute enhancement, bug 3612931
138491 --
138492 l_trx_reversal_source := SUBSTR(NULL, 1,30);
138493
138494 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
138495 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
138496
138497 xla_accounting_err_pkg.build_message
138498 (p_appli_s_name => 'XLA'
138499 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
138500 ,p_token_1 => 'ACCT_ATTR_NAME'
138501 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
138502 ,p_token_2 => 'PRODUCT_NAME'
138503 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
138504 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
138505 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
138506 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
138507
138508 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
138509 --
138510 -- following sets the accounting attributes needed to reverse
138511 -- accounting for a distributeion
138512 --
138513 xla_ae_lines_pkg.SetTrxReversalAttrs
138517
138514 (p_event_id => l_event_id
138515 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
138516 ,p_trx_reversal_source => l_trx_reversal_source);
138518 END IF;
138519
138520
138521 ----------------------------------------------------------------
138522 -- 4262811 - update the header statuses to invalid in need be
138523 ----------------------------------------------------------------
138524 --
138525 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
138526
138527
138528 -----------------------------------------------
138529 -- No accrual reversal for the event class/type
138530 -----------------------------------------------
138531 ----------------------------------------------------------------
138532
138533 --
138534 -- this ends the header loop iteration for one bulk fetch
138535 --
138536 END LOOP;
138537
138538 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
138539 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
138540
138541 --
138542 -- insert dummy rows into lines gt table that were created due to
138543 -- transaction reversals
138544 --
138545 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
138546 l_result := XLA_AE_LINES_PKG.InsertLines;
138547 END IF;
138548
138549 --
138550 -- reset the temp_line_num for each set of events fetched from header
138551 -- cursor rather than doing it for each new event in line cursor
138552 -- Bug 3939231
138553 --
138554 xla_ae_lines_pkg.g_temp_line_num := 0;
138555
138556
138557
138558 --
138559 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
138560 --
138561 --
138562 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138563
138564 trace
138565 (p_msg => 'SQL - FETCH line_cur'
138566 ,p_level => C_LEVEL_STATEMENT
138567 ,p_module => l_log_module);
138568
138569 END IF;
138570 --
138571 --
138572 LOOP
138573 --
138574 FETCH line_cur BULK COLLECT INTO
138575 l_array_entity_id
138576 , l_array_legal_entity_id
138577 , l_array_entity_code
138578 , l_array_transaction_num
138579 , l_array_event_id
138580 , l_array_class_code
138581 , l_array_event_type
138582 , l_array_event_number
138583 , l_array_event_date
138584 , l_array_transaction_date
138585 , l_array_reference_num_1
138586 , l_array_reference_num_2
138587 , l_array_reference_num_3
138588 , l_array_reference_num_4
138589 , l_array_reference_char_1
138590 , l_array_reference_char_2
138591 , l_array_reference_char_3
138592 , l_array_reference_char_4
138593 , l_array_reference_date_1
138594 , l_array_reference_date_2
138595 , l_array_reference_date_3
138596 , l_array_reference_date_4
138597 , l_array_event_created_by
138598 , l_array_budgetary_control_flag
138599 , l_array_extract_line_num
138600 , l_array_source_1
138601 , l_array_source_2
138602 , l_array_source_3
138603 , l_array_source_5
138604 , l_array_source_11
138605 LIMIT l_rows;
138606
138607 --
138608 IF (C_LEVEL_EVENT >= g_log_level) THEN
138609 trace
138610 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
138611 ,p_level => C_LEVEL_EVENT
138612 ,p_module => l_log_module);
138613 END IF;
138614 --
138615 EXIT WHEN l_array_entity_id.count = 0;
138616
138617 XLA_AE_LINES_PKG.g_rec_lines := null;
138618
138619 --
138620 -- Bug 4458708
138621 --
138622 XLA_AE_LINES_PKG.g_LineNumber := 0;
138623 --
138624 --
138625
138626 FOR Idx IN 1..l_array_event_id.count LOOP
138627 --
138628 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
138629 --
138630 l_event_id := l_array_event_id(idx); -- 5648433
138631
138632 --
138633 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
138634 --
138635
138636 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
138637 (g_array_event(l_event_id).array_value_num('header_index'))
138638 ,'N'
138639 ) <> 'Y'
138640 THEN
138641 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138642 trace
138643 (p_msg => 'Trancaction revesal option is not Y '
138644 ,p_level => C_LEVEL_STATEMENT
138645 ,p_module => l_log_module);
138646 END IF;
138647
138648 --
138649 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
138650 --
138651 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
138652 --
138653 -- set event info as cache for other routines to refer event attributes
138654 --
138655
138656 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
138657 l_previous_event_id := l_event_id;
138658
138659 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
138660 (p_application_id => p_application_id
138661 ,p_primary_ledger_id => p_primary_ledger_id
138662 ,p_base_ledger_id => p_base_ledger_id
138663 ,p_target_ledger_id => p_target_ledger_id
138667 ,p_transaction_num => l_array_transaction_num(Idx)
138664 ,p_entity_id => l_array_entity_id(Idx)
138665 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
138666 ,p_entity_code => l_array_entity_code(Idx)
138668 ,p_event_id => l_array_event_id(Idx)
138669 ,p_event_class_code => l_array_class_code(Idx)
138670 ,p_event_type_code => l_array_event_type(Idx)
138671 ,p_event_number => l_array_event_number(Idx)
138672 ,p_event_date => l_array_event_date(Idx)
138673 ,p_transaction_date => l_array_transaction_date(Idx)
138674 ,p_reference_num_1 => l_array_reference_num_1(Idx)
138675 ,p_reference_num_2 => l_array_reference_num_2(Idx)
138676 ,p_reference_num_3 => l_array_reference_num_3(Idx)
138677 ,p_reference_num_4 => l_array_reference_num_4(Idx)
138678 ,p_reference_char_1 => l_array_reference_char_1(Idx)
138679 ,p_reference_char_2 => l_array_reference_char_2(Idx)
138680 ,p_reference_char_3 => l_array_reference_char_3(Idx)
138681 ,p_reference_char_4 => l_array_reference_char_4(Idx)
138682 ,p_reference_date_1 => l_array_reference_date_1(Idx)
138683 ,p_reference_date_2 => l_array_reference_date_2(Idx)
138684 ,p_reference_date_3 => l_array_reference_date_3(Idx)
138685 ,p_reference_date_4 => l_array_reference_date_4(Idx)
138686 ,p_event_created_by => l_array_event_created_by(Idx)
138687 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
138688 --
138689 END IF;
138690
138691
138692
138693 --
138694 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
138695
138696 l_acct_reversal_source := SUBSTR(NULL, 1,30);
138697
138698 IF l_continue_with_lines THEN
138699 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
138700 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
138701
138702 xla_accounting_err_pkg.build_message
138703 (p_appli_s_name => 'XLA'
138704 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
138705 ,p_token_1 => 'LINE_NUMBER'
138706 ,p_value_1 => l_array_extract_line_num(Idx)
138707 ,p_token_2 => 'PRODUCT_NAME'
138708 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
138709 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
138710 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
138711 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
138712
138713 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
138714 --
138715 -- following sets the accounting attributes needed to reverse
138716 -- accounting for a distributeion
138717 --
138718
138719 --
138720 -- 5217187
138721 --
138722 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
138723 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
138724 g_array_event(l_event_id).array_value_num('header_index'));
138725 --
138726 --
138727
138728 -- No reversal code generated
138729
138730 xla_ae_lines_pkg.SetAcctReversalAttrs
138731 (p_event_id => l_event_id
138732 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
138733 ,p_calculate_acctd_flag => l_calculate_acctd_flag
138734 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
138735 END IF;
138736
138737 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
138738 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
138739
138740 --
138741 AcctLineType_91 (
138742 p_application_id => p_application_id
138743 ,p_event_id => l_event_id
138744 ,p_calculate_acctd_flag => l_calculate_acctd_flag
138745 ,p_calculate_g_l_flag => l_calculate_g_l_flag
138746 ,p_actual_flag => l_actual_flag
138747 ,p_balance_type_code => l_balance_type_code
138748 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
138749
138750 , p_source_1 => l_array_source_1(Idx)
138751 , p_source_2 => l_array_source_2(Idx)
138752 , p_source_3 => l_array_source_3(Idx)
138753 , p_source_5 => l_array_source_5(Idx)
138754 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
138755 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
138756 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
138757 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
138758 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
138759 , p_source_11 => l_array_source_11(Idx)
138760 );
138761 If(l_balance_type_code = 'A') THEN
138762 l_actual_gain_loss_ref := l_gain_or_loss_ref;
138763 END IF;
138764
138765 --
138766
138767
138768 --
138769 AcctLineType_173 (
138770 p_application_id => p_application_id
138771 ,p_event_id => l_event_id
138772 ,p_calculate_acctd_flag => l_calculate_acctd_flag
138773 ,p_calculate_g_l_flag => l_calculate_g_l_flag
138774 ,p_actual_flag => l_actual_flag
138775 ,p_balance_type_code => l_balance_type_code
138776 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
138777
138778 , p_source_1 => l_array_source_1(Idx)
138782 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
138779 , p_source_2 => l_array_source_2(Idx)
138780 , p_source_3 => l_array_source_3(Idx)
138781 , p_source_5 => l_array_source_5(Idx)
138783 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
138784 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
138785 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
138786 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
138787 , p_source_11 => l_array_source_11(Idx)
138788 );
138789 If(l_balance_type_code = 'A') THEN
138790 l_actual_gain_loss_ref := l_gain_or_loss_ref;
138791 END IF;
138792
138793 --
138794
138795 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
138796 -- or secondary ledger that has different currency with primary
138797 -- or alc that is calculated by sla
138798 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
138799 (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'))
138800
138801 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
138802 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
138803 AND (l_actual_flag = 'A')) THEN
138804 XLA_AE_LINES_PKG.CreateGainOrLossLines(
138805 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
138806 ,p_application_id => p_application_id
138807 ,p_amb_context_code => 'DEFAULT'
138808 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
138809 ,p_event_class_code => C_EVENT_CLASS_CODE
138810 ,p_event_type_code => C_EVENT_TYPE_CODE
138811
138812 ,p_gain_ccid => -1
138813 ,p_loss_ccid => -1
138814
138815 ,p_actual_flag => l_actual_flag
138816 ,p_enc_flag => null
138817 ,p_actual_g_l_ref => l_actual_gain_loss_ref
138818 ,p_enc_g_l_ref => null
138819 );
138820 END IF;
138821 END IF;
138822 END IF;
138823
138824 ELSE
138825 --
138826 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
138827 --
138828 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138829 trace
138830 (p_msg => 'Trancaction revesal option is Y'
138831 ,p_level => C_LEVEL_STATEMENT
138832 ,p_module => l_log_module);
138833 END IF;
138834 END IF;
138835
138836 END LOOP;
138837 l_result := XLA_AE_LINES_PKG.InsertLines ;
138838 end loop;
138839 close line_cur;
138840
138841
138842 --
138843 -- insert headers into xla_ae_headers_gt table
138844 --
138845 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
138846
138847 -- insert into errors table here.
138848
138849 END LOOP;
138850
138851 --
138852 -- 4865292
138853 --
138854 -- Compare g_hdr_extract_count with event count in
138855 -- CreateHeadersAndLines.
138856 --
138857 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
138858
138859 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138860 trace (p_msg => '# rows extracted from header extract objects '
138861 || ' (running total): '
138862 || g_hdr_extract_count
138863 ,p_level => C_LEVEL_STATEMENT
138864 ,p_module => l_log_module);
138865 END IF;
138866
138867 CLOSE header_cur;
138868 --
138869
138870 --
138871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138872 trace
138873 (p_msg => 'END of EventType_263'
138874 ,p_level => C_LEVEL_PROCEDURE
138875 ,p_module => l_log_module);
138876 END IF;
138877 --
138878 RETURN l_result;
138879 EXCEPTION
138880 WHEN xla_exceptions_pkg.application_exception THEN
138881
138882 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
138883
138884
138885 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
138886
138887 RAISE;
138888
138889 WHEN NO_DATA_FOUND THEN
138890
138891 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
138892 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
138893
138894 FOR header_record IN header_cur
138895 LOOP
138896 l_array_header_events(header_record.event_id) := header_record.event_id;
138897 END LOOP;
138898
138899 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
138900 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
138901
138902 fnd_file.put_line(fnd_file.LOG, ' ');
138903 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
138904 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
138905 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
138906
138907 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
138908 LOOP
138909 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
138910 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
138911 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
138912 END IF;
138913 END LOOP;
138914
138918
138915 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
138916 fnd_file.put_line(fnd_file.LOG, ' ');
138917
138919 xla_exceptions_pkg.raise_message
138920 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_263');
138921
138922
138923 WHEN OTHERS THEN
138924 xla_exceptions_pkg.raise_message
138925 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_263');
138926 END EventType_263;
138927 --
138928
138929 ---------------------------------------
138930 --
138931 -- PRIVATE PROCEDURE
138932 -- insert_sources_264
138933 --
138934 ----------------------------------------
138935 --
138936 PROCEDURE insert_sources_264(
138937 p_target_ledger_id IN NUMBER
138938 , p_language IN VARCHAR2
138939 , p_sla_ledger_id IN NUMBER
138940 , p_pad_start_date IN DATE
138941 , p_pad_end_date IN DATE
138942 )
138943 IS
138944
138945 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'EXP_RET_TO_RECEIVING';
138946 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
138947 p_apps_owner VARCHAR2(30);
138948 l_log_module VARCHAR2(240);
138949 BEGIN
138950 IF g_log_enabled THEN
138951 l_log_module := C_DEFAULT_MODULE||'.insert_sources_264';
138952 END IF;
138953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138954
138955 trace
138956 (p_msg => 'BEGIN of insert_sources_264'
138957 ,p_level => C_LEVEL_PROCEDURE
138958 ,p_module => l_log_module);
138959
138960 END IF;
138961
138962 -- select APPS owner
138963 SELECT oracle_username
138964 INTO p_apps_owner
138965 FROM fnd_oracle_userid
138966 WHERE read_only_flag = 'U'
138967 ;
138968
138969 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
138970 trace
138971 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
138972 ' - p_language = '||p_language||
138973 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
138974 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
138975 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
138976 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
138977 ,p_level => C_LEVEL_STATEMENT
138978 ,p_module => l_log_module);
138979 END IF;
138980
138981
138982 --
138983 INSERT INTO xla_diag_sources --hdr1
138984 (
138985 event_id
138986 , ledger_id
138987 , sla_ledger_id
138988 , description_language
138989 , object_name
138990 , object_type_code
138991 , line_number
138992 , source_application_id
138993 , source_type_code
138994 , source_code
138995 , source_value
138996 , source_meaning
138997 , created_by
138998 , creation_date
138999 , last_update_date
139000 , last_updated_by
139001 , last_update_login
139002 , program_update_date
139003 , program_application_id
139004 , program_id
139005 , request_id
139006 )
139007 SELECT
139008 event_id
139009 , p_target_ledger_id
139010 , p_sla_ledger_id
139011 , p_language
139012 , object_name
139013 , object_type_code
139014 , line_number
139015 , source_application_id
139016 , source_type_code
139017 , source_code
139018 , SUBSTR(source_value ,1,1996)
139019 , SUBSTR(source_meaning,1,200)
139020 , xla_environment_pkg.g_Usr_Id
139021 , TRUNC(SYSDATE)
139022 , TRUNC(SYSDATE)
139023 , xla_environment_pkg.g_Usr_Id
139024 , xla_environment_pkg.g_Login_Id
139025 , TRUNC(SYSDATE)
139026 , xla_environment_pkg.g_Prog_Appl_Id
139027 , xla_environment_pkg.g_Prog_Id
139028 , xla_environment_pkg.g_Req_Id
139029 FROM (
139030 SELECT xet.event_id event_id
139031 , 0 line_number
139032 , CASE r
139033 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
139034 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
139035 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
139036 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
139037 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
139038 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
139039
139040 ELSE null
139041 END object_name
139042 , CASE r
139043 WHEN 1 THEN 'HEADER'
139044 WHEN 2 THEN 'HEADER'
139045 WHEN 3 THEN 'HEADER'
139046 WHEN 4 THEN 'HEADER'
139047 WHEN 5 THEN 'HEADER'
139048 WHEN 6 THEN 'HEADER'
139049
139050 ELSE null
139051 END object_type_code
139052 , CASE r
139053 WHEN 1 THEN '555'
139054 WHEN 2 THEN '555'
139055 WHEN 3 THEN '555'
139056 WHEN 4 THEN '555'
139057 WHEN 5 THEN '555'
139058 WHEN 6 THEN '555'
139059
139060 ELSE null
139064 WHEN 1 THEN 'ENTITY_CODE'
139061 END source_application_id
139062 , 'S' source_type_code
139063 , CASE r
139065 WHEN 2 THEN 'CURRENCY_CODE'
139066 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
139067 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
139068 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
139069 WHEN 6 THEN 'TRANSACTION_DATE'
139070
139071 ELSE null
139072 END source_code
139073 , CASE r
139074 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
139075 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
139076 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
139077 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
139078 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
139079 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
139080
139081 ELSE null
139082 END source_value
139083 , CASE r
139084 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
139085 1010186
139086 ,TO_CHAR(h1.CURRENCY_CODE)
139087 ,'CURRENCY_CODE'
139088 ,'S'
139089 ,555)
139090
139091 ELSE null
139092 END source_meaning
139093 FROM xla_events_gt xet
139094 , GMF_XLA_EXTRACT_HEADERS h1
139095 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
139096 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
139097 AND xet.event_type_code = C_EVENT_TYPE_CODE
139098 AND h1.event_id = xet.event_id
139099
139100 )
139101 ;
139102 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139103
139104 trace
139105 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
139106 ,p_level => C_LEVEL_STATEMENT
139107 ,p_module => l_log_module);
139108
139109 END IF;
139110 --
139111
139112
139113
139114 --
139115 INSERT INTO xla_diag_sources --line1
139116 (
139117 event_id
139118 , ledger_id
139119 , sla_ledger_id
139120 , description_language
139121 , object_name
139122 , object_type_code
139123 , line_number
139124 , source_application_id
139125 , source_type_code
139126 , source_code
139127 , source_value
139128 , source_meaning
139129 , created_by
139130 , creation_date
139131 , last_update_date
139132 , last_updated_by
139133 , last_update_login
139134 , program_update_date
139135 , program_application_id
139136 , program_id
139137 , request_id
139138 )
139139 SELECT event_id
139140 , p_target_ledger_id
139141 , p_sla_ledger_id
139142 , p_language
139143 , object_name
139144 , object_type_code
139145 , line_number
139146 , source_application_id
139147 , source_type_code
139148 , source_code
139149 , SUBSTR(source_value,1,1996)
139150 , SUBSTR(source_meaning,1,200)
139151 , xla_environment_pkg.g_Usr_Id
139152 , TRUNC(SYSDATE)
139153 , TRUNC(SYSDATE)
139154 , xla_environment_pkg.g_Usr_Id
139155 , xla_environment_pkg.g_Login_Id
139156 , TRUNC(SYSDATE)
139157 , xla_environment_pkg.g_Prog_Appl_Id
139158 , xla_environment_pkg.g_Prog_Id
139159 , xla_environment_pkg.g_Req_Id
139160 FROM (
139161 SELECT xet.event_id event_id
139162 , l2.line_number line_number
139163 , CASE r
139164 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
139165 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
139166 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
139167 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
139168 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
139169
139170 ELSE null
139171 END object_name
139172 , CASE r
139173 WHEN 1 THEN 'LINE'
139174 WHEN 2 THEN 'LINE'
139175 WHEN 3 THEN 'LINE'
139176 WHEN 4 THEN 'LINE'
139177 WHEN 5 THEN 'LINE'
139178
139179 ELSE null
139180 END object_type_code
139181 , CASE r
139182 WHEN 1 THEN '555'
139183 WHEN 2 THEN '555'
139184 WHEN 3 THEN '555'
139185 WHEN 4 THEN '555'
139186 WHEN 5 THEN '555'
139187
139188 ELSE null
139189 END source_application_id
139190 , 'S' source_type_code
139191 , CASE r
139192 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
139193 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
139194 WHEN 3 THEN 'ENTERED_AMOUNT'
139195 WHEN 4 THEN 'LINE_ID'
139196 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
139197
139198 ELSE null
139202 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
139199 END source_code
139200 , CASE r
139201 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
139203 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
139204 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
139205 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
139206
139207 ELSE null
139208 END source_value
139209 , null source_meaning
139210 FROM xla_events_gt xet
139211 , GMF_XLA_EXTRACT_LINES l2
139212 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
139213 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
139214 AND xet.event_type_code = C_EVENT_TYPE_CODE
139215 AND l2.event_id = xet.event_id
139216
139217 )
139218 ;
139219 --
139220 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139221
139222 trace
139223 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
139224 ,p_level => C_LEVEL_STATEMENT
139225 ,p_module => l_log_module);
139226
139227 END IF;
139228
139229
139230 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139231 trace
139232 (p_msg => 'END of insert_sources_264'
139233 ,p_level => C_LEVEL_PROCEDURE
139234 ,p_module => l_log_module);
139235 END IF;
139236 EXCEPTION
139237 WHEN xla_exceptions_pkg.application_exception THEN
139238 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
139239 trace
139240 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
139241 ,p_level => C_LEVEL_EXCEPTION
139242 ,p_module => l_log_module);
139243 END IF;
139244 RAISE;
139245 WHEN OTHERS THEN
139246 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
139247 trace
139248 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
139249 ,p_level => C_LEVEL_EXCEPTION
139250 ,p_module => l_log_module);
139251 END IF;
139252 xla_exceptions_pkg.raise_message
139253 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_264');
139254 END insert_sources_264;
139255 --
139256
139257 ---------------------------------------
139258 --
139259 -- PRIVATE FUNCTION
139260 -- EventType_264
139261 --
139262 ----------------------------------------
139263 --
139264 FUNCTION EventType_264
139265 (p_application_id IN NUMBER
139266 ,p_base_ledger_id IN NUMBER
139267 ,p_target_ledger_id IN NUMBER
139268 ,p_language IN VARCHAR2
139269 ,p_currency_code IN VARCHAR2
139270 ,p_sla_ledger_id IN NUMBER
139271 ,p_pad_start_date IN DATE
139272 ,p_pad_end_date IN DATE
139273 ,p_primary_ledger_id IN NUMBER)
139274 RETURN BOOLEAN IS
139275 --
139276 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'EXP_RET_TO_RECEIVING';
139277 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
139278
139279 l_calculate_acctd_flag VARCHAR2(1) :='N';
139280 l_calculate_g_l_flag VARCHAR2(1) :='N';
139281 --
139282 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139283 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139284 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139285 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139286 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139287 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139288 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139289 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139290 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139291 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139292 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139293 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139294 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139295 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
139296 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139297 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139298 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139299 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
139300 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139301 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139302 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139303 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
139304 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
139305 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
139306 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
139307 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
139308
139309 l_event_id NUMBER;
139313
139310 l_previous_event_id NUMBER;
139311 l_first_event_id NUMBER;
139312 l_last_event_id NUMBER;
139314 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
139315 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
139316 --
139317 --
139318 l_result BOOLEAN := TRUE;
139319 l_rows NUMBER := 1000;
139320 l_event_type_name VARCHAR2(80) := 'Expense Return to Receiving';
139321 l_event_class_name VARCHAR2(80) := 'Receiving';
139322 l_description VARCHAR2(4000);
139323 l_transaction_reversal NUMBER;
139324 l_ae_header_id NUMBER;
139325 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
139326 l_log_module VARCHAR2(240);
139327 --
139328 l_acct_reversal_source VARCHAR2(30);
139329 l_trx_reversal_source VARCHAR2(30);
139330
139331 l_continue_with_lines BOOLEAN := TRUE;
139332 --
139333 l_acc_rev_gl_date_source DATE; -- 4262811
139334 --
139335 type t_array_event_id is table of number index by binary_integer;
139336
139337 l_rec_array_event t_rec_array_event;
139338 l_null_rec_array_event t_rec_array_event;
139339 l_array_ae_header_id xla_number_array_type;
139340 l_actual_flag VARCHAR2(1) := NULL;
139341 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
139342 l_balance_type_code VARCHAR2(1) :=NULL;
139343 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
139344
139345 --
139346 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
139347 --
139348
139349 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
139350 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
139351 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
139352 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
139353 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
139354 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
139355
139356 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
139357 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
139358 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
139359 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
139360 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
139361
139362 l_array_source_6 t_array_source_6;
139363 l_array_source_7 t_array_source_7;
139364 l_array_source_8 t_array_source_8;
139365 l_array_source_9 t_array_source_9;
139366 l_array_source_10 t_array_source_10;
139367 l_array_source_12 t_array_source_12;
139368
139369 l_array_source_1 t_array_source_1;
139370 l_array_source_2 t_array_source_2;
139371 l_array_source_3 t_array_source_3;
139372 l_array_source_5 t_array_source_5;
139373 l_array_source_11 t_array_source_11;
139374
139375 --
139376 CURSOR header_cur
139377 IS
139378 SELECT /*+ leading(xet) cardinality(xet,1) */
139379 -- Event Type Code: EXP_RET_TO_RECEIVING
139380 -- Event Class Code: RECEIVE
139381 xet.entity_id
139382 , xet.legal_entity_id
139383 , xet.entity_code
139384 , xet.transaction_number
139385 , xet.event_id
139386 , xet.event_class_code
139387 , xet.event_type_code
139388 , xet.event_number
139389 , xet.event_date
139390 , xet.transaction_date
139391 , xet.reference_num_1
139392 , xet.reference_num_2
139393 , xet.reference_num_3
139394 , xet.reference_num_4
139395 , xet.reference_char_1
139396 , xet.reference_char_2
139397 , xet.reference_char_3
139398 , xet.reference_char_4
139399 , xet.reference_date_1
139400 , xet.reference_date_2
139401 , xet.reference_date_3
139402 , xet.reference_date_4
139403 , xet.event_created_by
139404 , xet.budgetary_control_flag
139405 , h1.ENTITY_CODE source_6
139406 , h1.CURRENCY_CODE source_7
139407 , h1.CURRENCY_CONVERSION_DATE source_8
139408 , h1.CURRENCY_CONVERSION_RATE source_9
139409 , h1.CURRENCY_CONVERSION_TYPE source_10
139410 , h1.TRANSACTION_DATE source_12
139411 FROM xla_events_gt xet
139412 , GMF_XLA_EXTRACT_HEADERS h1
139413 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
139414 and xet.event_type_code = C_EVENT_TYPE_CODE
139415 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
139416
139417 ORDER BY event_id
139418 ;
139419
139420
139421 --
139422 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
139423 IS
139424 SELECT /*+ leading(xet) cardinality(xet,1) */
139425 -- Event Type Code: EXP_RET_TO_RECEIVING
139426 -- Event Class Code: RECEIVE
139427 xet.entity_id
139428 ,xet.legal_entity_id
139429 ,xet.entity_code
139430 ,xet.transaction_number
139431 ,xet.event_id
139432 ,xet.event_class_code
139433 ,xet.event_type_code
139434 ,xet.event_number
139435 ,xet.event_date
139436 ,xet.transaction_date
139437 ,xet.reference_num_1
139441 ,xet.reference_char_1
139438 ,xet.reference_num_2
139439 ,xet.reference_num_3
139440 ,xet.reference_num_4
139442 ,xet.reference_char_2
139443 ,xet.reference_char_3
139444 ,xet.reference_char_4
139445 ,xet.reference_date_1
139446 ,xet.reference_date_2
139447 ,xet.reference_date_3
139448 ,xet.reference_date_4
139449 ,xet.event_created_by
139450 ,xet.budgetary_control_flag , l2.LINE_NUMBER
139451 , l2.TRANSACTION_ACCOUNT_ID source_1
139452 , l2.JOURNAL_LINE_TYPE source_2
139453 , l2.ENTERED_AMOUNT source_3
139454 , l2.LINE_ID source_5
139455 , l2.ACCOUNTED_AMOUNT source_11
139456 FROM xla_events_gt xet
139457 , GMF_XLA_EXTRACT_LINES l2
139458 WHERE xet.event_id between x_first_event_id and x_last_event_id
139459 and xet.event_date between p_pad_start_date and p_pad_end_date
139460 and xet.event_type_code = C_EVENT_TYPE_CODE
139461 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
139462 ;
139463
139464 --
139465 BEGIN
139466 IF g_log_enabled THEN
139467 l_log_module := C_DEFAULT_MODULE||'.EventType_264';
139468 END IF;
139469 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139470 trace
139471 (p_msg => 'BEGIN of EventType_264'
139472 ,p_level => C_LEVEL_PROCEDURE
139473 ,p_module => l_log_module);
139474 END IF;
139475
139476 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139477 trace
139478 (p_msg => 'p_application_id = '||p_application_id||
139479 ' - p_base_ledger_id = '||p_base_ledger_id||
139480 ' - p_target_ledger_id = '||p_target_ledger_id||
139481 ' - p_language = '||p_language||
139482 ' - p_currency_code = '||p_currency_code||
139483 ' - p_sla_ledger_id = '||p_sla_ledger_id
139484 ,p_level => C_LEVEL_STATEMENT
139485 ,p_module => l_log_module);
139486 END IF;
139487 --
139488 -- initialze arrays
139489 --
139490 g_array_event.DELETE;
139491 l_rec_array_event := l_null_rec_array_event;
139492 --
139493 --------------------------------------
139494 -- 4262811 Initialze MPA Line Number
139495 --------------------------------------
139496 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
139497
139498 --
139499
139500 --
139501 OPEN header_cur;
139502 --
139503 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139504 trace
139505 (p_msg => 'SQL - FETCH header_cur'
139506 ,p_level => C_LEVEL_STATEMENT
139507 ,p_module => l_log_module);
139508 END IF;
139509 --
139510 LOOP
139511 FETCH header_cur BULK COLLECT INTO
139512 l_array_entity_id
139513 , l_array_legal_entity_id
139514 , l_array_entity_code
139515 , l_array_transaction_num
139516 , l_array_event_id
139517 , l_array_class_code
139518 , l_array_event_type
139519 , l_array_event_number
139520 , l_array_event_date
139521 , l_array_transaction_date
139522 , l_array_reference_num_1
139523 , l_array_reference_num_2
139524 , l_array_reference_num_3
139525 , l_array_reference_num_4
139526 , l_array_reference_char_1
139527 , l_array_reference_char_2
139528 , l_array_reference_char_3
139529 , l_array_reference_char_4
139530 , l_array_reference_date_1
139531 , l_array_reference_date_2
139532 , l_array_reference_date_3
139533 , l_array_reference_date_4
139534 , l_array_event_created_by
139535 , l_array_budgetary_control_flag
139536 , l_array_source_6
139537 , l_array_source_7
139538 , l_array_source_8
139539 , l_array_source_9
139540 , l_array_source_10
139541 , l_array_source_12
139542 LIMIT l_rows;
139543 --
139544 IF (C_LEVEL_EVENT >= g_log_level) THEN
139545 trace
139546 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
139547 ,p_level => C_LEVEL_EVENT
139548 ,p_module => l_log_module);
139549 END IF;
139550 --
139551 EXIT WHEN l_array_entity_id.COUNT = 0;
139552
139553 -- initialize arrays
139554 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
139555 XLA_AE_LINES_PKG.g_rec_lines := NULL;
139556
139557 --
139558 -- Bug 4458708
139559 --
139560 XLA_AE_LINES_PKG.g_LineNumber := 0;
139561
139562
139563 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
139564 g_last_hdr_idx := l_array_event_id.LAST;
139565 --
139566 -- loop for the headers. Each iteration is for each header extract row
139567 -- fetched in header cursor
139568 --
139569 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
139570
139571 --
139572 -- set event info as cache for other routines to refer event attributes
139573 --
139574 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
139575 (p_application_id => p_application_id
139576 ,p_primary_ledger_id => p_primary_ledger_id
139577 ,p_base_ledger_id => p_base_ledger_id
139578 ,p_target_ledger_id => p_target_ledger_id
139579 ,p_entity_id => l_array_entity_id(hdr_idx)
139580 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
139581 ,p_entity_code => l_array_entity_code(hdr_idx)
139582 ,p_transaction_num => l_array_transaction_num(hdr_idx)
139583 ,p_event_id => l_array_event_id(hdr_idx)
139587 ,p_event_date => l_array_event_date(hdr_idx)
139584 ,p_event_class_code => l_array_class_code(hdr_idx)
139585 ,p_event_type_code => l_array_event_type(hdr_idx)
139586 ,p_event_number => l_array_event_number(hdr_idx)
139588 ,p_transaction_date => l_array_transaction_date(hdr_idx)
139589 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
139590 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
139591 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
139592 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
139593 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
139594 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
139595 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
139596 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
139597 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
139598 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
139599 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
139600 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
139601 ,p_event_created_by => l_array_event_created_by(hdr_idx)
139602 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
139603
139604 --
139605 -- set the status of entry to C_VALID (0)
139606 --
139607 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
139608
139609 --
139610 -- initialize a row for ae header
139611 --
139612 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
139613
139614 l_event_id := l_array_event_id(hdr_idx);
139615
139616 --
139617 -- storing the hdr_idx for event. May be used by line cursor.
139618 --
139619 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
139620
139621 --
139622 -- store sources from header extract. This can be improved to
139623 -- store only those sources from header extract that may be used in lines
139624 --
139625
139626 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
139627 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
139628 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
139629 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
139630 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
139631 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
139632
139633 --
139634 -- initilaize the status of ae headers for diffrent balance types
139635 -- the status is initialised to C_NOT_CREATED (2)
139636 --
139637 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
139638 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
139639 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
139640
139641 --
139642 -- call api to validate and store accounting attributes for header
139643 --
139644
139645 ------------------------------------------------------------
139646 -- Accrual Reversal : to get date for Standard Source (NONE)
139647 ------------------------------------------------------------
139648 l_acc_rev_gl_date_source := NULL;
139649
139650 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
139651 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
139652
139653
139654 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
139655
139656 XLA_AE_HEADER_PKG.SetJeCategoryName;
139657
139658 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
139659 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
139660 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
139661 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
139662 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
139663
139664
139665 -- No header level analytical criteria
139666
139667 --
139668 --accounting attribute enhancement, bug 3612931
139669 --
139670 l_trx_reversal_source := SUBSTR(NULL, 1,30);
139671
139672 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
139673 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
139674
139675 xla_accounting_err_pkg.build_message
139676 (p_appli_s_name => 'XLA'
139677 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
139678 ,p_token_1 => 'ACCT_ATTR_NAME'
139679 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
139680 ,p_token_2 => 'PRODUCT_NAME'
139681 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
139682 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
139683 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
139684 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
139685
139686 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
139687 --
139688 -- following sets the accounting attributes needed to reverse
139689 -- accounting for a distributeion
139690 --
139691 xla_ae_lines_pkg.SetTrxReversalAttrs
139695
139692 (p_event_id => l_event_id
139693 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
139694 ,p_trx_reversal_source => l_trx_reversal_source);
139696 END IF;
139697
139698
139699 ----------------------------------------------------------------
139700 -- 4262811 - update the header statuses to invalid in need be
139701 ----------------------------------------------------------------
139702 --
139703 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
139704
139705
139706 -----------------------------------------------
139707 -- No accrual reversal for the event class/type
139708 -----------------------------------------------
139709 ----------------------------------------------------------------
139710
139711 --
139712 -- this ends the header loop iteration for one bulk fetch
139713 --
139714 END LOOP;
139715
139716 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
139717 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
139718
139719 --
139720 -- insert dummy rows into lines gt table that were created due to
139721 -- transaction reversals
139722 --
139723 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
139724 l_result := XLA_AE_LINES_PKG.InsertLines;
139725 END IF;
139726
139727 --
139728 -- reset the temp_line_num for each set of events fetched from header
139729 -- cursor rather than doing it for each new event in line cursor
139730 -- Bug 3939231
139731 --
139732 xla_ae_lines_pkg.g_temp_line_num := 0;
139733
139734
139735
139736 --
139737 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
139738 --
139739 --
139740 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139741
139742 trace
139743 (p_msg => 'SQL - FETCH line_cur'
139744 ,p_level => C_LEVEL_STATEMENT
139745 ,p_module => l_log_module);
139746
139747 END IF;
139748 --
139749 --
139750 LOOP
139751 --
139752 FETCH line_cur BULK COLLECT INTO
139753 l_array_entity_id
139754 , l_array_legal_entity_id
139755 , l_array_entity_code
139756 , l_array_transaction_num
139757 , l_array_event_id
139758 , l_array_class_code
139759 , l_array_event_type
139760 , l_array_event_number
139761 , l_array_event_date
139762 , l_array_transaction_date
139763 , l_array_reference_num_1
139764 , l_array_reference_num_2
139765 , l_array_reference_num_3
139766 , l_array_reference_num_4
139767 , l_array_reference_char_1
139768 , l_array_reference_char_2
139769 , l_array_reference_char_3
139770 , l_array_reference_char_4
139771 , l_array_reference_date_1
139772 , l_array_reference_date_2
139773 , l_array_reference_date_3
139774 , l_array_reference_date_4
139775 , l_array_event_created_by
139776 , l_array_budgetary_control_flag
139777 , l_array_extract_line_num
139778 , l_array_source_1
139779 , l_array_source_2
139780 , l_array_source_3
139781 , l_array_source_5
139782 , l_array_source_11
139783 LIMIT l_rows;
139784
139785 --
139786 IF (C_LEVEL_EVENT >= g_log_level) THEN
139787 trace
139788 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
139789 ,p_level => C_LEVEL_EVENT
139790 ,p_module => l_log_module);
139791 END IF;
139792 --
139793 EXIT WHEN l_array_entity_id.count = 0;
139794
139795 XLA_AE_LINES_PKG.g_rec_lines := null;
139796
139797 --
139798 -- Bug 4458708
139799 --
139800 XLA_AE_LINES_PKG.g_LineNumber := 0;
139801 --
139802 --
139803
139804 FOR Idx IN 1..l_array_event_id.count LOOP
139805 --
139806 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
139807 --
139808 l_event_id := l_array_event_id(idx); -- 5648433
139809
139810 --
139811 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
139812 --
139813
139814 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
139815 (g_array_event(l_event_id).array_value_num('header_index'))
139816 ,'N'
139817 ) <> 'Y'
139818 THEN
139819 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
139820 trace
139821 (p_msg => 'Trancaction revesal option is not Y '
139822 ,p_level => C_LEVEL_STATEMENT
139823 ,p_module => l_log_module);
139824 END IF;
139825
139826 --
139827 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
139828 --
139829 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
139830 --
139831 -- set event info as cache for other routines to refer event attributes
139832 --
139833
139834 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
139835 l_previous_event_id := l_event_id;
139836
139837 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
139838 (p_application_id => p_application_id
139839 ,p_primary_ledger_id => p_primary_ledger_id
139840 ,p_base_ledger_id => p_base_ledger_id
139841 ,p_target_ledger_id => p_target_ledger_id
139845 ,p_transaction_num => l_array_transaction_num(Idx)
139842 ,p_entity_id => l_array_entity_id(Idx)
139843 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
139844 ,p_entity_code => l_array_entity_code(Idx)
139846 ,p_event_id => l_array_event_id(Idx)
139847 ,p_event_class_code => l_array_class_code(Idx)
139848 ,p_event_type_code => l_array_event_type(Idx)
139849 ,p_event_number => l_array_event_number(Idx)
139850 ,p_event_date => l_array_event_date(Idx)
139851 ,p_transaction_date => l_array_transaction_date(Idx)
139852 ,p_reference_num_1 => l_array_reference_num_1(Idx)
139853 ,p_reference_num_2 => l_array_reference_num_2(Idx)
139854 ,p_reference_num_3 => l_array_reference_num_3(Idx)
139855 ,p_reference_num_4 => l_array_reference_num_4(Idx)
139856 ,p_reference_char_1 => l_array_reference_char_1(Idx)
139857 ,p_reference_char_2 => l_array_reference_char_2(Idx)
139858 ,p_reference_char_3 => l_array_reference_char_3(Idx)
139859 ,p_reference_char_4 => l_array_reference_char_4(Idx)
139860 ,p_reference_date_1 => l_array_reference_date_1(Idx)
139861 ,p_reference_date_2 => l_array_reference_date_2(Idx)
139862 ,p_reference_date_3 => l_array_reference_date_3(Idx)
139863 ,p_reference_date_4 => l_array_reference_date_4(Idx)
139864 ,p_event_created_by => l_array_event_created_by(Idx)
139865 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
139866 --
139867 END IF;
139868
139869
139870
139871 --
139872 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
139873
139874 l_acct_reversal_source := SUBSTR(NULL, 1,30);
139875
139876 IF l_continue_with_lines THEN
139877 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
139878 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
139879
139880 xla_accounting_err_pkg.build_message
139881 (p_appli_s_name => 'XLA'
139882 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
139883 ,p_token_1 => 'LINE_NUMBER'
139884 ,p_value_1 => l_array_extract_line_num(Idx)
139885 ,p_token_2 => 'PRODUCT_NAME'
139886 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
139887 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
139888 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
139889 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
139890
139891 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
139892 --
139893 -- following sets the accounting attributes needed to reverse
139894 -- accounting for a distributeion
139895 --
139896
139897 --
139898 -- 5217187
139899 --
139900 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
139901 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
139902 g_array_event(l_event_id).array_value_num('header_index'));
139903 --
139904 --
139905
139906 -- No reversal code generated
139907
139908 xla_ae_lines_pkg.SetAcctReversalAttrs
139909 (p_event_id => l_event_id
139910 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
139911 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139912 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
139913 END IF;
139914
139915 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
139916 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
139917
139918 --
139919 AcctLineType_83 (
139920 p_application_id => p_application_id
139921 ,p_event_id => l_event_id
139922 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139923 ,p_calculate_g_l_flag => l_calculate_g_l_flag
139924 ,p_actual_flag => l_actual_flag
139925 ,p_balance_type_code => l_balance_type_code
139926 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139927
139928 , p_source_1 => l_array_source_1(Idx)
139929 , p_source_2 => l_array_source_2(Idx)
139930 , p_source_3 => l_array_source_3(Idx)
139931 , p_source_5 => l_array_source_5(Idx)
139932 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
139933 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
139934 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
139935 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
139936 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
139937 , p_source_11 => l_array_source_11(Idx)
139938 );
139939 If(l_balance_type_code = 'A') THEN
139940 l_actual_gain_loss_ref := l_gain_or_loss_ref;
139941 END IF;
139942
139943 --
139944
139945
139946 --
139947 AcctLineType_197 (
139948 p_application_id => p_application_id
139949 ,p_event_id => l_event_id
139950 ,p_calculate_acctd_flag => l_calculate_acctd_flag
139951 ,p_calculate_g_l_flag => l_calculate_g_l_flag
139952 ,p_actual_flag => l_actual_flag
139953 ,p_balance_type_code => l_balance_type_code
139954 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
139955
139956 , p_source_1 => l_array_source_1(Idx)
139957 , p_source_2 => l_array_source_2(Idx)
139961 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
139958 , p_source_3 => l_array_source_3(Idx)
139959 , p_source_5 => l_array_source_5(Idx)
139960 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
139962 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
139963 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
139964 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
139965 , p_source_11 => l_array_source_11(Idx)
139966 );
139967 If(l_balance_type_code = 'A') THEN
139968 l_actual_gain_loss_ref := l_gain_or_loss_ref;
139969 END IF;
139970
139971 --
139972
139973 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
139974 -- or secondary ledger that has different currency with primary
139975 -- or alc that is calculated by sla
139976 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
139977 (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'))
139978
139979 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
139980 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
139981 AND (l_actual_flag = 'A')) THEN
139982 XLA_AE_LINES_PKG.CreateGainOrLossLines(
139983 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
139984 ,p_application_id => p_application_id
139985 ,p_amb_context_code => 'DEFAULT'
139986 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
139987 ,p_event_class_code => C_EVENT_CLASS_CODE
139988 ,p_event_type_code => C_EVENT_TYPE_CODE
139989
139990 ,p_gain_ccid => -1
139991 ,p_loss_ccid => -1
139992
139993 ,p_actual_flag => l_actual_flag
139994 ,p_enc_flag => null
139995 ,p_actual_g_l_ref => l_actual_gain_loss_ref
139996 ,p_enc_g_l_ref => null
139997 );
139998 END IF;
139999 END IF;
140000 END IF;
140001
140002 ELSE
140003 --
140004 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
140005 --
140006 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140007 trace
140008 (p_msg => 'Trancaction revesal option is Y'
140009 ,p_level => C_LEVEL_STATEMENT
140010 ,p_module => l_log_module);
140011 END IF;
140012 END IF;
140013
140014 END LOOP;
140015 l_result := XLA_AE_LINES_PKG.InsertLines ;
140016 end loop;
140017 close line_cur;
140018
140019
140020 --
140021 -- insert headers into xla_ae_headers_gt table
140022 --
140023 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
140024
140025 -- insert into errors table here.
140026
140027 END LOOP;
140028
140029 --
140030 -- 4865292
140031 --
140032 -- Compare g_hdr_extract_count with event count in
140033 -- CreateHeadersAndLines.
140034 --
140035 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
140036
140037 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140038 trace (p_msg => '# rows extracted from header extract objects '
140039 || ' (running total): '
140040 || g_hdr_extract_count
140041 ,p_level => C_LEVEL_STATEMENT
140042 ,p_module => l_log_module);
140043 END IF;
140044
140045 CLOSE header_cur;
140046 --
140047
140048 --
140049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140050 trace
140051 (p_msg => 'END of EventType_264'
140052 ,p_level => C_LEVEL_PROCEDURE
140053 ,p_module => l_log_module);
140054 END IF;
140055 --
140056 RETURN l_result;
140057 EXCEPTION
140058 WHEN xla_exceptions_pkg.application_exception THEN
140059
140060 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
140061
140062
140063 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
140064
140065 RAISE;
140066
140067 WHEN NO_DATA_FOUND THEN
140068
140069 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
140070 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
140071
140072 FOR header_record IN header_cur
140073 LOOP
140074 l_array_header_events(header_record.event_id) := header_record.event_id;
140075 END LOOP;
140076
140077 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
140078 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
140079
140080 fnd_file.put_line(fnd_file.LOG, ' ');
140081 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
140082 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
140083 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
140084
140085 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
140086 LOOP
140087 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
140088 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
140089 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
140090 END IF;
140091 END LOOP;
140092
140096
140093 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
140094 fnd_file.put_line(fnd_file.LOG, ' ');
140095
140097 xla_exceptions_pkg.raise_message
140098 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_264');
140099
140100
140101 WHEN OTHERS THEN
140102 xla_exceptions_pkg.raise_message
140103 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_264');
140104 END EventType_264;
140105 --
140106
140107 ---------------------------------------
140108 --
140109 -- PRIVATE PROCEDURE
140110 -- insert_sources_265
140111 --
140112 ----------------------------------------
140113 --
140114 PROCEDURE insert_sources_265(
140115 p_target_ledger_id IN NUMBER
140116 , p_language IN VARCHAR2
140117 , p_sla_ledger_id IN NUMBER
140118 , p_pad_start_date IN DATE
140119 , p_pad_end_date IN DATE
140120 )
140121 IS
140122
140123 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
140124 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
140125 p_apps_owner VARCHAR2(30);
140126 l_log_module VARCHAR2(240);
140127 BEGIN
140128 IF g_log_enabled THEN
140129 l_log_module := C_DEFAULT_MODULE||'.insert_sources_265';
140130 END IF;
140131 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140132
140133 trace
140134 (p_msg => 'BEGIN of insert_sources_265'
140135 ,p_level => C_LEVEL_PROCEDURE
140136 ,p_module => l_log_module);
140137
140138 END IF;
140139
140140 -- select APPS owner
140141 SELECT oracle_username
140142 INTO p_apps_owner
140143 FROM fnd_oracle_userid
140144 WHERE read_only_flag = 'U'
140145 ;
140146
140147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140148 trace
140149 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
140150 ' - p_language = '||p_language||
140151 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
140152 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
140153 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
140154 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
140155 ,p_level => C_LEVEL_STATEMENT
140156 ,p_module => l_log_module);
140157 END IF;
140158
140159
140160 --
140161 INSERT INTO xla_diag_sources --hdr1
140162 (
140163 event_id
140164 , ledger_id
140165 , sla_ledger_id
140166 , description_language
140167 , object_name
140168 , object_type_code
140169 , line_number
140170 , source_application_id
140171 , source_type_code
140172 , source_code
140173 , source_value
140174 , source_meaning
140175 , created_by
140176 , creation_date
140177 , last_update_date
140178 , last_updated_by
140179 , last_update_login
140180 , program_update_date
140181 , program_application_id
140182 , program_id
140183 , request_id
140184 )
140185 SELECT
140186 event_id
140187 , p_target_ledger_id
140188 , p_sla_ledger_id
140189 , p_language
140190 , object_name
140191 , object_type_code
140192 , line_number
140193 , source_application_id
140194 , source_type_code
140195 , source_code
140196 , SUBSTR(source_value ,1,1996)
140197 , SUBSTR(source_meaning,1,200)
140198 , xla_environment_pkg.g_Usr_Id
140199 , TRUNC(SYSDATE)
140200 , TRUNC(SYSDATE)
140201 , xla_environment_pkg.g_Usr_Id
140202 , xla_environment_pkg.g_Login_Id
140203 , TRUNC(SYSDATE)
140204 , xla_environment_pkg.g_Prog_Appl_Id
140205 , xla_environment_pkg.g_Prog_Id
140206 , xla_environment_pkg.g_Req_Id
140207 FROM (
140208 SELECT xet.event_id event_id
140209 , 0 line_number
140210 , CASE r
140211 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
140212 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
140213 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
140214 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
140215 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
140216 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
140217
140218 ELSE null
140219 END object_name
140220 , CASE r
140221 WHEN 1 THEN 'HEADER'
140222 WHEN 2 THEN 'HEADER'
140223 WHEN 3 THEN 'HEADER'
140224 WHEN 4 THEN 'HEADER'
140225 WHEN 5 THEN 'HEADER'
140226 WHEN 6 THEN 'HEADER'
140227
140228 ELSE null
140229 END object_type_code
140230 , CASE r
140231 WHEN 1 THEN '555'
140232 WHEN 2 THEN '555'
140233 WHEN 3 THEN '555'
140234 WHEN 4 THEN '555'
140235 WHEN 5 THEN '555'
140236 WHEN 6 THEN '555'
140237
140238 ELSE null
140242 WHEN 1 THEN 'ENTITY_CODE'
140239 END source_application_id
140240 , 'S' source_type_code
140241 , CASE r
140243 WHEN 2 THEN 'CURRENCY_CODE'
140244 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
140245 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
140246 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
140247 WHEN 6 THEN 'TRANSACTION_DATE'
140248
140249 ELSE null
140250 END source_code
140251 , CASE r
140252 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
140253 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
140254 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
140255 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
140256 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
140257 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
140258
140259 ELSE null
140260 END source_value
140261 , CASE r
140262 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
140263 1010186
140264 ,TO_CHAR(h1.CURRENCY_CODE)
140265 ,'CURRENCY_CODE'
140266 ,'S'
140267 ,555)
140268
140269 ELSE null
140270 END source_meaning
140271 FROM xla_events_gt xet
140272 , GMF_XLA_EXTRACT_HEADERS h1
140273 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
140274 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
140275 AND xet.event_type_code = C_EVENT_TYPE_CODE
140276 AND h1.event_id = xet.event_id
140277
140278 )
140279 ;
140280 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140281
140282 trace
140283 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
140284 ,p_level => C_LEVEL_STATEMENT
140285 ,p_module => l_log_module);
140286
140287 END IF;
140288 --
140289
140290
140291
140292 --
140293 INSERT INTO xla_diag_sources --line1
140294 (
140295 event_id
140296 , ledger_id
140297 , sla_ledger_id
140298 , description_language
140299 , object_name
140300 , object_type_code
140301 , line_number
140302 , source_application_id
140303 , source_type_code
140304 , source_code
140305 , source_value
140306 , source_meaning
140307 , created_by
140308 , creation_date
140309 , last_update_date
140310 , last_updated_by
140311 , last_update_login
140312 , program_update_date
140313 , program_application_id
140314 , program_id
140315 , request_id
140316 )
140317 SELECT event_id
140318 , p_target_ledger_id
140319 , p_sla_ledger_id
140320 , p_language
140321 , object_name
140322 , object_type_code
140323 , line_number
140324 , source_application_id
140325 , source_type_code
140326 , source_code
140327 , SUBSTR(source_value,1,1996)
140328 , SUBSTR(source_meaning,1,200)
140329 , xla_environment_pkg.g_Usr_Id
140330 , TRUNC(SYSDATE)
140331 , TRUNC(SYSDATE)
140332 , xla_environment_pkg.g_Usr_Id
140333 , xla_environment_pkg.g_Login_Id
140334 , TRUNC(SYSDATE)
140335 , xla_environment_pkg.g_Prog_Appl_Id
140336 , xla_environment_pkg.g_Prog_Id
140337 , xla_environment_pkg.g_Req_Id
140338 FROM (
140339 SELECT xet.event_id event_id
140340 , l2.line_number line_number
140341 , CASE r
140342 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
140343 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
140344 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
140345 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
140346 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
140347
140348 ELSE null
140349 END object_name
140350 , CASE r
140351 WHEN 1 THEN 'LINE'
140352 WHEN 2 THEN 'LINE'
140353 WHEN 3 THEN 'LINE'
140354 WHEN 4 THEN 'LINE'
140355 WHEN 5 THEN 'LINE'
140356
140357 ELSE null
140358 END object_type_code
140359 , CASE r
140360 WHEN 1 THEN '555'
140361 WHEN 2 THEN '555'
140362 WHEN 3 THEN '555'
140363 WHEN 4 THEN '555'
140364 WHEN 5 THEN '555'
140365
140366 ELSE null
140367 END source_application_id
140368 , 'S' source_type_code
140369 , CASE r
140370 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
140371 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
140372 WHEN 3 THEN 'ENTERED_AMOUNT'
140373 WHEN 4 THEN 'LINE_ID'
140374 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
140375
140376 ELSE null
140380 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
140377 END source_code
140378 , CASE r
140379 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
140381 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
140382 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
140383 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
140384
140385 ELSE null
140386 END source_value
140387 , null source_meaning
140388 FROM xla_events_gt xet
140389 , GMF_XLA_EXTRACT_LINES l2
140390 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
140391 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
140392 AND xet.event_type_code = C_EVENT_TYPE_CODE
140393 AND l2.event_id = xet.event_id
140394
140395 )
140396 ;
140397 --
140398 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140399
140400 trace
140401 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
140402 ,p_level => C_LEVEL_STATEMENT
140403 ,p_module => l_log_module);
140404
140405 END IF;
140406
140407
140408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140409 trace
140410 (p_msg => 'END of insert_sources_265'
140411 ,p_level => C_LEVEL_PROCEDURE
140412 ,p_module => l_log_module);
140413 END IF;
140414 EXCEPTION
140415 WHEN xla_exceptions_pkg.application_exception THEN
140416 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
140417 trace
140418 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
140419 ,p_level => C_LEVEL_EXCEPTION
140420 ,p_module => l_log_module);
140421 END IF;
140422 RAISE;
140423 WHEN OTHERS THEN
140424 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
140425 trace
140426 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
140427 ,p_level => C_LEVEL_EXCEPTION
140428 ,p_module => l_log_module);
140429 END IF;
140430 xla_exceptions_pkg.raise_message
140431 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_265');
140432 END insert_sources_265;
140433 --
140434
140435 ---------------------------------------
140436 --
140437 -- PRIVATE FUNCTION
140438 -- EventType_265
140439 --
140440 ----------------------------------------
140441 --
140442 FUNCTION EventType_265
140443 (p_application_id IN NUMBER
140444 ,p_base_ledger_id IN NUMBER
140445 ,p_target_ledger_id IN NUMBER
140446 ,p_language IN VARCHAR2
140447 ,p_currency_code IN VARCHAR2
140448 ,p_sla_ledger_id IN NUMBER
140449 ,p_pad_start_date IN DATE
140450 ,p_pad_end_date IN DATE
140451 ,p_primary_ledger_id IN NUMBER)
140452 RETURN BOOLEAN IS
140453 --
140454 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
140455 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
140456
140457 l_calculate_acctd_flag VARCHAR2(1) :='N';
140458 l_calculate_g_l_flag VARCHAR2(1) :='N';
140459 --
140460 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140461 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140462 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
140463 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140464 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140465 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
140466 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
140467 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140468 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140469 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140470 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140471 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140472 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140473 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
140474 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140475 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140476 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140477 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
140478 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140479 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140480 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140481 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
140482 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
140483 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
140484 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
140485 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
140486
140487 l_event_id NUMBER;
140491
140488 l_previous_event_id NUMBER;
140489 l_first_event_id NUMBER;
140490 l_last_event_id NUMBER;
140492 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
140493 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
140494 --
140495 --
140496 l_result BOOLEAN := TRUE;
140497 l_rows NUMBER := 1000;
140498 l_event_type_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt, no Transfer Pricing';
140499 l_event_class_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
140500 l_description VARCHAR2(4000);
140501 l_transaction_reversal NUMBER;
140502 l_ae_header_id NUMBER;
140503 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
140504 l_log_module VARCHAR2(240);
140505 --
140506 l_acct_reversal_source VARCHAR2(30);
140507 l_trx_reversal_source VARCHAR2(30);
140508
140509 l_continue_with_lines BOOLEAN := TRUE;
140510 --
140511 l_acc_rev_gl_date_source DATE; -- 4262811
140512 --
140513 type t_array_event_id is table of number index by binary_integer;
140514
140515 l_rec_array_event t_rec_array_event;
140516 l_null_rec_array_event t_rec_array_event;
140517 l_array_ae_header_id xla_number_array_type;
140518 l_actual_flag VARCHAR2(1) := NULL;
140519 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
140520 l_balance_type_code VARCHAR2(1) :=NULL;
140521 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
140522
140523 --
140524 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
140525 --
140526
140527 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
140528 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
140529 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
140530 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
140531 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
140532 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
140533
140534 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
140535 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
140536 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
140537 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
140538 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
140539
140540 l_array_source_6 t_array_source_6;
140541 l_array_source_7 t_array_source_7;
140542 l_array_source_8 t_array_source_8;
140543 l_array_source_9 t_array_source_9;
140544 l_array_source_10 t_array_source_10;
140545 l_array_source_12 t_array_source_12;
140546
140547 l_array_source_1 t_array_source_1;
140548 l_array_source_2 t_array_source_2;
140549 l_array_source_3 t_array_source_3;
140550 l_array_source_5 t_array_source_5;
140551 l_array_source_11 t_array_source_11;
140552
140553 --
140554 CURSOR header_cur
140555 IS
140556 SELECT /*+ leading(xet) cardinality(xet,1) */
140557 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_NO_TP
140558 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
140559 xet.entity_id
140560 , xet.legal_entity_id
140561 , xet.entity_code
140562 , xet.transaction_number
140563 , xet.event_id
140564 , xet.event_class_code
140565 , xet.event_type_code
140566 , xet.event_number
140567 , xet.event_date
140568 , xet.transaction_date
140569 , xet.reference_num_1
140570 , xet.reference_num_2
140571 , xet.reference_num_3
140572 , xet.reference_num_4
140573 , xet.reference_char_1
140574 , xet.reference_char_2
140575 , xet.reference_char_3
140576 , xet.reference_char_4
140577 , xet.reference_date_1
140578 , xet.reference_date_2
140579 , xet.reference_date_3
140580 , xet.reference_date_4
140581 , xet.event_created_by
140582 , xet.budgetary_control_flag
140583 , h1.ENTITY_CODE source_6
140584 , h1.CURRENCY_CODE source_7
140585 , h1.CURRENCY_CONVERSION_DATE source_8
140586 , h1.CURRENCY_CONVERSION_RATE source_9
140587 , h1.CURRENCY_CONVERSION_TYPE source_10
140588 , h1.TRANSACTION_DATE source_12
140589 FROM xla_events_gt xet
140590 , GMF_XLA_EXTRACT_HEADERS h1
140591 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
140592 and xet.event_type_code = C_EVENT_TYPE_CODE
140593 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
140594
140595 ORDER BY event_id
140596 ;
140597
140598
140599 --
140600 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
140601 IS
140602 SELECT /*+ leading(xet) cardinality(xet,1) */
140603 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_NO_TP
140604 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
140605 xet.entity_id
140606 ,xet.legal_entity_id
140607 ,xet.entity_code
140608 ,xet.transaction_number
140609 ,xet.event_id
140610 ,xet.event_class_code
140611 ,xet.event_type_code
140615 ,xet.reference_num_1
140612 ,xet.event_number
140613 ,xet.event_date
140614 ,xet.transaction_date
140616 ,xet.reference_num_2
140617 ,xet.reference_num_3
140618 ,xet.reference_num_4
140619 ,xet.reference_char_1
140620 ,xet.reference_char_2
140621 ,xet.reference_char_3
140622 ,xet.reference_char_4
140623 ,xet.reference_date_1
140624 ,xet.reference_date_2
140625 ,xet.reference_date_3
140626 ,xet.reference_date_4
140627 ,xet.event_created_by
140628 ,xet.budgetary_control_flag , l2.LINE_NUMBER
140629 , l2.TRANSACTION_ACCOUNT_ID source_1
140630 , l2.JOURNAL_LINE_TYPE source_2
140631 , l2.ENTERED_AMOUNT source_3
140632 , l2.LINE_ID source_5
140633 , l2.ACCOUNTED_AMOUNT source_11
140634 FROM xla_events_gt xet
140635 , GMF_XLA_EXTRACT_LINES l2
140636 WHERE xet.event_id between x_first_event_id and x_last_event_id
140637 and xet.event_date between p_pad_start_date and p_pad_end_date
140638 and xet.event_type_code = C_EVENT_TYPE_CODE
140639 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
140640 ;
140641
140642 --
140643 BEGIN
140644 IF g_log_enabled THEN
140645 l_log_module := C_DEFAULT_MODULE||'.EventType_265';
140646 END IF;
140647 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140648 trace
140649 (p_msg => 'BEGIN of EventType_265'
140650 ,p_level => C_LEVEL_PROCEDURE
140651 ,p_module => l_log_module);
140652 END IF;
140653
140654 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140655 trace
140656 (p_msg => 'p_application_id = '||p_application_id||
140657 ' - p_base_ledger_id = '||p_base_ledger_id||
140658 ' - p_target_ledger_id = '||p_target_ledger_id||
140659 ' - p_language = '||p_language||
140660 ' - p_currency_code = '||p_currency_code||
140661 ' - p_sla_ledger_id = '||p_sla_ledger_id
140662 ,p_level => C_LEVEL_STATEMENT
140663 ,p_module => l_log_module);
140664 END IF;
140665 --
140666 -- initialze arrays
140667 --
140668 g_array_event.DELETE;
140669 l_rec_array_event := l_null_rec_array_event;
140670 --
140671 --------------------------------------
140672 -- 4262811 Initialze MPA Line Number
140673 --------------------------------------
140674 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
140675
140676 --
140677
140678 --
140679 OPEN header_cur;
140680 --
140681 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140682 trace
140683 (p_msg => 'SQL - FETCH header_cur'
140684 ,p_level => C_LEVEL_STATEMENT
140685 ,p_module => l_log_module);
140686 END IF;
140687 --
140688 LOOP
140689 FETCH header_cur BULK COLLECT INTO
140690 l_array_entity_id
140691 , l_array_legal_entity_id
140692 , l_array_entity_code
140693 , l_array_transaction_num
140694 , l_array_event_id
140695 , l_array_class_code
140696 , l_array_event_type
140697 , l_array_event_number
140698 , l_array_event_date
140699 , l_array_transaction_date
140700 , l_array_reference_num_1
140701 , l_array_reference_num_2
140702 , l_array_reference_num_3
140703 , l_array_reference_num_4
140704 , l_array_reference_char_1
140705 , l_array_reference_char_2
140706 , l_array_reference_char_3
140707 , l_array_reference_char_4
140708 , l_array_reference_date_1
140709 , l_array_reference_date_2
140710 , l_array_reference_date_3
140711 , l_array_reference_date_4
140712 , l_array_event_created_by
140713 , l_array_budgetary_control_flag
140714 , l_array_source_6
140715 , l_array_source_7
140716 , l_array_source_8
140717 , l_array_source_9
140718 , l_array_source_10
140719 , l_array_source_12
140720 LIMIT l_rows;
140721 --
140722 IF (C_LEVEL_EVENT >= g_log_level) THEN
140723 trace
140724 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
140725 ,p_level => C_LEVEL_EVENT
140726 ,p_module => l_log_module);
140727 END IF;
140728 --
140729 EXIT WHEN l_array_entity_id.COUNT = 0;
140730
140731 -- initialize arrays
140732 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
140733 XLA_AE_LINES_PKG.g_rec_lines := NULL;
140734
140735 --
140736 -- Bug 4458708
140737 --
140738 XLA_AE_LINES_PKG.g_LineNumber := 0;
140739
140740
140741 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
140742 g_last_hdr_idx := l_array_event_id.LAST;
140743 --
140744 -- loop for the headers. Each iteration is for each header extract row
140745 -- fetched in header cursor
140746 --
140747 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
140748
140749 --
140750 -- set event info as cache for other routines to refer event attributes
140751 --
140752 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
140753 (p_application_id => p_application_id
140754 ,p_primary_ledger_id => p_primary_ledger_id
140755 ,p_base_ledger_id => p_base_ledger_id
140756 ,p_target_ledger_id => p_target_ledger_id
140757 ,p_entity_id => l_array_entity_id(hdr_idx)
140758 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
140759 ,p_entity_code => l_array_entity_code(hdr_idx)
140763 ,p_event_type_code => l_array_event_type(hdr_idx)
140760 ,p_transaction_num => l_array_transaction_num(hdr_idx)
140761 ,p_event_id => l_array_event_id(hdr_idx)
140762 ,p_event_class_code => l_array_class_code(hdr_idx)
140764 ,p_event_number => l_array_event_number(hdr_idx)
140765 ,p_event_date => l_array_event_date(hdr_idx)
140766 ,p_transaction_date => l_array_transaction_date(hdr_idx)
140767 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
140768 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
140769 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
140770 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
140771 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
140772 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
140773 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
140774 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
140775 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
140776 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
140777 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
140778 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
140779 ,p_event_created_by => l_array_event_created_by(hdr_idx)
140780 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
140781
140782 --
140783 -- set the status of entry to C_VALID (0)
140784 --
140785 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
140786
140787 --
140788 -- initialize a row for ae header
140789 --
140790 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
140791
140792 l_event_id := l_array_event_id(hdr_idx);
140793
140794 --
140795 -- storing the hdr_idx for event. May be used by line cursor.
140796 --
140797 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
140798
140799 --
140800 -- store sources from header extract. This can be improved to
140801 -- store only those sources from header extract that may be used in lines
140802 --
140803
140804 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
140805 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
140806 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
140807 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
140808 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
140809 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
140810
140811 --
140812 -- initilaize the status of ae headers for diffrent balance types
140813 -- the status is initialised to C_NOT_CREATED (2)
140814 --
140815 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140816 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140817 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
140818
140819 --
140820 -- call api to validate and store accounting attributes for header
140821 --
140822
140823 ------------------------------------------------------------
140824 -- Accrual Reversal : to get date for Standard Source (NONE)
140825 ------------------------------------------------------------
140826 l_acc_rev_gl_date_source := NULL;
140827
140828 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
140829 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
140830
140831
140832 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
140833
140834 XLA_AE_HEADER_PKG.SetJeCategoryName;
140835
140836 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
140837 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
140838 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
140839 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
140840 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
140841
140842
140843 -- No header level analytical criteria
140844
140845 --
140846 --accounting attribute enhancement, bug 3612931
140847 --
140848 l_trx_reversal_source := SUBSTR(NULL, 1,30);
140849
140850 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
140851 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
140852
140853 xla_accounting_err_pkg.build_message
140854 (p_appli_s_name => 'XLA'
140855 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
140856 ,p_token_1 => 'ACCT_ATTR_NAME'
140857 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
140858 ,p_token_2 => 'PRODUCT_NAME'
140859 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
140860 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
140861 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
140862 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
140863
140864 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
140865 --
140869 xla_ae_lines_pkg.SetTrxReversalAttrs
140866 -- following sets the accounting attributes needed to reverse
140867 -- accounting for a distributeion
140868 --
140870 (p_event_id => l_event_id
140871 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
140872 ,p_trx_reversal_source => l_trx_reversal_source);
140873
140874 END IF;
140875
140876
140877 ----------------------------------------------------------------
140878 -- 4262811 - update the header statuses to invalid in need be
140879 ----------------------------------------------------------------
140880 --
140881 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
140882
140883
140884 -----------------------------------------------
140885 -- No accrual reversal for the event class/type
140886 -----------------------------------------------
140887 ----------------------------------------------------------------
140888
140889 --
140890 -- this ends the header loop iteration for one bulk fetch
140891 --
140892 END LOOP;
140893
140894 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
140895 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
140896
140897 --
140898 -- insert dummy rows into lines gt table that were created due to
140899 -- transaction reversals
140900 --
140901 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
140902 l_result := XLA_AE_LINES_PKG.InsertLines;
140903 END IF;
140904
140905 --
140906 -- reset the temp_line_num for each set of events fetched from header
140907 -- cursor rather than doing it for each new event in line cursor
140908 -- Bug 3939231
140909 --
140910 xla_ae_lines_pkg.g_temp_line_num := 0;
140911
140912
140913
140914 --
140915 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
140916 --
140917 --
140918 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140919
140920 trace
140921 (p_msg => 'SQL - FETCH line_cur'
140922 ,p_level => C_LEVEL_STATEMENT
140923 ,p_module => l_log_module);
140924
140925 END IF;
140926 --
140927 --
140928 LOOP
140929 --
140930 FETCH line_cur BULK COLLECT INTO
140931 l_array_entity_id
140932 , l_array_legal_entity_id
140933 , l_array_entity_code
140934 , l_array_transaction_num
140935 , l_array_event_id
140936 , l_array_class_code
140937 , l_array_event_type
140938 , l_array_event_number
140939 , l_array_event_date
140940 , l_array_transaction_date
140941 , l_array_reference_num_1
140942 , l_array_reference_num_2
140943 , l_array_reference_num_3
140944 , l_array_reference_num_4
140945 , l_array_reference_char_1
140946 , l_array_reference_char_2
140947 , l_array_reference_char_3
140948 , l_array_reference_char_4
140949 , l_array_reference_date_1
140950 , l_array_reference_date_2
140951 , l_array_reference_date_3
140952 , l_array_reference_date_4
140953 , l_array_event_created_by
140954 , l_array_budgetary_control_flag
140955 , l_array_extract_line_num
140956 , l_array_source_1
140957 , l_array_source_2
140958 , l_array_source_3
140959 , l_array_source_5
140960 , l_array_source_11
140961 LIMIT l_rows;
140962
140963 --
140964 IF (C_LEVEL_EVENT >= g_log_level) THEN
140965 trace
140966 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
140967 ,p_level => C_LEVEL_EVENT
140968 ,p_module => l_log_module);
140969 END IF;
140970 --
140971 EXIT WHEN l_array_entity_id.count = 0;
140972
140973 XLA_AE_LINES_PKG.g_rec_lines := null;
140974
140975 --
140976 -- Bug 4458708
140977 --
140978 XLA_AE_LINES_PKG.g_LineNumber := 0;
140979 --
140980 --
140981
140982 FOR Idx IN 1..l_array_event_id.count LOOP
140983 --
140984 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
140985 --
140986 l_event_id := l_array_event_id(idx); -- 5648433
140987
140988 --
140989 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
140990 --
140991
140992 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
140993 (g_array_event(l_event_id).array_value_num('header_index'))
140994 ,'N'
140995 ) <> 'Y'
140996 THEN
140997 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
140998 trace
140999 (p_msg => 'Trancaction revesal option is not Y '
141000 ,p_level => C_LEVEL_STATEMENT
141001 ,p_module => l_log_module);
141002 END IF;
141003
141004 --
141005 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
141006 --
141007 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
141008 --
141009 -- set event info as cache for other routines to refer event attributes
141010 --
141011
141012 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
141013 l_previous_event_id := l_event_id;
141014
141015 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
141016 (p_application_id => p_application_id
141020 ,p_entity_id => l_array_entity_id(Idx)
141017 ,p_primary_ledger_id => p_primary_ledger_id
141018 ,p_base_ledger_id => p_base_ledger_id
141019 ,p_target_ledger_id => p_target_ledger_id
141021 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
141022 ,p_entity_code => l_array_entity_code(Idx)
141023 ,p_transaction_num => l_array_transaction_num(Idx)
141024 ,p_event_id => l_array_event_id(Idx)
141025 ,p_event_class_code => l_array_class_code(Idx)
141026 ,p_event_type_code => l_array_event_type(Idx)
141027 ,p_event_number => l_array_event_number(Idx)
141028 ,p_event_date => l_array_event_date(Idx)
141029 ,p_transaction_date => l_array_transaction_date(Idx)
141030 ,p_reference_num_1 => l_array_reference_num_1(Idx)
141031 ,p_reference_num_2 => l_array_reference_num_2(Idx)
141032 ,p_reference_num_3 => l_array_reference_num_3(Idx)
141033 ,p_reference_num_4 => l_array_reference_num_4(Idx)
141034 ,p_reference_char_1 => l_array_reference_char_1(Idx)
141035 ,p_reference_char_2 => l_array_reference_char_2(Idx)
141036 ,p_reference_char_3 => l_array_reference_char_3(Idx)
141037 ,p_reference_char_4 => l_array_reference_char_4(Idx)
141038 ,p_reference_date_1 => l_array_reference_date_1(Idx)
141039 ,p_reference_date_2 => l_array_reference_date_2(Idx)
141040 ,p_reference_date_3 => l_array_reference_date_3(Idx)
141041 ,p_reference_date_4 => l_array_reference_date_4(Idx)
141042 ,p_event_created_by => l_array_event_created_by(Idx)
141043 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
141044 --
141045 END IF;
141046
141047
141048
141049 --
141050 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
141051
141052 l_acct_reversal_source := SUBSTR(NULL, 1,30);
141053
141054 IF l_continue_with_lines THEN
141055 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
141056 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
141057
141058 xla_accounting_err_pkg.build_message
141059 (p_appli_s_name => 'XLA'
141060 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
141061 ,p_token_1 => 'LINE_NUMBER'
141062 ,p_value_1 => l_array_extract_line_num(Idx)
141063 ,p_token_2 => 'PRODUCT_NAME'
141064 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
141065 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
141066 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
141067 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
141068
141069 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
141070 --
141071 -- following sets the accounting attributes needed to reverse
141072 -- accounting for a distributeion
141073 --
141074
141075 --
141076 -- 5217187
141077 --
141078 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
141079 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
141080 g_array_event(l_event_id).array_value_num('header_index'));
141081 --
141082 --
141083
141084 -- No reversal code generated
141085
141086 xla_ae_lines_pkg.SetAcctReversalAttrs
141087 (p_event_id => l_event_id
141088 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
141089 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141090 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
141091 END IF;
141092
141093 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
141094 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
141095
141096 --
141097 AcctLineType_87 (
141098 p_application_id => p_application_id
141099 ,p_event_id => l_event_id
141100 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141101 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141102 ,p_actual_flag => l_actual_flag
141103 ,p_balance_type_code => l_balance_type_code
141104 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141105
141106 , p_source_1 => l_array_source_1(Idx)
141107 , p_source_2 => l_array_source_2(Idx)
141108 , p_source_3 => l_array_source_3(Idx)
141109 , p_source_5 => l_array_source_5(Idx)
141110 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141111 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141112 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141113 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141114 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141115 , p_source_11 => l_array_source_11(Idx)
141116 );
141117 If(l_balance_type_code = 'A') THEN
141118 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141119 END IF;
141120
141121 --
141122
141123
141124 --
141125 AcctLineType_128 (
141126 p_application_id => p_application_id
141127 ,p_event_id => l_event_id
141128 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141129 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141130 ,p_actual_flag => l_actual_flag
141131 ,p_balance_type_code => l_balance_type_code
141135 , p_source_2 => l_array_source_2(Idx)
141132 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141133
141134 , p_source_1 => l_array_source_1(Idx)
141136 , p_source_3 => l_array_source_3(Idx)
141137 , p_source_5 => l_array_source_5(Idx)
141138 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141139 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141140 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141141 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141142 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141143 , p_source_11 => l_array_source_11(Idx)
141144 );
141145 If(l_balance_type_code = 'A') THEN
141146 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141147 END IF;
141148
141149 --
141150
141151
141152 --
141153 AcctLineType_147 (
141154 p_application_id => p_application_id
141155 ,p_event_id => l_event_id
141156 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141157 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141158 ,p_actual_flag => l_actual_flag
141159 ,p_balance_type_code => l_balance_type_code
141160 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141161
141162 , p_source_1 => l_array_source_1(Idx)
141163 , p_source_2 => l_array_source_2(Idx)
141164 , p_source_3 => l_array_source_3(Idx)
141165 , p_source_5 => l_array_source_5(Idx)
141166 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141167 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141168 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141169 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141170 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141171 , p_source_11 => l_array_source_11(Idx)
141172 );
141173 If(l_balance_type_code = 'A') THEN
141174 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141175 END IF;
141176
141177 --
141178
141179
141180 --
141181 AcctLineType_177 (
141182 p_application_id => p_application_id
141183 ,p_event_id => l_event_id
141184 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141185 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141186 ,p_actual_flag => l_actual_flag
141187 ,p_balance_type_code => l_balance_type_code
141188 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141189
141190 , p_source_1 => l_array_source_1(Idx)
141191 , p_source_2 => l_array_source_2(Idx)
141192 , p_source_3 => l_array_source_3(Idx)
141193 , p_source_5 => l_array_source_5(Idx)
141194 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141195 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141196 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141197 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141198 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141199 , p_source_11 => l_array_source_11(Idx)
141200 );
141201 If(l_balance_type_code = 'A') THEN
141202 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141203 END IF;
141204
141205 --
141206
141207
141208 --
141209 AcctLineType_216 (
141210 p_application_id => p_application_id
141211 ,p_event_id => l_event_id
141212 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141213 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141214 ,p_actual_flag => l_actual_flag
141215 ,p_balance_type_code => l_balance_type_code
141216 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141217
141218 , p_source_1 => l_array_source_1(Idx)
141219 , p_source_2 => l_array_source_2(Idx)
141220 , p_source_3 => l_array_source_3(Idx)
141221 , p_source_5 => l_array_source_5(Idx)
141222 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141223 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141224 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141225 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141226 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141227 , p_source_11 => l_array_source_11(Idx)
141228 );
141229 If(l_balance_type_code = 'A') THEN
141230 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141231 END IF;
141232
141233 --
141234
141235
141236 --
141237 AcctLineType_222 (
141238 p_application_id => p_application_id
141239 ,p_event_id => l_event_id
141240 ,p_calculate_acctd_flag => l_calculate_acctd_flag
141241 ,p_calculate_g_l_flag => l_calculate_g_l_flag
141242 ,p_actual_flag => l_actual_flag
141243 ,p_balance_type_code => l_balance_type_code
141244 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
141245
141246 , p_source_1 => l_array_source_1(Idx)
141247 , p_source_2 => l_array_source_2(Idx)
141248 , p_source_3 => l_array_source_3(Idx)
141249 , p_source_5 => l_array_source_5(Idx)
141250 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
141251 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
141252 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
141253 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
141254 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
141255 , p_source_11 => l_array_source_11(Idx)
141256 );
141257 If(l_balance_type_code = 'A') THEN
141258 l_actual_gain_loss_ref := l_gain_or_loss_ref;
141259 END IF;
141260
141261 --
141262
141263 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
141267 (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'))
141264 -- or secondary ledger that has different currency with primary
141265 -- or alc that is calculated by sla
141266 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
141268
141269 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
141270 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
141271 AND (l_actual_flag = 'A')) THEN
141272 XLA_AE_LINES_PKG.CreateGainOrLossLines(
141273 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
141274 ,p_application_id => p_application_id
141275 ,p_amb_context_code => 'DEFAULT'
141276 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
141277 ,p_event_class_code => C_EVENT_CLASS_CODE
141278 ,p_event_type_code => C_EVENT_TYPE_CODE
141279
141280 ,p_gain_ccid => -1
141281 ,p_loss_ccid => -1
141282
141283 ,p_actual_flag => l_actual_flag
141284 ,p_enc_flag => null
141285 ,p_actual_g_l_ref => l_actual_gain_loss_ref
141286 ,p_enc_g_l_ref => null
141287 );
141288 END IF;
141289 END IF;
141290 END IF;
141291
141292 ELSE
141293 --
141294 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
141295 --
141296 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141297 trace
141298 (p_msg => 'Trancaction revesal option is Y'
141299 ,p_level => C_LEVEL_STATEMENT
141300 ,p_module => l_log_module);
141301 END IF;
141302 END IF;
141303
141304 END LOOP;
141305 l_result := XLA_AE_LINES_PKG.InsertLines ;
141306 end loop;
141307 close line_cur;
141308
141309
141310 --
141311 -- insert headers into xla_ae_headers_gt table
141312 --
141313 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
141314
141315 -- insert into errors table here.
141316
141317 END LOOP;
141318
141319 --
141320 -- 4865292
141321 --
141322 -- Compare g_hdr_extract_count with event count in
141323 -- CreateHeadersAndLines.
141324 --
141325 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
141326
141327 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141328 trace (p_msg => '# rows extracted from header extract objects '
141329 || ' (running total): '
141330 || g_hdr_extract_count
141331 ,p_level => C_LEVEL_STATEMENT
141332 ,p_module => l_log_module);
141333 END IF;
141334
141335 CLOSE header_cur;
141336 --
141337
141338 --
141339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141340 trace
141341 (p_msg => 'END of EventType_265'
141342 ,p_level => C_LEVEL_PROCEDURE
141343 ,p_module => l_log_module);
141344 END IF;
141345 --
141346 RETURN l_result;
141347 EXCEPTION
141348 WHEN xla_exceptions_pkg.application_exception THEN
141349
141350 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
141351
141352
141353 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
141354
141355 RAISE;
141356
141357 WHEN NO_DATA_FOUND THEN
141358
141359 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
141360 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
141361
141362 FOR header_record IN header_cur
141363 LOOP
141364 l_array_header_events(header_record.event_id) := header_record.event_id;
141365 END LOOP;
141366
141367 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
141368 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
141369
141370 fnd_file.put_line(fnd_file.LOG, ' ');
141371 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
141372 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
141373 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
141374
141375 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
141376 LOOP
141377 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
141378 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
141379 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
141380 END IF;
141381 END LOOP;
141382
141383 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
141384 fnd_file.put_line(fnd_file.LOG, ' ');
141385
141386
141387 xla_exceptions_pkg.raise_message
141388 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_265');
141389
141390
141391 WHEN OTHERS THEN
141392 xla_exceptions_pkg.raise_message
141393 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_265');
141394 END EventType_265;
141395 --
141396
141397 ---------------------------------------
141398 --
141399 -- PRIVATE PROCEDURE
141400 -- insert_sources_266
141401 --
141402 ----------------------------------------
141403 --
141404 PROCEDURE insert_sources_266(
141408 , p_pad_start_date IN DATE
141405 p_target_ledger_id IN NUMBER
141406 , p_language IN VARCHAR2
141407 , p_sla_ledger_id IN NUMBER
141409 , p_pad_end_date IN DATE
141410 )
141411 IS
141412
141413 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT_TP';
141414 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
141415 p_apps_owner VARCHAR2(30);
141416 l_log_module VARCHAR2(240);
141417 BEGIN
141418 IF g_log_enabled THEN
141419 l_log_module := C_DEFAULT_MODULE||'.insert_sources_266';
141420 END IF;
141421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141422
141423 trace
141424 (p_msg => 'BEGIN of insert_sources_266'
141425 ,p_level => C_LEVEL_PROCEDURE
141426 ,p_module => l_log_module);
141427
141428 END IF;
141429
141430 -- select APPS owner
141431 SELECT oracle_username
141432 INTO p_apps_owner
141433 FROM fnd_oracle_userid
141434 WHERE read_only_flag = 'U'
141435 ;
141436
141437 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141438 trace
141439 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
141440 ' - p_language = '||p_language||
141441 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
141442 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
141443 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
141444 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
141445 ,p_level => C_LEVEL_STATEMENT
141446 ,p_module => l_log_module);
141447 END IF;
141448
141449
141450 --
141451 INSERT INTO xla_diag_sources --hdr1
141452 (
141453 event_id
141454 , ledger_id
141455 , sla_ledger_id
141456 , description_language
141457 , object_name
141458 , object_type_code
141459 , line_number
141460 , source_application_id
141461 , source_type_code
141462 , source_code
141463 , source_value
141464 , source_meaning
141465 , created_by
141466 , creation_date
141467 , last_update_date
141468 , last_updated_by
141469 , last_update_login
141470 , program_update_date
141471 , program_application_id
141472 , program_id
141473 , request_id
141474 )
141475 SELECT
141476 event_id
141477 , p_target_ledger_id
141478 , p_sla_ledger_id
141479 , p_language
141480 , object_name
141481 , object_type_code
141482 , line_number
141483 , source_application_id
141484 , source_type_code
141485 , source_code
141486 , SUBSTR(source_value ,1,1996)
141487 , SUBSTR(source_meaning,1,200)
141488 , xla_environment_pkg.g_Usr_Id
141489 , TRUNC(SYSDATE)
141490 , TRUNC(SYSDATE)
141491 , xla_environment_pkg.g_Usr_Id
141492 , xla_environment_pkg.g_Login_Id
141493 , TRUNC(SYSDATE)
141494 , xla_environment_pkg.g_Prog_Appl_Id
141495 , xla_environment_pkg.g_Prog_Id
141496 , xla_environment_pkg.g_Req_Id
141497 FROM (
141498 SELECT xet.event_id event_id
141499 , 0 line_number
141500 , CASE r
141501 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
141502 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
141503 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
141504 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
141505 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
141506 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
141507
141508 ELSE null
141509 END object_name
141510 , CASE r
141511 WHEN 1 THEN 'HEADER'
141512 WHEN 2 THEN 'HEADER'
141513 WHEN 3 THEN 'HEADER'
141514 WHEN 4 THEN 'HEADER'
141515 WHEN 5 THEN 'HEADER'
141516 WHEN 6 THEN 'HEADER'
141517
141518 ELSE null
141519 END object_type_code
141520 , CASE r
141521 WHEN 1 THEN '555'
141522 WHEN 2 THEN '555'
141523 WHEN 3 THEN '555'
141524 WHEN 4 THEN '555'
141525 WHEN 5 THEN '555'
141526 WHEN 6 THEN '555'
141527
141528 ELSE null
141529 END source_application_id
141530 , 'S' source_type_code
141531 , CASE r
141532 WHEN 1 THEN 'ENTITY_CODE'
141533 WHEN 2 THEN 'CURRENCY_CODE'
141534 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
141535 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
141536 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
141537 WHEN 6 THEN 'TRANSACTION_DATE'
141538
141539 ELSE null
141540 END source_code
141541 , CASE r
141542 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
141546 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
141543 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
141544 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
141545 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
141547 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
141548
141549 ELSE null
141550 END source_value
141551 , CASE r
141552 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
141553 1010186
141554 ,TO_CHAR(h1.CURRENCY_CODE)
141555 ,'CURRENCY_CODE'
141556 ,'S'
141557 ,555)
141558
141559 ELSE null
141560 END source_meaning
141561 FROM xla_events_gt xet
141562 , GMF_XLA_EXTRACT_HEADERS h1
141563 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
141564 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
141565 AND xet.event_type_code = C_EVENT_TYPE_CODE
141566 AND h1.event_id = xet.event_id
141567
141568 )
141569 ;
141570 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141571
141572 trace
141573 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
141574 ,p_level => C_LEVEL_STATEMENT
141575 ,p_module => l_log_module);
141576
141577 END IF;
141578 --
141579
141580
141581
141582 --
141583 INSERT INTO xla_diag_sources --line1
141584 (
141585 event_id
141586 , ledger_id
141587 , sla_ledger_id
141588 , description_language
141589 , object_name
141590 , object_type_code
141591 , line_number
141592 , source_application_id
141593 , source_type_code
141594 , source_code
141595 , source_value
141596 , source_meaning
141597 , created_by
141598 , creation_date
141599 , last_update_date
141600 , last_updated_by
141601 , last_update_login
141602 , program_update_date
141603 , program_application_id
141604 , program_id
141605 , request_id
141606 )
141607 SELECT event_id
141608 , p_target_ledger_id
141609 , p_sla_ledger_id
141610 , p_language
141611 , object_name
141612 , object_type_code
141613 , line_number
141614 , source_application_id
141615 , source_type_code
141616 , source_code
141617 , SUBSTR(source_value,1,1996)
141618 , SUBSTR(source_meaning,1,200)
141619 , xla_environment_pkg.g_Usr_Id
141620 , TRUNC(SYSDATE)
141621 , TRUNC(SYSDATE)
141622 , xla_environment_pkg.g_Usr_Id
141623 , xla_environment_pkg.g_Login_Id
141624 , TRUNC(SYSDATE)
141625 , xla_environment_pkg.g_Prog_Appl_Id
141626 , xla_environment_pkg.g_Prog_Id
141627 , xla_environment_pkg.g_Req_Id
141628 FROM (
141629 SELECT xet.event_id event_id
141630 , l2.line_number line_number
141631 , CASE r
141632 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
141633 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
141634 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
141635 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
141636 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
141637
141638 ELSE null
141639 END object_name
141640 , CASE r
141641 WHEN 1 THEN 'LINE'
141642 WHEN 2 THEN 'LINE'
141643 WHEN 3 THEN 'LINE'
141644 WHEN 4 THEN 'LINE'
141645 WHEN 5 THEN 'LINE'
141646
141647 ELSE null
141648 END object_type_code
141649 , CASE r
141650 WHEN 1 THEN '555'
141651 WHEN 2 THEN '555'
141652 WHEN 3 THEN '555'
141653 WHEN 4 THEN '555'
141654 WHEN 5 THEN '555'
141655
141656 ELSE null
141657 END source_application_id
141658 , 'S' source_type_code
141659 , CASE r
141660 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
141661 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
141662 WHEN 3 THEN 'ENTERED_AMOUNT'
141663 WHEN 4 THEN 'LINE_ID'
141664 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
141665
141666 ELSE null
141667 END source_code
141668 , CASE r
141669 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
141670 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
141671 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
141672 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
141673 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
141674
141675 ELSE null
141676 END source_value
141677 , null source_meaning
141678 FROM xla_events_gt xet
141679 , GMF_XLA_EXTRACT_LINES l2
141683 AND l2.event_id = xet.event_id
141680 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
141681 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
141682 AND xet.event_type_code = C_EVENT_TYPE_CODE
141684
141685 )
141686 ;
141687 --
141688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141689
141690 trace
141691 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
141692 ,p_level => C_LEVEL_STATEMENT
141693 ,p_module => l_log_module);
141694
141695 END IF;
141696
141697
141698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141699 trace
141700 (p_msg => 'END of insert_sources_266'
141701 ,p_level => C_LEVEL_PROCEDURE
141702 ,p_module => l_log_module);
141703 END IF;
141704 EXCEPTION
141705 WHEN xla_exceptions_pkg.application_exception THEN
141706 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
141707 trace
141708 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
141709 ,p_level => C_LEVEL_EXCEPTION
141710 ,p_module => l_log_module);
141711 END IF;
141712 RAISE;
141713 WHEN OTHERS THEN
141714 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
141715 trace
141716 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
141717 ,p_level => C_LEVEL_EXCEPTION
141718 ,p_module => l_log_module);
141719 END IF;
141720 xla_exceptions_pkg.raise_message
141721 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_266');
141722 END insert_sources_266;
141723 --
141724
141725 ---------------------------------------
141726 --
141727 -- PRIVATE FUNCTION
141728 -- EventType_266
141729 --
141730 ----------------------------------------
141731 --
141732 FUNCTION EventType_266
141733 (p_application_id IN NUMBER
141734 ,p_base_ledger_id IN NUMBER
141735 ,p_target_ledger_id IN NUMBER
141736 ,p_language IN VARCHAR2
141737 ,p_currency_code IN VARCHAR2
141738 ,p_sla_ledger_id IN NUMBER
141739 ,p_pad_start_date IN DATE
141740 ,p_pad_end_date IN DATE
141741 ,p_primary_ledger_id IN NUMBER)
141742 RETURN BOOLEAN IS
141743 --
141744 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT_TP';
141745 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
141746
141747 l_calculate_acctd_flag VARCHAR2(1) :='N';
141748 l_calculate_g_l_flag VARCHAR2(1) :='N';
141749 --
141750 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141751 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141752 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141753 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141754 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141755 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141756 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141757 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141758 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141759 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141760 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141761 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141762 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141763 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
141764 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141765 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141766 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141767 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
141768 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141769 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141770 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141771 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
141772 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
141773 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
141774 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
141775 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
141776
141777 l_event_id NUMBER;
141778 l_previous_event_id NUMBER;
141779 l_first_event_id NUMBER;
141780 l_last_event_id NUMBER;
141781
141782 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
141783 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
141784 --
141785 --
141786 l_result BOOLEAN := TRUE;
141787 l_rows NUMBER := 1000;
141788 l_event_type_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt, Transfer Pricing';
141789 l_event_class_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
141790 l_description VARCHAR2(4000);
141791 l_transaction_reversal NUMBER;
141795 --
141792 l_ae_header_id NUMBER;
141793 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
141794 l_log_module VARCHAR2(240);
141796 l_acct_reversal_source VARCHAR2(30);
141797 l_trx_reversal_source VARCHAR2(30);
141798
141799 l_continue_with_lines BOOLEAN := TRUE;
141800 --
141801 l_acc_rev_gl_date_source DATE; -- 4262811
141802 --
141803 type t_array_event_id is table of number index by binary_integer;
141804
141805 l_rec_array_event t_rec_array_event;
141806 l_null_rec_array_event t_rec_array_event;
141807 l_array_ae_header_id xla_number_array_type;
141808 l_actual_flag VARCHAR2(1) := NULL;
141809 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
141810 l_balance_type_code VARCHAR2(1) :=NULL;
141811 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
141812
141813 --
141814 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
141815 --
141816
141817 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
141818 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
141819 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
141820 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
141821 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
141822 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
141823
141824 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
141825 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
141826 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
141827 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
141828 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
141829
141830 l_array_source_6 t_array_source_6;
141831 l_array_source_7 t_array_source_7;
141832 l_array_source_8 t_array_source_8;
141833 l_array_source_9 t_array_source_9;
141834 l_array_source_10 t_array_source_10;
141835 l_array_source_12 t_array_source_12;
141836
141837 l_array_source_1 t_array_source_1;
141838 l_array_source_2 t_array_source_2;
141839 l_array_source_3 t_array_source_3;
141840 l_array_source_5 t_array_source_5;
141841 l_array_source_11 t_array_source_11;
141842
141843 --
141844 CURSOR header_cur
141845 IS
141846 SELECT /*+ leading(xet) cardinality(xet,1) */
141847 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_TP
141848 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
141849 xet.entity_id
141850 , xet.legal_entity_id
141851 , xet.entity_code
141852 , xet.transaction_number
141853 , xet.event_id
141854 , xet.event_class_code
141855 , xet.event_type_code
141856 , xet.event_number
141857 , xet.event_date
141858 , xet.transaction_date
141859 , xet.reference_num_1
141860 , xet.reference_num_2
141861 , xet.reference_num_3
141862 , xet.reference_num_4
141863 , xet.reference_char_1
141864 , xet.reference_char_2
141865 , xet.reference_char_3
141866 , xet.reference_char_4
141867 , xet.reference_date_1
141868 , xet.reference_date_2
141869 , xet.reference_date_3
141870 , xet.reference_date_4
141871 , xet.event_created_by
141872 , xet.budgetary_control_flag
141873 , h1.ENTITY_CODE source_6
141874 , h1.CURRENCY_CODE source_7
141875 , h1.CURRENCY_CONVERSION_DATE source_8
141876 , h1.CURRENCY_CONVERSION_RATE source_9
141877 , h1.CURRENCY_CONVERSION_TYPE source_10
141878 , h1.TRANSACTION_DATE source_12
141879 FROM xla_events_gt xet
141880 , GMF_XLA_EXTRACT_HEADERS h1
141881 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
141882 and xet.event_type_code = C_EVENT_TYPE_CODE
141883 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
141884
141885 ORDER BY event_id
141886 ;
141887
141888
141889 --
141890 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
141891 IS
141892 SELECT /*+ leading(xet) cardinality(xet,1) */
141893 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_TP
141894 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
141895 xet.entity_id
141896 ,xet.legal_entity_id
141897 ,xet.entity_code
141898 ,xet.transaction_number
141899 ,xet.event_id
141900 ,xet.event_class_code
141901 ,xet.event_type_code
141902 ,xet.event_number
141903 ,xet.event_date
141904 ,xet.transaction_date
141905 ,xet.reference_num_1
141906 ,xet.reference_num_2
141907 ,xet.reference_num_3
141908 ,xet.reference_num_4
141909 ,xet.reference_char_1
141910 ,xet.reference_char_2
141911 ,xet.reference_char_3
141912 ,xet.reference_char_4
141913 ,xet.reference_date_1
141914 ,xet.reference_date_2
141915 ,xet.reference_date_3
141916 ,xet.reference_date_4
141917 ,xet.event_created_by
141918 ,xet.budgetary_control_flag , l2.LINE_NUMBER
141919 , l2.TRANSACTION_ACCOUNT_ID source_1
141920 , l2.JOURNAL_LINE_TYPE source_2
141921 , l2.ENTERED_AMOUNT source_3
141925 , GMF_XLA_EXTRACT_LINES l2
141922 , l2.LINE_ID source_5
141923 , l2.ACCOUNTED_AMOUNT source_11
141924 FROM xla_events_gt xet
141926 WHERE xet.event_id between x_first_event_id and x_last_event_id
141927 and xet.event_date between p_pad_start_date and p_pad_end_date
141928 and xet.event_type_code = C_EVENT_TYPE_CODE
141929 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
141930 ;
141931
141932 --
141933 BEGIN
141934 IF g_log_enabled THEN
141935 l_log_module := C_DEFAULT_MODULE||'.EventType_266';
141936 END IF;
141937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141938 trace
141939 (p_msg => 'BEGIN of EventType_266'
141940 ,p_level => C_LEVEL_PROCEDURE
141941 ,p_module => l_log_module);
141942 END IF;
141943
141944 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141945 trace
141946 (p_msg => 'p_application_id = '||p_application_id||
141947 ' - p_base_ledger_id = '||p_base_ledger_id||
141948 ' - p_target_ledger_id = '||p_target_ledger_id||
141949 ' - p_language = '||p_language||
141950 ' - p_currency_code = '||p_currency_code||
141951 ' - p_sla_ledger_id = '||p_sla_ledger_id
141952 ,p_level => C_LEVEL_STATEMENT
141953 ,p_module => l_log_module);
141954 END IF;
141955 --
141956 -- initialze arrays
141957 --
141958 g_array_event.DELETE;
141959 l_rec_array_event := l_null_rec_array_event;
141960 --
141961 --------------------------------------
141962 -- 4262811 Initialze MPA Line Number
141963 --------------------------------------
141964 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
141965
141966 --
141967
141968 --
141969 OPEN header_cur;
141970 --
141971 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
141972 trace
141973 (p_msg => 'SQL - FETCH header_cur'
141974 ,p_level => C_LEVEL_STATEMENT
141975 ,p_module => l_log_module);
141976 END IF;
141977 --
141978 LOOP
141979 FETCH header_cur BULK COLLECT INTO
141980 l_array_entity_id
141981 , l_array_legal_entity_id
141982 , l_array_entity_code
141983 , l_array_transaction_num
141984 , l_array_event_id
141985 , l_array_class_code
141986 , l_array_event_type
141987 , l_array_event_number
141988 , l_array_event_date
141989 , l_array_transaction_date
141990 , l_array_reference_num_1
141991 , l_array_reference_num_2
141992 , l_array_reference_num_3
141993 , l_array_reference_num_4
141994 , l_array_reference_char_1
141995 , l_array_reference_char_2
141996 , l_array_reference_char_3
141997 , l_array_reference_char_4
141998 , l_array_reference_date_1
141999 , l_array_reference_date_2
142000 , l_array_reference_date_3
142001 , l_array_reference_date_4
142002 , l_array_event_created_by
142003 , l_array_budgetary_control_flag
142004 , l_array_source_6
142005 , l_array_source_7
142006 , l_array_source_8
142007 , l_array_source_9
142008 , l_array_source_10
142009 , l_array_source_12
142010 LIMIT l_rows;
142011 --
142012 IF (C_LEVEL_EVENT >= g_log_level) THEN
142013 trace
142014 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
142015 ,p_level => C_LEVEL_EVENT
142016 ,p_module => l_log_module);
142017 END IF;
142018 --
142019 EXIT WHEN l_array_entity_id.COUNT = 0;
142020
142021 -- initialize arrays
142022 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
142023 XLA_AE_LINES_PKG.g_rec_lines := NULL;
142024
142025 --
142026 -- Bug 4458708
142027 --
142028 XLA_AE_LINES_PKG.g_LineNumber := 0;
142029
142030
142031 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
142032 g_last_hdr_idx := l_array_event_id.LAST;
142033 --
142034 -- loop for the headers. Each iteration is for each header extract row
142035 -- fetched in header cursor
142036 --
142037 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
142038
142039 --
142040 -- set event info as cache for other routines to refer event attributes
142041 --
142042 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
142043 (p_application_id => p_application_id
142044 ,p_primary_ledger_id => p_primary_ledger_id
142045 ,p_base_ledger_id => p_base_ledger_id
142046 ,p_target_ledger_id => p_target_ledger_id
142047 ,p_entity_id => l_array_entity_id(hdr_idx)
142048 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
142049 ,p_entity_code => l_array_entity_code(hdr_idx)
142050 ,p_transaction_num => l_array_transaction_num(hdr_idx)
142051 ,p_event_id => l_array_event_id(hdr_idx)
142052 ,p_event_class_code => l_array_class_code(hdr_idx)
142053 ,p_event_type_code => l_array_event_type(hdr_idx)
142054 ,p_event_number => l_array_event_number(hdr_idx)
142055 ,p_event_date => l_array_event_date(hdr_idx)
142056 ,p_transaction_date => l_array_transaction_date(hdr_idx)
142057 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
142058 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
142059 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
142063 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
142060 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
142061 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
142062 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
142064 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
142065 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
142066 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
142067 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
142068 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
142069 ,p_event_created_by => l_array_event_created_by(hdr_idx)
142070 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
142071
142072 --
142073 -- set the status of entry to C_VALID (0)
142074 --
142075 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
142076
142077 --
142078 -- initialize a row for ae header
142079 --
142080 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
142081
142082 l_event_id := l_array_event_id(hdr_idx);
142083
142084 --
142085 -- storing the hdr_idx for event. May be used by line cursor.
142086 --
142087 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
142088
142089 --
142090 -- store sources from header extract. This can be improved to
142091 -- store only those sources from header extract that may be used in lines
142092 --
142093
142094 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
142095 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
142096 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
142097 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
142098 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
142099 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
142100
142101 --
142102 -- initilaize the status of ae headers for diffrent balance types
142103 -- the status is initialised to C_NOT_CREATED (2)
142104 --
142105 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142106 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142107 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
142108
142109 --
142110 -- call api to validate and store accounting attributes for header
142111 --
142112
142113 ------------------------------------------------------------
142114 -- Accrual Reversal : to get date for Standard Source (NONE)
142115 ------------------------------------------------------------
142116 l_acc_rev_gl_date_source := NULL;
142117
142118 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
142119 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
142120
142121
142122 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
142123
142124 XLA_AE_HEADER_PKG.SetJeCategoryName;
142125
142126 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
142127 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
142128 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
142129 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
142130 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
142131
142132
142133 -- No header level analytical criteria
142134
142135 --
142136 --accounting attribute enhancement, bug 3612931
142137 --
142138 l_trx_reversal_source := SUBSTR(NULL, 1,30);
142139
142140 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
142141 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
142142
142143 xla_accounting_err_pkg.build_message
142144 (p_appli_s_name => 'XLA'
142145 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
142146 ,p_token_1 => 'ACCT_ATTR_NAME'
142147 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
142148 ,p_token_2 => 'PRODUCT_NAME'
142149 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
142150 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
142151 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
142152 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
142153
142154 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
142155 --
142156 -- following sets the accounting attributes needed to reverse
142157 -- accounting for a distributeion
142158 --
142159 xla_ae_lines_pkg.SetTrxReversalAttrs
142160 (p_event_id => l_event_id
142161 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
142162 ,p_trx_reversal_source => l_trx_reversal_source);
142163
142164 END IF;
142165
142166
142167 ----------------------------------------------------------------
142168 -- 4262811 - update the header statuses to invalid in need be
142169 ----------------------------------------------------------------
142173
142170 --
142171 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
142172
142174 -----------------------------------------------
142175 -- No accrual reversal for the event class/type
142176 -----------------------------------------------
142177 ----------------------------------------------------------------
142178
142179 --
142180 -- this ends the header loop iteration for one bulk fetch
142181 --
142182 END LOOP;
142183
142184 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
142185 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
142186
142187 --
142188 -- insert dummy rows into lines gt table that were created due to
142189 -- transaction reversals
142190 --
142191 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
142192 l_result := XLA_AE_LINES_PKG.InsertLines;
142193 END IF;
142194
142195 --
142196 -- reset the temp_line_num for each set of events fetched from header
142197 -- cursor rather than doing it for each new event in line cursor
142198 -- Bug 3939231
142199 --
142200 xla_ae_lines_pkg.g_temp_line_num := 0;
142201
142202
142203
142204 --
142205 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
142206 --
142207 --
142208 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142209
142210 trace
142211 (p_msg => 'SQL - FETCH line_cur'
142212 ,p_level => C_LEVEL_STATEMENT
142213 ,p_module => l_log_module);
142214
142215 END IF;
142216 --
142217 --
142218 LOOP
142219 --
142220 FETCH line_cur BULK COLLECT INTO
142221 l_array_entity_id
142222 , l_array_legal_entity_id
142223 , l_array_entity_code
142224 , l_array_transaction_num
142225 , l_array_event_id
142226 , l_array_class_code
142227 , l_array_event_type
142228 , l_array_event_number
142229 , l_array_event_date
142230 , l_array_transaction_date
142231 , l_array_reference_num_1
142232 , l_array_reference_num_2
142233 , l_array_reference_num_3
142234 , l_array_reference_num_4
142235 , l_array_reference_char_1
142236 , l_array_reference_char_2
142237 , l_array_reference_char_3
142238 , l_array_reference_char_4
142239 , l_array_reference_date_1
142240 , l_array_reference_date_2
142241 , l_array_reference_date_3
142242 , l_array_reference_date_4
142243 , l_array_event_created_by
142244 , l_array_budgetary_control_flag
142245 , l_array_extract_line_num
142246 , l_array_source_1
142247 , l_array_source_2
142248 , l_array_source_3
142249 , l_array_source_5
142250 , l_array_source_11
142251 LIMIT l_rows;
142252
142253 --
142254 IF (C_LEVEL_EVENT >= g_log_level) THEN
142255 trace
142256 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
142257 ,p_level => C_LEVEL_EVENT
142258 ,p_module => l_log_module);
142259 END IF;
142260 --
142261 EXIT WHEN l_array_entity_id.count = 0;
142262
142263 XLA_AE_LINES_PKG.g_rec_lines := null;
142264
142265 --
142266 -- Bug 4458708
142267 --
142268 XLA_AE_LINES_PKG.g_LineNumber := 0;
142269 --
142270 --
142271
142272 FOR Idx IN 1..l_array_event_id.count LOOP
142273 --
142274 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
142275 --
142276 l_event_id := l_array_event_id(idx); -- 5648433
142277
142278 --
142279 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
142280 --
142281
142282 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
142283 (g_array_event(l_event_id).array_value_num('header_index'))
142284 ,'N'
142285 ) <> 'Y'
142286 THEN
142287 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142288 trace
142289 (p_msg => 'Trancaction revesal option is not Y '
142290 ,p_level => C_LEVEL_STATEMENT
142291 ,p_module => l_log_module);
142292 END IF;
142293
142294 --
142295 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
142296 --
142297 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
142298 --
142299 -- set event info as cache for other routines to refer event attributes
142300 --
142301
142302 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
142303 l_previous_event_id := l_event_id;
142304
142305 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
142306 (p_application_id => p_application_id
142307 ,p_primary_ledger_id => p_primary_ledger_id
142308 ,p_base_ledger_id => p_base_ledger_id
142309 ,p_target_ledger_id => p_target_ledger_id
142310 ,p_entity_id => l_array_entity_id(Idx)
142311 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
142312 ,p_entity_code => l_array_entity_code(Idx)
142313 ,p_transaction_num => l_array_transaction_num(Idx)
142314 ,p_event_id => l_array_event_id(Idx)
142315 ,p_event_class_code => l_array_class_code(Idx)
142316 ,p_event_type_code => l_array_event_type(Idx)
142317 ,p_event_number => l_array_event_number(Idx)
142318 ,p_event_date => l_array_event_date(Idx)
142322 ,p_reference_num_3 => l_array_reference_num_3(Idx)
142319 ,p_transaction_date => l_array_transaction_date(Idx)
142320 ,p_reference_num_1 => l_array_reference_num_1(Idx)
142321 ,p_reference_num_2 => l_array_reference_num_2(Idx)
142323 ,p_reference_num_4 => l_array_reference_num_4(Idx)
142324 ,p_reference_char_1 => l_array_reference_char_1(Idx)
142325 ,p_reference_char_2 => l_array_reference_char_2(Idx)
142326 ,p_reference_char_3 => l_array_reference_char_3(Idx)
142327 ,p_reference_char_4 => l_array_reference_char_4(Idx)
142328 ,p_reference_date_1 => l_array_reference_date_1(Idx)
142329 ,p_reference_date_2 => l_array_reference_date_2(Idx)
142330 ,p_reference_date_3 => l_array_reference_date_3(Idx)
142331 ,p_reference_date_4 => l_array_reference_date_4(Idx)
142332 ,p_event_created_by => l_array_event_created_by(Idx)
142333 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
142334 --
142335 END IF;
142336
142337
142338
142339 --
142340 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
142341
142342 l_acct_reversal_source := SUBSTR(NULL, 1,30);
142343
142344 IF l_continue_with_lines THEN
142345 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
142346 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
142347
142348 xla_accounting_err_pkg.build_message
142349 (p_appli_s_name => 'XLA'
142350 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
142351 ,p_token_1 => 'LINE_NUMBER'
142352 ,p_value_1 => l_array_extract_line_num(Idx)
142353 ,p_token_2 => 'PRODUCT_NAME'
142354 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
142355 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
142356 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
142357 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
142358
142359 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
142360 --
142361 -- following sets the accounting attributes needed to reverse
142362 -- accounting for a distributeion
142363 --
142364
142365 --
142366 -- 5217187
142367 --
142368 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
142369 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
142370 g_array_event(l_event_id).array_value_num('header_index'));
142371 --
142372 --
142373
142374 -- No reversal code generated
142375
142376 xla_ae_lines_pkg.SetAcctReversalAttrs
142377 (p_event_id => l_event_id
142378 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
142379 ,p_calculate_acctd_flag => l_calculate_acctd_flag
142380 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
142381 END IF;
142382
142383 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
142384 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
142385
142386 --
142387 AcctLineType_88 (
142388 p_application_id => p_application_id
142389 ,p_event_id => l_event_id
142390 ,p_calculate_acctd_flag => l_calculate_acctd_flag
142391 ,p_calculate_g_l_flag => l_calculate_g_l_flag
142392 ,p_actual_flag => l_actual_flag
142393 ,p_balance_type_code => l_balance_type_code
142394 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142395
142396 , p_source_1 => l_array_source_1(Idx)
142397 , p_source_2 => l_array_source_2(Idx)
142398 , p_source_3 => l_array_source_3(Idx)
142399 , p_source_5 => l_array_source_5(Idx)
142400 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142401 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142402 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142403 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142404 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142405 , p_source_11 => l_array_source_11(Idx)
142406 );
142407 If(l_balance_type_code = 'A') THEN
142408 l_actual_gain_loss_ref := l_gain_or_loss_ref;
142409 END IF;
142410
142411 --
142412
142413
142414 --
142415 AcctLineType_127 (
142416 p_application_id => p_application_id
142417 ,p_event_id => l_event_id
142418 ,p_calculate_acctd_flag => l_calculate_acctd_flag
142419 ,p_calculate_g_l_flag => l_calculate_g_l_flag
142420 ,p_actual_flag => l_actual_flag
142421 ,p_balance_type_code => l_balance_type_code
142422 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142423
142424 , p_source_1 => l_array_source_1(Idx)
142425 , p_source_2 => l_array_source_2(Idx)
142426 , p_source_3 => l_array_source_3(Idx)
142427 , p_source_5 => l_array_source_5(Idx)
142428 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142429 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142430 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142431 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142432 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142433 , p_source_11 => l_array_source_11(Idx)
142434 );
142435 If(l_balance_type_code = 'A') THEN
142436 l_actual_gain_loss_ref := l_gain_or_loss_ref;
142440
142437 END IF;
142438
142439 --
142441
142442 --
142443 AcctLineType_143 (
142444 p_application_id => p_application_id
142445 ,p_event_id => l_event_id
142446 ,p_calculate_acctd_flag => l_calculate_acctd_flag
142447 ,p_calculate_g_l_flag => l_calculate_g_l_flag
142448 ,p_actual_flag => l_actual_flag
142449 ,p_balance_type_code => l_balance_type_code
142450 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142451
142452 , p_source_1 => l_array_source_1(Idx)
142453 , p_source_2 => l_array_source_2(Idx)
142454 , p_source_3 => l_array_source_3(Idx)
142455 , p_source_5 => l_array_source_5(Idx)
142456 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142457 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142458 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142459 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142460 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142461 , p_source_11 => l_array_source_11(Idx)
142462 );
142463 If(l_balance_type_code = 'A') THEN
142464 l_actual_gain_loss_ref := l_gain_or_loss_ref;
142465 END IF;
142466
142467 --
142468
142469
142470 --
142471 AcctLineType_176 (
142472 p_application_id => p_application_id
142473 ,p_event_id => l_event_id
142474 ,p_calculate_acctd_flag => l_calculate_acctd_flag
142475 ,p_calculate_g_l_flag => l_calculate_g_l_flag
142476 ,p_actual_flag => l_actual_flag
142477 ,p_balance_type_code => l_balance_type_code
142478 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142479
142480 , p_source_1 => l_array_source_1(Idx)
142481 , p_source_2 => l_array_source_2(Idx)
142482 , p_source_3 => l_array_source_3(Idx)
142483 , p_source_5 => l_array_source_5(Idx)
142484 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142485 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142486 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142487 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142488 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142489 , p_source_11 => l_array_source_11(Idx)
142490 );
142491 If(l_balance_type_code = 'A') THEN
142492 l_actual_gain_loss_ref := l_gain_or_loss_ref;
142493 END IF;
142494
142495 --
142496
142497
142498 --
142499 AcctLineType_220 (
142500 p_application_id => p_application_id
142501 ,p_event_id => l_event_id
142502 ,p_calculate_acctd_flag => l_calculate_acctd_flag
142503 ,p_calculate_g_l_flag => l_calculate_g_l_flag
142504 ,p_actual_flag => l_actual_flag
142505 ,p_balance_type_code => l_balance_type_code
142506 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
142507
142508 , p_source_1 => l_array_source_1(Idx)
142509 , p_source_2 => l_array_source_2(Idx)
142510 , p_source_3 => l_array_source_3(Idx)
142511 , p_source_5 => l_array_source_5(Idx)
142512 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
142513 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
142514 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
142515 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
142516 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
142517 , p_source_11 => l_array_source_11(Idx)
142518 );
142519 If(l_balance_type_code = 'A') THEN
142520 l_actual_gain_loss_ref := l_gain_or_loss_ref;
142521 END IF;
142522
142523 --
142524
142525 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
142526 -- or secondary ledger that has different currency with primary
142527 -- or alc that is calculated by sla
142528 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
142529 (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'))
142530
142531 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
142532 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
142533 AND (l_actual_flag = 'A')) THEN
142534 XLA_AE_LINES_PKG.CreateGainOrLossLines(
142535 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
142536 ,p_application_id => p_application_id
142537 ,p_amb_context_code => 'DEFAULT'
142538 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
142539 ,p_event_class_code => C_EVENT_CLASS_CODE
142540 ,p_event_type_code => C_EVENT_TYPE_CODE
142541
142542 ,p_gain_ccid => -1
142543 ,p_loss_ccid => -1
142544
142545 ,p_actual_flag => l_actual_flag
142546 ,p_enc_flag => null
142547 ,p_actual_g_l_ref => l_actual_gain_loss_ref
142548 ,p_enc_g_l_ref => null
142549 );
142550 END IF;
142551 END IF;
142552 END IF;
142553
142554 ELSE
142555 --
142556 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
142557 --
142558 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142559 trace
142560 (p_msg => 'Trancaction revesal option is Y'
142561 ,p_level => C_LEVEL_STATEMENT
142562 ,p_module => l_log_module);
142563 END IF;
142564 END IF;
142565
142566 END LOOP;
142570
142567 l_result := XLA_AE_LINES_PKG.InsertLines ;
142568 end loop;
142569 close line_cur;
142571
142572 --
142573 -- insert headers into xla_ae_headers_gt table
142574 --
142575 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
142576
142577 -- insert into errors table here.
142578
142579 END LOOP;
142580
142581 --
142582 -- 4865292
142583 --
142584 -- Compare g_hdr_extract_count with event count in
142585 -- CreateHeadersAndLines.
142586 --
142587 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
142588
142589 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142590 trace (p_msg => '# rows extracted from header extract objects '
142591 || ' (running total): '
142592 || g_hdr_extract_count
142593 ,p_level => C_LEVEL_STATEMENT
142594 ,p_module => l_log_module);
142595 END IF;
142596
142597 CLOSE header_cur;
142598 --
142599
142600 --
142601 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142602 trace
142603 (p_msg => 'END of EventType_266'
142604 ,p_level => C_LEVEL_PROCEDURE
142605 ,p_module => l_log_module);
142606 END IF;
142607 --
142608 RETURN l_result;
142609 EXCEPTION
142610 WHEN xla_exceptions_pkg.application_exception THEN
142611
142612 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
142613
142614
142615 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
142616
142617 RAISE;
142618
142619 WHEN NO_DATA_FOUND THEN
142620
142621 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
142622 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
142623
142624 FOR header_record IN header_cur
142625 LOOP
142626 l_array_header_events(header_record.event_id) := header_record.event_id;
142627 END LOOP;
142628
142629 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
142630 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
142631
142632 fnd_file.put_line(fnd_file.LOG, ' ');
142633 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
142634 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
142635 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
142636
142637 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
142638 LOOP
142639 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
142640 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
142641 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
142642 END IF;
142643 END LOOP;
142644
142645 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
142646 fnd_file.put_line(fnd_file.LOG, ' ');
142647
142648
142649 xla_exceptions_pkg.raise_message
142650 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_266');
142651
142652
142653 WHEN OTHERS THEN
142654 xla_exceptions_pkg.raise_message
142655 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_266');
142656 END EventType_266;
142657 --
142658
142659 ---------------------------------------
142660 --
142661 -- PRIVATE PROCEDURE
142662 -- insert_sources_267
142663 --
142664 ----------------------------------------
142665 --
142666 PROCEDURE insert_sources_267(
142667 p_target_ledger_id IN NUMBER
142668 , p_language IN VARCHAR2
142669 , p_sla_ledger_id IN NUMBER
142670 , p_pad_start_date IN DATE
142671 , p_pad_end_date IN DATE
142672 )
142673 IS
142674
142675 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT_NO_TP';
142676 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
142677 p_apps_owner VARCHAR2(30);
142678 l_log_module VARCHAR2(240);
142679 BEGIN
142680 IF g_log_enabled THEN
142681 l_log_module := C_DEFAULT_MODULE||'.insert_sources_267';
142682 END IF;
142683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142684
142685 trace
142686 (p_msg => 'BEGIN of insert_sources_267'
142687 ,p_level => C_LEVEL_PROCEDURE
142688 ,p_module => l_log_module);
142689
142690 END IF;
142691
142692 -- select APPS owner
142693 SELECT oracle_username
142694 INTO p_apps_owner
142695 FROM fnd_oracle_userid
142696 WHERE read_only_flag = 'U'
142697 ;
142698
142699 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142700 trace
142701 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
142702 ' - p_language = '||p_language||
142703 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
142704 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
142705 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
142706 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
142707 ,p_level => C_LEVEL_STATEMENT
142708 ,p_module => l_log_module);
142709 END IF;
142710
142711
142712 --
142716 , ledger_id
142713 INSERT INTO xla_diag_sources --hdr1
142714 (
142715 event_id
142717 , sla_ledger_id
142718 , description_language
142719 , object_name
142720 , object_type_code
142721 , line_number
142722 , source_application_id
142723 , source_type_code
142724 , source_code
142725 , source_value
142726 , source_meaning
142727 , created_by
142728 , creation_date
142729 , last_update_date
142730 , last_updated_by
142731 , last_update_login
142732 , program_update_date
142733 , program_application_id
142734 , program_id
142735 , request_id
142736 )
142737 SELECT
142738 event_id
142739 , p_target_ledger_id
142740 , p_sla_ledger_id
142741 , p_language
142742 , object_name
142743 , object_type_code
142744 , line_number
142745 , source_application_id
142746 , source_type_code
142747 , source_code
142748 , SUBSTR(source_value ,1,1996)
142749 , SUBSTR(source_meaning,1,200)
142750 , xla_environment_pkg.g_Usr_Id
142751 , TRUNC(SYSDATE)
142752 , TRUNC(SYSDATE)
142753 , xla_environment_pkg.g_Usr_Id
142754 , xla_environment_pkg.g_Login_Id
142755 , TRUNC(SYSDATE)
142756 , xla_environment_pkg.g_Prog_Appl_Id
142757 , xla_environment_pkg.g_Prog_Id
142758 , xla_environment_pkg.g_Req_Id
142759 FROM (
142760 SELECT xet.event_id event_id
142761 , 0 line_number
142762 , CASE r
142763 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
142764 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
142765 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
142766 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
142767 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
142768 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
142769
142770 ELSE null
142771 END object_name
142772 , CASE r
142773 WHEN 1 THEN 'HEADER'
142774 WHEN 2 THEN 'HEADER'
142775 WHEN 3 THEN 'HEADER'
142776 WHEN 4 THEN 'HEADER'
142777 WHEN 5 THEN 'HEADER'
142778 WHEN 6 THEN 'HEADER'
142779
142780 ELSE null
142781 END object_type_code
142782 , CASE r
142783 WHEN 1 THEN '555'
142784 WHEN 2 THEN '555'
142785 WHEN 3 THEN '555'
142786 WHEN 4 THEN '555'
142787 WHEN 5 THEN '555'
142788 WHEN 6 THEN '555'
142789
142790 ELSE null
142791 END source_application_id
142792 , 'S' source_type_code
142793 , CASE r
142794 WHEN 1 THEN 'ENTITY_CODE'
142795 WHEN 2 THEN 'CURRENCY_CODE'
142796 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
142797 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
142798 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
142799 WHEN 6 THEN 'TRANSACTION_DATE'
142800
142801 ELSE null
142802 END source_code
142803 , CASE r
142804 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
142805 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
142806 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
142807 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
142808 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
142809 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
142810
142811 ELSE null
142812 END source_value
142813 , CASE r
142814 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
142815 1010186
142816 ,TO_CHAR(h1.CURRENCY_CODE)
142817 ,'CURRENCY_CODE'
142818 ,'S'
142819 ,555)
142820
142821 ELSE null
142822 END source_meaning
142823 FROM xla_events_gt xet
142824 , GMF_XLA_EXTRACT_HEADERS h1
142825 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
142826 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
142827 AND xet.event_type_code = C_EVENT_TYPE_CODE
142828 AND h1.event_id = xet.event_id
142829
142830 )
142831 ;
142832 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142833
142834 trace
142835 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
142836 ,p_level => C_LEVEL_STATEMENT
142837 ,p_module => l_log_module);
142838
142839 END IF;
142840 --
142841
142842
142843
142844 --
142845 INSERT INTO xla_diag_sources --line1
142846 (
142847 event_id
142848 , ledger_id
142849 , sla_ledger_id
142850 , description_language
142851 , object_name
142852 , object_type_code
142853 , line_number
142854 , source_application_id
142855 , source_type_code
142859 , created_by
142856 , source_code
142857 , source_value
142858 , source_meaning
142860 , creation_date
142861 , last_update_date
142862 , last_updated_by
142863 , last_update_login
142864 , program_update_date
142865 , program_application_id
142866 , program_id
142867 , request_id
142868 )
142869 SELECT event_id
142870 , p_target_ledger_id
142871 , p_sla_ledger_id
142872 , p_language
142873 , object_name
142874 , object_type_code
142875 , line_number
142876 , source_application_id
142877 , source_type_code
142878 , source_code
142879 , SUBSTR(source_value,1,1996)
142880 , SUBSTR(source_meaning,1,200)
142881 , xla_environment_pkg.g_Usr_Id
142882 , TRUNC(SYSDATE)
142883 , TRUNC(SYSDATE)
142884 , xla_environment_pkg.g_Usr_Id
142885 , xla_environment_pkg.g_Login_Id
142886 , TRUNC(SYSDATE)
142887 , xla_environment_pkg.g_Prog_Appl_Id
142888 , xla_environment_pkg.g_Prog_Id
142889 , xla_environment_pkg.g_Req_Id
142890 FROM (
142891 SELECT xet.event_id event_id
142892 , l2.line_number line_number
142893 , CASE r
142894 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
142895 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
142896 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
142897 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
142898 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
142899
142900 ELSE null
142901 END object_name
142902 , CASE r
142903 WHEN 1 THEN 'LINE'
142904 WHEN 2 THEN 'LINE'
142905 WHEN 3 THEN 'LINE'
142906 WHEN 4 THEN 'LINE'
142907 WHEN 5 THEN 'LINE'
142908
142909 ELSE null
142910 END object_type_code
142911 , CASE r
142912 WHEN 1 THEN '555'
142913 WHEN 2 THEN '555'
142914 WHEN 3 THEN '555'
142915 WHEN 4 THEN '555'
142916 WHEN 5 THEN '555'
142917
142918 ELSE null
142919 END source_application_id
142920 , 'S' source_type_code
142921 , CASE r
142922 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
142923 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
142924 WHEN 3 THEN 'ENTERED_AMOUNT'
142925 WHEN 4 THEN 'LINE_ID'
142926 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
142927
142928 ELSE null
142929 END source_code
142930 , CASE r
142931 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
142932 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
142933 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
142934 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
142935 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
142936
142937 ELSE null
142938 END source_value
142939 , null source_meaning
142940 FROM xla_events_gt xet
142941 , GMF_XLA_EXTRACT_LINES l2
142942 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
142943 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
142944 AND xet.event_type_code = C_EVENT_TYPE_CODE
142945 AND l2.event_id = xet.event_id
142946
142947 )
142948 ;
142949 --
142950 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
142951
142952 trace
142953 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
142954 ,p_level => C_LEVEL_STATEMENT
142955 ,p_module => l_log_module);
142956
142957 END IF;
142958
142959
142960 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142961 trace
142962 (p_msg => 'END of insert_sources_267'
142963 ,p_level => C_LEVEL_PROCEDURE
142964 ,p_module => l_log_module);
142965 END IF;
142966 EXCEPTION
142967 WHEN xla_exceptions_pkg.application_exception THEN
142968 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
142969 trace
142970 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
142971 ,p_level => C_LEVEL_EXCEPTION
142972 ,p_module => l_log_module);
142973 END IF;
142974 RAISE;
142975 WHEN OTHERS THEN
142976 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
142977 trace
142978 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
142979 ,p_level => C_LEVEL_EXCEPTION
142980 ,p_module => l_log_module);
142981 END IF;
142982 xla_exceptions_pkg.raise_message
142983 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_267');
142984 END insert_sources_267;
142985 --
142986
142987 ---------------------------------------
142988 --
142989 -- PRIVATE FUNCTION
142990 -- EventType_267
142991 --
142992 ----------------------------------------
142993 --
142994 FUNCTION EventType_267
142995 (p_application_id IN NUMBER
142996 ,p_base_ledger_id IN NUMBER
143000 ,p_sla_ledger_id IN NUMBER
142997 ,p_target_ledger_id IN NUMBER
142998 ,p_language IN VARCHAR2
142999 ,p_currency_code IN VARCHAR2
143001 ,p_pad_start_date IN DATE
143002 ,p_pad_end_date IN DATE
143003 ,p_primary_ledger_id IN NUMBER)
143004 RETURN BOOLEAN IS
143005 --
143006 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT_NO_TP';
143007 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
143008
143009 l_calculate_acctd_flag VARCHAR2(1) :='N';
143010 l_calculate_g_l_flag VARCHAR2(1) :='N';
143011 --
143012 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143013 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143014 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143015 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143016 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143017 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143018 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143019 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143020 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143021 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143022 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143023 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143024 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143025 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143026 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143027 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143028 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143029 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143030 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143031 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143032 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143033 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143034 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
143035 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143036 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
143037 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
143038
143039 l_event_id NUMBER;
143040 l_previous_event_id NUMBER;
143041 l_first_event_id NUMBER;
143042 l_last_event_id NUMBER;
143043
143044 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
143045 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
143046 --
143047 --
143048 l_result BOOLEAN := TRUE;
143049 l_rows NUMBER := 1000;
143050 l_event_type_name VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt, no transfer Pricing';
143051 l_event_class_name VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
143052 l_description VARCHAR2(4000);
143053 l_transaction_reversal NUMBER;
143054 l_ae_header_id NUMBER;
143055 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
143056 l_log_module VARCHAR2(240);
143057 --
143058 l_acct_reversal_source VARCHAR2(30);
143059 l_trx_reversal_source VARCHAR2(30);
143060
143061 l_continue_with_lines BOOLEAN := TRUE;
143062 --
143063 l_acc_rev_gl_date_source DATE; -- 4262811
143064 --
143065 type t_array_event_id is table of number index by binary_integer;
143066
143067 l_rec_array_event t_rec_array_event;
143068 l_null_rec_array_event t_rec_array_event;
143069 l_array_ae_header_id xla_number_array_type;
143070 l_actual_flag VARCHAR2(1) := NULL;
143071 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
143072 l_balance_type_code VARCHAR2(1) :=NULL;
143073 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
143074
143075 --
143076 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
143077 --
143078
143079 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
143080 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
143081 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
143082 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
143083 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143084 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
143085
143086 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
143087 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
143088 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143092 l_array_source_6 t_array_source_6;
143089 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
143090 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143091
143093 l_array_source_7 t_array_source_7;
143094 l_array_source_8 t_array_source_8;
143095 l_array_source_9 t_array_source_9;
143096 l_array_source_10 t_array_source_10;
143097 l_array_source_12 t_array_source_12;
143098
143099 l_array_source_1 t_array_source_1;
143100 l_array_source_2 t_array_source_2;
143101 l_array_source_3 t_array_source_3;
143102 l_array_source_5 t_array_source_5;
143103 l_array_source_11 t_array_source_11;
143104
143105 --
143106 CURSOR header_cur
143107 IS
143108 SELECT /*+ leading(xet) cardinality(xet,1) */
143109 -- Event Type Code: FOB_RCPT_SENDER_RCPT_NO_TP
143110 -- Event Class Code: FOB_RCPT_SENDER_RCPT
143111 xet.entity_id
143112 , xet.legal_entity_id
143113 , xet.entity_code
143114 , xet.transaction_number
143115 , xet.event_id
143116 , xet.event_class_code
143117 , xet.event_type_code
143118 , xet.event_number
143119 , xet.event_date
143120 , xet.transaction_date
143121 , xet.reference_num_1
143122 , xet.reference_num_2
143123 , xet.reference_num_3
143124 , xet.reference_num_4
143125 , xet.reference_char_1
143126 , xet.reference_char_2
143127 , xet.reference_char_3
143128 , xet.reference_char_4
143129 , xet.reference_date_1
143130 , xet.reference_date_2
143131 , xet.reference_date_3
143132 , xet.reference_date_4
143133 , xet.event_created_by
143134 , xet.budgetary_control_flag
143135 , h1.ENTITY_CODE source_6
143136 , h1.CURRENCY_CODE source_7
143137 , h1.CURRENCY_CONVERSION_DATE source_8
143138 , h1.CURRENCY_CONVERSION_RATE source_9
143139 , h1.CURRENCY_CONVERSION_TYPE source_10
143140 , h1.TRANSACTION_DATE source_12
143141 FROM xla_events_gt xet
143142 , GMF_XLA_EXTRACT_HEADERS h1
143143 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
143144 and xet.event_type_code = C_EVENT_TYPE_CODE
143145 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
143146
143147 ORDER BY event_id
143148 ;
143149
143150
143151 --
143152 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
143153 IS
143154 SELECT /*+ leading(xet) cardinality(xet,1) */
143155 -- Event Type Code: FOB_RCPT_SENDER_RCPT_NO_TP
143156 -- Event Class Code: FOB_RCPT_SENDER_RCPT
143157 xet.entity_id
143158 ,xet.legal_entity_id
143159 ,xet.entity_code
143160 ,xet.transaction_number
143161 ,xet.event_id
143162 ,xet.event_class_code
143163 ,xet.event_type_code
143164 ,xet.event_number
143165 ,xet.event_date
143166 ,xet.transaction_date
143167 ,xet.reference_num_1
143168 ,xet.reference_num_2
143169 ,xet.reference_num_3
143170 ,xet.reference_num_4
143171 ,xet.reference_char_1
143172 ,xet.reference_char_2
143173 ,xet.reference_char_3
143174 ,xet.reference_char_4
143175 ,xet.reference_date_1
143176 ,xet.reference_date_2
143177 ,xet.reference_date_3
143178 ,xet.reference_date_4
143179 ,xet.event_created_by
143180 ,xet.budgetary_control_flag , l2.LINE_NUMBER
143181 , l2.TRANSACTION_ACCOUNT_ID source_1
143182 , l2.JOURNAL_LINE_TYPE source_2
143183 , l2.ENTERED_AMOUNT source_3
143184 , l2.LINE_ID source_5
143185 , l2.ACCOUNTED_AMOUNT source_11
143186 FROM xla_events_gt xet
143187 , GMF_XLA_EXTRACT_LINES l2
143188 WHERE xet.event_id between x_first_event_id and x_last_event_id
143189 and xet.event_date between p_pad_start_date and p_pad_end_date
143190 and xet.event_type_code = C_EVENT_TYPE_CODE
143191 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
143192 ;
143193
143194 --
143195 BEGIN
143196 IF g_log_enabled THEN
143197 l_log_module := C_DEFAULT_MODULE||'.EventType_267';
143198 END IF;
143199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143200 trace
143201 (p_msg => 'BEGIN of EventType_267'
143202 ,p_level => C_LEVEL_PROCEDURE
143203 ,p_module => l_log_module);
143204 END IF;
143205
143206 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143207 trace
143208 (p_msg => 'p_application_id = '||p_application_id||
143209 ' - p_base_ledger_id = '||p_base_ledger_id||
143210 ' - p_target_ledger_id = '||p_target_ledger_id||
143211 ' - p_language = '||p_language||
143212 ' - p_currency_code = '||p_currency_code||
143213 ' - p_sla_ledger_id = '||p_sla_ledger_id
143214 ,p_level => C_LEVEL_STATEMENT
143215 ,p_module => l_log_module);
143216 END IF;
143217 --
143218 -- initialze arrays
143219 --
143220 g_array_event.DELETE;
143221 l_rec_array_event := l_null_rec_array_event;
143222 --
143223 --------------------------------------
143224 -- 4262811 Initialze MPA Line Number
143225 --------------------------------------
143226 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
143227
143228 --
143229
143230 --
143231 OPEN header_cur;
143232 --
143233 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143234 trace
143235 (p_msg => 'SQL - FETCH header_cur'
143239 --
143236 ,p_level => C_LEVEL_STATEMENT
143237 ,p_module => l_log_module);
143238 END IF;
143240 LOOP
143241 FETCH header_cur BULK COLLECT INTO
143242 l_array_entity_id
143243 , l_array_legal_entity_id
143244 , l_array_entity_code
143245 , l_array_transaction_num
143246 , l_array_event_id
143247 , l_array_class_code
143248 , l_array_event_type
143249 , l_array_event_number
143250 , l_array_event_date
143251 , l_array_transaction_date
143252 , l_array_reference_num_1
143253 , l_array_reference_num_2
143254 , l_array_reference_num_3
143255 , l_array_reference_num_4
143256 , l_array_reference_char_1
143257 , l_array_reference_char_2
143258 , l_array_reference_char_3
143259 , l_array_reference_char_4
143260 , l_array_reference_date_1
143261 , l_array_reference_date_2
143262 , l_array_reference_date_3
143263 , l_array_reference_date_4
143264 , l_array_event_created_by
143265 , l_array_budgetary_control_flag
143266 , l_array_source_6
143267 , l_array_source_7
143268 , l_array_source_8
143269 , l_array_source_9
143270 , l_array_source_10
143271 , l_array_source_12
143272 LIMIT l_rows;
143273 --
143274 IF (C_LEVEL_EVENT >= g_log_level) THEN
143275 trace
143276 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
143277 ,p_level => C_LEVEL_EVENT
143278 ,p_module => l_log_module);
143279 END IF;
143280 --
143281 EXIT WHEN l_array_entity_id.COUNT = 0;
143282
143283 -- initialize arrays
143284 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
143285 XLA_AE_LINES_PKG.g_rec_lines := NULL;
143286
143287 --
143288 -- Bug 4458708
143289 --
143290 XLA_AE_LINES_PKG.g_LineNumber := 0;
143291
143292
143293 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
143294 g_last_hdr_idx := l_array_event_id.LAST;
143295 --
143296 -- loop for the headers. Each iteration is for each header extract row
143297 -- fetched in header cursor
143298 --
143299 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
143300
143301 --
143302 -- set event info as cache for other routines to refer event attributes
143303 --
143304 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
143305 (p_application_id => p_application_id
143306 ,p_primary_ledger_id => p_primary_ledger_id
143307 ,p_base_ledger_id => p_base_ledger_id
143308 ,p_target_ledger_id => p_target_ledger_id
143309 ,p_entity_id => l_array_entity_id(hdr_idx)
143310 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
143311 ,p_entity_code => l_array_entity_code(hdr_idx)
143312 ,p_transaction_num => l_array_transaction_num(hdr_idx)
143313 ,p_event_id => l_array_event_id(hdr_idx)
143314 ,p_event_class_code => l_array_class_code(hdr_idx)
143315 ,p_event_type_code => l_array_event_type(hdr_idx)
143316 ,p_event_number => l_array_event_number(hdr_idx)
143317 ,p_event_date => l_array_event_date(hdr_idx)
143318 ,p_transaction_date => l_array_transaction_date(hdr_idx)
143319 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
143320 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
143321 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
143322 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
143323 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
143324 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
143325 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
143326 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
143327 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
143328 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
143329 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
143330 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
143331 ,p_event_created_by => l_array_event_created_by(hdr_idx)
143332 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
143333
143334 --
143335 -- set the status of entry to C_VALID (0)
143336 --
143337 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
143338
143339 --
143340 -- initialize a row for ae header
143341 --
143342 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
143343
143344 l_event_id := l_array_event_id(hdr_idx);
143345
143346 --
143347 -- storing the hdr_idx for event. May be used by line cursor.
143348 --
143349 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
143350
143351 --
143352 -- store sources from header extract. This can be improved to
143353 -- store only those sources from header extract that may be used in lines
143354 --
143355
143356 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
143357 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
143358 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
143359 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
143360 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
143364 -- initilaize the status of ae headers for diffrent balance types
143361 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
143362
143363 --
143365 -- the status is initialised to C_NOT_CREATED (2)
143366 --
143367 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143368 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143369 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143370
143371 --
143372 -- call api to validate and store accounting attributes for header
143373 --
143374
143375 ------------------------------------------------------------
143376 -- Accrual Reversal : to get date for Standard Source (NONE)
143377 ------------------------------------------------------------
143378 l_acc_rev_gl_date_source := NULL;
143379
143380 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
143381 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
143382
143383
143384 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
143385
143386 XLA_AE_HEADER_PKG.SetJeCategoryName;
143387
143388 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
143389 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
143390 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
143391 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
143392 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
143393
143394
143395 -- No header level analytical criteria
143396
143397 --
143398 --accounting attribute enhancement, bug 3612931
143399 --
143400 l_trx_reversal_source := SUBSTR(NULL, 1,30);
143401
143402 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
143403 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
143404
143405 xla_accounting_err_pkg.build_message
143406 (p_appli_s_name => 'XLA'
143407 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
143408 ,p_token_1 => 'ACCT_ATTR_NAME'
143409 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
143410 ,p_token_2 => 'PRODUCT_NAME'
143411 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
143412 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
143413 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
143414 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
143415
143416 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
143417 --
143418 -- following sets the accounting attributes needed to reverse
143419 -- accounting for a distributeion
143420 --
143421 xla_ae_lines_pkg.SetTrxReversalAttrs
143422 (p_event_id => l_event_id
143423 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
143424 ,p_trx_reversal_source => l_trx_reversal_source);
143425
143426 END IF;
143427
143428
143429 ----------------------------------------------------------------
143430 -- 4262811 - update the header statuses to invalid in need be
143431 ----------------------------------------------------------------
143432 --
143433 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
143434
143435
143436 -----------------------------------------------
143437 -- No accrual reversal for the event class/type
143438 -----------------------------------------------
143439 ----------------------------------------------------------------
143440
143441 --
143442 -- this ends the header loop iteration for one bulk fetch
143443 --
143444 END LOOP;
143445
143446 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
143447 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
143448
143449 --
143450 -- insert dummy rows into lines gt table that were created due to
143451 -- transaction reversals
143452 --
143453 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
143454 l_result := XLA_AE_LINES_PKG.InsertLines;
143455 END IF;
143456
143457 --
143458 -- reset the temp_line_num for each set of events fetched from header
143459 -- cursor rather than doing it for each new event in line cursor
143460 -- Bug 3939231
143461 --
143462 xla_ae_lines_pkg.g_temp_line_num := 0;
143463
143464
143465
143466 --
143467 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
143468 --
143469 --
143470 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143471
143472 trace
143473 (p_msg => 'SQL - FETCH line_cur'
143474 ,p_level => C_LEVEL_STATEMENT
143475 ,p_module => l_log_module);
143476
143477 END IF;
143478 --
143479 --
143480 LOOP
143481 --
143482 FETCH line_cur BULK COLLECT INTO
143483 l_array_entity_id
143484 , l_array_legal_entity_id
143485 , l_array_entity_code
143486 , l_array_transaction_num
143487 , l_array_event_id
143488 , l_array_class_code
143489 , l_array_event_type
143490 , l_array_event_number
143491 , l_array_event_date
143492 , l_array_transaction_date
143493 , l_array_reference_num_1
143497 , l_array_reference_char_1
143494 , l_array_reference_num_2
143495 , l_array_reference_num_3
143496 , l_array_reference_num_4
143498 , l_array_reference_char_2
143499 , l_array_reference_char_3
143500 , l_array_reference_char_4
143501 , l_array_reference_date_1
143502 , l_array_reference_date_2
143503 , l_array_reference_date_3
143504 , l_array_reference_date_4
143505 , l_array_event_created_by
143506 , l_array_budgetary_control_flag
143507 , l_array_extract_line_num
143508 , l_array_source_1
143509 , l_array_source_2
143510 , l_array_source_3
143511 , l_array_source_5
143512 , l_array_source_11
143513 LIMIT l_rows;
143514
143515 --
143516 IF (C_LEVEL_EVENT >= g_log_level) THEN
143517 trace
143518 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
143519 ,p_level => C_LEVEL_EVENT
143520 ,p_module => l_log_module);
143521 END IF;
143522 --
143523 EXIT WHEN l_array_entity_id.count = 0;
143524
143525 XLA_AE_LINES_PKG.g_rec_lines := null;
143526
143527 --
143528 -- Bug 4458708
143529 --
143530 XLA_AE_LINES_PKG.g_LineNumber := 0;
143531 --
143532 --
143533
143534 FOR Idx IN 1..l_array_event_id.count LOOP
143535 --
143536 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
143537 --
143538 l_event_id := l_array_event_id(idx); -- 5648433
143539
143540 --
143541 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
143542 --
143543
143544 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
143545 (g_array_event(l_event_id).array_value_num('header_index'))
143546 ,'N'
143547 ) <> 'Y'
143548 THEN
143549 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143550 trace
143551 (p_msg => 'Trancaction revesal option is not Y '
143552 ,p_level => C_LEVEL_STATEMENT
143553 ,p_module => l_log_module);
143554 END IF;
143555
143556 --
143557 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
143558 --
143559 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
143560 --
143561 -- set event info as cache for other routines to refer event attributes
143562 --
143563
143564 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
143565 l_previous_event_id := l_event_id;
143566
143567 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
143568 (p_application_id => p_application_id
143569 ,p_primary_ledger_id => p_primary_ledger_id
143570 ,p_base_ledger_id => p_base_ledger_id
143571 ,p_target_ledger_id => p_target_ledger_id
143572 ,p_entity_id => l_array_entity_id(Idx)
143573 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
143574 ,p_entity_code => l_array_entity_code(Idx)
143575 ,p_transaction_num => l_array_transaction_num(Idx)
143576 ,p_event_id => l_array_event_id(Idx)
143577 ,p_event_class_code => l_array_class_code(Idx)
143578 ,p_event_type_code => l_array_event_type(Idx)
143579 ,p_event_number => l_array_event_number(Idx)
143580 ,p_event_date => l_array_event_date(Idx)
143581 ,p_transaction_date => l_array_transaction_date(Idx)
143582 ,p_reference_num_1 => l_array_reference_num_1(Idx)
143583 ,p_reference_num_2 => l_array_reference_num_2(Idx)
143584 ,p_reference_num_3 => l_array_reference_num_3(Idx)
143585 ,p_reference_num_4 => l_array_reference_num_4(Idx)
143586 ,p_reference_char_1 => l_array_reference_char_1(Idx)
143587 ,p_reference_char_2 => l_array_reference_char_2(Idx)
143588 ,p_reference_char_3 => l_array_reference_char_3(Idx)
143589 ,p_reference_char_4 => l_array_reference_char_4(Idx)
143590 ,p_reference_date_1 => l_array_reference_date_1(Idx)
143591 ,p_reference_date_2 => l_array_reference_date_2(Idx)
143592 ,p_reference_date_3 => l_array_reference_date_3(Idx)
143593 ,p_reference_date_4 => l_array_reference_date_4(Idx)
143594 ,p_event_created_by => l_array_event_created_by(Idx)
143595 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
143596 --
143597 END IF;
143598
143599
143600
143601 --
143602 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
143603
143604 l_acct_reversal_source := SUBSTR(NULL, 1,30);
143605
143606 IF l_continue_with_lines THEN
143607 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
143608 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
143609
143610 xla_accounting_err_pkg.build_message
143611 (p_appli_s_name => 'XLA'
143612 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
143613 ,p_token_1 => 'LINE_NUMBER'
143614 ,p_value_1 => l_array_extract_line_num(Idx)
143615 ,p_token_2 => 'PRODUCT_NAME'
143616 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
143617 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
143621 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
143618 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
143619 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
143620
143622 --
143623 -- following sets the accounting attributes needed to reverse
143624 -- accounting for a distributeion
143625 --
143626
143627 --
143628 -- 5217187
143629 --
143630 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
143631 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
143632 g_array_event(l_event_id).array_value_num('header_index'));
143633 --
143634 --
143635
143636 -- No reversal code generated
143637
143638 xla_ae_lines_pkg.SetAcctReversalAttrs
143639 (p_event_id => l_event_id
143640 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
143641 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143642 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
143643 END IF;
143644
143645 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
143646 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
143647
143648 --
143649 AcctLineType_75 (
143650 p_application_id => p_application_id
143651 ,p_event_id => l_event_id
143652 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143653 ,p_calculate_g_l_flag => l_calculate_g_l_flag
143654 ,p_actual_flag => l_actual_flag
143655 ,p_balance_type_code => l_balance_type_code
143656 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143657
143658 , p_source_1 => l_array_source_1(Idx)
143659 , p_source_2 => l_array_source_2(Idx)
143660 , p_source_3 => l_array_source_3(Idx)
143661 , p_source_5 => l_array_source_5(Idx)
143662 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143663 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143664 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143665 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143666 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143667 , p_source_11 => l_array_source_11(Idx)
143668 );
143669 If(l_balance_type_code = 'A') THEN
143670 l_actual_gain_loss_ref := l_gain_or_loss_ref;
143671 END IF;
143672
143673 --
143674
143675
143676 --
143677 AcctLineType_113 (
143678 p_application_id => p_application_id
143679 ,p_event_id => l_event_id
143680 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143681 ,p_calculate_g_l_flag => l_calculate_g_l_flag
143682 ,p_actual_flag => l_actual_flag
143683 ,p_balance_type_code => l_balance_type_code
143684 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143685
143686 , p_source_1 => l_array_source_1(Idx)
143687 , p_source_2 => l_array_source_2(Idx)
143688 , p_source_3 => l_array_source_3(Idx)
143689 , p_source_5 => l_array_source_5(Idx)
143690 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143691 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143692 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143693 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143694 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143695 , p_source_11 => l_array_source_11(Idx)
143696 );
143697 If(l_balance_type_code = 'A') THEN
143698 l_actual_gain_loss_ref := l_gain_or_loss_ref;
143699 END IF;
143700
143701 --
143702
143703
143704 --
143705 AcctLineType_189 (
143706 p_application_id => p_application_id
143707 ,p_event_id => l_event_id
143708 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143709 ,p_calculate_g_l_flag => l_calculate_g_l_flag
143710 ,p_actual_flag => l_actual_flag
143711 ,p_balance_type_code => l_balance_type_code
143712 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143713
143714 , p_source_1 => l_array_source_1(Idx)
143715 , p_source_2 => l_array_source_2(Idx)
143716 , p_source_3 => l_array_source_3(Idx)
143717 , p_source_5 => l_array_source_5(Idx)
143718 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143719 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143720 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143721 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143722 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143723 , p_source_11 => l_array_source_11(Idx)
143724 );
143725 If(l_balance_type_code = 'A') THEN
143726 l_actual_gain_loss_ref := l_gain_or_loss_ref;
143727 END IF;
143728
143729 --
143730
143731
143732 --
143733 AcctLineType_212 (
143734 p_application_id => p_application_id
143735 ,p_event_id => l_event_id
143736 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143737 ,p_calculate_g_l_flag => l_calculate_g_l_flag
143738 ,p_actual_flag => l_actual_flag
143739 ,p_balance_type_code => l_balance_type_code
143740 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143741
143742 , p_source_1 => l_array_source_1(Idx)
143743 , p_source_2 => l_array_source_2(Idx)
143744 , p_source_3 => l_array_source_3(Idx)
143745 , p_source_5 => l_array_source_5(Idx)
143746 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143747 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143751 , p_source_11 => l_array_source_11(Idx)
143748 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143749 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143750 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143752 );
143753 If(l_balance_type_code = 'A') THEN
143754 l_actual_gain_loss_ref := l_gain_or_loss_ref;
143755 END IF;
143756
143757 --
143758
143759
143760 --
143761 AcctLineType_243 (
143762 p_application_id => p_application_id
143763 ,p_event_id => l_event_id
143764 ,p_calculate_acctd_flag => l_calculate_acctd_flag
143765 ,p_calculate_g_l_flag => l_calculate_g_l_flag
143766 ,p_actual_flag => l_actual_flag
143767 ,p_balance_type_code => l_balance_type_code
143768 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
143769
143770 , p_source_1 => l_array_source_1(Idx)
143771 , p_source_2 => l_array_source_2(Idx)
143772 , p_source_3 => l_array_source_3(Idx)
143773 , p_source_5 => l_array_source_5(Idx)
143774 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
143775 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
143776 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
143777 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
143778 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
143779 , p_source_11 => l_array_source_11(Idx)
143780 );
143781 If(l_balance_type_code = 'A') THEN
143782 l_actual_gain_loss_ref := l_gain_or_loss_ref;
143783 END IF;
143784
143785 --
143786
143787 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
143788 -- or secondary ledger that has different currency with primary
143789 -- or alc that is calculated by sla
143790 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
143791 (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'))
143792
143793 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
143794 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
143795 AND (l_actual_flag = 'A')) THEN
143796 XLA_AE_LINES_PKG.CreateGainOrLossLines(
143797 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
143798 ,p_application_id => p_application_id
143799 ,p_amb_context_code => 'DEFAULT'
143800 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
143801 ,p_event_class_code => C_EVENT_CLASS_CODE
143802 ,p_event_type_code => C_EVENT_TYPE_CODE
143803
143804 ,p_gain_ccid => -1
143805 ,p_loss_ccid => -1
143806
143807 ,p_actual_flag => l_actual_flag
143808 ,p_enc_flag => null
143809 ,p_actual_g_l_ref => l_actual_gain_loss_ref
143810 ,p_enc_g_l_ref => null
143811 );
143812 END IF;
143813 END IF;
143814 END IF;
143815
143816 ELSE
143817 --
143818 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
143819 --
143820 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143821 trace
143822 (p_msg => 'Trancaction revesal option is Y'
143823 ,p_level => C_LEVEL_STATEMENT
143824 ,p_module => l_log_module);
143825 END IF;
143826 END IF;
143827
143828 END LOOP;
143829 l_result := XLA_AE_LINES_PKG.InsertLines ;
143830 end loop;
143831 close line_cur;
143832
143833
143834 --
143835 -- insert headers into xla_ae_headers_gt table
143836 --
143837 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
143838
143839 -- insert into errors table here.
143840
143841 END LOOP;
143842
143843 --
143844 -- 4865292
143845 --
143846 -- Compare g_hdr_extract_count with event count in
143847 -- CreateHeadersAndLines.
143848 --
143849 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
143850
143851 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143852 trace (p_msg => '# rows extracted from header extract objects '
143853 || ' (running total): '
143854 || g_hdr_extract_count
143855 ,p_level => C_LEVEL_STATEMENT
143856 ,p_module => l_log_module);
143857 END IF;
143858
143859 CLOSE header_cur;
143860 --
143861
143862 --
143863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143864 trace
143865 (p_msg => 'END of EventType_267'
143866 ,p_level => C_LEVEL_PROCEDURE
143867 ,p_module => l_log_module);
143868 END IF;
143869 --
143870 RETURN l_result;
143871 EXCEPTION
143872 WHEN xla_exceptions_pkg.application_exception THEN
143873
143874 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
143875
143876
143877 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
143878
143879 RAISE;
143880
143881 WHEN NO_DATA_FOUND THEN
143882
143883 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
143884 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
143885
143886 FOR header_record IN header_cur
143887 LOOP
143888 l_array_header_events(header_record.event_id) := header_record.event_id;
143889 END LOOP;
143890
143894 fnd_file.put_line(fnd_file.LOG, ' ');
143891 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
143892 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
143893
143895 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
143896 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
143897 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
143898
143899 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
143900 LOOP
143901 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
143902 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
143903 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
143904 END IF;
143905 END LOOP;
143906
143907 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
143908 fnd_file.put_line(fnd_file.LOG, ' ');
143909
143910
143911 xla_exceptions_pkg.raise_message
143912 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_267');
143913
143914
143915 WHEN OTHERS THEN
143916 xla_exceptions_pkg.raise_message
143917 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_267');
143918 END EventType_267;
143919 --
143920
143921 ---------------------------------------
143922 --
143923 -- PRIVATE PROCEDURE
143924 -- insert_sources_268
143925 --
143926 ----------------------------------------
143927 --
143928 PROCEDURE insert_sources_268(
143929 p_target_ledger_id IN NUMBER
143930 , p_language IN VARCHAR2
143931 , p_sla_ledger_id IN NUMBER
143932 , p_pad_start_date IN DATE
143933 , p_pad_end_date IN DATE
143934 )
143935 IS
143936
143937 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT_TP';
143938 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
143939 p_apps_owner VARCHAR2(30);
143940 l_log_module VARCHAR2(240);
143941 BEGIN
143942 IF g_log_enabled THEN
143943 l_log_module := C_DEFAULT_MODULE||'.insert_sources_268';
143944 END IF;
143945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143946
143947 trace
143948 (p_msg => 'BEGIN of insert_sources_268'
143949 ,p_level => C_LEVEL_PROCEDURE
143950 ,p_module => l_log_module);
143951
143952 END IF;
143953
143954 -- select APPS owner
143955 SELECT oracle_username
143956 INTO p_apps_owner
143957 FROM fnd_oracle_userid
143958 WHERE read_only_flag = 'U'
143959 ;
143960
143961 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143962 trace
143963 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
143964 ' - p_language = '||p_language||
143965 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
143966 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
143967 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
143968 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
143969 ,p_level => C_LEVEL_STATEMENT
143970 ,p_module => l_log_module);
143971 END IF;
143972
143973
143974 --
143975 INSERT INTO xla_diag_sources --hdr1
143976 (
143977 event_id
143978 , ledger_id
143979 , sla_ledger_id
143980 , description_language
143981 , object_name
143982 , object_type_code
143983 , line_number
143984 , source_application_id
143985 , source_type_code
143986 , source_code
143987 , source_value
143988 , source_meaning
143989 , created_by
143990 , creation_date
143991 , last_update_date
143992 , last_updated_by
143993 , last_update_login
143994 , program_update_date
143995 , program_application_id
143996 , program_id
143997 , request_id
143998 )
143999 SELECT
144000 event_id
144001 , p_target_ledger_id
144002 , p_sla_ledger_id
144003 , p_language
144004 , object_name
144005 , object_type_code
144006 , line_number
144007 , source_application_id
144008 , source_type_code
144009 , source_code
144010 , SUBSTR(source_value ,1,1996)
144011 , SUBSTR(source_meaning,1,200)
144012 , xla_environment_pkg.g_Usr_Id
144013 , TRUNC(SYSDATE)
144014 , TRUNC(SYSDATE)
144015 , xla_environment_pkg.g_Usr_Id
144016 , xla_environment_pkg.g_Login_Id
144017 , TRUNC(SYSDATE)
144018 , xla_environment_pkg.g_Prog_Appl_Id
144019 , xla_environment_pkg.g_Prog_Id
144020 , xla_environment_pkg.g_Req_Id
144021 FROM (
144022 SELECT xet.event_id event_id
144023 , 0 line_number
144024 , CASE r
144025 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
144026 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
144027 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
144028 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
144029 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
144033 END object_name
144030 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
144031
144032 ELSE null
144034 , CASE r
144035 WHEN 1 THEN 'HEADER'
144036 WHEN 2 THEN 'HEADER'
144037 WHEN 3 THEN 'HEADER'
144038 WHEN 4 THEN 'HEADER'
144039 WHEN 5 THEN 'HEADER'
144040 WHEN 6 THEN 'HEADER'
144041
144042 ELSE null
144043 END object_type_code
144044 , CASE r
144045 WHEN 1 THEN '555'
144046 WHEN 2 THEN '555'
144047 WHEN 3 THEN '555'
144048 WHEN 4 THEN '555'
144049 WHEN 5 THEN '555'
144050 WHEN 6 THEN '555'
144051
144052 ELSE null
144053 END source_application_id
144054 , 'S' source_type_code
144055 , CASE r
144056 WHEN 1 THEN 'ENTITY_CODE'
144057 WHEN 2 THEN 'CURRENCY_CODE'
144058 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
144059 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
144060 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
144061 WHEN 6 THEN 'TRANSACTION_DATE'
144062
144063 ELSE null
144064 END source_code
144065 , CASE r
144066 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
144067 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
144068 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
144069 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
144070 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
144071 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
144072
144073 ELSE null
144074 END source_value
144075 , CASE r
144076 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
144077 1010186
144078 ,TO_CHAR(h1.CURRENCY_CODE)
144079 ,'CURRENCY_CODE'
144080 ,'S'
144081 ,555)
144082
144083 ELSE null
144084 END source_meaning
144085 FROM xla_events_gt xet
144086 , GMF_XLA_EXTRACT_HEADERS h1
144087 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
144088 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
144089 AND xet.event_type_code = C_EVENT_TYPE_CODE
144090 AND h1.event_id = xet.event_id
144091
144092 )
144093 ;
144094 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144095
144096 trace
144097 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
144098 ,p_level => C_LEVEL_STATEMENT
144099 ,p_module => l_log_module);
144100
144101 END IF;
144102 --
144103
144104
144105
144106 --
144107 INSERT INTO xla_diag_sources --line1
144108 (
144109 event_id
144110 , ledger_id
144111 , sla_ledger_id
144112 , description_language
144113 , object_name
144114 , object_type_code
144115 , line_number
144116 , source_application_id
144117 , source_type_code
144118 , source_code
144119 , source_value
144120 , source_meaning
144121 , created_by
144122 , creation_date
144123 , last_update_date
144124 , last_updated_by
144125 , last_update_login
144126 , program_update_date
144127 , program_application_id
144128 , program_id
144129 , request_id
144130 )
144131 SELECT event_id
144132 , p_target_ledger_id
144133 , p_sla_ledger_id
144134 , p_language
144135 , object_name
144136 , object_type_code
144137 , line_number
144138 , source_application_id
144139 , source_type_code
144140 , source_code
144141 , SUBSTR(source_value,1,1996)
144142 , SUBSTR(source_meaning,1,200)
144143 , xla_environment_pkg.g_Usr_Id
144144 , TRUNC(SYSDATE)
144145 , TRUNC(SYSDATE)
144146 , xla_environment_pkg.g_Usr_Id
144147 , xla_environment_pkg.g_Login_Id
144148 , TRUNC(SYSDATE)
144149 , xla_environment_pkg.g_Prog_Appl_Id
144150 , xla_environment_pkg.g_Prog_Id
144151 , xla_environment_pkg.g_Req_Id
144152 FROM (
144153 SELECT xet.event_id event_id
144154 , l2.line_number line_number
144155 , CASE r
144156 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
144157 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
144158 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
144159 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
144160 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
144161
144162 ELSE null
144163 END object_name
144164 , CASE r
144165 WHEN 1 THEN 'LINE'
144166 WHEN 2 THEN 'LINE'
144167 WHEN 3 THEN 'LINE'
144168 WHEN 4 THEN 'LINE'
144169 WHEN 5 THEN 'LINE'
144170
144174 WHEN 1 THEN '555'
144171 ELSE null
144172 END object_type_code
144173 , CASE r
144175 WHEN 2 THEN '555'
144176 WHEN 3 THEN '555'
144177 WHEN 4 THEN '555'
144178 WHEN 5 THEN '555'
144179
144180 ELSE null
144181 END source_application_id
144182 , 'S' source_type_code
144183 , CASE r
144184 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
144185 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
144186 WHEN 3 THEN 'ENTERED_AMOUNT'
144187 WHEN 4 THEN 'LINE_ID'
144188 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
144189
144190 ELSE null
144191 END source_code
144192 , CASE r
144193 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
144194 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
144195 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
144196 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
144197 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
144198
144199 ELSE null
144200 END source_value
144201 , null source_meaning
144202 FROM xla_events_gt xet
144203 , GMF_XLA_EXTRACT_LINES l2
144204 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
144205 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
144206 AND xet.event_type_code = C_EVENT_TYPE_CODE
144207 AND l2.event_id = xet.event_id
144208
144209 )
144210 ;
144211 --
144212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144213
144214 trace
144215 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
144216 ,p_level => C_LEVEL_STATEMENT
144217 ,p_module => l_log_module);
144218
144219 END IF;
144220
144221
144222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144223 trace
144224 (p_msg => 'END of insert_sources_268'
144225 ,p_level => C_LEVEL_PROCEDURE
144226 ,p_module => l_log_module);
144227 END IF;
144228 EXCEPTION
144229 WHEN xla_exceptions_pkg.application_exception THEN
144230 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
144231 trace
144232 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
144233 ,p_level => C_LEVEL_EXCEPTION
144234 ,p_module => l_log_module);
144235 END IF;
144236 RAISE;
144237 WHEN OTHERS THEN
144238 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
144239 trace
144240 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
144241 ,p_level => C_LEVEL_EXCEPTION
144242 ,p_module => l_log_module);
144243 END IF;
144244 xla_exceptions_pkg.raise_message
144245 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_268');
144246 END insert_sources_268;
144247 --
144248
144249 ---------------------------------------
144250 --
144251 -- PRIVATE FUNCTION
144252 -- EventType_268
144253 --
144254 ----------------------------------------
144255 --
144256 FUNCTION EventType_268
144257 (p_application_id IN NUMBER
144258 ,p_base_ledger_id IN NUMBER
144259 ,p_target_ledger_id IN NUMBER
144260 ,p_language IN VARCHAR2
144261 ,p_currency_code IN VARCHAR2
144262 ,p_sla_ledger_id IN NUMBER
144263 ,p_pad_start_date IN DATE
144264 ,p_pad_end_date IN DATE
144265 ,p_primary_ledger_id IN NUMBER)
144266 RETURN BOOLEAN IS
144267 --
144268 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT_TP';
144269 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
144270
144271 l_calculate_acctd_flag VARCHAR2(1) :='N';
144272 l_calculate_g_l_flag VARCHAR2(1) :='N';
144273 --
144274 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144275 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144276 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144277 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144278 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144279 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144280 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144281 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144282 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144283 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144284 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144285 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144286 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144287 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144288 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144289 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144290 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144294 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144291 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144292 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144293 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144295 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144296 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
144297 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144298 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
144299 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
144300
144301 l_event_id NUMBER;
144302 l_previous_event_id NUMBER;
144303 l_first_event_id NUMBER;
144304 l_last_event_id NUMBER;
144305
144306 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
144307 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
144308 --
144309 --
144310 l_result BOOLEAN := TRUE;
144311 l_rows NUMBER := 1000;
144312 l_event_type_name VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt, Transfer Pricing';
144313 l_event_class_name VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
144314 l_description VARCHAR2(4000);
144315 l_transaction_reversal NUMBER;
144316 l_ae_header_id NUMBER;
144317 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
144318 l_log_module VARCHAR2(240);
144319 --
144320 l_acct_reversal_source VARCHAR2(30);
144321 l_trx_reversal_source VARCHAR2(30);
144322
144323 l_continue_with_lines BOOLEAN := TRUE;
144324 --
144325 l_acc_rev_gl_date_source DATE; -- 4262811
144326 --
144327 type t_array_event_id is table of number index by binary_integer;
144328
144329 l_rec_array_event t_rec_array_event;
144330 l_null_rec_array_event t_rec_array_event;
144331 l_array_ae_header_id xla_number_array_type;
144332 l_actual_flag VARCHAR2(1) := NULL;
144333 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
144334 l_balance_type_code VARCHAR2(1) :=NULL;
144335 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
144336
144337 --
144338 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
144339 --
144340
144341 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
144342 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
144343 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
144344 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
144345 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
144346 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
144347
144348 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
144349 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
144350 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
144351 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
144352 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
144353
144354 l_array_source_6 t_array_source_6;
144355 l_array_source_7 t_array_source_7;
144356 l_array_source_8 t_array_source_8;
144357 l_array_source_9 t_array_source_9;
144358 l_array_source_10 t_array_source_10;
144359 l_array_source_12 t_array_source_12;
144360
144361 l_array_source_1 t_array_source_1;
144362 l_array_source_2 t_array_source_2;
144363 l_array_source_3 t_array_source_3;
144364 l_array_source_5 t_array_source_5;
144365 l_array_source_11 t_array_source_11;
144366
144367 --
144368 CURSOR header_cur
144369 IS
144370 SELECT /*+ leading(xet) cardinality(xet,1) */
144371 -- Event Type Code: FOB_RCPT_SENDER_RCPT_TP
144372 -- Event Class Code: FOB_RCPT_SENDER_RCPT
144373 xet.entity_id
144374 , xet.legal_entity_id
144375 , xet.entity_code
144376 , xet.transaction_number
144377 , xet.event_id
144378 , xet.event_class_code
144379 , xet.event_type_code
144380 , xet.event_number
144381 , xet.event_date
144382 , xet.transaction_date
144383 , xet.reference_num_1
144384 , xet.reference_num_2
144385 , xet.reference_num_3
144386 , xet.reference_num_4
144387 , xet.reference_char_1
144388 , xet.reference_char_2
144389 , xet.reference_char_3
144390 , xet.reference_char_4
144391 , xet.reference_date_1
144392 , xet.reference_date_2
144393 , xet.reference_date_3
144394 , xet.reference_date_4
144395 , xet.event_created_by
144396 , xet.budgetary_control_flag
144397 , h1.ENTITY_CODE source_6
144398 , h1.CURRENCY_CODE source_7
144399 , h1.CURRENCY_CONVERSION_DATE source_8
144403 FROM xla_events_gt xet
144400 , h1.CURRENCY_CONVERSION_RATE source_9
144401 , h1.CURRENCY_CONVERSION_TYPE source_10
144402 , h1.TRANSACTION_DATE source_12
144404 , GMF_XLA_EXTRACT_HEADERS h1
144405 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
144406 and xet.event_type_code = C_EVENT_TYPE_CODE
144407 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
144408
144409 ORDER BY event_id
144410 ;
144411
144412
144413 --
144414 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
144415 IS
144416 SELECT /*+ leading(xet) cardinality(xet,1) */
144417 -- Event Type Code: FOB_RCPT_SENDER_RCPT_TP
144418 -- Event Class Code: FOB_RCPT_SENDER_RCPT
144419 xet.entity_id
144420 ,xet.legal_entity_id
144421 ,xet.entity_code
144422 ,xet.transaction_number
144423 ,xet.event_id
144424 ,xet.event_class_code
144425 ,xet.event_type_code
144426 ,xet.event_number
144427 ,xet.event_date
144428 ,xet.transaction_date
144429 ,xet.reference_num_1
144430 ,xet.reference_num_2
144431 ,xet.reference_num_3
144432 ,xet.reference_num_4
144433 ,xet.reference_char_1
144434 ,xet.reference_char_2
144435 ,xet.reference_char_3
144436 ,xet.reference_char_4
144437 ,xet.reference_date_1
144438 ,xet.reference_date_2
144439 ,xet.reference_date_3
144440 ,xet.reference_date_4
144441 ,xet.event_created_by
144442 ,xet.budgetary_control_flag , l2.LINE_NUMBER
144443 , l2.TRANSACTION_ACCOUNT_ID source_1
144444 , l2.JOURNAL_LINE_TYPE source_2
144445 , l2.ENTERED_AMOUNT source_3
144446 , l2.LINE_ID source_5
144447 , l2.ACCOUNTED_AMOUNT source_11
144448 FROM xla_events_gt xet
144449 , GMF_XLA_EXTRACT_LINES l2
144450 WHERE xet.event_id between x_first_event_id and x_last_event_id
144451 and xet.event_date between p_pad_start_date and p_pad_end_date
144452 and xet.event_type_code = C_EVENT_TYPE_CODE
144453 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
144454 ;
144455
144456 --
144457 BEGIN
144458 IF g_log_enabled THEN
144459 l_log_module := C_DEFAULT_MODULE||'.EventType_268';
144460 END IF;
144461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144462 trace
144463 (p_msg => 'BEGIN of EventType_268'
144464 ,p_level => C_LEVEL_PROCEDURE
144465 ,p_module => l_log_module);
144466 END IF;
144467
144468 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144469 trace
144470 (p_msg => 'p_application_id = '||p_application_id||
144471 ' - p_base_ledger_id = '||p_base_ledger_id||
144472 ' - p_target_ledger_id = '||p_target_ledger_id||
144473 ' - p_language = '||p_language||
144474 ' - p_currency_code = '||p_currency_code||
144475 ' - p_sla_ledger_id = '||p_sla_ledger_id
144476 ,p_level => C_LEVEL_STATEMENT
144477 ,p_module => l_log_module);
144478 END IF;
144479 --
144480 -- initialze arrays
144481 --
144482 g_array_event.DELETE;
144483 l_rec_array_event := l_null_rec_array_event;
144484 --
144485 --------------------------------------
144486 -- 4262811 Initialze MPA Line Number
144487 --------------------------------------
144488 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
144489
144490 --
144491
144492 --
144493 OPEN header_cur;
144494 --
144495 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144496 trace
144497 (p_msg => 'SQL - FETCH header_cur'
144498 ,p_level => C_LEVEL_STATEMENT
144499 ,p_module => l_log_module);
144500 END IF;
144501 --
144502 LOOP
144503 FETCH header_cur BULK COLLECT INTO
144504 l_array_entity_id
144505 , l_array_legal_entity_id
144506 , l_array_entity_code
144507 , l_array_transaction_num
144508 , l_array_event_id
144509 , l_array_class_code
144510 , l_array_event_type
144511 , l_array_event_number
144512 , l_array_event_date
144513 , l_array_transaction_date
144514 , l_array_reference_num_1
144515 , l_array_reference_num_2
144516 , l_array_reference_num_3
144517 , l_array_reference_num_4
144518 , l_array_reference_char_1
144519 , l_array_reference_char_2
144520 , l_array_reference_char_3
144521 , l_array_reference_char_4
144522 , l_array_reference_date_1
144523 , l_array_reference_date_2
144524 , l_array_reference_date_3
144525 , l_array_reference_date_4
144526 , l_array_event_created_by
144527 , l_array_budgetary_control_flag
144528 , l_array_source_6
144529 , l_array_source_7
144530 , l_array_source_8
144531 , l_array_source_9
144532 , l_array_source_10
144533 , l_array_source_12
144534 LIMIT l_rows;
144535 --
144536 IF (C_LEVEL_EVENT >= g_log_level) THEN
144537 trace
144538 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
144539 ,p_level => C_LEVEL_EVENT
144540 ,p_module => l_log_module);
144541 END IF;
144542 --
144543 EXIT WHEN l_array_entity_id.COUNT = 0;
144544
144545 -- initialize arrays
144546 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
144547 XLA_AE_LINES_PKG.g_rec_lines := NULL;
144548
144549 --
144550 -- Bug 4458708
144551 --
144552 XLA_AE_LINES_PKG.g_LineNumber := 0;
144556 g_last_hdr_idx := l_array_event_id.LAST;
144553
144554
144555 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
144557 --
144558 -- loop for the headers. Each iteration is for each header extract row
144559 -- fetched in header cursor
144560 --
144561 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
144562
144563 --
144564 -- set event info as cache for other routines to refer event attributes
144565 --
144566 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
144567 (p_application_id => p_application_id
144568 ,p_primary_ledger_id => p_primary_ledger_id
144569 ,p_base_ledger_id => p_base_ledger_id
144570 ,p_target_ledger_id => p_target_ledger_id
144571 ,p_entity_id => l_array_entity_id(hdr_idx)
144572 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
144573 ,p_entity_code => l_array_entity_code(hdr_idx)
144574 ,p_transaction_num => l_array_transaction_num(hdr_idx)
144575 ,p_event_id => l_array_event_id(hdr_idx)
144576 ,p_event_class_code => l_array_class_code(hdr_idx)
144577 ,p_event_type_code => l_array_event_type(hdr_idx)
144578 ,p_event_number => l_array_event_number(hdr_idx)
144579 ,p_event_date => l_array_event_date(hdr_idx)
144580 ,p_transaction_date => l_array_transaction_date(hdr_idx)
144581 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
144582 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
144583 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
144584 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
144585 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
144586 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
144587 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
144588 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
144589 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
144590 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
144591 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
144592 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
144593 ,p_event_created_by => l_array_event_created_by(hdr_idx)
144594 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
144595
144596 --
144597 -- set the status of entry to C_VALID (0)
144598 --
144599 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
144600
144601 --
144602 -- initialize a row for ae header
144603 --
144604 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
144605
144606 l_event_id := l_array_event_id(hdr_idx);
144607
144608 --
144609 -- storing the hdr_idx for event. May be used by line cursor.
144610 --
144611 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
144612
144613 --
144614 -- store sources from header extract. This can be improved to
144615 -- store only those sources from header extract that may be used in lines
144616 --
144617
144618 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
144619 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
144620 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
144621 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
144622 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
144623 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
144624
144625 --
144626 -- initilaize the status of ae headers for diffrent balance types
144627 -- the status is initialised to C_NOT_CREATED (2)
144628 --
144629 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144630 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144631 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
144632
144633 --
144634 -- call api to validate and store accounting attributes for header
144635 --
144636
144637 ------------------------------------------------------------
144638 -- Accrual Reversal : to get date for Standard Source (NONE)
144639 ------------------------------------------------------------
144640 l_acc_rev_gl_date_source := NULL;
144641
144642 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
144643 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
144644
144645
144646 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
144647
144648 XLA_AE_HEADER_PKG.SetJeCategoryName;
144649
144650 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
144651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
144652 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
144653 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
144654 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
144655
144656
144657 -- No header level analytical criteria
144658
144659 --
144660 --accounting attribute enhancement, bug 3612931
144661 --
144662 l_trx_reversal_source := SUBSTR(NULL, 1,30);
144663
144664 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
144665 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
144666
144670 ,p_token_1 => 'ACCT_ATTR_NAME'
144667 xla_accounting_err_pkg.build_message
144668 (p_appli_s_name => 'XLA'
144669 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
144671 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
144672 ,p_token_2 => 'PRODUCT_NAME'
144673 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144674 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144675 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
144676 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144677
144678 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
144679 --
144680 -- following sets the accounting attributes needed to reverse
144681 -- accounting for a distributeion
144682 --
144683 xla_ae_lines_pkg.SetTrxReversalAttrs
144684 (p_event_id => l_event_id
144685 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
144686 ,p_trx_reversal_source => l_trx_reversal_source);
144687
144688 END IF;
144689
144690
144691 ----------------------------------------------------------------
144692 -- 4262811 - update the header statuses to invalid in need be
144693 ----------------------------------------------------------------
144694 --
144695 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
144696
144697
144698 -----------------------------------------------
144699 -- No accrual reversal for the event class/type
144700 -----------------------------------------------
144701 ----------------------------------------------------------------
144702
144703 --
144704 -- this ends the header loop iteration for one bulk fetch
144705 --
144706 END LOOP;
144707
144708 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
144709 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
144710
144711 --
144712 -- insert dummy rows into lines gt table that were created due to
144713 -- transaction reversals
144714 --
144715 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
144716 l_result := XLA_AE_LINES_PKG.InsertLines;
144717 END IF;
144718
144719 --
144720 -- reset the temp_line_num for each set of events fetched from header
144721 -- cursor rather than doing it for each new event in line cursor
144722 -- Bug 3939231
144723 --
144724 xla_ae_lines_pkg.g_temp_line_num := 0;
144725
144726
144727
144728 --
144729 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
144730 --
144731 --
144732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144733
144734 trace
144735 (p_msg => 'SQL - FETCH line_cur'
144736 ,p_level => C_LEVEL_STATEMENT
144737 ,p_module => l_log_module);
144738
144739 END IF;
144740 --
144741 --
144742 LOOP
144743 --
144744 FETCH line_cur BULK COLLECT INTO
144745 l_array_entity_id
144746 , l_array_legal_entity_id
144747 , l_array_entity_code
144748 , l_array_transaction_num
144749 , l_array_event_id
144750 , l_array_class_code
144751 , l_array_event_type
144752 , l_array_event_number
144753 , l_array_event_date
144754 , l_array_transaction_date
144755 , l_array_reference_num_1
144756 , l_array_reference_num_2
144757 , l_array_reference_num_3
144758 , l_array_reference_num_4
144759 , l_array_reference_char_1
144760 , l_array_reference_char_2
144761 , l_array_reference_char_3
144762 , l_array_reference_char_4
144763 , l_array_reference_date_1
144764 , l_array_reference_date_2
144765 , l_array_reference_date_3
144766 , l_array_reference_date_4
144767 , l_array_event_created_by
144768 , l_array_budgetary_control_flag
144769 , l_array_extract_line_num
144770 , l_array_source_1
144771 , l_array_source_2
144772 , l_array_source_3
144773 , l_array_source_5
144774 , l_array_source_11
144775 LIMIT l_rows;
144776
144777 --
144778 IF (C_LEVEL_EVENT >= g_log_level) THEN
144779 trace
144780 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
144781 ,p_level => C_LEVEL_EVENT
144782 ,p_module => l_log_module);
144783 END IF;
144784 --
144785 EXIT WHEN l_array_entity_id.count = 0;
144786
144787 XLA_AE_LINES_PKG.g_rec_lines := null;
144788
144789 --
144790 -- Bug 4458708
144791 --
144792 XLA_AE_LINES_PKG.g_LineNumber := 0;
144793 --
144794 --
144795
144796 FOR Idx IN 1..l_array_event_id.count LOOP
144797 --
144798 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
144799 --
144800 l_event_id := l_array_event_id(idx); -- 5648433
144801
144802 --
144803 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
144804 --
144805
144806 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
144807 (g_array_event(l_event_id).array_value_num('header_index'))
144808 ,'N'
144809 ) <> 'Y'
144810 THEN
144811 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144815 ,p_module => l_log_module);
144812 trace
144813 (p_msg => 'Trancaction revesal option is not Y '
144814 ,p_level => C_LEVEL_STATEMENT
144816 END IF;
144817
144818 --
144819 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
144820 --
144821 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
144822 --
144823 -- set event info as cache for other routines to refer event attributes
144824 --
144825
144826 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
144827 l_previous_event_id := l_event_id;
144828
144829 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
144830 (p_application_id => p_application_id
144831 ,p_primary_ledger_id => p_primary_ledger_id
144832 ,p_base_ledger_id => p_base_ledger_id
144833 ,p_target_ledger_id => p_target_ledger_id
144834 ,p_entity_id => l_array_entity_id(Idx)
144835 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
144836 ,p_entity_code => l_array_entity_code(Idx)
144837 ,p_transaction_num => l_array_transaction_num(Idx)
144838 ,p_event_id => l_array_event_id(Idx)
144839 ,p_event_class_code => l_array_class_code(Idx)
144840 ,p_event_type_code => l_array_event_type(Idx)
144841 ,p_event_number => l_array_event_number(Idx)
144842 ,p_event_date => l_array_event_date(Idx)
144843 ,p_transaction_date => l_array_transaction_date(Idx)
144844 ,p_reference_num_1 => l_array_reference_num_1(Idx)
144845 ,p_reference_num_2 => l_array_reference_num_2(Idx)
144846 ,p_reference_num_3 => l_array_reference_num_3(Idx)
144847 ,p_reference_num_4 => l_array_reference_num_4(Idx)
144848 ,p_reference_char_1 => l_array_reference_char_1(Idx)
144849 ,p_reference_char_2 => l_array_reference_char_2(Idx)
144850 ,p_reference_char_3 => l_array_reference_char_3(Idx)
144851 ,p_reference_char_4 => l_array_reference_char_4(Idx)
144852 ,p_reference_date_1 => l_array_reference_date_1(Idx)
144853 ,p_reference_date_2 => l_array_reference_date_2(Idx)
144854 ,p_reference_date_3 => l_array_reference_date_3(Idx)
144855 ,p_reference_date_4 => l_array_reference_date_4(Idx)
144856 ,p_event_created_by => l_array_event_created_by(Idx)
144857 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
144858 --
144859 END IF;
144860
144861
144862
144863 --
144864 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
144865
144866 l_acct_reversal_source := SUBSTR(NULL, 1,30);
144867
144868 IF l_continue_with_lines THEN
144869 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
144870 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
144871
144872 xla_accounting_err_pkg.build_message
144873 (p_appli_s_name => 'XLA'
144874 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
144875 ,p_token_1 => 'LINE_NUMBER'
144876 ,p_value_1 => l_array_extract_line_num(Idx)
144877 ,p_token_2 => 'PRODUCT_NAME'
144878 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144879 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144880 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
144881 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144882
144883 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
144884 --
144885 -- following sets the accounting attributes needed to reverse
144886 -- accounting for a distributeion
144887 --
144888
144889 --
144890 -- 5217187
144891 --
144892 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
144893 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
144894 g_array_event(l_event_id).array_value_num('header_index'));
144895 --
144896 --
144897
144898 -- No reversal code generated
144899
144900 xla_ae_lines_pkg.SetAcctReversalAttrs
144901 (p_event_id => l_event_id
144902 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
144903 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144904 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
144905 END IF;
144906
144907 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
144908 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
144909
144910 --
144911 AcctLineType_70 (
144912 p_application_id => p_application_id
144913 ,p_event_id => l_event_id
144914 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144915 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144916 ,p_actual_flag => l_actual_flag
144917 ,p_balance_type_code => l_balance_type_code
144918 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144919
144920 , p_source_1 => l_array_source_1(Idx)
144921 , p_source_2 => l_array_source_2(Idx)
144922 , p_source_3 => l_array_source_3(Idx)
144923 , p_source_5 => l_array_source_5(Idx)
144924 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
144928 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
144925 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144926 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
144927 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
144929 , p_source_11 => l_array_source_11(Idx)
144930 );
144931 If(l_balance_type_code = 'A') THEN
144932 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144933 END IF;
144934
144935 --
144936
144937
144938 --
144939 AcctLineType_117 (
144940 p_application_id => p_application_id
144941 ,p_event_id => l_event_id
144942 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144943 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144944 ,p_actual_flag => l_actual_flag
144945 ,p_balance_type_code => l_balance_type_code
144946 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144947
144948 , p_source_1 => l_array_source_1(Idx)
144949 , p_source_2 => l_array_source_2(Idx)
144950 , p_source_3 => l_array_source_3(Idx)
144951 , p_source_5 => l_array_source_5(Idx)
144952 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
144953 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144954 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
144955 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
144956 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
144957 , p_source_11 => l_array_source_11(Idx)
144958 );
144959 If(l_balance_type_code = 'A') THEN
144960 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144961 END IF;
144962
144963 --
144964
144965
144966 --
144967 AcctLineType_180 (
144968 p_application_id => p_application_id
144969 ,p_event_id => l_event_id
144970 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144971 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144972 ,p_actual_flag => l_actual_flag
144973 ,p_balance_type_code => l_balance_type_code
144974 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144975
144976 , p_source_1 => l_array_source_1(Idx)
144977 , p_source_2 => l_array_source_2(Idx)
144978 , p_source_3 => l_array_source_3(Idx)
144979 , p_source_5 => l_array_source_5(Idx)
144980 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
144981 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
144982 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
144983 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
144984 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
144985 , p_source_11 => l_array_source_11(Idx)
144986 );
144987 If(l_balance_type_code = 'A') THEN
144988 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144989 END IF;
144990
144991 --
144992
144993
144994 --
144995 AcctLineType_186 (
144996 p_application_id => p_application_id
144997 ,p_event_id => l_event_id
144998 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144999 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145000 ,p_actual_flag => l_actual_flag
145001 ,p_balance_type_code => l_balance_type_code
145002 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145003
145004 , p_source_1 => l_array_source_1(Idx)
145005 , p_source_2 => l_array_source_2(Idx)
145006 , p_source_3 => l_array_source_3(Idx)
145007 , p_source_5 => l_array_source_5(Idx)
145008 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
145009 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
145010 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
145011 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
145012 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
145013 , p_source_11 => l_array_source_11(Idx)
145014 );
145015 If(l_balance_type_code = 'A') THEN
145016 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145017 END IF;
145018
145019 --
145020
145021
145022 --
145023 AcctLineType_209 (
145024 p_application_id => p_application_id
145025 ,p_event_id => l_event_id
145026 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145027 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145028 ,p_actual_flag => l_actual_flag
145029 ,p_balance_type_code => l_balance_type_code
145030 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145031
145032 , p_source_1 => l_array_source_1(Idx)
145033 , p_source_2 => l_array_source_2(Idx)
145034 , p_source_3 => l_array_source_3(Idx)
145035 , p_source_5 => l_array_source_5(Idx)
145036 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
145037 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
145038 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
145039 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
145040 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
145041 , p_source_11 => l_array_source_11(Idx)
145042 );
145043 If(l_balance_type_code = 'A') THEN
145044 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145045 END IF;
145046
145047 --
145048
145049 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
145050 -- or secondary ledger that has different currency with primary
145051 -- or alc that is calculated by sla
145052 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
145056 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
145053 (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'))
145054
145055 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
145057 AND (l_actual_flag = 'A')) THEN
145058 XLA_AE_LINES_PKG.CreateGainOrLossLines(
145059 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
145060 ,p_application_id => p_application_id
145061 ,p_amb_context_code => 'DEFAULT'
145062 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
145063 ,p_event_class_code => C_EVENT_CLASS_CODE
145064 ,p_event_type_code => C_EVENT_TYPE_CODE
145065
145066 ,p_gain_ccid => -1
145067 ,p_loss_ccid => -1
145068
145069 ,p_actual_flag => l_actual_flag
145070 ,p_enc_flag => null
145071 ,p_actual_g_l_ref => l_actual_gain_loss_ref
145072 ,p_enc_g_l_ref => null
145073 );
145074 END IF;
145075 END IF;
145076 END IF;
145077
145078 ELSE
145079 --
145080 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
145081 --
145082 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145083 trace
145084 (p_msg => 'Trancaction revesal option is Y'
145085 ,p_level => C_LEVEL_STATEMENT
145086 ,p_module => l_log_module);
145087 END IF;
145088 END IF;
145089
145090 END LOOP;
145091 l_result := XLA_AE_LINES_PKG.InsertLines ;
145092 end loop;
145093 close line_cur;
145094
145095
145096 --
145097 -- insert headers into xla_ae_headers_gt table
145098 --
145099 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
145100
145101 -- insert into errors table here.
145102
145103 END LOOP;
145104
145105 --
145106 -- 4865292
145107 --
145108 -- Compare g_hdr_extract_count with event count in
145109 -- CreateHeadersAndLines.
145110 --
145111 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
145112
145113 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145114 trace (p_msg => '# rows extracted from header extract objects '
145115 || ' (running total): '
145116 || g_hdr_extract_count
145117 ,p_level => C_LEVEL_STATEMENT
145118 ,p_module => l_log_module);
145119 END IF;
145120
145121 CLOSE header_cur;
145122 --
145123
145124 --
145125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145126 trace
145127 (p_msg => 'END of EventType_268'
145128 ,p_level => C_LEVEL_PROCEDURE
145129 ,p_module => l_log_module);
145130 END IF;
145131 --
145132 RETURN l_result;
145133 EXCEPTION
145134 WHEN xla_exceptions_pkg.application_exception THEN
145135
145136 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
145137
145138
145139 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
145140
145141 RAISE;
145142
145143 WHEN NO_DATA_FOUND THEN
145144
145145 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
145146 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
145147
145148 FOR header_record IN header_cur
145149 LOOP
145150 l_array_header_events(header_record.event_id) := header_record.event_id;
145151 END LOOP;
145152
145153 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
145154 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
145155
145156 fnd_file.put_line(fnd_file.LOG, ' ');
145157 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
145158 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
145159 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
145160
145161 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
145162 LOOP
145163 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
145164 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
145165 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
145166 END IF;
145167 END LOOP;
145168
145169 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
145170 fnd_file.put_line(fnd_file.LOG, ' ');
145171
145172
145173 xla_exceptions_pkg.raise_message
145174 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_268');
145175
145176
145177 WHEN OTHERS THEN
145178 xla_exceptions_pkg.raise_message
145179 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_268');
145180 END EventType_268;
145181 --
145182
145183 ---------------------------------------
145184 --
145185 -- PRIVATE PROCEDURE
145186 -- insert_sources_269
145187 --
145188 ----------------------------------------
145189 --
145190 PROCEDURE insert_sources_269(
145191 p_target_ledger_id IN NUMBER
145192 , p_language IN VARCHAR2
145193 , p_sla_ledger_id IN NUMBER
145194 , p_pad_start_date IN DATE
145198
145195 , p_pad_end_date IN DATE
145196 )
145197 IS
145199 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
145200 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
145201 p_apps_owner VARCHAR2(30);
145202 l_log_module VARCHAR2(240);
145203 BEGIN
145204 IF g_log_enabled THEN
145205 l_log_module := C_DEFAULT_MODULE||'.insert_sources_269';
145206 END IF;
145207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145208
145209 trace
145210 (p_msg => 'BEGIN of insert_sources_269'
145211 ,p_level => C_LEVEL_PROCEDURE
145212 ,p_module => l_log_module);
145213
145214 END IF;
145215
145216 -- select APPS owner
145217 SELECT oracle_username
145218 INTO p_apps_owner
145219 FROM fnd_oracle_userid
145220 WHERE read_only_flag = 'U'
145221 ;
145222
145223 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145224 trace
145225 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
145226 ' - p_language = '||p_language||
145227 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
145228 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
145229 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
145230 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
145231 ,p_level => C_LEVEL_STATEMENT
145232 ,p_module => l_log_module);
145233 END IF;
145234
145235
145236 --
145237 INSERT INTO xla_diag_sources --hdr1
145238 (
145239 event_id
145240 , ledger_id
145241 , sla_ledger_id
145242 , description_language
145243 , object_name
145244 , object_type_code
145245 , line_number
145246 , source_application_id
145247 , source_type_code
145248 , source_code
145249 , source_value
145250 , source_meaning
145251 , created_by
145252 , creation_date
145253 , last_update_date
145254 , last_updated_by
145255 , last_update_login
145256 , program_update_date
145257 , program_application_id
145258 , program_id
145259 , request_id
145260 )
145261 SELECT
145262 event_id
145263 , p_target_ledger_id
145264 , p_sla_ledger_id
145265 , p_language
145266 , object_name
145267 , object_type_code
145268 , line_number
145269 , source_application_id
145270 , source_type_code
145271 , source_code
145272 , SUBSTR(source_value ,1,1996)
145273 , SUBSTR(source_meaning,1,200)
145274 , xla_environment_pkg.g_Usr_Id
145275 , TRUNC(SYSDATE)
145276 , TRUNC(SYSDATE)
145277 , xla_environment_pkg.g_Usr_Id
145278 , xla_environment_pkg.g_Login_Id
145279 , TRUNC(SYSDATE)
145280 , xla_environment_pkg.g_Prog_Appl_Id
145281 , xla_environment_pkg.g_Prog_Id
145282 , xla_environment_pkg.g_Req_Id
145283 FROM (
145284 SELECT xet.event_id event_id
145285 , 0 line_number
145286 , CASE r
145287 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
145288 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
145289 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
145290 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
145291 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
145292 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
145293
145294 ELSE null
145295 END object_name
145296 , CASE r
145297 WHEN 1 THEN 'HEADER'
145298 WHEN 2 THEN 'HEADER'
145299 WHEN 3 THEN 'HEADER'
145300 WHEN 4 THEN 'HEADER'
145301 WHEN 5 THEN 'HEADER'
145302 WHEN 6 THEN 'HEADER'
145303
145304 ELSE null
145305 END object_type_code
145306 , CASE r
145307 WHEN 1 THEN '555'
145308 WHEN 2 THEN '555'
145309 WHEN 3 THEN '555'
145310 WHEN 4 THEN '555'
145311 WHEN 5 THEN '555'
145312 WHEN 6 THEN '555'
145313
145314 ELSE null
145315 END source_application_id
145316 , 'S' source_type_code
145317 , CASE r
145318 WHEN 1 THEN 'ENTITY_CODE'
145319 WHEN 2 THEN 'CURRENCY_CODE'
145320 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
145321 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
145322 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
145323 WHEN 6 THEN 'TRANSACTION_DATE'
145324
145325 ELSE null
145326 END source_code
145327 , CASE r
145328 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
145329 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
145330 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
145331 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
145332 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
145333 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
145334
145335 ELSE null
145339 1010186
145336 END source_value
145337 , CASE r
145338 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
145340 ,TO_CHAR(h1.CURRENCY_CODE)
145341 ,'CURRENCY_CODE'
145342 ,'S'
145343 ,555)
145344
145345 ELSE null
145346 END source_meaning
145347 FROM xla_events_gt xet
145348 , GMF_XLA_EXTRACT_HEADERS h1
145349 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
145350 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145351 AND xet.event_type_code = C_EVENT_TYPE_CODE
145352 AND h1.event_id = xet.event_id
145353
145354 )
145355 ;
145356 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145357
145358 trace
145359 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
145360 ,p_level => C_LEVEL_STATEMENT
145361 ,p_module => l_log_module);
145362
145363 END IF;
145364 --
145365
145366
145367
145368 --
145369 INSERT INTO xla_diag_sources --line1
145370 (
145371 event_id
145372 , ledger_id
145373 , sla_ledger_id
145374 , description_language
145375 , object_name
145376 , object_type_code
145377 , line_number
145378 , source_application_id
145379 , source_type_code
145380 , source_code
145381 , source_value
145382 , source_meaning
145383 , created_by
145384 , creation_date
145385 , last_update_date
145386 , last_updated_by
145387 , last_update_login
145388 , program_update_date
145389 , program_application_id
145390 , program_id
145391 , request_id
145392 )
145393 SELECT event_id
145394 , p_target_ledger_id
145395 , p_sla_ledger_id
145396 , p_language
145397 , object_name
145398 , object_type_code
145399 , line_number
145400 , source_application_id
145401 , source_type_code
145402 , source_code
145403 , SUBSTR(source_value,1,1996)
145404 , SUBSTR(source_meaning,1,200)
145405 , xla_environment_pkg.g_Usr_Id
145406 , TRUNC(SYSDATE)
145407 , TRUNC(SYSDATE)
145408 , xla_environment_pkg.g_Usr_Id
145409 , xla_environment_pkg.g_Login_Id
145410 , TRUNC(SYSDATE)
145411 , xla_environment_pkg.g_Prog_Appl_Id
145412 , xla_environment_pkg.g_Prog_Id
145413 , xla_environment_pkg.g_Req_Id
145414 FROM (
145415 SELECT xet.event_id event_id
145416 , l2.line_number line_number
145417 , CASE r
145418 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
145419 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
145420 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
145421 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
145422 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
145423
145424 ELSE null
145425 END object_name
145426 , CASE r
145427 WHEN 1 THEN 'LINE'
145428 WHEN 2 THEN 'LINE'
145429 WHEN 3 THEN 'LINE'
145430 WHEN 4 THEN 'LINE'
145431 WHEN 5 THEN 'LINE'
145432
145433 ELSE null
145434 END object_type_code
145435 , CASE r
145436 WHEN 1 THEN '555'
145437 WHEN 2 THEN '555'
145438 WHEN 3 THEN '555'
145439 WHEN 4 THEN '555'
145440 WHEN 5 THEN '555'
145441
145442 ELSE null
145443 END source_application_id
145444 , 'S' source_type_code
145445 , CASE r
145446 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
145447 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
145448 WHEN 3 THEN 'ENTERED_AMOUNT'
145449 WHEN 4 THEN 'LINE_ID'
145450 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
145451
145452 ELSE null
145453 END source_code
145454 , CASE r
145455 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
145456 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
145457 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
145458 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
145459 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
145460
145461 ELSE null
145462 END source_value
145463 , null source_meaning
145464 FROM xla_events_gt xet
145465 , GMF_XLA_EXTRACT_LINES l2
145466 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
145467 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145468 AND xet.event_type_code = C_EVENT_TYPE_CODE
145469 AND l2.event_id = xet.event_id
145470
145471 )
145472 ;
145473 --
145474 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145475
145476 trace
145480
145477 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
145478 ,p_level => C_LEVEL_STATEMENT
145479 ,p_module => l_log_module);
145481 END IF;
145482
145483
145484 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145485 trace
145486 (p_msg => 'END of insert_sources_269'
145487 ,p_level => C_LEVEL_PROCEDURE
145488 ,p_module => l_log_module);
145489 END IF;
145490 EXCEPTION
145491 WHEN xla_exceptions_pkg.application_exception THEN
145492 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145493 trace
145494 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145495 ,p_level => C_LEVEL_EXCEPTION
145496 ,p_module => l_log_module);
145497 END IF;
145498 RAISE;
145499 WHEN OTHERS THEN
145500 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145501 trace
145502 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145503 ,p_level => C_LEVEL_EXCEPTION
145504 ,p_module => l_log_module);
145505 END IF;
145506 xla_exceptions_pkg.raise_message
145507 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_269');
145508 END insert_sources_269;
145509 --
145510
145511 ---------------------------------------
145512 --
145513 -- PRIVATE FUNCTION
145514 -- EventType_269
145515 --
145516 ----------------------------------------
145517 --
145518 FUNCTION EventType_269
145519 (p_application_id IN NUMBER
145520 ,p_base_ledger_id IN NUMBER
145521 ,p_target_ledger_id IN NUMBER
145522 ,p_language IN VARCHAR2
145523 ,p_currency_code IN VARCHAR2
145524 ,p_sla_ledger_id IN NUMBER
145525 ,p_pad_start_date IN DATE
145526 ,p_pad_end_date IN DATE
145527 ,p_primary_ledger_id IN NUMBER)
145528 RETURN BOOLEAN IS
145529 --
145530 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
145531 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
145532
145533 l_calculate_acctd_flag VARCHAR2(1) :='N';
145534 l_calculate_g_l_flag VARCHAR2(1) :='N';
145535 --
145536 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145537 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145538 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145539 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145540 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145541 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145542 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145543 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145544 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145545 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145546 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145547 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145548 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145549 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
145550 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145551 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145552 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145553 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
145554 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145555 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145556 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145557 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
145558 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
145559 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
145560 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
145561 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
145562
145563 l_event_id NUMBER;
145564 l_previous_event_id NUMBER;
145565 l_first_event_id NUMBER;
145566 l_last_event_id NUMBER;
145567
145568 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
145569 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
145570 --
145571 --
145572 l_result BOOLEAN := TRUE;
145573 l_rows NUMBER := 1000;
145574 l_event_type_name VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
145575 l_event_class_name VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
145576 l_description VARCHAR2(4000);
145577 l_transaction_reversal NUMBER;
145578 l_ae_header_id NUMBER;
145579 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
145580 l_log_module VARCHAR2(240);
145581 --
145582 l_acct_reversal_source VARCHAR2(30);
145583 l_trx_reversal_source VARCHAR2(30);
145584
145585 l_continue_with_lines BOOLEAN := TRUE;
145586 --
145590
145587 l_acc_rev_gl_date_source DATE; -- 4262811
145588 --
145589 type t_array_event_id is table of number index by binary_integer;
145591 l_rec_array_event t_rec_array_event;
145592 l_null_rec_array_event t_rec_array_event;
145593 l_array_ae_header_id xla_number_array_type;
145594 l_actual_flag VARCHAR2(1) := NULL;
145595 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
145596 l_balance_type_code VARCHAR2(1) :=NULL;
145597 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
145598
145599 --
145600 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
145601 --
145602
145603 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
145604 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
145605 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
145606 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
145607 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
145608 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
145609
145610 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
145611 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
145612 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
145613 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
145614 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
145615
145616 l_array_source_6 t_array_source_6;
145617 l_array_source_7 t_array_source_7;
145618 l_array_source_8 t_array_source_8;
145619 l_array_source_9 t_array_source_9;
145620 l_array_source_10 t_array_source_10;
145621 l_array_source_12 t_array_source_12;
145622
145623 l_array_source_1 t_array_source_1;
145624 l_array_source_2 t_array_source_2;
145625 l_array_source_3 t_array_source_3;
145626 l_array_source_5 t_array_source_5;
145627 l_array_source_11 t_array_source_11;
145628
145629 --
145630 CURSOR header_cur
145631 IS
145632 SELECT /*+ leading(xet) cardinality(xet,1) */
145633 -- Event Type Code: FOB_RCPT_SENDER_SHIP
145634 -- Event Class Code: FOB_RCPT_SENDER_SHIP
145635 xet.entity_id
145636 , xet.legal_entity_id
145637 , xet.entity_code
145638 , xet.transaction_number
145639 , xet.event_id
145640 , xet.event_class_code
145641 , xet.event_type_code
145642 , xet.event_number
145643 , xet.event_date
145644 , xet.transaction_date
145645 , xet.reference_num_1
145646 , xet.reference_num_2
145647 , xet.reference_num_3
145648 , xet.reference_num_4
145649 , xet.reference_char_1
145650 , xet.reference_char_2
145651 , xet.reference_char_3
145652 , xet.reference_char_4
145653 , xet.reference_date_1
145654 , xet.reference_date_2
145655 , xet.reference_date_3
145656 , xet.reference_date_4
145657 , xet.event_created_by
145658 , xet.budgetary_control_flag
145659 , h1.ENTITY_CODE source_6
145660 , h1.CURRENCY_CODE source_7
145661 , h1.CURRENCY_CONVERSION_DATE source_8
145662 , h1.CURRENCY_CONVERSION_RATE source_9
145663 , h1.CURRENCY_CONVERSION_TYPE source_10
145664 , h1.TRANSACTION_DATE source_12
145665 FROM xla_events_gt xet
145666 , GMF_XLA_EXTRACT_HEADERS h1
145667 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
145668 and xet.event_type_code = C_EVENT_TYPE_CODE
145669 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
145670
145671 ORDER BY event_id
145672 ;
145673
145674
145675 --
145676 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
145677 IS
145678 SELECT /*+ leading(xet) cardinality(xet,1) */
145679 -- Event Type Code: FOB_RCPT_SENDER_SHIP
145680 -- Event Class Code: FOB_RCPT_SENDER_SHIP
145681 xet.entity_id
145682 ,xet.legal_entity_id
145683 ,xet.entity_code
145684 ,xet.transaction_number
145685 ,xet.event_id
145686 ,xet.event_class_code
145687 ,xet.event_type_code
145688 ,xet.event_number
145689 ,xet.event_date
145690 ,xet.transaction_date
145691 ,xet.reference_num_1
145692 ,xet.reference_num_2
145693 ,xet.reference_num_3
145694 ,xet.reference_num_4
145695 ,xet.reference_char_1
145696 ,xet.reference_char_2
145697 ,xet.reference_char_3
145698 ,xet.reference_char_4
145699 ,xet.reference_date_1
145700 ,xet.reference_date_2
145701 ,xet.reference_date_3
145702 ,xet.reference_date_4
145703 ,xet.event_created_by
145704 ,xet.budgetary_control_flag , l2.LINE_NUMBER
145705 , l2.TRANSACTION_ACCOUNT_ID source_1
145706 , l2.JOURNAL_LINE_TYPE source_2
145707 , l2.ENTERED_AMOUNT source_3
145708 , l2.LINE_ID source_5
145709 , l2.ACCOUNTED_AMOUNT source_11
145710 FROM xla_events_gt xet
145711 , GMF_XLA_EXTRACT_LINES l2
145712 WHERE xet.event_id between x_first_event_id and x_last_event_id
145713 and xet.event_date between p_pad_start_date and p_pad_end_date
145717
145714 and xet.event_type_code = C_EVENT_TYPE_CODE
145715 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
145716 ;
145718 --
145719 BEGIN
145720 IF g_log_enabled THEN
145721 l_log_module := C_DEFAULT_MODULE||'.EventType_269';
145722 END IF;
145723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145724 trace
145725 (p_msg => 'BEGIN of EventType_269'
145726 ,p_level => C_LEVEL_PROCEDURE
145727 ,p_module => l_log_module);
145728 END IF;
145729
145730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145731 trace
145732 (p_msg => 'p_application_id = '||p_application_id||
145733 ' - p_base_ledger_id = '||p_base_ledger_id||
145734 ' - p_target_ledger_id = '||p_target_ledger_id||
145735 ' - p_language = '||p_language||
145736 ' - p_currency_code = '||p_currency_code||
145737 ' - p_sla_ledger_id = '||p_sla_ledger_id
145738 ,p_level => C_LEVEL_STATEMENT
145739 ,p_module => l_log_module);
145740 END IF;
145741 --
145742 -- initialze arrays
145743 --
145744 g_array_event.DELETE;
145745 l_rec_array_event := l_null_rec_array_event;
145746 --
145747 --------------------------------------
145748 -- 4262811 Initialze MPA Line Number
145749 --------------------------------------
145750 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
145751
145752 --
145753
145754 --
145755 OPEN header_cur;
145756 --
145757 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145758 trace
145759 (p_msg => 'SQL - FETCH header_cur'
145760 ,p_level => C_LEVEL_STATEMENT
145761 ,p_module => l_log_module);
145762 END IF;
145763 --
145764 LOOP
145765 FETCH header_cur BULK COLLECT INTO
145766 l_array_entity_id
145767 , l_array_legal_entity_id
145768 , l_array_entity_code
145769 , l_array_transaction_num
145770 , l_array_event_id
145771 , l_array_class_code
145772 , l_array_event_type
145773 , l_array_event_number
145774 , l_array_event_date
145775 , l_array_transaction_date
145776 , l_array_reference_num_1
145777 , l_array_reference_num_2
145778 , l_array_reference_num_3
145779 , l_array_reference_num_4
145780 , l_array_reference_char_1
145781 , l_array_reference_char_2
145782 , l_array_reference_char_3
145783 , l_array_reference_char_4
145784 , l_array_reference_date_1
145785 , l_array_reference_date_2
145786 , l_array_reference_date_3
145787 , l_array_reference_date_4
145788 , l_array_event_created_by
145789 , l_array_budgetary_control_flag
145790 , l_array_source_6
145791 , l_array_source_7
145792 , l_array_source_8
145793 , l_array_source_9
145794 , l_array_source_10
145795 , l_array_source_12
145796 LIMIT l_rows;
145797 --
145798 IF (C_LEVEL_EVENT >= g_log_level) THEN
145799 trace
145800 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
145801 ,p_level => C_LEVEL_EVENT
145802 ,p_module => l_log_module);
145803 END IF;
145804 --
145805 EXIT WHEN l_array_entity_id.COUNT = 0;
145806
145807 -- initialize arrays
145808 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
145809 XLA_AE_LINES_PKG.g_rec_lines := NULL;
145810
145811 --
145812 -- Bug 4458708
145813 --
145814 XLA_AE_LINES_PKG.g_LineNumber := 0;
145815
145816
145817 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
145818 g_last_hdr_idx := l_array_event_id.LAST;
145819 --
145820 -- loop for the headers. Each iteration is for each header extract row
145821 -- fetched in header cursor
145822 --
145823 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
145824
145825 --
145826 -- set event info as cache for other routines to refer event attributes
145827 --
145828 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145829 (p_application_id => p_application_id
145830 ,p_primary_ledger_id => p_primary_ledger_id
145831 ,p_base_ledger_id => p_base_ledger_id
145832 ,p_target_ledger_id => p_target_ledger_id
145833 ,p_entity_id => l_array_entity_id(hdr_idx)
145834 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
145835 ,p_entity_code => l_array_entity_code(hdr_idx)
145836 ,p_transaction_num => l_array_transaction_num(hdr_idx)
145837 ,p_event_id => l_array_event_id(hdr_idx)
145838 ,p_event_class_code => l_array_class_code(hdr_idx)
145839 ,p_event_type_code => l_array_event_type(hdr_idx)
145840 ,p_event_number => l_array_event_number(hdr_idx)
145841 ,p_event_date => l_array_event_date(hdr_idx)
145842 ,p_transaction_date => l_array_transaction_date(hdr_idx)
145843 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
145844 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
145845 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
145846 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
145847 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
145848 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
145849 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
145850 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
145851 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
145855 ,p_event_created_by => l_array_event_created_by(hdr_idx)
145852 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
145853 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
145854 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
145856 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
145857
145858 --
145859 -- set the status of entry to C_VALID (0)
145860 --
145861 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145862
145863 --
145864 -- initialize a row for ae header
145865 --
145866 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
145867
145868 l_event_id := l_array_event_id(hdr_idx);
145869
145870 --
145871 -- storing the hdr_idx for event. May be used by line cursor.
145872 --
145873 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
145874
145875 --
145876 -- store sources from header extract. This can be improved to
145877 -- store only those sources from header extract that may be used in lines
145878 --
145879
145880 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
145881 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
145882 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
145883 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
145884 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
145885 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
145886
145887 --
145888 -- initilaize the status of ae headers for diffrent balance types
145889 -- the status is initialised to C_NOT_CREATED (2)
145890 --
145891 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145892 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145893 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145894
145895 --
145896 -- call api to validate and store accounting attributes for header
145897 --
145898
145899 ------------------------------------------------------------
145900 -- Accrual Reversal : to get date for Standard Source (NONE)
145901 ------------------------------------------------------------
145902 l_acc_rev_gl_date_source := NULL;
145903
145904 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
145905 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
145906
145907
145908 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
145909
145910 XLA_AE_HEADER_PKG.SetJeCategoryName;
145911
145912 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
145913 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
145914 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
145915 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
145916 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
145917
145918
145919 -- No header level analytical criteria
145920
145921 --
145922 --accounting attribute enhancement, bug 3612931
145923 --
145924 l_trx_reversal_source := SUBSTR(NULL, 1,30);
145925
145926 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
145927 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
145928
145929 xla_accounting_err_pkg.build_message
145930 (p_appli_s_name => 'XLA'
145931 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
145932 ,p_token_1 => 'ACCT_ATTR_NAME'
145933 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
145934 ,p_token_2 => 'PRODUCT_NAME'
145935 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145936 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145937 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
145938 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145939
145940 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
145941 --
145942 -- following sets the accounting attributes needed to reverse
145943 -- accounting for a distributeion
145944 --
145945 xla_ae_lines_pkg.SetTrxReversalAttrs
145946 (p_event_id => l_event_id
145947 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
145948 ,p_trx_reversal_source => l_trx_reversal_source);
145949
145950 END IF;
145951
145952
145953 ----------------------------------------------------------------
145954 -- 4262811 - update the header statuses to invalid in need be
145955 ----------------------------------------------------------------
145956 --
145957 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
145958
145959
145960 -----------------------------------------------
145961 -- No accrual reversal for the event class/type
145962 -----------------------------------------------
145963 ----------------------------------------------------------------
145964
145965 --
145966 -- this ends the header loop iteration for one bulk fetch
145967 --
145968 END LOOP;
145969
145973 --
145970 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
145971 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
145972
145974 -- insert dummy rows into lines gt table that were created due to
145975 -- transaction reversals
145976 --
145977 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
145978 l_result := XLA_AE_LINES_PKG.InsertLines;
145979 END IF;
145980
145981 --
145982 -- reset the temp_line_num for each set of events fetched from header
145983 -- cursor rather than doing it for each new event in line cursor
145984 -- Bug 3939231
145985 --
145986 xla_ae_lines_pkg.g_temp_line_num := 0;
145987
145988
145989
145990 --
145991 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
145992 --
145993 --
145994 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145995
145996 trace
145997 (p_msg => 'SQL - FETCH line_cur'
145998 ,p_level => C_LEVEL_STATEMENT
145999 ,p_module => l_log_module);
146000
146001 END IF;
146002 --
146003 --
146004 LOOP
146005 --
146006 FETCH line_cur BULK COLLECT INTO
146007 l_array_entity_id
146008 , l_array_legal_entity_id
146009 , l_array_entity_code
146010 , l_array_transaction_num
146011 , l_array_event_id
146012 , l_array_class_code
146013 , l_array_event_type
146014 , l_array_event_number
146015 , l_array_event_date
146016 , l_array_transaction_date
146017 , l_array_reference_num_1
146018 , l_array_reference_num_2
146019 , l_array_reference_num_3
146020 , l_array_reference_num_4
146021 , l_array_reference_char_1
146022 , l_array_reference_char_2
146023 , l_array_reference_char_3
146024 , l_array_reference_char_4
146025 , l_array_reference_date_1
146026 , l_array_reference_date_2
146027 , l_array_reference_date_3
146028 , l_array_reference_date_4
146029 , l_array_event_created_by
146030 , l_array_budgetary_control_flag
146031 , l_array_extract_line_num
146032 , l_array_source_1
146033 , l_array_source_2
146034 , l_array_source_3
146035 , l_array_source_5
146036 , l_array_source_11
146037 LIMIT l_rows;
146038
146039 --
146040 IF (C_LEVEL_EVENT >= g_log_level) THEN
146041 trace
146042 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
146043 ,p_level => C_LEVEL_EVENT
146044 ,p_module => l_log_module);
146045 END IF;
146046 --
146047 EXIT WHEN l_array_entity_id.count = 0;
146048
146049 XLA_AE_LINES_PKG.g_rec_lines := null;
146050
146051 --
146052 -- Bug 4458708
146053 --
146054 XLA_AE_LINES_PKG.g_LineNumber := 0;
146055 --
146056 --
146057
146058 FOR Idx IN 1..l_array_event_id.count LOOP
146059 --
146060 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
146061 --
146062 l_event_id := l_array_event_id(idx); -- 5648433
146063
146064 --
146065 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146066 --
146067
146068 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
146069 (g_array_event(l_event_id).array_value_num('header_index'))
146070 ,'N'
146071 ) <> 'Y'
146072 THEN
146073 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146074 trace
146075 (p_msg => 'Trancaction revesal option is not Y '
146076 ,p_level => C_LEVEL_STATEMENT
146077 ,p_module => l_log_module);
146078 END IF;
146079
146080 --
146081 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
146082 --
146083 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
146084 --
146085 -- set event info as cache for other routines to refer event attributes
146086 --
146087
146088 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
146089 l_previous_event_id := l_event_id;
146090
146091 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
146092 (p_application_id => p_application_id
146093 ,p_primary_ledger_id => p_primary_ledger_id
146094 ,p_base_ledger_id => p_base_ledger_id
146095 ,p_target_ledger_id => p_target_ledger_id
146096 ,p_entity_id => l_array_entity_id(Idx)
146097 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
146098 ,p_entity_code => l_array_entity_code(Idx)
146099 ,p_transaction_num => l_array_transaction_num(Idx)
146100 ,p_event_id => l_array_event_id(Idx)
146101 ,p_event_class_code => l_array_class_code(Idx)
146102 ,p_event_type_code => l_array_event_type(Idx)
146103 ,p_event_number => l_array_event_number(Idx)
146104 ,p_event_date => l_array_event_date(Idx)
146105 ,p_transaction_date => l_array_transaction_date(Idx)
146106 ,p_reference_num_1 => l_array_reference_num_1(Idx)
146107 ,p_reference_num_2 => l_array_reference_num_2(Idx)
146108 ,p_reference_num_3 => l_array_reference_num_3(Idx)
146109 ,p_reference_num_4 => l_array_reference_num_4(Idx)
146110 ,p_reference_char_1 => l_array_reference_char_1(Idx)
146114 ,p_reference_date_1 => l_array_reference_date_1(Idx)
146111 ,p_reference_char_2 => l_array_reference_char_2(Idx)
146112 ,p_reference_char_3 => l_array_reference_char_3(Idx)
146113 ,p_reference_char_4 => l_array_reference_char_4(Idx)
146115 ,p_reference_date_2 => l_array_reference_date_2(Idx)
146116 ,p_reference_date_3 => l_array_reference_date_3(Idx)
146117 ,p_reference_date_4 => l_array_reference_date_4(Idx)
146118 ,p_event_created_by => l_array_event_created_by(Idx)
146119 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
146120 --
146121 END IF;
146122
146123
146124
146125 --
146126 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
146127
146128 l_acct_reversal_source := SUBSTR(NULL, 1,30);
146129
146130 IF l_continue_with_lines THEN
146131 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
146132 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
146133
146134 xla_accounting_err_pkg.build_message
146135 (p_appli_s_name => 'XLA'
146136 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
146137 ,p_token_1 => 'LINE_NUMBER'
146138 ,p_value_1 => l_array_extract_line_num(Idx)
146139 ,p_token_2 => 'PRODUCT_NAME'
146140 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
146141 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
146142 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
146143 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
146144
146145 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
146146 --
146147 -- following sets the accounting attributes needed to reverse
146148 -- accounting for a distributeion
146149 --
146150
146151 --
146152 -- 5217187
146153 --
146154 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
146155 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
146156 g_array_event(l_event_id).array_value_num('header_index'));
146157 --
146158 --
146159
146160 -- No reversal code generated
146161
146162 xla_ae_lines_pkg.SetAcctReversalAttrs
146163 (p_event_id => l_event_id
146164 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
146165 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146166 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
146167 END IF;
146168
146169 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
146170 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
146171
146172 --
146173 AcctLineType_99 (
146174 p_application_id => p_application_id
146175 ,p_event_id => l_event_id
146176 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146177 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146178 ,p_actual_flag => l_actual_flag
146179 ,p_balance_type_code => l_balance_type_code
146180 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146181
146182 , p_source_1 => l_array_source_1(Idx)
146183 , p_source_2 => l_array_source_2(Idx)
146184 , p_source_3 => l_array_source_3(Idx)
146185 , p_source_5 => l_array_source_5(Idx)
146186 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
146187 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
146188 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
146189 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
146190 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
146191 , p_source_11 => l_array_source_11(Idx)
146192 );
146193 If(l_balance_type_code = 'A') THEN
146194 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146195 END IF;
146196
146197 --
146198
146199
146200 --
146201 AcctLineType_150 (
146202 p_application_id => p_application_id
146203 ,p_event_id => l_event_id
146204 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146205 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146206 ,p_actual_flag => l_actual_flag
146207 ,p_balance_type_code => l_balance_type_code
146208 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146209
146210 , p_source_1 => l_array_source_1(Idx)
146211 , p_source_2 => l_array_source_2(Idx)
146212 , p_source_3 => l_array_source_3(Idx)
146213 , p_source_5 => l_array_source_5(Idx)
146214 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
146215 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
146216 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
146217 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
146218 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
146219 , p_source_11 => l_array_source_11(Idx)
146220 );
146221 If(l_balance_type_code = 'A') THEN
146222 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146223 END IF;
146224
146225 --
146226
146227
146228 --
146229 AcctLineType_210 (
146230 p_application_id => p_application_id
146231 ,p_event_id => l_event_id
146232 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146233 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146237
146234 ,p_actual_flag => l_actual_flag
146235 ,p_balance_type_code => l_balance_type_code
146236 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146238 , p_source_1 => l_array_source_1(Idx)
146239 , p_source_2 => l_array_source_2(Idx)
146240 , p_source_3 => l_array_source_3(Idx)
146241 , p_source_5 => l_array_source_5(Idx)
146242 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
146243 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
146244 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
146245 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
146246 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
146247 , p_source_11 => l_array_source_11(Idx)
146248 );
146249 If(l_balance_type_code = 'A') THEN
146250 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146251 END IF;
146252
146253 --
146254
146255 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
146256 -- or secondary ledger that has different currency with primary
146257 -- or alc that is calculated by sla
146258 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
146259 (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'))
146260
146261 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
146262 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
146263 AND (l_actual_flag = 'A')) THEN
146264 XLA_AE_LINES_PKG.CreateGainOrLossLines(
146265 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
146266 ,p_application_id => p_application_id
146267 ,p_amb_context_code => 'DEFAULT'
146268 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
146269 ,p_event_class_code => C_EVENT_CLASS_CODE
146270 ,p_event_type_code => C_EVENT_TYPE_CODE
146271
146272 ,p_gain_ccid => -1
146273 ,p_loss_ccid => -1
146274
146275 ,p_actual_flag => l_actual_flag
146276 ,p_enc_flag => null
146277 ,p_actual_g_l_ref => l_actual_gain_loss_ref
146278 ,p_enc_g_l_ref => null
146279 );
146280 END IF;
146281 END IF;
146282 END IF;
146283
146284 ELSE
146285 --
146286 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146287 --
146288 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146289 trace
146290 (p_msg => 'Trancaction revesal option is Y'
146291 ,p_level => C_LEVEL_STATEMENT
146292 ,p_module => l_log_module);
146293 END IF;
146294 END IF;
146295
146296 END LOOP;
146297 l_result := XLA_AE_LINES_PKG.InsertLines ;
146298 end loop;
146299 close line_cur;
146300
146301
146302 --
146303 -- insert headers into xla_ae_headers_gt table
146304 --
146305 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
146306
146307 -- insert into errors table here.
146308
146309 END LOOP;
146310
146311 --
146312 -- 4865292
146313 --
146314 -- Compare g_hdr_extract_count with event count in
146315 -- CreateHeadersAndLines.
146316 --
146317 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
146318
146319 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146320 trace (p_msg => '# rows extracted from header extract objects '
146321 || ' (running total): '
146322 || g_hdr_extract_count
146323 ,p_level => C_LEVEL_STATEMENT
146324 ,p_module => l_log_module);
146325 END IF;
146326
146327 CLOSE header_cur;
146328 --
146329
146330 --
146331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146332 trace
146333 (p_msg => 'END of EventType_269'
146334 ,p_level => C_LEVEL_PROCEDURE
146335 ,p_module => l_log_module);
146336 END IF;
146337 --
146338 RETURN l_result;
146339 EXCEPTION
146340 WHEN xla_exceptions_pkg.application_exception THEN
146341
146342 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146343
146344
146345 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
146346
146347 RAISE;
146348
146349 WHEN NO_DATA_FOUND THEN
146350
146351 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146352 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
146353
146354 FOR header_record IN header_cur
146355 LOOP
146356 l_array_header_events(header_record.event_id) := header_record.event_id;
146357 END LOOP;
146358
146359 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
146360 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
146361
146362 fnd_file.put_line(fnd_file.LOG, ' ');
146363 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146364 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
146365 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
146366
146367 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
146368 LOOP
146369 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
146370 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
146374
146371 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
146372 END IF;
146373 END LOOP;
146375 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146376 fnd_file.put_line(fnd_file.LOG, ' ');
146377
146378
146379 xla_exceptions_pkg.raise_message
146380 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_269');
146381
146382
146383 WHEN OTHERS THEN
146384 xla_exceptions_pkg.raise_message
146385 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_269');
146386 END EventType_269;
146387 --
146388
146389 ---------------------------------------
146390 --
146391 -- PRIVATE PROCEDURE
146392 -- insert_sources_270
146393 --
146394 ----------------------------------------
146395 --
146396 PROCEDURE insert_sources_270(
146397 p_target_ledger_id IN NUMBER
146398 , p_language IN VARCHAR2
146399 , p_sla_ledger_id IN NUMBER
146400 , p_pad_start_date IN DATE
146401 , p_pad_end_date IN DATE
146402 )
146403 IS
146404
146405 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
146406 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
146407 p_apps_owner VARCHAR2(30);
146408 l_log_module VARCHAR2(240);
146409 BEGIN
146410 IF g_log_enabled THEN
146411 l_log_module := C_DEFAULT_MODULE||'.insert_sources_270';
146412 END IF;
146413 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146414
146415 trace
146416 (p_msg => 'BEGIN of insert_sources_270'
146417 ,p_level => C_LEVEL_PROCEDURE
146418 ,p_module => l_log_module);
146419
146420 END IF;
146421
146422 -- select APPS owner
146423 SELECT oracle_username
146424 INTO p_apps_owner
146425 FROM fnd_oracle_userid
146426 WHERE read_only_flag = 'U'
146427 ;
146428
146429 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146430 trace
146431 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
146432 ' - p_language = '||p_language||
146433 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
146434 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
146435 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
146436 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
146437 ,p_level => C_LEVEL_STATEMENT
146438 ,p_module => l_log_module);
146439 END IF;
146440
146441
146442 --
146443 INSERT INTO xla_diag_sources --hdr1
146444 (
146445 event_id
146446 , ledger_id
146447 , sla_ledger_id
146448 , description_language
146449 , object_name
146450 , object_type_code
146451 , line_number
146452 , source_application_id
146453 , source_type_code
146454 , source_code
146455 , source_value
146456 , source_meaning
146457 , created_by
146458 , creation_date
146459 , last_update_date
146460 , last_updated_by
146461 , last_update_login
146462 , program_update_date
146463 , program_application_id
146464 , program_id
146465 , request_id
146466 )
146467 SELECT
146468 event_id
146469 , p_target_ledger_id
146470 , p_sla_ledger_id
146471 , p_language
146472 , object_name
146473 , object_type_code
146474 , line_number
146475 , source_application_id
146476 , source_type_code
146477 , source_code
146478 , SUBSTR(source_value ,1,1996)
146479 , SUBSTR(source_meaning,1,200)
146480 , xla_environment_pkg.g_Usr_Id
146481 , TRUNC(SYSDATE)
146482 , TRUNC(SYSDATE)
146483 , xla_environment_pkg.g_Usr_Id
146484 , xla_environment_pkg.g_Login_Id
146485 , TRUNC(SYSDATE)
146486 , xla_environment_pkg.g_Prog_Appl_Id
146487 , xla_environment_pkg.g_Prog_Id
146488 , xla_environment_pkg.g_Req_Id
146489 FROM (
146490 SELECT xet.event_id event_id
146491 , 0 line_number
146492 , CASE r
146493 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
146494 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
146495 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
146496 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
146497 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
146498 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
146499
146500 ELSE null
146501 END object_name
146502 , CASE r
146503 WHEN 1 THEN 'HEADER'
146504 WHEN 2 THEN 'HEADER'
146505 WHEN 3 THEN 'HEADER'
146506 WHEN 4 THEN 'HEADER'
146507 WHEN 5 THEN 'HEADER'
146508 WHEN 6 THEN 'HEADER'
146509
146510 ELSE null
146511 END object_type_code
146512 , CASE r
146513 WHEN 1 THEN '555'
146514 WHEN 2 THEN '555'
146515 WHEN 3 THEN '555'
146516 WHEN 4 THEN '555'
146520 ELSE null
146517 WHEN 5 THEN '555'
146518 WHEN 6 THEN '555'
146519
146521 END source_application_id
146522 , 'S' source_type_code
146523 , CASE r
146524 WHEN 1 THEN 'ENTITY_CODE'
146525 WHEN 2 THEN 'CURRENCY_CODE'
146526 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
146527 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
146528 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
146529 WHEN 6 THEN 'TRANSACTION_DATE'
146530
146531 ELSE null
146532 END source_code
146533 , CASE r
146534 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
146535 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
146536 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
146537 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
146538 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
146539 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
146540
146541 ELSE null
146542 END source_value
146543 , CASE r
146544 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
146545 1010186
146546 ,TO_CHAR(h1.CURRENCY_CODE)
146547 ,'CURRENCY_CODE'
146548 ,'S'
146549 ,555)
146550
146551 ELSE null
146552 END source_meaning
146553 FROM xla_events_gt xet
146554 , GMF_XLA_EXTRACT_HEADERS h1
146555 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
146556 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
146557 AND xet.event_type_code = C_EVENT_TYPE_CODE
146558 AND h1.event_id = xet.event_id
146559
146560 )
146561 ;
146562 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146563
146564 trace
146565 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
146566 ,p_level => C_LEVEL_STATEMENT
146567 ,p_module => l_log_module);
146568
146569 END IF;
146570 --
146571
146572
146573
146574 --
146575 INSERT INTO xla_diag_sources --line1
146576 (
146577 event_id
146578 , ledger_id
146579 , sla_ledger_id
146580 , description_language
146581 , object_name
146582 , object_type_code
146583 , line_number
146584 , source_application_id
146585 , source_type_code
146586 , source_code
146587 , source_value
146588 , source_meaning
146589 , created_by
146590 , creation_date
146591 , last_update_date
146592 , last_updated_by
146593 , last_update_login
146594 , program_update_date
146595 , program_application_id
146596 , program_id
146597 , request_id
146598 )
146599 SELECT event_id
146600 , p_target_ledger_id
146601 , p_sla_ledger_id
146602 , p_language
146603 , object_name
146604 , object_type_code
146605 , line_number
146606 , source_application_id
146607 , source_type_code
146608 , source_code
146609 , SUBSTR(source_value,1,1996)
146610 , SUBSTR(source_meaning,1,200)
146611 , xla_environment_pkg.g_Usr_Id
146612 , TRUNC(SYSDATE)
146613 , TRUNC(SYSDATE)
146614 , xla_environment_pkg.g_Usr_Id
146615 , xla_environment_pkg.g_Login_Id
146616 , TRUNC(SYSDATE)
146617 , xla_environment_pkg.g_Prog_Appl_Id
146618 , xla_environment_pkg.g_Prog_Id
146619 , xla_environment_pkg.g_Req_Id
146620 FROM (
146621 SELECT xet.event_id event_id
146622 , l2.line_number line_number
146623 , CASE r
146624 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
146625 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
146626 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
146627 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
146628 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
146629
146630 ELSE null
146631 END object_name
146632 , CASE r
146633 WHEN 1 THEN 'LINE'
146634 WHEN 2 THEN 'LINE'
146635 WHEN 3 THEN 'LINE'
146636 WHEN 4 THEN 'LINE'
146637 WHEN 5 THEN 'LINE'
146638
146639 ELSE null
146640 END object_type_code
146641 , CASE r
146642 WHEN 1 THEN '555'
146643 WHEN 2 THEN '555'
146644 WHEN 3 THEN '555'
146645 WHEN 4 THEN '555'
146646 WHEN 5 THEN '555'
146647
146648 ELSE null
146649 END source_application_id
146650 , 'S' source_type_code
146651 , CASE r
146652 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
146653 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
146654 WHEN 3 THEN 'ENTERED_AMOUNT'
146658 ELSE null
146655 WHEN 4 THEN 'LINE_ID'
146656 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
146657
146659 END source_code
146660 , CASE r
146661 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
146662 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
146663 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
146664 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
146665 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
146666
146667 ELSE null
146668 END source_value
146669 , null source_meaning
146670 FROM xla_events_gt xet
146671 , GMF_XLA_EXTRACT_LINES l2
146672 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
146673 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
146674 AND xet.event_type_code = C_EVENT_TYPE_CODE
146675 AND l2.event_id = xet.event_id
146676
146677 )
146678 ;
146679 --
146680 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146681
146682 trace
146683 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
146684 ,p_level => C_LEVEL_STATEMENT
146685 ,p_module => l_log_module);
146686
146687 END IF;
146688
146689
146690 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146691 trace
146692 (p_msg => 'END of insert_sources_270'
146693 ,p_level => C_LEVEL_PROCEDURE
146694 ,p_module => l_log_module);
146695 END IF;
146696 EXCEPTION
146697 WHEN xla_exceptions_pkg.application_exception THEN
146698 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
146699 trace
146700 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
146701 ,p_level => C_LEVEL_EXCEPTION
146702 ,p_module => l_log_module);
146703 END IF;
146704 RAISE;
146705 WHEN OTHERS THEN
146706 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
146707 trace
146708 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
146709 ,p_level => C_LEVEL_EXCEPTION
146710 ,p_module => l_log_module);
146711 END IF;
146712 xla_exceptions_pkg.raise_message
146713 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_270');
146714 END insert_sources_270;
146715 --
146716
146717 ---------------------------------------
146718 --
146719 -- PRIVATE FUNCTION
146720 -- EventType_270
146721 --
146722 ----------------------------------------
146723 --
146724 FUNCTION EventType_270
146725 (p_application_id IN NUMBER
146726 ,p_base_ledger_id IN NUMBER
146727 ,p_target_ledger_id IN NUMBER
146728 ,p_language IN VARCHAR2
146729 ,p_currency_code IN VARCHAR2
146730 ,p_sla_ledger_id IN NUMBER
146731 ,p_pad_start_date IN DATE
146732 ,p_pad_end_date IN DATE
146733 ,p_primary_ledger_id IN NUMBER)
146734 RETURN BOOLEAN IS
146735 --
146736 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
146737 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
146738
146739 l_calculate_acctd_flag VARCHAR2(1) :='N';
146740 l_calculate_g_l_flag VARCHAR2(1) :='N';
146741 --
146742 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146743 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146744 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146745 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146746 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146747 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146748 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146749 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146750 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146751 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146752 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146753 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146754 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146755 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146756 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146757 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146758 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146759 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146760 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146761 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146762 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146763 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146764 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
146765 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146769 l_event_id NUMBER;
146766 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
146767 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
146768
146770 l_previous_event_id NUMBER;
146771 l_first_event_id NUMBER;
146772 l_last_event_id NUMBER;
146773
146774 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
146775 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
146776 --
146777 --
146778 l_result BOOLEAN := TRUE;
146779 l_rows NUMBER := 1000;
146780 l_event_type_name VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
146781 l_event_class_name VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
146782 l_description VARCHAR2(4000);
146783 l_transaction_reversal NUMBER;
146784 l_ae_header_id NUMBER;
146785 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
146786 l_log_module VARCHAR2(240);
146787 --
146788 l_acct_reversal_source VARCHAR2(30);
146789 l_trx_reversal_source VARCHAR2(30);
146790
146791 l_continue_with_lines BOOLEAN := TRUE;
146792 --
146793 l_acc_rev_gl_date_source DATE; -- 4262811
146794 --
146795 type t_array_event_id is table of number index by binary_integer;
146796
146797 l_rec_array_event t_rec_array_event;
146798 l_null_rec_array_event t_rec_array_event;
146799 l_array_ae_header_id xla_number_array_type;
146800 l_actual_flag VARCHAR2(1) := NULL;
146801 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
146802 l_balance_type_code VARCHAR2(1) :=NULL;
146803 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
146804
146805 --
146806 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
146807 --
146808
146809 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
146810 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
146811 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
146812 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
146813 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146814 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
146815
146816 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
146817 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
146818 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146819 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
146820 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146821
146822 l_array_source_6 t_array_source_6;
146823 l_array_source_7 t_array_source_7;
146824 l_array_source_8 t_array_source_8;
146825 l_array_source_9 t_array_source_9;
146826 l_array_source_10 t_array_source_10;
146827 l_array_source_12 t_array_source_12;
146828
146829 l_array_source_1 t_array_source_1;
146830 l_array_source_2 t_array_source_2;
146831 l_array_source_3 t_array_source_3;
146832 l_array_source_5 t_array_source_5;
146833 l_array_source_11 t_array_source_11;
146834
146835 --
146836 CURSOR header_cur
146837 IS
146838 SELECT /*+ leading(xet) cardinality(xet,1) */
146839 -- Event Type Code: FOB_SHIP_RECIPIENT_RCPT
146840 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
146841 xet.entity_id
146842 , xet.legal_entity_id
146843 , xet.entity_code
146844 , xet.transaction_number
146845 , xet.event_id
146846 , xet.event_class_code
146847 , xet.event_type_code
146848 , xet.event_number
146849 , xet.event_date
146850 , xet.transaction_date
146851 , xet.reference_num_1
146852 , xet.reference_num_2
146853 , xet.reference_num_3
146854 , xet.reference_num_4
146855 , xet.reference_char_1
146856 , xet.reference_char_2
146857 , xet.reference_char_3
146858 , xet.reference_char_4
146859 , xet.reference_date_1
146860 , xet.reference_date_2
146861 , xet.reference_date_3
146862 , xet.reference_date_4
146863 , xet.event_created_by
146864 , xet.budgetary_control_flag
146865 , h1.ENTITY_CODE source_6
146866 , h1.CURRENCY_CODE source_7
146867 , h1.CURRENCY_CONVERSION_DATE source_8
146868 , h1.CURRENCY_CONVERSION_RATE source_9
146869 , h1.CURRENCY_CONVERSION_TYPE source_10
146870 , h1.TRANSACTION_DATE source_12
146871 FROM xla_events_gt xet
146872 , GMF_XLA_EXTRACT_HEADERS h1
146873 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
146874 and xet.event_type_code = C_EVENT_TYPE_CODE
146875 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
146876
146877 ORDER BY event_id
146878 ;
146879
146880
146881 --
146882 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
146883 IS
146884 SELECT /*+ leading(xet) cardinality(xet,1) */
146885 -- Event Type Code: FOB_SHIP_RECIPIENT_RCPT
146889 ,xet.entity_code
146886 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
146887 xet.entity_id
146888 ,xet.legal_entity_id
146890 ,xet.transaction_number
146891 ,xet.event_id
146892 ,xet.event_class_code
146893 ,xet.event_type_code
146894 ,xet.event_number
146895 ,xet.event_date
146896 ,xet.transaction_date
146897 ,xet.reference_num_1
146898 ,xet.reference_num_2
146899 ,xet.reference_num_3
146900 ,xet.reference_num_4
146901 ,xet.reference_char_1
146902 ,xet.reference_char_2
146903 ,xet.reference_char_3
146904 ,xet.reference_char_4
146905 ,xet.reference_date_1
146906 ,xet.reference_date_2
146907 ,xet.reference_date_3
146908 ,xet.reference_date_4
146909 ,xet.event_created_by
146910 ,xet.budgetary_control_flag , l2.LINE_NUMBER
146911 , l2.TRANSACTION_ACCOUNT_ID source_1
146912 , l2.JOURNAL_LINE_TYPE source_2
146913 , l2.ENTERED_AMOUNT source_3
146914 , l2.LINE_ID source_5
146915 , l2.ACCOUNTED_AMOUNT source_11
146916 FROM xla_events_gt xet
146917 , GMF_XLA_EXTRACT_LINES l2
146918 WHERE xet.event_id between x_first_event_id and x_last_event_id
146919 and xet.event_date between p_pad_start_date and p_pad_end_date
146920 and xet.event_type_code = C_EVENT_TYPE_CODE
146921 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
146922 ;
146923
146924 --
146925 BEGIN
146926 IF g_log_enabled THEN
146927 l_log_module := C_DEFAULT_MODULE||'.EventType_270';
146928 END IF;
146929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146930 trace
146931 (p_msg => 'BEGIN of EventType_270'
146932 ,p_level => C_LEVEL_PROCEDURE
146933 ,p_module => l_log_module);
146934 END IF;
146935
146936 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146937 trace
146938 (p_msg => 'p_application_id = '||p_application_id||
146939 ' - p_base_ledger_id = '||p_base_ledger_id||
146940 ' - p_target_ledger_id = '||p_target_ledger_id||
146941 ' - p_language = '||p_language||
146942 ' - p_currency_code = '||p_currency_code||
146943 ' - p_sla_ledger_id = '||p_sla_ledger_id
146944 ,p_level => C_LEVEL_STATEMENT
146945 ,p_module => l_log_module);
146946 END IF;
146947 --
146948 -- initialze arrays
146949 --
146950 g_array_event.DELETE;
146951 l_rec_array_event := l_null_rec_array_event;
146952 --
146953 --------------------------------------
146954 -- 4262811 Initialze MPA Line Number
146955 --------------------------------------
146956 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
146957
146958 --
146959
146960 --
146961 OPEN header_cur;
146962 --
146963 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146964 trace
146965 (p_msg => 'SQL - FETCH header_cur'
146966 ,p_level => C_LEVEL_STATEMENT
146967 ,p_module => l_log_module);
146968 END IF;
146969 --
146970 LOOP
146971 FETCH header_cur BULK COLLECT INTO
146972 l_array_entity_id
146973 , l_array_legal_entity_id
146974 , l_array_entity_code
146975 , l_array_transaction_num
146976 , l_array_event_id
146977 , l_array_class_code
146978 , l_array_event_type
146979 , l_array_event_number
146980 , l_array_event_date
146981 , l_array_transaction_date
146982 , l_array_reference_num_1
146983 , l_array_reference_num_2
146984 , l_array_reference_num_3
146985 , l_array_reference_num_4
146986 , l_array_reference_char_1
146987 , l_array_reference_char_2
146988 , l_array_reference_char_3
146989 , l_array_reference_char_4
146990 , l_array_reference_date_1
146991 , l_array_reference_date_2
146992 , l_array_reference_date_3
146993 , l_array_reference_date_4
146994 , l_array_event_created_by
146995 , l_array_budgetary_control_flag
146996 , l_array_source_6
146997 , l_array_source_7
146998 , l_array_source_8
146999 , l_array_source_9
147000 , l_array_source_10
147001 , l_array_source_12
147002 LIMIT l_rows;
147003 --
147004 IF (C_LEVEL_EVENT >= g_log_level) THEN
147005 trace
147006 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
147007 ,p_level => C_LEVEL_EVENT
147008 ,p_module => l_log_module);
147009 END IF;
147010 --
147011 EXIT WHEN l_array_entity_id.COUNT = 0;
147012
147013 -- initialize arrays
147014 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
147015 XLA_AE_LINES_PKG.g_rec_lines := NULL;
147016
147017 --
147018 -- Bug 4458708
147019 --
147020 XLA_AE_LINES_PKG.g_LineNumber := 0;
147021
147022
147023 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
147024 g_last_hdr_idx := l_array_event_id.LAST;
147025 --
147026 -- loop for the headers. Each iteration is for each header extract row
147027 -- fetched in header cursor
147028 --
147029 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
147030
147031 --
147032 -- set event info as cache for other routines to refer event attributes
147033 --
147034 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147035 (p_application_id => p_application_id
147036 ,p_primary_ledger_id => p_primary_ledger_id
147037 ,p_base_ledger_id => p_base_ledger_id
147038 ,p_target_ledger_id => p_target_ledger_id
147042 ,p_transaction_num => l_array_transaction_num(hdr_idx)
147039 ,p_entity_id => l_array_entity_id(hdr_idx)
147040 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
147041 ,p_entity_code => l_array_entity_code(hdr_idx)
147043 ,p_event_id => l_array_event_id(hdr_idx)
147044 ,p_event_class_code => l_array_class_code(hdr_idx)
147045 ,p_event_type_code => l_array_event_type(hdr_idx)
147046 ,p_event_number => l_array_event_number(hdr_idx)
147047 ,p_event_date => l_array_event_date(hdr_idx)
147048 ,p_transaction_date => l_array_transaction_date(hdr_idx)
147049 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
147050 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
147051 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
147052 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
147053 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
147054 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
147055 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
147056 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
147057 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
147058 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
147059 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
147060 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
147061 ,p_event_created_by => l_array_event_created_by(hdr_idx)
147062 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
147063
147064 --
147065 -- set the status of entry to C_VALID (0)
147066 --
147067 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147068
147069 --
147070 -- initialize a row for ae header
147071 --
147072 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
147073
147074 l_event_id := l_array_event_id(hdr_idx);
147075
147076 --
147077 -- storing the hdr_idx for event. May be used by line cursor.
147078 --
147079 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
147080
147081 --
147082 -- store sources from header extract. This can be improved to
147083 -- store only those sources from header extract that may be used in lines
147084 --
147085
147086 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
147087 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
147088 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
147089 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
147090 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
147091 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
147092
147093 --
147094 -- initilaize the status of ae headers for diffrent balance types
147095 -- the status is initialised to C_NOT_CREATED (2)
147096 --
147097 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147098 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147099 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147100
147101 --
147102 -- call api to validate and store accounting attributes for header
147103 --
147104
147105 ------------------------------------------------------------
147106 -- Accrual Reversal : to get date for Standard Source (NONE)
147107 ------------------------------------------------------------
147108 l_acc_rev_gl_date_source := NULL;
147109
147110 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
147111 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
147112
147113
147114 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
147115
147116 XLA_AE_HEADER_PKG.SetJeCategoryName;
147117
147118 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
147119 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
147120 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
147121 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
147122 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
147123
147124
147125 -- No header level analytical criteria
147126
147127 --
147128 --accounting attribute enhancement, bug 3612931
147129 --
147130 l_trx_reversal_source := SUBSTR(NULL, 1,30);
147131
147132 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
147133 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
147134
147135 xla_accounting_err_pkg.build_message
147136 (p_appli_s_name => 'XLA'
147137 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
147138 ,p_token_1 => 'ACCT_ATTR_NAME'
147139 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
147140 ,p_token_2 => 'PRODUCT_NAME'
147141 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147142 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147143 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
147147 --
147144 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147145
147146 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
147148 -- following sets the accounting attributes needed to reverse
147149 -- accounting for a distributeion
147150 --
147151 xla_ae_lines_pkg.SetTrxReversalAttrs
147152 (p_event_id => l_event_id
147153 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
147154 ,p_trx_reversal_source => l_trx_reversal_source);
147155
147156 END IF;
147157
147158
147159 ----------------------------------------------------------------
147160 -- 4262811 - update the header statuses to invalid in need be
147161 ----------------------------------------------------------------
147162 --
147163 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
147164
147165
147166 -----------------------------------------------
147167 -- No accrual reversal for the event class/type
147168 -----------------------------------------------
147169 ----------------------------------------------------------------
147170
147171 --
147172 -- this ends the header loop iteration for one bulk fetch
147173 --
147174 END LOOP;
147175
147176 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
147177 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
147178
147179 --
147180 -- insert dummy rows into lines gt table that were created due to
147181 -- transaction reversals
147182 --
147183 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
147184 l_result := XLA_AE_LINES_PKG.InsertLines;
147185 END IF;
147186
147187 --
147188 -- reset the temp_line_num for each set of events fetched from header
147189 -- cursor rather than doing it for each new event in line cursor
147190 -- Bug 3939231
147191 --
147192 xla_ae_lines_pkg.g_temp_line_num := 0;
147193
147194
147195
147196 --
147197 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
147198 --
147199 --
147200 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147201
147202 trace
147203 (p_msg => 'SQL - FETCH line_cur'
147204 ,p_level => C_LEVEL_STATEMENT
147205 ,p_module => l_log_module);
147206
147207 END IF;
147208 --
147209 --
147210 LOOP
147211 --
147212 FETCH line_cur BULK COLLECT INTO
147213 l_array_entity_id
147214 , l_array_legal_entity_id
147215 , l_array_entity_code
147216 , l_array_transaction_num
147217 , l_array_event_id
147218 , l_array_class_code
147219 , l_array_event_type
147220 , l_array_event_number
147221 , l_array_event_date
147222 , l_array_transaction_date
147223 , l_array_reference_num_1
147224 , l_array_reference_num_2
147225 , l_array_reference_num_3
147226 , l_array_reference_num_4
147227 , l_array_reference_char_1
147228 , l_array_reference_char_2
147229 , l_array_reference_char_3
147230 , l_array_reference_char_4
147231 , l_array_reference_date_1
147232 , l_array_reference_date_2
147233 , l_array_reference_date_3
147234 , l_array_reference_date_4
147235 , l_array_event_created_by
147236 , l_array_budgetary_control_flag
147237 , l_array_extract_line_num
147238 , l_array_source_1
147239 , l_array_source_2
147240 , l_array_source_3
147241 , l_array_source_5
147242 , l_array_source_11
147243 LIMIT l_rows;
147244
147245 --
147246 IF (C_LEVEL_EVENT >= g_log_level) THEN
147247 trace
147248 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
147249 ,p_level => C_LEVEL_EVENT
147250 ,p_module => l_log_module);
147251 END IF;
147252 --
147253 EXIT WHEN l_array_entity_id.count = 0;
147254
147255 XLA_AE_LINES_PKG.g_rec_lines := null;
147256
147257 --
147258 -- Bug 4458708
147259 --
147260 XLA_AE_LINES_PKG.g_LineNumber := 0;
147261 --
147262 --
147263
147264 FOR Idx IN 1..l_array_event_id.count LOOP
147265 --
147266 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
147267 --
147268 l_event_id := l_array_event_id(idx); -- 5648433
147269
147270 --
147271 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147272 --
147273
147274 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
147275 (g_array_event(l_event_id).array_value_num('header_index'))
147276 ,'N'
147277 ) <> 'Y'
147278 THEN
147279 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147280 trace
147281 (p_msg => 'Trancaction revesal option is not Y '
147282 ,p_level => C_LEVEL_STATEMENT
147283 ,p_module => l_log_module);
147284 END IF;
147285
147286 --
147287 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
147288 --
147289 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147290 --
147291 -- set event info as cache for other routines to refer event attributes
147292 --
147293
147294 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
147298 (p_application_id => p_application_id
147295 l_previous_event_id := l_event_id;
147296
147297 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147299 ,p_primary_ledger_id => p_primary_ledger_id
147300 ,p_base_ledger_id => p_base_ledger_id
147301 ,p_target_ledger_id => p_target_ledger_id
147302 ,p_entity_id => l_array_entity_id(Idx)
147303 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
147304 ,p_entity_code => l_array_entity_code(Idx)
147305 ,p_transaction_num => l_array_transaction_num(Idx)
147306 ,p_event_id => l_array_event_id(Idx)
147307 ,p_event_class_code => l_array_class_code(Idx)
147308 ,p_event_type_code => l_array_event_type(Idx)
147309 ,p_event_number => l_array_event_number(Idx)
147310 ,p_event_date => l_array_event_date(Idx)
147311 ,p_transaction_date => l_array_transaction_date(Idx)
147312 ,p_reference_num_1 => l_array_reference_num_1(Idx)
147313 ,p_reference_num_2 => l_array_reference_num_2(Idx)
147314 ,p_reference_num_3 => l_array_reference_num_3(Idx)
147315 ,p_reference_num_4 => l_array_reference_num_4(Idx)
147316 ,p_reference_char_1 => l_array_reference_char_1(Idx)
147317 ,p_reference_char_2 => l_array_reference_char_2(Idx)
147318 ,p_reference_char_3 => l_array_reference_char_3(Idx)
147319 ,p_reference_char_4 => l_array_reference_char_4(Idx)
147320 ,p_reference_date_1 => l_array_reference_date_1(Idx)
147321 ,p_reference_date_2 => l_array_reference_date_2(Idx)
147322 ,p_reference_date_3 => l_array_reference_date_3(Idx)
147323 ,p_reference_date_4 => l_array_reference_date_4(Idx)
147324 ,p_event_created_by => l_array_event_created_by(Idx)
147325 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
147326 --
147327 END IF;
147328
147329
147330
147331 --
147332 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
147333
147334 l_acct_reversal_source := SUBSTR(NULL, 1,30);
147335
147336 IF l_continue_with_lines THEN
147337 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
147338 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
147339
147340 xla_accounting_err_pkg.build_message
147341 (p_appli_s_name => 'XLA'
147342 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
147343 ,p_token_1 => 'LINE_NUMBER'
147344 ,p_value_1 => l_array_extract_line_num(Idx)
147345 ,p_token_2 => 'PRODUCT_NAME'
147346 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147347 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147348 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
147349 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147350
147351 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
147352 --
147353 -- following sets the accounting attributes needed to reverse
147354 -- accounting for a distributeion
147355 --
147356
147357 --
147358 -- 5217187
147359 --
147360 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
147361 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
147362 g_array_event(l_event_id).array_value_num('header_index'));
147363 --
147364 --
147365
147366 -- No reversal code generated
147367
147368 xla_ae_lines_pkg.SetAcctReversalAttrs
147369 (p_event_id => l_event_id
147370 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
147371 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147372 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
147373 END IF;
147374
147375 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
147376 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
147377
147378 --
147379 AcctLineType_90 (
147380 p_application_id => p_application_id
147381 ,p_event_id => l_event_id
147382 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147383 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147384 ,p_actual_flag => l_actual_flag
147385 ,p_balance_type_code => l_balance_type_code
147386 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147387
147388 , p_source_1 => l_array_source_1(Idx)
147389 , p_source_2 => l_array_source_2(Idx)
147390 , p_source_3 => l_array_source_3(Idx)
147391 , p_source_5 => l_array_source_5(Idx)
147392 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
147393 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147394 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
147395 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
147396 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
147397 , p_source_11 => l_array_source_11(Idx)
147398 );
147399 If(l_balance_type_code = 'A') THEN
147400 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147401 END IF;
147402
147403 --
147404
147405
147406 --
147407 AcctLineType_144 (
147408 p_application_id => p_application_id
147412 ,p_actual_flag => l_actual_flag
147409 ,p_event_id => l_event_id
147410 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147411 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147413 ,p_balance_type_code => l_balance_type_code
147414 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147415
147416 , p_source_1 => l_array_source_1(Idx)
147417 , p_source_2 => l_array_source_2(Idx)
147418 , p_source_3 => l_array_source_3(Idx)
147419 , p_source_5 => l_array_source_5(Idx)
147420 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
147421 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147422 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
147423 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
147424 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
147425 , p_source_11 => l_array_source_11(Idx)
147426 );
147427 If(l_balance_type_code = 'A') THEN
147428 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147429 END IF;
147430
147431 --
147432
147433
147434 --
147435 AcctLineType_207 (
147436 p_application_id => p_application_id
147437 ,p_event_id => l_event_id
147438 ,p_calculate_acctd_flag => l_calculate_acctd_flag
147439 ,p_calculate_g_l_flag => l_calculate_g_l_flag
147440 ,p_actual_flag => l_actual_flag
147441 ,p_balance_type_code => l_balance_type_code
147442 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
147443
147444 , p_source_1 => l_array_source_1(Idx)
147445 , p_source_2 => l_array_source_2(Idx)
147446 , p_source_3 => l_array_source_3(Idx)
147447 , p_source_5 => l_array_source_5(Idx)
147448 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
147449 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
147450 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
147451 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
147452 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
147453 , p_source_11 => l_array_source_11(Idx)
147454 );
147455 If(l_balance_type_code = 'A') THEN
147456 l_actual_gain_loss_ref := l_gain_or_loss_ref;
147457 END IF;
147458
147459 --
147460
147461 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
147462 -- or secondary ledger that has different currency with primary
147463 -- or alc that is calculated by sla
147464 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
147465 (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'))
147466
147467 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
147468 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
147469 AND (l_actual_flag = 'A')) THEN
147470 XLA_AE_LINES_PKG.CreateGainOrLossLines(
147471 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
147472 ,p_application_id => p_application_id
147473 ,p_amb_context_code => 'DEFAULT'
147474 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
147475 ,p_event_class_code => C_EVENT_CLASS_CODE
147476 ,p_event_type_code => C_EVENT_TYPE_CODE
147477
147478 ,p_gain_ccid => -1
147479 ,p_loss_ccid => -1
147480
147481 ,p_actual_flag => l_actual_flag
147482 ,p_enc_flag => null
147483 ,p_actual_g_l_ref => l_actual_gain_loss_ref
147484 ,p_enc_g_l_ref => null
147485 );
147486 END IF;
147487 END IF;
147488 END IF;
147489
147490 ELSE
147491 --
147492 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147493 --
147494 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147495 trace
147496 (p_msg => 'Trancaction revesal option is Y'
147497 ,p_level => C_LEVEL_STATEMENT
147498 ,p_module => l_log_module);
147499 END IF;
147500 END IF;
147501
147502 END LOOP;
147503 l_result := XLA_AE_LINES_PKG.InsertLines ;
147504 end loop;
147505 close line_cur;
147506
147507
147508 --
147509 -- insert headers into xla_ae_headers_gt table
147510 --
147511 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
147512
147513 -- insert into errors table here.
147514
147515 END LOOP;
147516
147517 --
147518 -- 4865292
147519 --
147520 -- Compare g_hdr_extract_count with event count in
147521 -- CreateHeadersAndLines.
147522 --
147523 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
147524
147525 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147526 trace (p_msg => '# rows extracted from header extract objects '
147527 || ' (running total): '
147528 || g_hdr_extract_count
147529 ,p_level => C_LEVEL_STATEMENT
147530 ,p_module => l_log_module);
147531 END IF;
147532
147533 CLOSE header_cur;
147534 --
147535
147536 --
147537 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147538 trace
147539 (p_msg => 'END of EventType_270'
147540 ,p_level => C_LEVEL_PROCEDURE
147541 ,p_module => l_log_module);
147542 END IF;
147543 --
147544 RETURN l_result;
147545 EXCEPTION
147546 WHEN xla_exceptions_pkg.application_exception THEN
147547
147548 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
147552
147549
147550
147551 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
147553 RAISE;
147554
147555 WHEN NO_DATA_FOUND THEN
147556
147557 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
147558 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
147559
147560 FOR header_record IN header_cur
147561 LOOP
147562 l_array_header_events(header_record.event_id) := header_record.event_id;
147563 END LOOP;
147564
147565 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
147566 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
147567
147568 fnd_file.put_line(fnd_file.LOG, ' ');
147569 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
147570 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
147571 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
147572
147573 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
147574 LOOP
147575 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
147576 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
147577 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
147578 END IF;
147579 END LOOP;
147580
147581 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
147582 fnd_file.put_line(fnd_file.LOG, ' ');
147583
147584
147585 xla_exceptions_pkg.raise_message
147586 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_270');
147587
147588
147589 WHEN OTHERS THEN
147590 xla_exceptions_pkg.raise_message
147591 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_270');
147592 END EventType_270;
147593 --
147594
147595 ---------------------------------------
147596 --
147597 -- PRIVATE PROCEDURE
147598 -- insert_sources_271
147599 --
147600 ----------------------------------------
147601 --
147602 PROCEDURE insert_sources_271(
147603 p_target_ledger_id IN NUMBER
147604 , p_language IN VARCHAR2
147605 , p_sla_ledger_id IN NUMBER
147606 , p_pad_start_date IN DATE
147607 , p_pad_end_date IN DATE
147608 )
147609 IS
147610
147611 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
147612 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
147613 p_apps_owner VARCHAR2(30);
147614 l_log_module VARCHAR2(240);
147615 BEGIN
147616 IF g_log_enabled THEN
147617 l_log_module := C_DEFAULT_MODULE||'.insert_sources_271';
147618 END IF;
147619 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147620
147621 trace
147622 (p_msg => 'BEGIN of insert_sources_271'
147623 ,p_level => C_LEVEL_PROCEDURE
147624 ,p_module => l_log_module);
147625
147626 END IF;
147627
147628 -- select APPS owner
147629 SELECT oracle_username
147630 INTO p_apps_owner
147631 FROM fnd_oracle_userid
147632 WHERE read_only_flag = 'U'
147633 ;
147634
147635 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147636 trace
147637 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
147638 ' - p_language = '||p_language||
147639 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
147640 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
147641 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
147642 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
147643 ,p_level => C_LEVEL_STATEMENT
147644 ,p_module => l_log_module);
147645 END IF;
147646
147647
147648 --
147649 INSERT INTO xla_diag_sources --hdr1
147650 (
147651 event_id
147652 , ledger_id
147653 , sla_ledger_id
147654 , description_language
147655 , object_name
147656 , object_type_code
147657 , line_number
147658 , source_application_id
147659 , source_type_code
147660 , source_code
147661 , source_value
147662 , source_meaning
147663 , created_by
147664 , creation_date
147665 , last_update_date
147666 , last_updated_by
147667 , last_update_login
147668 , program_update_date
147669 , program_application_id
147670 , program_id
147671 , request_id
147672 )
147673 SELECT
147674 event_id
147675 , p_target_ledger_id
147676 , p_sla_ledger_id
147677 , p_language
147678 , object_name
147679 , object_type_code
147680 , line_number
147681 , source_application_id
147682 , source_type_code
147683 , source_code
147684 , SUBSTR(source_value ,1,1996)
147685 , SUBSTR(source_meaning,1,200)
147686 , xla_environment_pkg.g_Usr_Id
147687 , TRUNC(SYSDATE)
147688 , TRUNC(SYSDATE)
147689 , xla_environment_pkg.g_Usr_Id
147690 , xla_environment_pkg.g_Login_Id
147691 , TRUNC(SYSDATE)
147692 , xla_environment_pkg.g_Prog_Appl_Id
147693 , xla_environment_pkg.g_Prog_Id
147697 , 0 line_number
147694 , xla_environment_pkg.g_Req_Id
147695 FROM (
147696 SELECT xet.event_id event_id
147698 , CASE r
147699 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
147700 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
147701 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
147702 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
147703 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
147704 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
147705
147706 ELSE null
147707 END object_name
147708 , CASE r
147709 WHEN 1 THEN 'HEADER'
147710 WHEN 2 THEN 'HEADER'
147711 WHEN 3 THEN 'HEADER'
147712 WHEN 4 THEN 'HEADER'
147713 WHEN 5 THEN 'HEADER'
147714 WHEN 6 THEN 'HEADER'
147715
147716 ELSE null
147717 END object_type_code
147718 , CASE r
147719 WHEN 1 THEN '555'
147720 WHEN 2 THEN '555'
147721 WHEN 3 THEN '555'
147722 WHEN 4 THEN '555'
147723 WHEN 5 THEN '555'
147724 WHEN 6 THEN '555'
147725
147726 ELSE null
147727 END source_application_id
147728 , 'S' source_type_code
147729 , CASE r
147730 WHEN 1 THEN 'ENTITY_CODE'
147731 WHEN 2 THEN 'CURRENCY_CODE'
147732 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
147733 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
147734 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
147735 WHEN 6 THEN 'TRANSACTION_DATE'
147736
147737 ELSE null
147738 END source_code
147739 , CASE r
147740 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
147741 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
147742 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
147743 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
147744 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
147745 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
147746
147747 ELSE null
147748 END source_value
147749 , CASE r
147750 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
147751 1010186
147752 ,TO_CHAR(h1.CURRENCY_CODE)
147753 ,'CURRENCY_CODE'
147754 ,'S'
147755 ,555)
147756
147757 ELSE null
147758 END source_meaning
147759 FROM xla_events_gt xet
147760 , GMF_XLA_EXTRACT_HEADERS h1
147761 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
147762 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
147763 AND xet.event_type_code = C_EVENT_TYPE_CODE
147764 AND h1.event_id = xet.event_id
147765
147766 )
147767 ;
147768 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147769
147770 trace
147771 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
147772 ,p_level => C_LEVEL_STATEMENT
147773 ,p_module => l_log_module);
147774
147775 END IF;
147776 --
147777
147778
147779
147780 --
147781 INSERT INTO xla_diag_sources --line1
147782 (
147783 event_id
147784 , ledger_id
147785 , sla_ledger_id
147786 , description_language
147787 , object_name
147788 , object_type_code
147789 , line_number
147790 , source_application_id
147791 , source_type_code
147792 , source_code
147793 , source_value
147794 , source_meaning
147795 , created_by
147796 , creation_date
147797 , last_update_date
147798 , last_updated_by
147799 , last_update_login
147800 , program_update_date
147801 , program_application_id
147802 , program_id
147803 , request_id
147804 )
147805 SELECT event_id
147806 , p_target_ledger_id
147807 , p_sla_ledger_id
147808 , p_language
147809 , object_name
147810 , object_type_code
147811 , line_number
147812 , source_application_id
147813 , source_type_code
147814 , source_code
147815 , SUBSTR(source_value,1,1996)
147816 , SUBSTR(source_meaning,1,200)
147817 , xla_environment_pkg.g_Usr_Id
147818 , TRUNC(SYSDATE)
147819 , TRUNC(SYSDATE)
147820 , xla_environment_pkg.g_Usr_Id
147821 , xla_environment_pkg.g_Login_Id
147822 , TRUNC(SYSDATE)
147823 , xla_environment_pkg.g_Prog_Appl_Id
147824 , xla_environment_pkg.g_Prog_Id
147825 , xla_environment_pkg.g_Req_Id
147826 FROM (
147827 SELECT xet.event_id event_id
147828 , l2.line_number line_number
147829 , CASE r
147830 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
147831 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
147835
147832 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
147833 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
147834 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
147836 ELSE null
147837 END object_name
147838 , CASE r
147839 WHEN 1 THEN 'LINE'
147840 WHEN 2 THEN 'LINE'
147841 WHEN 3 THEN 'LINE'
147842 WHEN 4 THEN 'LINE'
147843 WHEN 5 THEN 'LINE'
147844
147845 ELSE null
147846 END object_type_code
147847 , CASE r
147848 WHEN 1 THEN '555'
147849 WHEN 2 THEN '555'
147850 WHEN 3 THEN '555'
147851 WHEN 4 THEN '555'
147852 WHEN 5 THEN '555'
147853
147854 ELSE null
147855 END source_application_id
147856 , 'S' source_type_code
147857 , CASE r
147858 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
147859 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
147860 WHEN 3 THEN 'ENTERED_AMOUNT'
147861 WHEN 4 THEN 'LINE_ID'
147862 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
147863
147864 ELSE null
147865 END source_code
147866 , CASE r
147867 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
147868 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
147869 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
147870 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
147871 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
147872
147873 ELSE null
147874 END source_value
147875 , null source_meaning
147876 FROM xla_events_gt xet
147877 , GMF_XLA_EXTRACT_LINES l2
147878 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
147879 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
147880 AND xet.event_type_code = C_EVENT_TYPE_CODE
147881 AND l2.event_id = xet.event_id
147882
147883 )
147884 ;
147885 --
147886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147887
147888 trace
147889 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
147890 ,p_level => C_LEVEL_STATEMENT
147891 ,p_module => l_log_module);
147892
147893 END IF;
147894
147895
147896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147897 trace
147898 (p_msg => 'END of insert_sources_271'
147899 ,p_level => C_LEVEL_PROCEDURE
147900 ,p_module => l_log_module);
147901 END IF;
147902 EXCEPTION
147903 WHEN xla_exceptions_pkg.application_exception THEN
147904 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
147905 trace
147906 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
147907 ,p_level => C_LEVEL_EXCEPTION
147908 ,p_module => l_log_module);
147909 END IF;
147910 RAISE;
147911 WHEN OTHERS THEN
147912 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
147913 trace
147914 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
147915 ,p_level => C_LEVEL_EXCEPTION
147916 ,p_module => l_log_module);
147917 END IF;
147918 xla_exceptions_pkg.raise_message
147919 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_271');
147920 END insert_sources_271;
147921 --
147922
147923 ---------------------------------------
147924 --
147925 -- PRIVATE FUNCTION
147926 -- EventType_271
147927 --
147928 ----------------------------------------
147929 --
147930 FUNCTION EventType_271
147931 (p_application_id IN NUMBER
147932 ,p_base_ledger_id IN NUMBER
147933 ,p_target_ledger_id IN NUMBER
147934 ,p_language IN VARCHAR2
147935 ,p_currency_code IN VARCHAR2
147936 ,p_sla_ledger_id IN NUMBER
147937 ,p_pad_start_date IN DATE
147938 ,p_pad_end_date IN DATE
147939 ,p_primary_ledger_id IN NUMBER)
147940 RETURN BOOLEAN IS
147941 --
147942 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP_NO_TP';
147943 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
147944
147945 l_calculate_acctd_flag VARCHAR2(1) :='N';
147946 l_calculate_g_l_flag VARCHAR2(1) :='N';
147947 --
147948 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147949 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147950 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147951 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147952 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147953 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147954 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147955 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147959 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147956 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147957 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147958 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147960 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147961 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147962 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147963 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147964 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147965 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147966 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147967 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147968 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147969 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147970 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
147971 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147972 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
147973 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
147974
147975 l_event_id NUMBER;
147976 l_previous_event_id NUMBER;
147977 l_first_event_id NUMBER;
147978 l_last_event_id NUMBER;
147979
147980 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
147981 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
147982 --
147983 --
147984 l_result BOOLEAN := TRUE;
147985 l_rows NUMBER := 1000;
147986 l_event_type_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment, no Transfer Pricing';
147987 l_event_class_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
147988 l_description VARCHAR2(4000);
147989 l_transaction_reversal NUMBER;
147990 l_ae_header_id NUMBER;
147991 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
147992 l_log_module VARCHAR2(240);
147993 --
147994 l_acct_reversal_source VARCHAR2(30);
147995 l_trx_reversal_source VARCHAR2(30);
147996
147997 l_continue_with_lines BOOLEAN := TRUE;
147998 --
147999 l_acc_rev_gl_date_source DATE; -- 4262811
148000 --
148001 type t_array_event_id is table of number index by binary_integer;
148002
148003 l_rec_array_event t_rec_array_event;
148004 l_null_rec_array_event t_rec_array_event;
148005 l_array_ae_header_id xla_number_array_type;
148006 l_actual_flag VARCHAR2(1) := NULL;
148007 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
148008 l_balance_type_code VARCHAR2(1) :=NULL;
148009 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
148010
148011 --
148012 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
148013 --
148014
148015 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
148016 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
148017 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
148018 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
148019 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148020 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
148021
148022 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
148023 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
148024 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148025 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
148026 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148027
148028 l_array_source_6 t_array_source_6;
148029 l_array_source_7 t_array_source_7;
148030 l_array_source_8 t_array_source_8;
148031 l_array_source_9 t_array_source_9;
148032 l_array_source_10 t_array_source_10;
148033 l_array_source_12 t_array_source_12;
148034
148035 l_array_source_1 t_array_source_1;
148036 l_array_source_2 t_array_source_2;
148037 l_array_source_3 t_array_source_3;
148038 l_array_source_5 t_array_source_5;
148039 l_array_source_11 t_array_source_11;
148040
148041 --
148042 CURSOR header_cur
148043 IS
148044 SELECT /*+ leading(xet) cardinality(xet,1) */
148045 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_NO_TP
148046 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
148047 xet.entity_id
148048 , xet.legal_entity_id
148049 , xet.entity_code
148050 , xet.transaction_number
148051 , xet.event_id
148052 , xet.event_class_code
148053 , xet.event_type_code
148054 , xet.event_number
148055 , xet.event_date
148056 , xet.transaction_date
148057 , xet.reference_num_1
148058 , xet.reference_num_2
148062 , xet.reference_char_2
148059 , xet.reference_num_3
148060 , xet.reference_num_4
148061 , xet.reference_char_1
148063 , xet.reference_char_3
148064 , xet.reference_char_4
148065 , xet.reference_date_1
148066 , xet.reference_date_2
148067 , xet.reference_date_3
148068 , xet.reference_date_4
148069 , xet.event_created_by
148070 , xet.budgetary_control_flag
148071 , h1.ENTITY_CODE source_6
148072 , h1.CURRENCY_CODE source_7
148073 , h1.CURRENCY_CONVERSION_DATE source_8
148074 , h1.CURRENCY_CONVERSION_RATE source_9
148075 , h1.CURRENCY_CONVERSION_TYPE source_10
148076 , h1.TRANSACTION_DATE source_12
148077 FROM xla_events_gt xet
148078 , GMF_XLA_EXTRACT_HEADERS h1
148079 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
148080 and xet.event_type_code = C_EVENT_TYPE_CODE
148081 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
148082
148083 ORDER BY event_id
148084 ;
148085
148086
148087 --
148088 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
148089 IS
148090 SELECT /*+ leading(xet) cardinality(xet,1) */
148091 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_NO_TP
148092 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
148093 xet.entity_id
148094 ,xet.legal_entity_id
148095 ,xet.entity_code
148096 ,xet.transaction_number
148097 ,xet.event_id
148098 ,xet.event_class_code
148099 ,xet.event_type_code
148100 ,xet.event_number
148101 ,xet.event_date
148102 ,xet.transaction_date
148103 ,xet.reference_num_1
148104 ,xet.reference_num_2
148105 ,xet.reference_num_3
148106 ,xet.reference_num_4
148107 ,xet.reference_char_1
148108 ,xet.reference_char_2
148109 ,xet.reference_char_3
148110 ,xet.reference_char_4
148111 ,xet.reference_date_1
148112 ,xet.reference_date_2
148113 ,xet.reference_date_3
148114 ,xet.reference_date_4
148115 ,xet.event_created_by
148116 ,xet.budgetary_control_flag , l2.LINE_NUMBER
148117 , l2.TRANSACTION_ACCOUNT_ID source_1
148118 , l2.JOURNAL_LINE_TYPE source_2
148119 , l2.ENTERED_AMOUNT source_3
148120 , l2.LINE_ID source_5
148121 , l2.ACCOUNTED_AMOUNT source_11
148122 FROM xla_events_gt xet
148123 , GMF_XLA_EXTRACT_LINES l2
148124 WHERE xet.event_id between x_first_event_id and x_last_event_id
148125 and xet.event_date between p_pad_start_date and p_pad_end_date
148126 and xet.event_type_code = C_EVENT_TYPE_CODE
148127 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
148128 ;
148129
148130 --
148131 BEGIN
148132 IF g_log_enabled THEN
148133 l_log_module := C_DEFAULT_MODULE||'.EventType_271';
148134 END IF;
148135 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148136 trace
148137 (p_msg => 'BEGIN of EventType_271'
148138 ,p_level => C_LEVEL_PROCEDURE
148139 ,p_module => l_log_module);
148140 END IF;
148141
148142 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148143 trace
148144 (p_msg => 'p_application_id = '||p_application_id||
148145 ' - p_base_ledger_id = '||p_base_ledger_id||
148146 ' - p_target_ledger_id = '||p_target_ledger_id||
148147 ' - p_language = '||p_language||
148148 ' - p_currency_code = '||p_currency_code||
148149 ' - p_sla_ledger_id = '||p_sla_ledger_id
148150 ,p_level => C_LEVEL_STATEMENT
148151 ,p_module => l_log_module);
148152 END IF;
148153 --
148154 -- initialze arrays
148155 --
148156 g_array_event.DELETE;
148157 l_rec_array_event := l_null_rec_array_event;
148158 --
148159 --------------------------------------
148160 -- 4262811 Initialze MPA Line Number
148161 --------------------------------------
148162 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
148163
148164 --
148165
148166 --
148167 OPEN header_cur;
148168 --
148169 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148170 trace
148171 (p_msg => 'SQL - FETCH header_cur'
148172 ,p_level => C_LEVEL_STATEMENT
148173 ,p_module => l_log_module);
148174 END IF;
148175 --
148176 LOOP
148177 FETCH header_cur BULK COLLECT INTO
148178 l_array_entity_id
148179 , l_array_legal_entity_id
148180 , l_array_entity_code
148181 , l_array_transaction_num
148182 , l_array_event_id
148183 , l_array_class_code
148184 , l_array_event_type
148185 , l_array_event_number
148186 , l_array_event_date
148187 , l_array_transaction_date
148188 , l_array_reference_num_1
148189 , l_array_reference_num_2
148190 , l_array_reference_num_3
148191 , l_array_reference_num_4
148192 , l_array_reference_char_1
148193 , l_array_reference_char_2
148194 , l_array_reference_char_3
148195 , l_array_reference_char_4
148196 , l_array_reference_date_1
148197 , l_array_reference_date_2
148198 , l_array_reference_date_3
148199 , l_array_reference_date_4
148200 , l_array_event_created_by
148201 , l_array_budgetary_control_flag
148202 , l_array_source_6
148203 , l_array_source_7
148204 , l_array_source_8
148205 , l_array_source_9
148206 , l_array_source_10
148207 , l_array_source_12
148208 LIMIT l_rows;
148209 --
148210 IF (C_LEVEL_EVENT >= g_log_level) THEN
148211 trace
148215 END IF;
148212 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
148213 ,p_level => C_LEVEL_EVENT
148214 ,p_module => l_log_module);
148216 --
148217 EXIT WHEN l_array_entity_id.COUNT = 0;
148218
148219 -- initialize arrays
148220 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
148221 XLA_AE_LINES_PKG.g_rec_lines := NULL;
148222
148223 --
148224 -- Bug 4458708
148225 --
148226 XLA_AE_LINES_PKG.g_LineNumber := 0;
148227
148228
148229 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
148230 g_last_hdr_idx := l_array_event_id.LAST;
148231 --
148232 -- loop for the headers. Each iteration is for each header extract row
148233 -- fetched in header cursor
148234 --
148235 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
148236
148237 --
148238 -- set event info as cache for other routines to refer event attributes
148239 --
148240 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
148241 (p_application_id => p_application_id
148242 ,p_primary_ledger_id => p_primary_ledger_id
148243 ,p_base_ledger_id => p_base_ledger_id
148244 ,p_target_ledger_id => p_target_ledger_id
148245 ,p_entity_id => l_array_entity_id(hdr_idx)
148246 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
148247 ,p_entity_code => l_array_entity_code(hdr_idx)
148248 ,p_transaction_num => l_array_transaction_num(hdr_idx)
148249 ,p_event_id => l_array_event_id(hdr_idx)
148250 ,p_event_class_code => l_array_class_code(hdr_idx)
148251 ,p_event_type_code => l_array_event_type(hdr_idx)
148252 ,p_event_number => l_array_event_number(hdr_idx)
148253 ,p_event_date => l_array_event_date(hdr_idx)
148254 ,p_transaction_date => l_array_transaction_date(hdr_idx)
148255 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
148256 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
148257 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
148258 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
148259 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
148260 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
148261 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
148262 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
148263 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
148264 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
148265 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
148266 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
148267 ,p_event_created_by => l_array_event_created_by(hdr_idx)
148268 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
148269
148270 --
148271 -- set the status of entry to C_VALID (0)
148272 --
148273 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
148274
148275 --
148276 -- initialize a row for ae header
148277 --
148278 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
148279
148280 l_event_id := l_array_event_id(hdr_idx);
148281
148282 --
148283 -- storing the hdr_idx for event. May be used by line cursor.
148284 --
148285 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
148286
148287 --
148288 -- store sources from header extract. This can be improved to
148289 -- store only those sources from header extract that may be used in lines
148290 --
148291
148292 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
148293 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
148294 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
148295 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
148296 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
148297 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
148298
148299 --
148300 -- initilaize the status of ae headers for diffrent balance types
148301 -- the status is initialised to C_NOT_CREATED (2)
148302 --
148303 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148304 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148305 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
148306
148307 --
148308 -- call api to validate and store accounting attributes for header
148309 --
148310
148311 ------------------------------------------------------------
148312 -- Accrual Reversal : to get date for Standard Source (NONE)
148313 ------------------------------------------------------------
148314 l_acc_rev_gl_date_source := NULL;
148315
148316 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
148317 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
148318
148319
148320 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
148321
148322 XLA_AE_HEADER_PKG.SetJeCategoryName;
148323
148324 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
148325 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
148326 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
148330
148327 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
148328 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
148329
148331 -- No header level analytical criteria
148332
148333 --
148334 --accounting attribute enhancement, bug 3612931
148335 --
148336 l_trx_reversal_source := SUBSTR(NULL, 1,30);
148337
148338 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
148339 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
148340
148341 xla_accounting_err_pkg.build_message
148342 (p_appli_s_name => 'XLA'
148343 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
148344 ,p_token_1 => 'ACCT_ATTR_NAME'
148345 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
148346 ,p_token_2 => 'PRODUCT_NAME'
148347 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148348 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148349 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
148350 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148351
148352 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
148353 --
148354 -- following sets the accounting attributes needed to reverse
148355 -- accounting for a distributeion
148356 --
148357 xla_ae_lines_pkg.SetTrxReversalAttrs
148358 (p_event_id => l_event_id
148359 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
148360 ,p_trx_reversal_source => l_trx_reversal_source);
148361
148362 END IF;
148363
148364
148365 ----------------------------------------------------------------
148366 -- 4262811 - update the header statuses to invalid in need be
148367 ----------------------------------------------------------------
148368 --
148369 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
148370
148371
148372 -----------------------------------------------
148373 -- No accrual reversal for the event class/type
148374 -----------------------------------------------
148375 ----------------------------------------------------------------
148376
148377 --
148378 -- this ends the header loop iteration for one bulk fetch
148379 --
148380 END LOOP;
148381
148382 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
148383 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
148384
148385 --
148386 -- insert dummy rows into lines gt table that were created due to
148387 -- transaction reversals
148388 --
148389 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
148390 l_result := XLA_AE_LINES_PKG.InsertLines;
148391 END IF;
148392
148393 --
148394 -- reset the temp_line_num for each set of events fetched from header
148395 -- cursor rather than doing it for each new event in line cursor
148396 -- Bug 3939231
148397 --
148398 xla_ae_lines_pkg.g_temp_line_num := 0;
148399
148400
148401
148402 --
148403 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
148404 --
148405 --
148406 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148407
148408 trace
148409 (p_msg => 'SQL - FETCH line_cur'
148410 ,p_level => C_LEVEL_STATEMENT
148411 ,p_module => l_log_module);
148412
148413 END IF;
148414 --
148415 --
148416 LOOP
148417 --
148418 FETCH line_cur BULK COLLECT INTO
148419 l_array_entity_id
148420 , l_array_legal_entity_id
148421 , l_array_entity_code
148422 , l_array_transaction_num
148423 , l_array_event_id
148424 , l_array_class_code
148425 , l_array_event_type
148426 , l_array_event_number
148427 , l_array_event_date
148428 , l_array_transaction_date
148429 , l_array_reference_num_1
148430 , l_array_reference_num_2
148431 , l_array_reference_num_3
148432 , l_array_reference_num_4
148433 , l_array_reference_char_1
148434 , l_array_reference_char_2
148435 , l_array_reference_char_3
148436 , l_array_reference_char_4
148437 , l_array_reference_date_1
148438 , l_array_reference_date_2
148439 , l_array_reference_date_3
148440 , l_array_reference_date_4
148441 , l_array_event_created_by
148442 , l_array_budgetary_control_flag
148443 , l_array_extract_line_num
148444 , l_array_source_1
148445 , l_array_source_2
148446 , l_array_source_3
148447 , l_array_source_5
148448 , l_array_source_11
148449 LIMIT l_rows;
148450
148451 --
148452 IF (C_LEVEL_EVENT >= g_log_level) THEN
148453 trace
148454 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
148455 ,p_level => C_LEVEL_EVENT
148456 ,p_module => l_log_module);
148457 END IF;
148458 --
148459 EXIT WHEN l_array_entity_id.count = 0;
148460
148461 XLA_AE_LINES_PKG.g_rec_lines := null;
148462
148463 --
148464 -- Bug 4458708
148465 --
148466 XLA_AE_LINES_PKG.g_LineNumber := 0;
148467 --
148468 --
148469
148470 FOR Idx IN 1..l_array_event_id.count LOOP
148474 l_event_id := l_array_event_id(idx); -- 5648433
148471 --
148472 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
148473 --
148475
148476 --
148477 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
148478 --
148479
148480 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
148481 (g_array_event(l_event_id).array_value_num('header_index'))
148482 ,'N'
148483 ) <> 'Y'
148484 THEN
148485 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148486 trace
148487 (p_msg => 'Trancaction revesal option is not Y '
148488 ,p_level => C_LEVEL_STATEMENT
148489 ,p_module => l_log_module);
148490 END IF;
148491
148492 --
148493 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
148494 --
148495 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
148496 --
148497 -- set event info as cache for other routines to refer event attributes
148498 --
148499
148500 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
148501 l_previous_event_id := l_event_id;
148502
148503 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
148504 (p_application_id => p_application_id
148505 ,p_primary_ledger_id => p_primary_ledger_id
148506 ,p_base_ledger_id => p_base_ledger_id
148507 ,p_target_ledger_id => p_target_ledger_id
148508 ,p_entity_id => l_array_entity_id(Idx)
148509 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
148510 ,p_entity_code => l_array_entity_code(Idx)
148511 ,p_transaction_num => l_array_transaction_num(Idx)
148512 ,p_event_id => l_array_event_id(Idx)
148513 ,p_event_class_code => l_array_class_code(Idx)
148514 ,p_event_type_code => l_array_event_type(Idx)
148515 ,p_event_number => l_array_event_number(Idx)
148516 ,p_event_date => l_array_event_date(Idx)
148517 ,p_transaction_date => l_array_transaction_date(Idx)
148518 ,p_reference_num_1 => l_array_reference_num_1(Idx)
148519 ,p_reference_num_2 => l_array_reference_num_2(Idx)
148520 ,p_reference_num_3 => l_array_reference_num_3(Idx)
148521 ,p_reference_num_4 => l_array_reference_num_4(Idx)
148522 ,p_reference_char_1 => l_array_reference_char_1(Idx)
148523 ,p_reference_char_2 => l_array_reference_char_2(Idx)
148524 ,p_reference_char_3 => l_array_reference_char_3(Idx)
148525 ,p_reference_char_4 => l_array_reference_char_4(Idx)
148526 ,p_reference_date_1 => l_array_reference_date_1(Idx)
148527 ,p_reference_date_2 => l_array_reference_date_2(Idx)
148528 ,p_reference_date_3 => l_array_reference_date_3(Idx)
148529 ,p_reference_date_4 => l_array_reference_date_4(Idx)
148530 ,p_event_created_by => l_array_event_created_by(Idx)
148531 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
148532 --
148533 END IF;
148534
148535
148536
148537 --
148538 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
148539
148540 l_acct_reversal_source := SUBSTR(NULL, 1,30);
148541
148542 IF l_continue_with_lines THEN
148543 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
148544 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
148545
148546 xla_accounting_err_pkg.build_message
148547 (p_appli_s_name => 'XLA'
148548 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
148549 ,p_token_1 => 'LINE_NUMBER'
148550 ,p_value_1 => l_array_extract_line_num(Idx)
148551 ,p_token_2 => 'PRODUCT_NAME'
148552 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148553 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148554 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
148555 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148556
148557 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
148558 --
148559 -- following sets the accounting attributes needed to reverse
148560 -- accounting for a distributeion
148561 --
148562
148563 --
148564 -- 5217187
148565 --
148566 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
148567 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
148568 g_array_event(l_event_id).array_value_num('header_index'));
148569 --
148570 --
148571
148572 -- No reversal code generated
148573
148574 xla_ae_lines_pkg.SetAcctReversalAttrs
148575 (p_event_id => l_event_id
148576 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
148577 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148578 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
148579 END IF;
148580
148581 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
148582 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
148583
148584 --
148585 AcctLineType_114 (
148586 p_application_id => p_application_id
148587 ,p_event_id => l_event_id
148591 ,p_balance_type_code => l_balance_type_code
148588 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148589 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148590 ,p_actual_flag => l_actual_flag
148592 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148593
148594 , p_source_1 => l_array_source_1(Idx)
148595 , p_source_2 => l_array_source_2(Idx)
148596 , p_source_3 => l_array_source_3(Idx)
148597 , p_source_5 => l_array_source_5(Idx)
148598 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148599 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148600 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148601 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148602 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148603 , p_source_11 => l_array_source_11(Idx)
148604 );
148605 If(l_balance_type_code = 'A') THEN
148606 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148607 END IF;
148608
148609 --
148610
148611
148612 --
148613 AcctLineType_129 (
148614 p_application_id => p_application_id
148615 ,p_event_id => l_event_id
148616 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148617 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148618 ,p_actual_flag => l_actual_flag
148619 ,p_balance_type_code => l_balance_type_code
148620 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148621
148622 , p_source_1 => l_array_source_1(Idx)
148623 , p_source_2 => l_array_source_2(Idx)
148624 , p_source_3 => l_array_source_3(Idx)
148625 , p_source_5 => l_array_source_5(Idx)
148626 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148627 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148628 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148629 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148630 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148631 , p_source_11 => l_array_source_11(Idx)
148632 );
148633 If(l_balance_type_code = 'A') THEN
148634 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148635 END IF;
148636
148637 --
148638
148639
148640 --
148641 AcctLineType_174 (
148642 p_application_id => p_application_id
148643 ,p_event_id => l_event_id
148644 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148645 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148646 ,p_actual_flag => l_actual_flag
148647 ,p_balance_type_code => l_balance_type_code
148648 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148649
148650 , p_source_1 => l_array_source_1(Idx)
148651 , p_source_2 => l_array_source_2(Idx)
148652 , p_source_3 => l_array_source_3(Idx)
148653 , p_source_5 => l_array_source_5(Idx)
148654 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148655 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148656 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148657 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148658 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148659 , p_source_11 => l_array_source_11(Idx)
148660 );
148661 If(l_balance_type_code = 'A') THEN
148662 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148663 END IF;
148664
148665 --
148666
148667
148668 --
148669 AcctLineType_211 (
148670 p_application_id => p_application_id
148671 ,p_event_id => l_event_id
148672 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148673 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148674 ,p_actual_flag => l_actual_flag
148675 ,p_balance_type_code => l_balance_type_code
148676 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148677
148678 , p_source_1 => l_array_source_1(Idx)
148679 , p_source_2 => l_array_source_2(Idx)
148680 , p_source_3 => l_array_source_3(Idx)
148681 , p_source_5 => l_array_source_5(Idx)
148682 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148683 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148684 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148685 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148686 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148687 , p_source_11 => l_array_source_11(Idx)
148688 );
148689 If(l_balance_type_code = 'A') THEN
148690 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148691 END IF;
148692
148693 --
148694
148695
148696 --
148697 AcctLineType_217 (
148698 p_application_id => p_application_id
148699 ,p_event_id => l_event_id
148700 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148701 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148702 ,p_actual_flag => l_actual_flag
148703 ,p_balance_type_code => l_balance_type_code
148704 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148705
148706 , p_source_1 => l_array_source_1(Idx)
148707 , p_source_2 => l_array_source_2(Idx)
148708 , p_source_3 => l_array_source_3(Idx)
148709 , p_source_5 => l_array_source_5(Idx)
148710 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148711 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148712 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148713 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148714 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148715 , p_source_11 => l_array_source_11(Idx)
148716 );
148717 If(l_balance_type_code = 'A') THEN
148718 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148719 END IF;
148720
148724 --
148721 --
148722
148723
148725 AcctLineType_226 (
148726 p_application_id => p_application_id
148727 ,p_event_id => l_event_id
148728 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148729 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148730 ,p_actual_flag => l_actual_flag
148731 ,p_balance_type_code => l_balance_type_code
148732 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148733
148734 , p_source_1 => l_array_source_1(Idx)
148735 , p_source_2 => l_array_source_2(Idx)
148736 , p_source_3 => l_array_source_3(Idx)
148737 , p_source_5 => l_array_source_5(Idx)
148738 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148739 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148740 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148741 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148742 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148743 , p_source_11 => l_array_source_11(Idx)
148744 );
148745 If(l_balance_type_code = 'A') THEN
148746 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148747 END IF;
148748
148749 --
148750
148751
148752 --
148753 AcctLineType_245 (
148754 p_application_id => p_application_id
148755 ,p_event_id => l_event_id
148756 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148757 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148758 ,p_actual_flag => l_actual_flag
148759 ,p_balance_type_code => l_balance_type_code
148760 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148761
148762 , p_source_1 => l_array_source_1(Idx)
148763 , p_source_2 => l_array_source_2(Idx)
148764 , p_source_3 => l_array_source_3(Idx)
148765 , p_source_5 => l_array_source_5(Idx)
148766 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
148767 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148768 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
148769 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148770 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
148771 , p_source_11 => l_array_source_11(Idx)
148772 );
148773 If(l_balance_type_code = 'A') THEN
148774 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148775 END IF;
148776
148777 --
148778
148779 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
148780 -- or secondary ledger that has different currency with primary
148781 -- or alc that is calculated by sla
148782 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
148783 (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'))
148784
148785 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
148786 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
148787 AND (l_actual_flag = 'A')) THEN
148788 XLA_AE_LINES_PKG.CreateGainOrLossLines(
148789 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
148790 ,p_application_id => p_application_id
148791 ,p_amb_context_code => 'DEFAULT'
148792 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
148793 ,p_event_class_code => C_EVENT_CLASS_CODE
148794 ,p_event_type_code => C_EVENT_TYPE_CODE
148795
148796 ,p_gain_ccid => -1
148797 ,p_loss_ccid => -1
148798
148799 ,p_actual_flag => l_actual_flag
148800 ,p_enc_flag => null
148801 ,p_actual_g_l_ref => l_actual_gain_loss_ref
148802 ,p_enc_g_l_ref => null
148803 );
148804 END IF;
148805 END IF;
148806 END IF;
148807
148808 ELSE
148809 --
148810 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
148811 --
148812 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148813 trace
148814 (p_msg => 'Trancaction revesal option is Y'
148815 ,p_level => C_LEVEL_STATEMENT
148816 ,p_module => l_log_module);
148817 END IF;
148818 END IF;
148819
148820 END LOOP;
148821 l_result := XLA_AE_LINES_PKG.InsertLines ;
148822 end loop;
148823 close line_cur;
148824
148825
148826 --
148827 -- insert headers into xla_ae_headers_gt table
148828 --
148829 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
148830
148831 -- insert into errors table here.
148832
148833 END LOOP;
148834
148835 --
148836 -- 4865292
148837 --
148838 -- Compare g_hdr_extract_count with event count in
148839 -- CreateHeadersAndLines.
148840 --
148841 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
148842
148843 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148844 trace (p_msg => '# rows extracted from header extract objects '
148845 || ' (running total): '
148846 || g_hdr_extract_count
148847 ,p_level => C_LEVEL_STATEMENT
148848 ,p_module => l_log_module);
148849 END IF;
148850
148851 CLOSE header_cur;
148852 --
148853
148854 --
148855 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148856 trace
148857 (p_msg => 'END of EventType_271'
148858 ,p_level => C_LEVEL_PROCEDURE
148862 RETURN l_result;
148859 ,p_module => l_log_module);
148860 END IF;
148861 --
148863 EXCEPTION
148864 WHEN xla_exceptions_pkg.application_exception THEN
148865
148866 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
148867
148868
148869 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
148870
148871 RAISE;
148872
148873 WHEN NO_DATA_FOUND THEN
148874
148875 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
148876 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
148877
148878 FOR header_record IN header_cur
148879 LOOP
148880 l_array_header_events(header_record.event_id) := header_record.event_id;
148881 END LOOP;
148882
148883 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
148884 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
148885
148886 fnd_file.put_line(fnd_file.LOG, ' ');
148887 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
148888 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
148889 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
148890
148891 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
148892 LOOP
148893 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
148894 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
148895 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
148896 END IF;
148897 END LOOP;
148898
148899 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
148900 fnd_file.put_line(fnd_file.LOG, ' ');
148901
148902
148903 xla_exceptions_pkg.raise_message
148904 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_271');
148905
148906
148907 WHEN OTHERS THEN
148908 xla_exceptions_pkg.raise_message
148909 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_271');
148910 END EventType_271;
148911 --
148912
148913 ---------------------------------------
148914 --
148915 -- PRIVATE PROCEDURE
148916 -- insert_sources_272
148917 --
148918 ----------------------------------------
148919 --
148920 PROCEDURE insert_sources_272(
148921 p_target_ledger_id IN NUMBER
148922 , p_language IN VARCHAR2
148923 , p_sla_ledger_id IN NUMBER
148924 , p_pad_start_date IN DATE
148925 , p_pad_end_date IN DATE
148926 )
148927 IS
148928
148929 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP_TP';
148930 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
148931 p_apps_owner VARCHAR2(30);
148932 l_log_module VARCHAR2(240);
148933 BEGIN
148934 IF g_log_enabled THEN
148935 l_log_module := C_DEFAULT_MODULE||'.insert_sources_272';
148936 END IF;
148937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148938
148939 trace
148940 (p_msg => 'BEGIN of insert_sources_272'
148941 ,p_level => C_LEVEL_PROCEDURE
148942 ,p_module => l_log_module);
148943
148944 END IF;
148945
148946 -- select APPS owner
148947 SELECT oracle_username
148948 INTO p_apps_owner
148949 FROM fnd_oracle_userid
148950 WHERE read_only_flag = 'U'
148951 ;
148952
148953 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148954 trace
148955 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
148956 ' - p_language = '||p_language||
148957 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
148958 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
148959 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
148960 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
148961 ,p_level => C_LEVEL_STATEMENT
148962 ,p_module => l_log_module);
148963 END IF;
148964
148965
148966 --
148967 INSERT INTO xla_diag_sources --hdr1
148968 (
148969 event_id
148970 , ledger_id
148971 , sla_ledger_id
148972 , description_language
148973 , object_name
148974 , object_type_code
148975 , line_number
148976 , source_application_id
148977 , source_type_code
148978 , source_code
148979 , source_value
148980 , source_meaning
148981 , created_by
148982 , creation_date
148983 , last_update_date
148984 , last_updated_by
148985 , last_update_login
148986 , program_update_date
148987 , program_application_id
148988 , program_id
148989 , request_id
148990 )
148991 SELECT
148992 event_id
148993 , p_target_ledger_id
148994 , p_sla_ledger_id
148995 , p_language
148996 , object_name
148997 , object_type_code
148998 , line_number
148999 , source_application_id
149000 , source_type_code
149001 , source_code
149002 , SUBSTR(source_value ,1,1996)
149003 , SUBSTR(source_meaning,1,200)
149007 , xla_environment_pkg.g_Usr_Id
149004 , xla_environment_pkg.g_Usr_Id
149005 , TRUNC(SYSDATE)
149006 , TRUNC(SYSDATE)
149008 , xla_environment_pkg.g_Login_Id
149009 , TRUNC(SYSDATE)
149010 , xla_environment_pkg.g_Prog_Appl_Id
149011 , xla_environment_pkg.g_Prog_Id
149012 , xla_environment_pkg.g_Req_Id
149013 FROM (
149014 SELECT xet.event_id event_id
149015 , 0 line_number
149016 , CASE r
149017 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
149018 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
149019 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
149020 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
149021 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
149022 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
149023
149024 ELSE null
149025 END object_name
149026 , CASE r
149027 WHEN 1 THEN 'HEADER'
149028 WHEN 2 THEN 'HEADER'
149029 WHEN 3 THEN 'HEADER'
149030 WHEN 4 THEN 'HEADER'
149031 WHEN 5 THEN 'HEADER'
149032 WHEN 6 THEN 'HEADER'
149033
149034 ELSE null
149035 END object_type_code
149036 , CASE r
149037 WHEN 1 THEN '555'
149038 WHEN 2 THEN '555'
149039 WHEN 3 THEN '555'
149040 WHEN 4 THEN '555'
149041 WHEN 5 THEN '555'
149042 WHEN 6 THEN '555'
149043
149044 ELSE null
149045 END source_application_id
149046 , 'S' source_type_code
149047 , CASE r
149048 WHEN 1 THEN 'ENTITY_CODE'
149049 WHEN 2 THEN 'CURRENCY_CODE'
149050 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
149051 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
149052 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
149053 WHEN 6 THEN 'TRANSACTION_DATE'
149054
149055 ELSE null
149056 END source_code
149057 , CASE r
149058 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
149059 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
149060 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
149061 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
149062 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
149063 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
149064
149065 ELSE null
149066 END source_value
149067 , CASE r
149068 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
149069 1010186
149070 ,TO_CHAR(h1.CURRENCY_CODE)
149071 ,'CURRENCY_CODE'
149072 ,'S'
149073 ,555)
149074
149075 ELSE null
149076 END source_meaning
149077 FROM xla_events_gt xet
149078 , GMF_XLA_EXTRACT_HEADERS h1
149079 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
149080 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
149081 AND xet.event_type_code = C_EVENT_TYPE_CODE
149082 AND h1.event_id = xet.event_id
149083
149084 )
149085 ;
149086 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149087
149088 trace
149089 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
149090 ,p_level => C_LEVEL_STATEMENT
149091 ,p_module => l_log_module);
149092
149093 END IF;
149094 --
149095
149096
149097
149098 --
149099 INSERT INTO xla_diag_sources --line1
149100 (
149101 event_id
149102 , ledger_id
149103 , sla_ledger_id
149104 , description_language
149105 , object_name
149106 , object_type_code
149107 , line_number
149108 , source_application_id
149109 , source_type_code
149110 , source_code
149111 , source_value
149112 , source_meaning
149113 , created_by
149114 , creation_date
149115 , last_update_date
149116 , last_updated_by
149117 , last_update_login
149118 , program_update_date
149119 , program_application_id
149120 , program_id
149121 , request_id
149122 )
149123 SELECT event_id
149124 , p_target_ledger_id
149125 , p_sla_ledger_id
149126 , p_language
149127 , object_name
149128 , object_type_code
149129 , line_number
149130 , source_application_id
149131 , source_type_code
149132 , source_code
149133 , SUBSTR(source_value,1,1996)
149134 , SUBSTR(source_meaning,1,200)
149135 , xla_environment_pkg.g_Usr_Id
149136 , TRUNC(SYSDATE)
149137 , TRUNC(SYSDATE)
149138 , xla_environment_pkg.g_Usr_Id
149139 , xla_environment_pkg.g_Login_Id
149140 , TRUNC(SYSDATE)
149141 , xla_environment_pkg.g_Prog_Appl_Id
149142 , xla_environment_pkg.g_Prog_Id
149146 , l2.line_number line_number
149143 , xla_environment_pkg.g_Req_Id
149144 FROM (
149145 SELECT xet.event_id event_id
149147 , CASE r
149148 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
149149 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
149150 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
149151 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
149152 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
149153
149154 ELSE null
149155 END object_name
149156 , CASE r
149157 WHEN 1 THEN 'LINE'
149158 WHEN 2 THEN 'LINE'
149159 WHEN 3 THEN 'LINE'
149160 WHEN 4 THEN 'LINE'
149161 WHEN 5 THEN 'LINE'
149162
149163 ELSE null
149164 END object_type_code
149165 , CASE r
149166 WHEN 1 THEN '555'
149167 WHEN 2 THEN '555'
149168 WHEN 3 THEN '555'
149169 WHEN 4 THEN '555'
149170 WHEN 5 THEN '555'
149171
149172 ELSE null
149173 END source_application_id
149174 , 'S' source_type_code
149175 , CASE r
149176 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
149177 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
149178 WHEN 3 THEN 'ENTERED_AMOUNT'
149179 WHEN 4 THEN 'LINE_ID'
149180 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
149181
149182 ELSE null
149183 END source_code
149184 , CASE r
149185 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
149186 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
149187 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
149188 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
149189 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
149190
149191 ELSE null
149192 END source_value
149193 , null source_meaning
149194 FROM xla_events_gt xet
149195 , GMF_XLA_EXTRACT_LINES l2
149196 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
149197 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
149198 AND xet.event_type_code = C_EVENT_TYPE_CODE
149199 AND l2.event_id = xet.event_id
149200
149201 )
149202 ;
149203 --
149204 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149205
149206 trace
149207 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
149208 ,p_level => C_LEVEL_STATEMENT
149209 ,p_module => l_log_module);
149210
149211 END IF;
149212
149213
149214 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149215 trace
149216 (p_msg => 'END of insert_sources_272'
149217 ,p_level => C_LEVEL_PROCEDURE
149218 ,p_module => l_log_module);
149219 END IF;
149220 EXCEPTION
149221 WHEN xla_exceptions_pkg.application_exception THEN
149222 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
149223 trace
149224 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
149225 ,p_level => C_LEVEL_EXCEPTION
149226 ,p_module => l_log_module);
149227 END IF;
149228 RAISE;
149229 WHEN OTHERS THEN
149230 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
149231 trace
149232 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
149233 ,p_level => C_LEVEL_EXCEPTION
149234 ,p_module => l_log_module);
149235 END IF;
149236 xla_exceptions_pkg.raise_message
149237 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_272');
149238 END insert_sources_272;
149239 --
149240
149241 ---------------------------------------
149242 --
149243 -- PRIVATE FUNCTION
149244 -- EventType_272
149245 --
149246 ----------------------------------------
149247 --
149248 FUNCTION EventType_272
149249 (p_application_id IN NUMBER
149250 ,p_base_ledger_id IN NUMBER
149251 ,p_target_ledger_id IN NUMBER
149252 ,p_language IN VARCHAR2
149253 ,p_currency_code IN VARCHAR2
149254 ,p_sla_ledger_id IN NUMBER
149255 ,p_pad_start_date IN DATE
149256 ,p_pad_end_date IN DATE
149257 ,p_primary_ledger_id IN NUMBER)
149258 RETURN BOOLEAN IS
149259 --
149260 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP_TP';
149261 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
149262
149263 l_calculate_acctd_flag VARCHAR2(1) :='N';
149264 l_calculate_g_l_flag VARCHAR2(1) :='N';
149265 --
149266 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149267 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149268 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149269 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149270 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149271 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149275 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149272 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149273 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149274 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149276 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149277 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149278 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149279 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
149280 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149281 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149282 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149283 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
149284 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149285 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149286 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149287 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
149288 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
149289 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
149290 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
149291 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
149292
149293 l_event_id NUMBER;
149294 l_previous_event_id NUMBER;
149295 l_first_event_id NUMBER;
149296 l_last_event_id NUMBER;
149297
149298 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
149299 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
149300 --
149301 --
149302 l_result BOOLEAN := TRUE;
149303 l_rows NUMBER := 1000;
149304 l_event_type_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment, Transfer Pricing';
149305 l_event_class_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
149306 l_description VARCHAR2(4000);
149307 l_transaction_reversal NUMBER;
149308 l_ae_header_id NUMBER;
149309 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
149310 l_log_module VARCHAR2(240);
149311 --
149312 l_acct_reversal_source VARCHAR2(30);
149313 l_trx_reversal_source VARCHAR2(30);
149314
149315 l_continue_with_lines BOOLEAN := TRUE;
149316 --
149317 l_acc_rev_gl_date_source DATE; -- 4262811
149318 --
149319 type t_array_event_id is table of number index by binary_integer;
149320
149321 l_rec_array_event t_rec_array_event;
149322 l_null_rec_array_event t_rec_array_event;
149323 l_array_ae_header_id xla_number_array_type;
149324 l_actual_flag VARCHAR2(1) := NULL;
149325 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
149326 l_balance_type_code VARCHAR2(1) :=NULL;
149327 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
149328
149329 --
149330 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
149331 --
149332
149333 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
149334 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
149335 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
149336 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
149337 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
149338 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
149339
149340 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
149341 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
149342 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
149343 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
149344 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
149345
149346 l_array_source_6 t_array_source_6;
149347 l_array_source_7 t_array_source_7;
149348 l_array_source_8 t_array_source_8;
149349 l_array_source_9 t_array_source_9;
149350 l_array_source_10 t_array_source_10;
149351 l_array_source_12 t_array_source_12;
149352
149353 l_array_source_1 t_array_source_1;
149354 l_array_source_2 t_array_source_2;
149355 l_array_source_3 t_array_source_3;
149356 l_array_source_5 t_array_source_5;
149357 l_array_source_11 t_array_source_11;
149358
149359 --
149360 CURSOR header_cur
149361 IS
149362 SELECT /*+ leading(xet) cardinality(xet,1) */
149363 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_TP
149364 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
149365 xet.entity_id
149366 , xet.legal_entity_id
149367 , xet.entity_code
149368 , xet.transaction_number
149369 , xet.event_id
149373 , xet.event_date
149370 , xet.event_class_code
149371 , xet.event_type_code
149372 , xet.event_number
149374 , xet.transaction_date
149375 , xet.reference_num_1
149376 , xet.reference_num_2
149377 , xet.reference_num_3
149378 , xet.reference_num_4
149379 , xet.reference_char_1
149380 , xet.reference_char_2
149381 , xet.reference_char_3
149382 , xet.reference_char_4
149383 , xet.reference_date_1
149384 , xet.reference_date_2
149385 , xet.reference_date_3
149386 , xet.reference_date_4
149387 , xet.event_created_by
149388 , xet.budgetary_control_flag
149389 , h1.ENTITY_CODE source_6
149390 , h1.CURRENCY_CODE source_7
149391 , h1.CURRENCY_CONVERSION_DATE source_8
149392 , h1.CURRENCY_CONVERSION_RATE source_9
149393 , h1.CURRENCY_CONVERSION_TYPE source_10
149394 , h1.TRANSACTION_DATE source_12
149395 FROM xla_events_gt xet
149396 , GMF_XLA_EXTRACT_HEADERS h1
149397 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
149398 and xet.event_type_code = C_EVENT_TYPE_CODE
149399 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
149400
149401 ORDER BY event_id
149402 ;
149403
149404
149405 --
149406 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
149407 IS
149408 SELECT /*+ leading(xet) cardinality(xet,1) */
149409 -- Event Type Code: FOB_SHIP_RECIPIENT_SHIP_TP
149410 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
149411 xet.entity_id
149412 ,xet.legal_entity_id
149413 ,xet.entity_code
149414 ,xet.transaction_number
149415 ,xet.event_id
149416 ,xet.event_class_code
149417 ,xet.event_type_code
149418 ,xet.event_number
149419 ,xet.event_date
149420 ,xet.transaction_date
149421 ,xet.reference_num_1
149422 ,xet.reference_num_2
149423 ,xet.reference_num_3
149424 ,xet.reference_num_4
149425 ,xet.reference_char_1
149426 ,xet.reference_char_2
149427 ,xet.reference_char_3
149428 ,xet.reference_char_4
149429 ,xet.reference_date_1
149430 ,xet.reference_date_2
149431 ,xet.reference_date_3
149432 ,xet.reference_date_4
149433 ,xet.event_created_by
149434 ,xet.budgetary_control_flag , l2.LINE_NUMBER
149435 , l2.TRANSACTION_ACCOUNT_ID source_1
149436 , l2.JOURNAL_LINE_TYPE source_2
149437 , l2.ENTERED_AMOUNT source_3
149438 , l2.LINE_ID source_5
149439 , l2.ACCOUNTED_AMOUNT source_11
149440 FROM xla_events_gt xet
149441 , GMF_XLA_EXTRACT_LINES l2
149442 WHERE xet.event_id between x_first_event_id and x_last_event_id
149443 and xet.event_date between p_pad_start_date and p_pad_end_date
149444 and xet.event_type_code = C_EVENT_TYPE_CODE
149445 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
149446 ;
149447
149448 --
149449 BEGIN
149450 IF g_log_enabled THEN
149451 l_log_module := C_DEFAULT_MODULE||'.EventType_272';
149452 END IF;
149453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149454 trace
149455 (p_msg => 'BEGIN of EventType_272'
149456 ,p_level => C_LEVEL_PROCEDURE
149457 ,p_module => l_log_module);
149458 END IF;
149459
149460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149461 trace
149462 (p_msg => 'p_application_id = '||p_application_id||
149463 ' - p_base_ledger_id = '||p_base_ledger_id||
149464 ' - p_target_ledger_id = '||p_target_ledger_id||
149465 ' - p_language = '||p_language||
149466 ' - p_currency_code = '||p_currency_code||
149467 ' - p_sla_ledger_id = '||p_sla_ledger_id
149468 ,p_level => C_LEVEL_STATEMENT
149469 ,p_module => l_log_module);
149470 END IF;
149471 --
149472 -- initialze arrays
149473 --
149474 g_array_event.DELETE;
149475 l_rec_array_event := l_null_rec_array_event;
149476 --
149477 --------------------------------------
149478 -- 4262811 Initialze MPA Line Number
149479 --------------------------------------
149480 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
149481
149482 --
149483
149484 --
149485 OPEN header_cur;
149486 --
149487 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149488 trace
149489 (p_msg => 'SQL - FETCH header_cur'
149490 ,p_level => C_LEVEL_STATEMENT
149491 ,p_module => l_log_module);
149492 END IF;
149493 --
149494 LOOP
149495 FETCH header_cur BULK COLLECT INTO
149496 l_array_entity_id
149497 , l_array_legal_entity_id
149498 , l_array_entity_code
149499 , l_array_transaction_num
149500 , l_array_event_id
149501 , l_array_class_code
149502 , l_array_event_type
149503 , l_array_event_number
149504 , l_array_event_date
149505 , l_array_transaction_date
149506 , l_array_reference_num_1
149507 , l_array_reference_num_2
149508 , l_array_reference_num_3
149509 , l_array_reference_num_4
149510 , l_array_reference_char_1
149511 , l_array_reference_char_2
149512 , l_array_reference_char_3
149513 , l_array_reference_char_4
149514 , l_array_reference_date_1
149515 , l_array_reference_date_2
149516 , l_array_reference_date_3
149517 , l_array_reference_date_4
149518 , l_array_event_created_by
149519 , l_array_budgetary_control_flag
149520 , l_array_source_6
149521 , l_array_source_7
149522 , l_array_source_8
149526 LIMIT l_rows;
149523 , l_array_source_9
149524 , l_array_source_10
149525 , l_array_source_12
149527 --
149528 IF (C_LEVEL_EVENT >= g_log_level) THEN
149529 trace
149530 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
149531 ,p_level => C_LEVEL_EVENT
149532 ,p_module => l_log_module);
149533 END IF;
149534 --
149535 EXIT WHEN l_array_entity_id.COUNT = 0;
149536
149537 -- initialize arrays
149538 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
149539 XLA_AE_LINES_PKG.g_rec_lines := NULL;
149540
149541 --
149542 -- Bug 4458708
149543 --
149544 XLA_AE_LINES_PKG.g_LineNumber := 0;
149545
149546
149547 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
149548 g_last_hdr_idx := l_array_event_id.LAST;
149549 --
149550 -- loop for the headers. Each iteration is for each header extract row
149551 -- fetched in header cursor
149552 --
149553 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
149554
149555 --
149556 -- set event info as cache for other routines to refer event attributes
149557 --
149558 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149559 (p_application_id => p_application_id
149560 ,p_primary_ledger_id => p_primary_ledger_id
149561 ,p_base_ledger_id => p_base_ledger_id
149562 ,p_target_ledger_id => p_target_ledger_id
149563 ,p_entity_id => l_array_entity_id(hdr_idx)
149564 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
149565 ,p_entity_code => l_array_entity_code(hdr_idx)
149566 ,p_transaction_num => l_array_transaction_num(hdr_idx)
149567 ,p_event_id => l_array_event_id(hdr_idx)
149568 ,p_event_class_code => l_array_class_code(hdr_idx)
149569 ,p_event_type_code => l_array_event_type(hdr_idx)
149570 ,p_event_number => l_array_event_number(hdr_idx)
149571 ,p_event_date => l_array_event_date(hdr_idx)
149572 ,p_transaction_date => l_array_transaction_date(hdr_idx)
149573 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
149574 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
149575 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
149576 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
149577 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
149578 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
149579 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
149580 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
149581 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
149582 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
149583 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
149584 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
149585 ,p_event_created_by => l_array_event_created_by(hdr_idx)
149586 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
149587
149588 --
149589 -- set the status of entry to C_VALID (0)
149590 --
149591 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149592
149593 --
149594 -- initialize a row for ae header
149595 --
149596 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
149597
149598 l_event_id := l_array_event_id(hdr_idx);
149599
149600 --
149601 -- storing the hdr_idx for event. May be used by line cursor.
149602 --
149603 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
149604
149605 --
149606 -- store sources from header extract. This can be improved to
149607 -- store only those sources from header extract that may be used in lines
149608 --
149609
149610 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
149611 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
149612 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
149613 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
149614 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
149615 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
149616
149617 --
149618 -- initilaize the status of ae headers for diffrent balance types
149619 -- the status is initialised to C_NOT_CREATED (2)
149620 --
149621 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149622 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149623 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149624
149625 --
149626 -- call api to validate and store accounting attributes for header
149627 --
149628
149629 ------------------------------------------------------------
149630 -- Accrual Reversal : to get date for Standard Source (NONE)
149631 ------------------------------------------------------------
149632 l_acc_rev_gl_date_source := NULL;
149633
149634 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
149635 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
149636
149637
149638 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
149639
149640 XLA_AE_HEADER_PKG.SetJeCategoryName;
149641
149645 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
149642 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
149643 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
149644 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
149646 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
149647
149648
149649 -- No header level analytical criteria
149650
149651 --
149652 --accounting attribute enhancement, bug 3612931
149653 --
149654 l_trx_reversal_source := SUBSTR(NULL, 1,30);
149655
149656 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
149657 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
149658
149659 xla_accounting_err_pkg.build_message
149660 (p_appli_s_name => 'XLA'
149661 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
149662 ,p_token_1 => 'ACCT_ATTR_NAME'
149663 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
149664 ,p_token_2 => 'PRODUCT_NAME'
149665 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
149666 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
149667 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
149668 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
149669
149670 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
149671 --
149672 -- following sets the accounting attributes needed to reverse
149673 -- accounting for a distributeion
149674 --
149675 xla_ae_lines_pkg.SetTrxReversalAttrs
149676 (p_event_id => l_event_id
149677 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
149678 ,p_trx_reversal_source => l_trx_reversal_source);
149679
149680 END IF;
149681
149682
149683 ----------------------------------------------------------------
149684 -- 4262811 - update the header statuses to invalid in need be
149685 ----------------------------------------------------------------
149686 --
149687 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
149688
149689
149690 -----------------------------------------------
149691 -- No accrual reversal for the event class/type
149692 -----------------------------------------------
149693 ----------------------------------------------------------------
149694
149695 --
149696 -- this ends the header loop iteration for one bulk fetch
149697 --
149698 END LOOP;
149699
149700 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
149701 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
149702
149703 --
149704 -- insert dummy rows into lines gt table that were created due to
149705 -- transaction reversals
149706 --
149707 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
149708 l_result := XLA_AE_LINES_PKG.InsertLines;
149709 END IF;
149710
149711 --
149712 -- reset the temp_line_num for each set of events fetched from header
149713 -- cursor rather than doing it for each new event in line cursor
149714 -- Bug 3939231
149715 --
149716 xla_ae_lines_pkg.g_temp_line_num := 0;
149717
149718
149719
149720 --
149721 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
149722 --
149723 --
149724 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149725
149726 trace
149727 (p_msg => 'SQL - FETCH line_cur'
149728 ,p_level => C_LEVEL_STATEMENT
149729 ,p_module => l_log_module);
149730
149731 END IF;
149732 --
149733 --
149734 LOOP
149735 --
149736 FETCH line_cur BULK COLLECT INTO
149737 l_array_entity_id
149738 , l_array_legal_entity_id
149739 , l_array_entity_code
149740 , l_array_transaction_num
149741 , l_array_event_id
149742 , l_array_class_code
149743 , l_array_event_type
149744 , l_array_event_number
149745 , l_array_event_date
149746 , l_array_transaction_date
149747 , l_array_reference_num_1
149748 , l_array_reference_num_2
149749 , l_array_reference_num_3
149750 , l_array_reference_num_4
149751 , l_array_reference_char_1
149752 , l_array_reference_char_2
149753 , l_array_reference_char_3
149754 , l_array_reference_char_4
149755 , l_array_reference_date_1
149756 , l_array_reference_date_2
149757 , l_array_reference_date_3
149758 , l_array_reference_date_4
149759 , l_array_event_created_by
149760 , l_array_budgetary_control_flag
149761 , l_array_extract_line_num
149762 , l_array_source_1
149763 , l_array_source_2
149764 , l_array_source_3
149765 , l_array_source_5
149766 , l_array_source_11
149767 LIMIT l_rows;
149768
149769 --
149770 IF (C_LEVEL_EVENT >= g_log_level) THEN
149771 trace
149772 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
149773 ,p_level => C_LEVEL_EVENT
149774 ,p_module => l_log_module);
149775 END IF;
149776 --
149777 EXIT WHEN l_array_entity_id.count = 0;
149778
149782 -- Bug 4458708
149779 XLA_AE_LINES_PKG.g_rec_lines := null;
149780
149781 --
149783 --
149784 XLA_AE_LINES_PKG.g_LineNumber := 0;
149785 --
149786 --
149787
149788 FOR Idx IN 1..l_array_event_id.count LOOP
149789 --
149790 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
149791 --
149792 l_event_id := l_array_event_id(idx); -- 5648433
149793
149794 --
149795 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
149796 --
149797
149798 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
149799 (g_array_event(l_event_id).array_value_num('header_index'))
149800 ,'N'
149801 ) <> 'Y'
149802 THEN
149803 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149804 trace
149805 (p_msg => 'Trancaction revesal option is not Y '
149806 ,p_level => C_LEVEL_STATEMENT
149807 ,p_module => l_log_module);
149808 END IF;
149809
149810 --
149811 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
149812 --
149813 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149814 --
149815 -- set event info as cache for other routines to refer event attributes
149816 --
149817
149818 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
149819 l_previous_event_id := l_event_id;
149820
149821 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149822 (p_application_id => p_application_id
149823 ,p_primary_ledger_id => p_primary_ledger_id
149824 ,p_base_ledger_id => p_base_ledger_id
149825 ,p_target_ledger_id => p_target_ledger_id
149826 ,p_entity_id => l_array_entity_id(Idx)
149827 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
149828 ,p_entity_code => l_array_entity_code(Idx)
149829 ,p_transaction_num => l_array_transaction_num(Idx)
149830 ,p_event_id => l_array_event_id(Idx)
149831 ,p_event_class_code => l_array_class_code(Idx)
149832 ,p_event_type_code => l_array_event_type(Idx)
149833 ,p_event_number => l_array_event_number(Idx)
149834 ,p_event_date => l_array_event_date(Idx)
149835 ,p_transaction_date => l_array_transaction_date(Idx)
149836 ,p_reference_num_1 => l_array_reference_num_1(Idx)
149837 ,p_reference_num_2 => l_array_reference_num_2(Idx)
149838 ,p_reference_num_3 => l_array_reference_num_3(Idx)
149839 ,p_reference_num_4 => l_array_reference_num_4(Idx)
149840 ,p_reference_char_1 => l_array_reference_char_1(Idx)
149841 ,p_reference_char_2 => l_array_reference_char_2(Idx)
149842 ,p_reference_char_3 => l_array_reference_char_3(Idx)
149843 ,p_reference_char_4 => l_array_reference_char_4(Idx)
149844 ,p_reference_date_1 => l_array_reference_date_1(Idx)
149845 ,p_reference_date_2 => l_array_reference_date_2(Idx)
149846 ,p_reference_date_3 => l_array_reference_date_3(Idx)
149847 ,p_reference_date_4 => l_array_reference_date_4(Idx)
149848 ,p_event_created_by => l_array_event_created_by(Idx)
149849 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
149850 --
149851 END IF;
149852
149853
149854
149855 --
149856 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
149857
149858 l_acct_reversal_source := SUBSTR(NULL, 1,30);
149859
149860 IF l_continue_with_lines THEN
149861 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
149862 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
149863
149864 xla_accounting_err_pkg.build_message
149865 (p_appli_s_name => 'XLA'
149866 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
149867 ,p_token_1 => 'LINE_NUMBER'
149868 ,p_value_1 => l_array_extract_line_num(Idx)
149869 ,p_token_2 => 'PRODUCT_NAME'
149870 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
149871 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
149872 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
149873 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
149874
149875 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
149876 --
149877 -- following sets the accounting attributes needed to reverse
149878 -- accounting for a distributeion
149879 --
149880
149881 --
149882 -- 5217187
149883 --
149884 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
149885 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
149886 g_array_event(l_event_id).array_value_num('header_index'));
149887 --
149888 --
149889
149890 -- No reversal code generated
149891
149892 xla_ae_lines_pkg.SetAcctReversalAttrs
149893 (p_event_id => l_event_id
149894 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
149895 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149896 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
149897 END IF;
149898
149902 --
149899 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
149900 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
149901
149903 AcctLineType_116 (
149904 p_application_id => p_application_id
149905 ,p_event_id => l_event_id
149906 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149907 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149908 ,p_actual_flag => l_actual_flag
149909 ,p_balance_type_code => l_balance_type_code
149910 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149911
149912 , p_source_1 => l_array_source_1(Idx)
149913 , p_source_2 => l_array_source_2(Idx)
149914 , p_source_3 => l_array_source_3(Idx)
149915 , p_source_5 => l_array_source_5(Idx)
149916 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
149917 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149918 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
149919 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
149920 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
149921 , p_source_11 => l_array_source_11(Idx)
149922 );
149923 If(l_balance_type_code = 'A') THEN
149924 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149925 END IF;
149926
149927 --
149928
149929
149930 --
149931 AcctLineType_130 (
149932 p_application_id => p_application_id
149933 ,p_event_id => l_event_id
149934 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149935 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149936 ,p_actual_flag => l_actual_flag
149937 ,p_balance_type_code => l_balance_type_code
149938 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149939
149940 , p_source_1 => l_array_source_1(Idx)
149941 , p_source_2 => l_array_source_2(Idx)
149942 , p_source_3 => l_array_source_3(Idx)
149943 , p_source_5 => l_array_source_5(Idx)
149944 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
149945 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149946 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
149947 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
149948 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
149949 , p_source_11 => l_array_source_11(Idx)
149950 );
149951 If(l_balance_type_code = 'A') THEN
149952 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149953 END IF;
149954
149955 --
149956
149957
149958 --
149959 AcctLineType_178 (
149960 p_application_id => p_application_id
149961 ,p_event_id => l_event_id
149962 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149963 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149964 ,p_actual_flag => l_actual_flag
149965 ,p_balance_type_code => l_balance_type_code
149966 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149967
149968 , p_source_1 => l_array_source_1(Idx)
149969 , p_source_2 => l_array_source_2(Idx)
149970 , p_source_3 => l_array_source_3(Idx)
149971 , p_source_5 => l_array_source_5(Idx)
149972 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
149973 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149974 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
149975 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
149976 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
149977 , p_source_11 => l_array_source_11(Idx)
149978 );
149979 If(l_balance_type_code = 'A') THEN
149980 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149981 END IF;
149982
149983 --
149984
149985
149986 --
149987 AcctLineType_208 (
149988 p_application_id => p_application_id
149989 ,p_event_id => l_event_id
149990 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149991 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149992 ,p_actual_flag => l_actual_flag
149993 ,p_balance_type_code => l_balance_type_code
149994 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149995
149996 , p_source_1 => l_array_source_1(Idx)
149997 , p_source_2 => l_array_source_2(Idx)
149998 , p_source_3 => l_array_source_3(Idx)
149999 , p_source_5 => l_array_source_5(Idx)
150000 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
150001 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
150002 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
150003 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
150004 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
150005 , p_source_11 => l_array_source_11(Idx)
150006 );
150007 If(l_balance_type_code = 'A') THEN
150008 l_actual_gain_loss_ref := l_gain_or_loss_ref;
150009 END IF;
150010
150011 --
150012
150013
150014 --
150015 AcctLineType_221 (
150016 p_application_id => p_application_id
150017 ,p_event_id => l_event_id
150018 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150019 ,p_calculate_g_l_flag => l_calculate_g_l_flag
150020 ,p_actual_flag => l_actual_flag
150021 ,p_balance_type_code => l_balance_type_code
150022 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150023
150024 , p_source_1 => l_array_source_1(Idx)
150025 , p_source_2 => l_array_source_2(Idx)
150026 , p_source_3 => l_array_source_3(Idx)
150027 , p_source_5 => l_array_source_5(Idx)
150028 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
150029 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
150033 , p_source_11 => l_array_source_11(Idx)
150030 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
150031 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
150032 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
150034 );
150035 If(l_balance_type_code = 'A') THEN
150036 l_actual_gain_loss_ref := l_gain_or_loss_ref;
150037 END IF;
150038
150039 --
150040
150041 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
150042 -- or secondary ledger that has different currency with primary
150043 -- or alc that is calculated by sla
150044 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
150045 (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'))
150046
150047 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
150048 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
150049 AND (l_actual_flag = 'A')) THEN
150050 XLA_AE_LINES_PKG.CreateGainOrLossLines(
150051 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
150052 ,p_application_id => p_application_id
150053 ,p_amb_context_code => 'DEFAULT'
150054 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
150055 ,p_event_class_code => C_EVENT_CLASS_CODE
150056 ,p_event_type_code => C_EVENT_TYPE_CODE
150057
150058 ,p_gain_ccid => -1
150059 ,p_loss_ccid => -1
150060
150061 ,p_actual_flag => l_actual_flag
150062 ,p_enc_flag => null
150063 ,p_actual_g_l_ref => l_actual_gain_loss_ref
150064 ,p_enc_g_l_ref => null
150065 );
150066 END IF;
150067 END IF;
150068 END IF;
150069
150070 ELSE
150071 --
150072 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
150073 --
150074 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150075 trace
150076 (p_msg => 'Trancaction revesal option is Y'
150077 ,p_level => C_LEVEL_STATEMENT
150078 ,p_module => l_log_module);
150079 END IF;
150080 END IF;
150081
150082 END LOOP;
150083 l_result := XLA_AE_LINES_PKG.InsertLines ;
150084 end loop;
150085 close line_cur;
150086
150087
150088 --
150089 -- insert headers into xla_ae_headers_gt table
150090 --
150091 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
150092
150093 -- insert into errors table here.
150094
150095 END LOOP;
150096
150097 --
150098 -- 4865292
150099 --
150100 -- Compare g_hdr_extract_count with event count in
150101 -- CreateHeadersAndLines.
150102 --
150103 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
150104
150105 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150106 trace (p_msg => '# rows extracted from header extract objects '
150107 || ' (running total): '
150108 || g_hdr_extract_count
150109 ,p_level => C_LEVEL_STATEMENT
150110 ,p_module => l_log_module);
150111 END IF;
150112
150113 CLOSE header_cur;
150114 --
150115
150116 --
150117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150118 trace
150119 (p_msg => 'END of EventType_272'
150120 ,p_level => C_LEVEL_PROCEDURE
150121 ,p_module => l_log_module);
150122 END IF;
150123 --
150124 RETURN l_result;
150125 EXCEPTION
150126 WHEN xla_exceptions_pkg.application_exception THEN
150127
150128 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
150129
150130
150131 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
150132
150133 RAISE;
150134
150135 WHEN NO_DATA_FOUND THEN
150136
150137 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
150138 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
150139
150140 FOR header_record IN header_cur
150141 LOOP
150142 l_array_header_events(header_record.event_id) := header_record.event_id;
150143 END LOOP;
150144
150145 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
150146 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
150147
150148 fnd_file.put_line(fnd_file.LOG, ' ');
150149 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
150150 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
150151 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
150152
150153 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
150154 LOOP
150155 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
150156 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
150157 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
150158 END IF;
150159 END LOOP;
150160
150161 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
150162 fnd_file.put_line(fnd_file.LOG, ' ');
150163
150164
150165 xla_exceptions_pkg.raise_message
150169 WHEN OTHERS THEN
150166 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_272');
150167
150168
150170 xla_exceptions_pkg.raise_message
150171 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_272');
150172 END EventType_272;
150173 --
150174
150175 ---------------------------------------
150176 --
150177 -- PRIVATE PROCEDURE
150178 -- insert_sources_273
150179 --
150180 ----------------------------------------
150181 --
150182 PROCEDURE insert_sources_273(
150183 p_target_ledger_id IN NUMBER
150184 , p_language IN VARCHAR2
150185 , p_sla_ledger_id IN NUMBER
150186 , p_pad_start_date IN DATE
150187 , p_pad_end_date IN DATE
150188 )
150189 IS
150190
150191 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP_NO_TP';
150192 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
150193 p_apps_owner VARCHAR2(30);
150194 l_log_module VARCHAR2(240);
150195 BEGIN
150196 IF g_log_enabled THEN
150197 l_log_module := C_DEFAULT_MODULE||'.insert_sources_273';
150198 END IF;
150199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150200
150201 trace
150202 (p_msg => 'BEGIN of insert_sources_273'
150203 ,p_level => C_LEVEL_PROCEDURE
150204 ,p_module => l_log_module);
150205
150206 END IF;
150207
150208 -- select APPS owner
150209 SELECT oracle_username
150210 INTO p_apps_owner
150211 FROM fnd_oracle_userid
150212 WHERE read_only_flag = 'U'
150213 ;
150214
150215 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150216 trace
150217 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
150218 ' - p_language = '||p_language||
150219 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
150220 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
150221 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
150222 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
150223 ,p_level => C_LEVEL_STATEMENT
150224 ,p_module => l_log_module);
150225 END IF;
150226
150227
150228 --
150229 INSERT INTO xla_diag_sources --hdr1
150230 (
150231 event_id
150232 , ledger_id
150233 , sla_ledger_id
150234 , description_language
150235 , object_name
150236 , object_type_code
150237 , line_number
150238 , source_application_id
150239 , source_type_code
150240 , source_code
150241 , source_value
150242 , source_meaning
150243 , created_by
150244 , creation_date
150245 , last_update_date
150246 , last_updated_by
150247 , last_update_login
150248 , program_update_date
150249 , program_application_id
150250 , program_id
150251 , request_id
150252 )
150253 SELECT
150254 event_id
150255 , p_target_ledger_id
150256 , p_sla_ledger_id
150257 , p_language
150258 , object_name
150259 , object_type_code
150260 , line_number
150261 , source_application_id
150262 , source_type_code
150263 , source_code
150264 , SUBSTR(source_value ,1,1996)
150265 , SUBSTR(source_meaning,1,200)
150266 , xla_environment_pkg.g_Usr_Id
150267 , TRUNC(SYSDATE)
150268 , TRUNC(SYSDATE)
150269 , xla_environment_pkg.g_Usr_Id
150270 , xla_environment_pkg.g_Login_Id
150271 , TRUNC(SYSDATE)
150272 , xla_environment_pkg.g_Prog_Appl_Id
150273 , xla_environment_pkg.g_Prog_Id
150274 , xla_environment_pkg.g_Req_Id
150275 FROM (
150276 SELECT xet.event_id event_id
150277 , 0 line_number
150278 , CASE r
150279 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
150280 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
150281 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
150282 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
150283 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
150284 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
150285
150286 ELSE null
150287 END object_name
150288 , CASE r
150289 WHEN 1 THEN 'HEADER'
150290 WHEN 2 THEN 'HEADER'
150291 WHEN 3 THEN 'HEADER'
150292 WHEN 4 THEN 'HEADER'
150293 WHEN 5 THEN 'HEADER'
150294 WHEN 6 THEN 'HEADER'
150295
150296 ELSE null
150297 END object_type_code
150298 , CASE r
150299 WHEN 1 THEN '555'
150300 WHEN 2 THEN '555'
150301 WHEN 3 THEN '555'
150302 WHEN 4 THEN '555'
150303 WHEN 5 THEN '555'
150304 WHEN 6 THEN '555'
150305
150306 ELSE null
150307 END source_application_id
150308 , 'S' source_type_code
150309 , CASE r
150313 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
150310 WHEN 1 THEN 'ENTITY_CODE'
150311 WHEN 2 THEN 'CURRENCY_CODE'
150312 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
150314 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
150315 WHEN 6 THEN 'TRANSACTION_DATE'
150316
150317 ELSE null
150318 END source_code
150319 , CASE r
150320 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
150321 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
150322 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
150323 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
150324 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
150325 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
150326
150327 ELSE null
150328 END source_value
150329 , CASE r
150330 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
150331 1010186
150332 ,TO_CHAR(h1.CURRENCY_CODE)
150333 ,'CURRENCY_CODE'
150334 ,'S'
150335 ,555)
150336
150337 ELSE null
150338 END source_meaning
150339 FROM xla_events_gt xet
150340 , GMF_XLA_EXTRACT_HEADERS h1
150341 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
150342 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150343 AND xet.event_type_code = C_EVENT_TYPE_CODE
150344 AND h1.event_id = xet.event_id
150345
150346 )
150347 ;
150348 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150349
150350 trace
150351 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
150352 ,p_level => C_LEVEL_STATEMENT
150353 ,p_module => l_log_module);
150354
150355 END IF;
150356 --
150357
150358
150359
150360 --
150361 INSERT INTO xla_diag_sources --line1
150362 (
150363 event_id
150364 , ledger_id
150365 , sla_ledger_id
150366 , description_language
150367 , object_name
150368 , object_type_code
150369 , line_number
150370 , source_application_id
150371 , source_type_code
150372 , source_code
150373 , source_value
150374 , source_meaning
150375 , created_by
150376 , creation_date
150377 , last_update_date
150378 , last_updated_by
150379 , last_update_login
150380 , program_update_date
150381 , program_application_id
150382 , program_id
150383 , request_id
150384 )
150385 SELECT event_id
150386 , p_target_ledger_id
150387 , p_sla_ledger_id
150388 , p_language
150389 , object_name
150390 , object_type_code
150391 , line_number
150392 , source_application_id
150393 , source_type_code
150394 , source_code
150395 , SUBSTR(source_value,1,1996)
150396 , SUBSTR(source_meaning,1,200)
150397 , xla_environment_pkg.g_Usr_Id
150398 , TRUNC(SYSDATE)
150399 , TRUNC(SYSDATE)
150400 , xla_environment_pkg.g_Usr_Id
150401 , xla_environment_pkg.g_Login_Id
150402 , TRUNC(SYSDATE)
150403 , xla_environment_pkg.g_Prog_Appl_Id
150404 , xla_environment_pkg.g_Prog_Id
150405 , xla_environment_pkg.g_Req_Id
150406 FROM (
150407 SELECT xet.event_id event_id
150408 , l2.line_number line_number
150409 , CASE r
150410 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
150411 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
150412 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
150413 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
150414 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
150415
150416 ELSE null
150417 END object_name
150418 , CASE r
150419 WHEN 1 THEN 'LINE'
150420 WHEN 2 THEN 'LINE'
150421 WHEN 3 THEN 'LINE'
150422 WHEN 4 THEN 'LINE'
150423 WHEN 5 THEN 'LINE'
150424
150425 ELSE null
150426 END object_type_code
150427 , CASE r
150428 WHEN 1 THEN '555'
150429 WHEN 2 THEN '555'
150430 WHEN 3 THEN '555'
150431 WHEN 4 THEN '555'
150432 WHEN 5 THEN '555'
150433
150434 ELSE null
150435 END source_application_id
150436 , 'S' source_type_code
150437 , CASE r
150438 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
150439 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
150440 WHEN 3 THEN 'ENTERED_AMOUNT'
150441 WHEN 4 THEN 'LINE_ID'
150442 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
150443
150444 ELSE null
150445 END source_code
150446 , CASE r
150447 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
150448 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
150449 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
150453 ELSE null
150450 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
150451 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
150452
150454 END source_value
150455 , null source_meaning
150456 FROM xla_events_gt xet
150457 , GMF_XLA_EXTRACT_LINES l2
150458 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
150459 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150460 AND xet.event_type_code = C_EVENT_TYPE_CODE
150461 AND l2.event_id = xet.event_id
150462
150463 )
150464 ;
150465 --
150466 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150467
150468 trace
150469 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
150470 ,p_level => C_LEVEL_STATEMENT
150471 ,p_module => l_log_module);
150472
150473 END IF;
150474
150475
150476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150477 trace
150478 (p_msg => 'END of insert_sources_273'
150479 ,p_level => C_LEVEL_PROCEDURE
150480 ,p_module => l_log_module);
150481 END IF;
150482 EXCEPTION
150483 WHEN xla_exceptions_pkg.application_exception THEN
150484 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150485 trace
150486 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150487 ,p_level => C_LEVEL_EXCEPTION
150488 ,p_module => l_log_module);
150489 END IF;
150490 RAISE;
150491 WHEN OTHERS THEN
150492 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150493 trace
150494 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150495 ,p_level => C_LEVEL_EXCEPTION
150496 ,p_module => l_log_module);
150497 END IF;
150498 xla_exceptions_pkg.raise_message
150499 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_273');
150500 END insert_sources_273;
150501 --
150502
150503 ---------------------------------------
150504 --
150505 -- PRIVATE FUNCTION
150506 -- EventType_273
150507 --
150508 ----------------------------------------
150509 --
150510 FUNCTION EventType_273
150511 (p_application_id IN NUMBER
150512 ,p_base_ledger_id IN NUMBER
150513 ,p_target_ledger_id IN NUMBER
150514 ,p_language IN VARCHAR2
150515 ,p_currency_code IN VARCHAR2
150516 ,p_sla_ledger_id IN NUMBER
150517 ,p_pad_start_date IN DATE
150518 ,p_pad_end_date IN DATE
150519 ,p_primary_ledger_id IN NUMBER)
150520 RETURN BOOLEAN IS
150521 --
150522 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP_NO_TP';
150523 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
150524
150525 l_calculate_acctd_flag VARCHAR2(1) :='N';
150526 l_calculate_g_l_flag VARCHAR2(1) :='N';
150527 --
150528 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150529 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150530 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150531 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150532 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150533 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150534 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150535 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150536 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150537 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150538 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150539 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150540 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150541 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150542 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150543 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150544 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150545 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150546 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150547 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150548 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150549 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150550 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
150551 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150552 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
150553 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
150554
150555 l_event_id NUMBER;
150556 l_previous_event_id NUMBER;
150557 l_first_event_id NUMBER;
150558 l_last_event_id NUMBER;
150559
150560 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
150561 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
150562 --
150563 --
150567 l_event_class_name VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
150564 l_result BOOLEAN := TRUE;
150565 l_rows NUMBER := 1000;
150566 l_event_type_name VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment, no Transfer Pricing';
150568 l_description VARCHAR2(4000);
150569 l_transaction_reversal NUMBER;
150570 l_ae_header_id NUMBER;
150571 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
150572 l_log_module VARCHAR2(240);
150573 --
150574 l_acct_reversal_source VARCHAR2(30);
150575 l_trx_reversal_source VARCHAR2(30);
150576
150577 l_continue_with_lines BOOLEAN := TRUE;
150578 --
150579 l_acc_rev_gl_date_source DATE; -- 4262811
150580 --
150581 type t_array_event_id is table of number index by binary_integer;
150582
150583 l_rec_array_event t_rec_array_event;
150584 l_null_rec_array_event t_rec_array_event;
150585 l_array_ae_header_id xla_number_array_type;
150586 l_actual_flag VARCHAR2(1) := NULL;
150587 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
150588 l_balance_type_code VARCHAR2(1) :=NULL;
150589 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
150590
150591 --
150592 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
150593 --
150594
150595 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
150596 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
150597 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
150598 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
150599 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150600 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
150601
150602 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
150603 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
150604 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150605 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
150606 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150607
150608 l_array_source_6 t_array_source_6;
150609 l_array_source_7 t_array_source_7;
150610 l_array_source_8 t_array_source_8;
150611 l_array_source_9 t_array_source_9;
150612 l_array_source_10 t_array_source_10;
150613 l_array_source_12 t_array_source_12;
150614
150615 l_array_source_1 t_array_source_1;
150616 l_array_source_2 t_array_source_2;
150617 l_array_source_3 t_array_source_3;
150618 l_array_source_5 t_array_source_5;
150619 l_array_source_11 t_array_source_11;
150620
150621 --
150622 CURSOR header_cur
150623 IS
150624 SELECT /*+ leading(xet) cardinality(xet,1) */
150625 -- Event Type Code: FOB_SHIP_SENDER_SHIP_NO_TP
150626 -- Event Class Code: FOB_SHIP_SENDER_SHIP
150627 xet.entity_id
150628 , xet.legal_entity_id
150629 , xet.entity_code
150630 , xet.transaction_number
150631 , xet.event_id
150632 , xet.event_class_code
150633 , xet.event_type_code
150634 , xet.event_number
150635 , xet.event_date
150636 , xet.transaction_date
150637 , xet.reference_num_1
150638 , xet.reference_num_2
150639 , xet.reference_num_3
150640 , xet.reference_num_4
150641 , xet.reference_char_1
150642 , xet.reference_char_2
150643 , xet.reference_char_3
150644 , xet.reference_char_4
150645 , xet.reference_date_1
150646 , xet.reference_date_2
150647 , xet.reference_date_3
150648 , xet.reference_date_4
150649 , xet.event_created_by
150650 , xet.budgetary_control_flag
150651 , h1.ENTITY_CODE source_6
150652 , h1.CURRENCY_CODE source_7
150653 , h1.CURRENCY_CONVERSION_DATE source_8
150654 , h1.CURRENCY_CONVERSION_RATE source_9
150655 , h1.CURRENCY_CONVERSION_TYPE source_10
150656 , h1.TRANSACTION_DATE source_12
150657 FROM xla_events_gt xet
150658 , GMF_XLA_EXTRACT_HEADERS h1
150659 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
150660 and xet.event_type_code = C_EVENT_TYPE_CODE
150661 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
150662
150663 ORDER BY event_id
150664 ;
150665
150666
150667 --
150668 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
150669 IS
150670 SELECT /*+ leading(xet) cardinality(xet,1) */
150671 -- Event Type Code: FOB_SHIP_SENDER_SHIP_NO_TP
150672 -- Event Class Code: FOB_SHIP_SENDER_SHIP
150673 xet.entity_id
150674 ,xet.legal_entity_id
150675 ,xet.entity_code
150676 ,xet.transaction_number
150677 ,xet.event_id
150678 ,xet.event_class_code
150679 ,xet.event_type_code
150680 ,xet.event_number
150681 ,xet.event_date
150682 ,xet.transaction_date
150683 ,xet.reference_num_1
150684 ,xet.reference_num_2
150685 ,xet.reference_num_3
150686 ,xet.reference_num_4
150687 ,xet.reference_char_1
150691 ,xet.reference_date_1
150688 ,xet.reference_char_2
150689 ,xet.reference_char_3
150690 ,xet.reference_char_4
150692 ,xet.reference_date_2
150693 ,xet.reference_date_3
150694 ,xet.reference_date_4
150695 ,xet.event_created_by
150696 ,xet.budgetary_control_flag , l2.LINE_NUMBER
150697 , l2.TRANSACTION_ACCOUNT_ID source_1
150698 , l2.JOURNAL_LINE_TYPE source_2
150699 , l2.ENTERED_AMOUNT source_3
150700 , l2.LINE_ID source_5
150701 , l2.ACCOUNTED_AMOUNT source_11
150702 FROM xla_events_gt xet
150703 , GMF_XLA_EXTRACT_LINES l2
150704 WHERE xet.event_id between x_first_event_id and x_last_event_id
150705 and xet.event_date between p_pad_start_date and p_pad_end_date
150706 and xet.event_type_code = C_EVENT_TYPE_CODE
150707 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
150708 ;
150709
150710 --
150711 BEGIN
150712 IF g_log_enabled THEN
150713 l_log_module := C_DEFAULT_MODULE||'.EventType_273';
150714 END IF;
150715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150716 trace
150717 (p_msg => 'BEGIN of EventType_273'
150718 ,p_level => C_LEVEL_PROCEDURE
150719 ,p_module => l_log_module);
150720 END IF;
150721
150722 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150723 trace
150724 (p_msg => 'p_application_id = '||p_application_id||
150725 ' - p_base_ledger_id = '||p_base_ledger_id||
150726 ' - p_target_ledger_id = '||p_target_ledger_id||
150727 ' - p_language = '||p_language||
150728 ' - p_currency_code = '||p_currency_code||
150729 ' - p_sla_ledger_id = '||p_sla_ledger_id
150730 ,p_level => C_LEVEL_STATEMENT
150731 ,p_module => l_log_module);
150732 END IF;
150733 --
150734 -- initialze arrays
150735 --
150736 g_array_event.DELETE;
150737 l_rec_array_event := l_null_rec_array_event;
150738 --
150739 --------------------------------------
150740 -- 4262811 Initialze MPA Line Number
150741 --------------------------------------
150742 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
150743
150744 --
150745
150746 --
150747 OPEN header_cur;
150748 --
150749 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150750 trace
150751 (p_msg => 'SQL - FETCH header_cur'
150752 ,p_level => C_LEVEL_STATEMENT
150753 ,p_module => l_log_module);
150754 END IF;
150755 --
150756 LOOP
150757 FETCH header_cur BULK COLLECT INTO
150758 l_array_entity_id
150759 , l_array_legal_entity_id
150760 , l_array_entity_code
150761 , l_array_transaction_num
150762 , l_array_event_id
150763 , l_array_class_code
150764 , l_array_event_type
150765 , l_array_event_number
150766 , l_array_event_date
150767 , l_array_transaction_date
150768 , l_array_reference_num_1
150769 , l_array_reference_num_2
150770 , l_array_reference_num_3
150771 , l_array_reference_num_4
150772 , l_array_reference_char_1
150773 , l_array_reference_char_2
150774 , l_array_reference_char_3
150775 , l_array_reference_char_4
150776 , l_array_reference_date_1
150777 , l_array_reference_date_2
150778 , l_array_reference_date_3
150779 , l_array_reference_date_4
150780 , l_array_event_created_by
150781 , l_array_budgetary_control_flag
150782 , l_array_source_6
150783 , l_array_source_7
150784 , l_array_source_8
150785 , l_array_source_9
150786 , l_array_source_10
150787 , l_array_source_12
150788 LIMIT l_rows;
150789 --
150790 IF (C_LEVEL_EVENT >= g_log_level) THEN
150791 trace
150792 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
150793 ,p_level => C_LEVEL_EVENT
150794 ,p_module => l_log_module);
150795 END IF;
150796 --
150797 EXIT WHEN l_array_entity_id.COUNT = 0;
150798
150799 -- initialize arrays
150800 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
150801 XLA_AE_LINES_PKG.g_rec_lines := NULL;
150802
150803 --
150804 -- Bug 4458708
150805 --
150806 XLA_AE_LINES_PKG.g_LineNumber := 0;
150807
150808
150809 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
150810 g_last_hdr_idx := l_array_event_id.LAST;
150811 --
150812 -- loop for the headers. Each iteration is for each header extract row
150813 -- fetched in header cursor
150814 --
150815 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
150816
150817 --
150818 -- set event info as cache for other routines to refer event attributes
150819 --
150820 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
150821 (p_application_id => p_application_id
150822 ,p_primary_ledger_id => p_primary_ledger_id
150823 ,p_base_ledger_id => p_base_ledger_id
150824 ,p_target_ledger_id => p_target_ledger_id
150825 ,p_entity_id => l_array_entity_id(hdr_idx)
150826 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
150827 ,p_entity_code => l_array_entity_code(hdr_idx)
150828 ,p_transaction_num => l_array_transaction_num(hdr_idx)
150829 ,p_event_id => l_array_event_id(hdr_idx)
150830 ,p_event_class_code => l_array_class_code(hdr_idx)
150834 ,p_transaction_date => l_array_transaction_date(hdr_idx)
150831 ,p_event_type_code => l_array_event_type(hdr_idx)
150832 ,p_event_number => l_array_event_number(hdr_idx)
150833 ,p_event_date => l_array_event_date(hdr_idx)
150835 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
150836 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
150837 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
150838 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
150839 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
150840 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
150841 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
150842 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
150843 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
150844 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
150845 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
150846 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
150847 ,p_event_created_by => l_array_event_created_by(hdr_idx)
150848 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
150849
150850 --
150851 -- set the status of entry to C_VALID (0)
150852 --
150853 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
150854
150855 --
150856 -- initialize a row for ae header
150857 --
150858 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
150859
150860 l_event_id := l_array_event_id(hdr_idx);
150861
150862 --
150863 -- storing the hdr_idx for event. May be used by line cursor.
150864 --
150865 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
150866
150867 --
150868 -- store sources from header extract. This can be improved to
150869 -- store only those sources from header extract that may be used in lines
150870 --
150871
150872 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
150873 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
150874 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
150875 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
150876 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
150877 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
150878
150879 --
150880 -- initilaize the status of ae headers for diffrent balance types
150881 -- the status is initialised to C_NOT_CREATED (2)
150882 --
150883 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150884 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150885 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150886
150887 --
150888 -- call api to validate and store accounting attributes for header
150889 --
150890
150891 ------------------------------------------------------------
150892 -- Accrual Reversal : to get date for Standard Source (NONE)
150893 ------------------------------------------------------------
150894 l_acc_rev_gl_date_source := NULL;
150895
150896 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
150897 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
150898
150899
150900 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
150901
150902 XLA_AE_HEADER_PKG.SetJeCategoryName;
150903
150904 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
150905 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
150906 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
150907 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
150908 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
150909
150910
150911 -- No header level analytical criteria
150912
150913 --
150914 --accounting attribute enhancement, bug 3612931
150915 --
150916 l_trx_reversal_source := SUBSTR(NULL, 1,30);
150917
150918 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
150919 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
150920
150921 xla_accounting_err_pkg.build_message
150922 (p_appli_s_name => 'XLA'
150923 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
150924 ,p_token_1 => 'ACCT_ATTR_NAME'
150925 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
150926 ,p_token_2 => 'PRODUCT_NAME'
150927 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150928 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150929 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
150930 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150931
150932 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
150933 --
150934 -- following sets the accounting attributes needed to reverse
150935 -- accounting for a distributeion
150936 --
150937 xla_ae_lines_pkg.SetTrxReversalAttrs
150938 (p_event_id => l_event_id
150942 END IF;
150939 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
150940 ,p_trx_reversal_source => l_trx_reversal_source);
150941
150943
150944
150945 ----------------------------------------------------------------
150946 -- 4262811 - update the header statuses to invalid in need be
150947 ----------------------------------------------------------------
150948 --
150949 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
150950
150951
150952 -----------------------------------------------
150953 -- No accrual reversal for the event class/type
150954 -----------------------------------------------
150955 ----------------------------------------------------------------
150956
150957 --
150958 -- this ends the header loop iteration for one bulk fetch
150959 --
150960 END LOOP;
150961
150962 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
150963 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
150964
150965 --
150966 -- insert dummy rows into lines gt table that were created due to
150967 -- transaction reversals
150968 --
150969 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
150970 l_result := XLA_AE_LINES_PKG.InsertLines;
150971 END IF;
150972
150973 --
150974 -- reset the temp_line_num for each set of events fetched from header
150975 -- cursor rather than doing it for each new event in line cursor
150976 -- Bug 3939231
150977 --
150978 xla_ae_lines_pkg.g_temp_line_num := 0;
150979
150980
150981
150982 --
150983 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
150984 --
150985 --
150986 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150987
150988 trace
150989 (p_msg => 'SQL - FETCH line_cur'
150990 ,p_level => C_LEVEL_STATEMENT
150991 ,p_module => l_log_module);
150992
150993 END IF;
150994 --
150995 --
150996 LOOP
150997 --
150998 FETCH line_cur BULK COLLECT INTO
150999 l_array_entity_id
151000 , l_array_legal_entity_id
151001 , l_array_entity_code
151002 , l_array_transaction_num
151003 , l_array_event_id
151004 , l_array_class_code
151005 , l_array_event_type
151006 , l_array_event_number
151007 , l_array_event_date
151008 , l_array_transaction_date
151009 , l_array_reference_num_1
151010 , l_array_reference_num_2
151011 , l_array_reference_num_3
151012 , l_array_reference_num_4
151013 , l_array_reference_char_1
151014 , l_array_reference_char_2
151015 , l_array_reference_char_3
151016 , l_array_reference_char_4
151017 , l_array_reference_date_1
151018 , l_array_reference_date_2
151019 , l_array_reference_date_3
151020 , l_array_reference_date_4
151021 , l_array_event_created_by
151022 , l_array_budgetary_control_flag
151023 , l_array_extract_line_num
151024 , l_array_source_1
151025 , l_array_source_2
151026 , l_array_source_3
151027 , l_array_source_5
151028 , l_array_source_11
151029 LIMIT l_rows;
151030
151031 --
151032 IF (C_LEVEL_EVENT >= g_log_level) THEN
151033 trace
151034 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
151035 ,p_level => C_LEVEL_EVENT
151036 ,p_module => l_log_module);
151037 END IF;
151038 --
151039 EXIT WHEN l_array_entity_id.count = 0;
151040
151041 XLA_AE_LINES_PKG.g_rec_lines := null;
151042
151043 --
151044 -- Bug 4458708
151045 --
151046 XLA_AE_LINES_PKG.g_LineNumber := 0;
151047 --
151048 --
151049
151050 FOR Idx IN 1..l_array_event_id.count LOOP
151051 --
151052 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
151053 --
151054 l_event_id := l_array_event_id(idx); -- 5648433
151055
151056 --
151057 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151058 --
151059
151060 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
151061 (g_array_event(l_event_id).array_value_num('header_index'))
151062 ,'N'
151063 ) <> 'Y'
151064 THEN
151065 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151066 trace
151067 (p_msg => 'Trancaction revesal option is not Y '
151068 ,p_level => C_LEVEL_STATEMENT
151069 ,p_module => l_log_module);
151070 END IF;
151071
151072 --
151073 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
151074 --
151075 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
151076 --
151077 -- set event info as cache for other routines to refer event attributes
151078 --
151079
151080 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
151081 l_previous_event_id := l_event_id;
151082
151083 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
151084 (p_application_id => p_application_id
151085 ,p_primary_ledger_id => p_primary_ledger_id
151086 ,p_base_ledger_id => p_base_ledger_id
151087 ,p_target_ledger_id => p_target_ledger_id
151088 ,p_entity_id => l_array_entity_id(Idx)
151089 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
151090 ,p_entity_code => l_array_entity_code(Idx)
151094 ,p_event_type_code => l_array_event_type(Idx)
151091 ,p_transaction_num => l_array_transaction_num(Idx)
151092 ,p_event_id => l_array_event_id(Idx)
151093 ,p_event_class_code => l_array_class_code(Idx)
151095 ,p_event_number => l_array_event_number(Idx)
151096 ,p_event_date => l_array_event_date(Idx)
151097 ,p_transaction_date => l_array_transaction_date(Idx)
151098 ,p_reference_num_1 => l_array_reference_num_1(Idx)
151099 ,p_reference_num_2 => l_array_reference_num_2(Idx)
151100 ,p_reference_num_3 => l_array_reference_num_3(Idx)
151101 ,p_reference_num_4 => l_array_reference_num_4(Idx)
151102 ,p_reference_char_1 => l_array_reference_char_1(Idx)
151103 ,p_reference_char_2 => l_array_reference_char_2(Idx)
151104 ,p_reference_char_3 => l_array_reference_char_3(Idx)
151105 ,p_reference_char_4 => l_array_reference_char_4(Idx)
151106 ,p_reference_date_1 => l_array_reference_date_1(Idx)
151107 ,p_reference_date_2 => l_array_reference_date_2(Idx)
151108 ,p_reference_date_3 => l_array_reference_date_3(Idx)
151109 ,p_reference_date_4 => l_array_reference_date_4(Idx)
151110 ,p_event_created_by => l_array_event_created_by(Idx)
151111 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
151112 --
151113 END IF;
151114
151115
151116
151117 --
151118 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
151119
151120 l_acct_reversal_source := SUBSTR(NULL, 1,30);
151121
151122 IF l_continue_with_lines THEN
151123 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
151124 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
151125
151126 xla_accounting_err_pkg.build_message
151127 (p_appli_s_name => 'XLA'
151128 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
151129 ,p_token_1 => 'LINE_NUMBER'
151130 ,p_value_1 => l_array_extract_line_num(Idx)
151131 ,p_token_2 => 'PRODUCT_NAME'
151132 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
151133 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
151134 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
151135 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
151136
151137 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
151138 --
151139 -- following sets the accounting attributes needed to reverse
151140 -- accounting for a distributeion
151141 --
151142
151143 --
151144 -- 5217187
151145 --
151146 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
151147 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
151148 g_array_event(l_event_id).array_value_num('header_index'));
151149 --
151150 --
151151
151152 -- No reversal code generated
151153
151154 xla_ae_lines_pkg.SetAcctReversalAttrs
151155 (p_event_id => l_event_id
151156 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
151157 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151158 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
151159 END IF;
151160
151161 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
151162 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
151163
151164 --
151165 AcctLineType_76 (
151166 p_application_id => p_application_id
151167 ,p_event_id => l_event_id
151168 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151169 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151170 ,p_actual_flag => l_actual_flag
151171 ,p_balance_type_code => l_balance_type_code
151172 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151173
151174 , p_source_1 => l_array_source_1(Idx)
151175 , p_source_2 => l_array_source_2(Idx)
151176 , p_source_3 => l_array_source_3(Idx)
151177 , p_source_5 => l_array_source_5(Idx)
151178 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151179 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151180 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151181 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151182 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151183 , p_source_11 => l_array_source_11(Idx)
151184 );
151185 If(l_balance_type_code = 'A') THEN
151186 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151187 END IF;
151188
151189 --
151190
151191
151192 --
151193 AcctLineType_85 (
151194 p_application_id => p_application_id
151195 ,p_event_id => l_event_id
151196 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151197 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151198 ,p_actual_flag => l_actual_flag
151199 ,p_balance_type_code => l_balance_type_code
151200 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151201
151202 , p_source_1 => l_array_source_1(Idx)
151203 , p_source_2 => l_array_source_2(Idx)
151204 , p_source_3 => l_array_source_3(Idx)
151205 , p_source_5 => l_array_source_5(Idx)
151206 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151210 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151207 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151208 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151209 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151211 , p_source_11 => l_array_source_11(Idx)
151212 );
151213 If(l_balance_type_code = 'A') THEN
151214 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151215 END IF;
151216
151217 --
151218
151219
151220 --
151221 AcctLineType_151 (
151222 p_application_id => p_application_id
151223 ,p_event_id => l_event_id
151224 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151225 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151226 ,p_actual_flag => l_actual_flag
151227 ,p_balance_type_code => l_balance_type_code
151228 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151229
151230 , p_source_1 => l_array_source_1(Idx)
151231 , p_source_2 => l_array_source_2(Idx)
151232 , p_source_3 => l_array_source_3(Idx)
151233 , p_source_5 => l_array_source_5(Idx)
151234 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151235 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151236 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151237 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151238 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151239 , p_source_11 => l_array_source_11(Idx)
151240 );
151241 If(l_balance_type_code = 'A') THEN
151242 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151243 END IF;
151244
151245 --
151246
151247
151248 --
151249 AcctLineType_184 (
151250 p_application_id => p_application_id
151251 ,p_event_id => l_event_id
151252 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151253 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151254 ,p_actual_flag => l_actual_flag
151255 ,p_balance_type_code => l_balance_type_code
151256 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151257
151258 , p_source_1 => l_array_source_1(Idx)
151259 , p_source_2 => l_array_source_2(Idx)
151260 , p_source_3 => l_array_source_3(Idx)
151261 , p_source_5 => l_array_source_5(Idx)
151262 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151263 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151264 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151265 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151266 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151267 , p_source_11 => l_array_source_11(Idx)
151268 );
151269 If(l_balance_type_code = 'A') THEN
151270 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151271 END IF;
151272
151273 --
151274
151275
151276 --
151277 AcctLineType_244 (
151278 p_application_id => p_application_id
151279 ,p_event_id => l_event_id
151280 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151281 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151282 ,p_actual_flag => l_actual_flag
151283 ,p_balance_type_code => l_balance_type_code
151284 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151285
151286 , p_source_1 => l_array_source_1(Idx)
151287 , p_source_2 => l_array_source_2(Idx)
151288 , p_source_3 => l_array_source_3(Idx)
151289 , p_source_5 => l_array_source_5(Idx)
151290 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
151291 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
151292 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
151293 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
151294 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
151295 , p_source_11 => l_array_source_11(Idx)
151296 );
151297 If(l_balance_type_code = 'A') THEN
151298 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151299 END IF;
151300
151301 --
151302
151303 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
151304 -- or secondary ledger that has different currency with primary
151305 -- or alc that is calculated by sla
151306 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
151307 (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'))
151308
151309 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
151310 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
151311 AND (l_actual_flag = 'A')) THEN
151312 XLA_AE_LINES_PKG.CreateGainOrLossLines(
151313 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
151314 ,p_application_id => p_application_id
151315 ,p_amb_context_code => 'DEFAULT'
151316 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
151317 ,p_event_class_code => C_EVENT_CLASS_CODE
151318 ,p_event_type_code => C_EVENT_TYPE_CODE
151319
151320 ,p_gain_ccid => -1
151321 ,p_loss_ccid => -1
151322
151323 ,p_actual_flag => l_actual_flag
151324 ,p_enc_flag => null
151325 ,p_actual_g_l_ref => l_actual_gain_loss_ref
151326 ,p_enc_g_l_ref => null
151327 );
151328 END IF;
151329 END IF;
151330 END IF;
151331
151335 --
151332 ELSE
151333 --
151334 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151336 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151337 trace
151338 (p_msg => 'Trancaction revesal option is Y'
151339 ,p_level => C_LEVEL_STATEMENT
151340 ,p_module => l_log_module);
151341 END IF;
151342 END IF;
151343
151344 END LOOP;
151345 l_result := XLA_AE_LINES_PKG.InsertLines ;
151346 end loop;
151347 close line_cur;
151348
151349
151350 --
151351 -- insert headers into xla_ae_headers_gt table
151352 --
151353 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
151354
151355 -- insert into errors table here.
151356
151357 END LOOP;
151358
151359 --
151360 -- 4865292
151361 --
151362 -- Compare g_hdr_extract_count with event count in
151363 -- CreateHeadersAndLines.
151364 --
151365 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
151366
151367 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151368 trace (p_msg => '# rows extracted from header extract objects '
151369 || ' (running total): '
151370 || g_hdr_extract_count
151371 ,p_level => C_LEVEL_STATEMENT
151372 ,p_module => l_log_module);
151373 END IF;
151374
151375 CLOSE header_cur;
151376 --
151377
151378 --
151379 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151380 trace
151381 (p_msg => 'END of EventType_273'
151382 ,p_level => C_LEVEL_PROCEDURE
151383 ,p_module => l_log_module);
151384 END IF;
151385 --
151386 RETURN l_result;
151387 EXCEPTION
151388 WHEN xla_exceptions_pkg.application_exception THEN
151389
151390 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151391
151392
151393 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
151394
151395 RAISE;
151396
151397 WHEN NO_DATA_FOUND THEN
151398
151399 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151400 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
151401
151402 FOR header_record IN header_cur
151403 LOOP
151404 l_array_header_events(header_record.event_id) := header_record.event_id;
151405 END LOOP;
151406
151407 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
151408 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
151409
151410 fnd_file.put_line(fnd_file.LOG, ' ');
151411 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151412 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
151413 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
151414
151415 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
151416 LOOP
151417 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
151418 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
151419 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
151420 END IF;
151421 END LOOP;
151422
151423 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151424 fnd_file.put_line(fnd_file.LOG, ' ');
151425
151426
151427 xla_exceptions_pkg.raise_message
151428 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_273');
151429
151430
151431 WHEN OTHERS THEN
151432 xla_exceptions_pkg.raise_message
151433 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_273');
151434 END EventType_273;
151435 --
151436
151437 ---------------------------------------
151438 --
151439 -- PRIVATE PROCEDURE
151440 -- insert_sources_274
151441 --
151442 ----------------------------------------
151443 --
151444 PROCEDURE insert_sources_274(
151445 p_target_ledger_id IN NUMBER
151446 , p_language IN VARCHAR2
151447 , p_sla_ledger_id IN NUMBER
151448 , p_pad_start_date IN DATE
151449 , p_pad_end_date IN DATE
151450 )
151451 IS
151452
151453 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP_TP';
151454 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
151455 p_apps_owner VARCHAR2(30);
151456 l_log_module VARCHAR2(240);
151457 BEGIN
151458 IF g_log_enabled THEN
151459 l_log_module := C_DEFAULT_MODULE||'.insert_sources_274';
151460 END IF;
151461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151462
151463 trace
151464 (p_msg => 'BEGIN of insert_sources_274'
151465 ,p_level => C_LEVEL_PROCEDURE
151466 ,p_module => l_log_module);
151467
151468 END IF;
151469
151470 -- select APPS owner
151471 SELECT oracle_username
151472 INTO p_apps_owner
151473 FROM fnd_oracle_userid
151474 WHERE read_only_flag = 'U'
151475 ;
151476
151477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151478 trace
151479 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
151480 ' - p_language = '||p_language||
151484 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
151481 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
151482 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
151483 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
151485 ,p_level => C_LEVEL_STATEMENT
151486 ,p_module => l_log_module);
151487 END IF;
151488
151489
151490 --
151491 INSERT INTO xla_diag_sources --hdr1
151492 (
151493 event_id
151494 , ledger_id
151495 , sla_ledger_id
151496 , description_language
151497 , object_name
151498 , object_type_code
151499 , line_number
151500 , source_application_id
151501 , source_type_code
151502 , source_code
151503 , source_value
151504 , source_meaning
151505 , created_by
151506 , creation_date
151507 , last_update_date
151508 , last_updated_by
151509 , last_update_login
151510 , program_update_date
151511 , program_application_id
151512 , program_id
151513 , request_id
151514 )
151515 SELECT
151516 event_id
151517 , p_target_ledger_id
151518 , p_sla_ledger_id
151519 , p_language
151520 , object_name
151521 , object_type_code
151522 , line_number
151523 , source_application_id
151524 , source_type_code
151525 , source_code
151526 , SUBSTR(source_value ,1,1996)
151527 , SUBSTR(source_meaning,1,200)
151528 , xla_environment_pkg.g_Usr_Id
151529 , TRUNC(SYSDATE)
151530 , TRUNC(SYSDATE)
151531 , xla_environment_pkg.g_Usr_Id
151532 , xla_environment_pkg.g_Login_Id
151533 , TRUNC(SYSDATE)
151534 , xla_environment_pkg.g_Prog_Appl_Id
151535 , xla_environment_pkg.g_Prog_Id
151536 , xla_environment_pkg.g_Req_Id
151537 FROM (
151538 SELECT xet.event_id event_id
151539 , 0 line_number
151540 , CASE r
151541 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
151542 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
151543 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
151544 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
151545 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
151546 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
151547
151548 ELSE null
151549 END object_name
151550 , CASE r
151551 WHEN 1 THEN 'HEADER'
151552 WHEN 2 THEN 'HEADER'
151553 WHEN 3 THEN 'HEADER'
151554 WHEN 4 THEN 'HEADER'
151555 WHEN 5 THEN 'HEADER'
151556 WHEN 6 THEN 'HEADER'
151557
151558 ELSE null
151559 END object_type_code
151560 , CASE r
151561 WHEN 1 THEN '555'
151562 WHEN 2 THEN '555'
151563 WHEN 3 THEN '555'
151564 WHEN 4 THEN '555'
151565 WHEN 5 THEN '555'
151566 WHEN 6 THEN '555'
151567
151568 ELSE null
151569 END source_application_id
151570 , 'S' source_type_code
151571 , CASE r
151572 WHEN 1 THEN 'ENTITY_CODE'
151573 WHEN 2 THEN 'CURRENCY_CODE'
151574 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
151575 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
151576 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
151577 WHEN 6 THEN 'TRANSACTION_DATE'
151578
151579 ELSE null
151580 END source_code
151581 , CASE r
151582 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
151583 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
151584 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
151585 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
151586 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
151587 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
151588
151589 ELSE null
151590 END source_value
151591 , CASE r
151592 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
151593 1010186
151594 ,TO_CHAR(h1.CURRENCY_CODE)
151595 ,'CURRENCY_CODE'
151596 ,'S'
151597 ,555)
151598
151599 ELSE null
151600 END source_meaning
151601 FROM xla_events_gt xet
151602 , GMF_XLA_EXTRACT_HEADERS h1
151603 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
151604 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151605 AND xet.event_type_code = C_EVENT_TYPE_CODE
151606 AND h1.event_id = xet.event_id
151607
151608 )
151609 ;
151610 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151611
151612 trace
151613 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
151614 ,p_level => C_LEVEL_STATEMENT
151615 ,p_module => l_log_module);
151616
151617 END IF;
151618 --
151619
151620
151621
151625 event_id
151622 --
151623 INSERT INTO xla_diag_sources --line1
151624 (
151626 , ledger_id
151627 , sla_ledger_id
151628 , description_language
151629 , object_name
151630 , object_type_code
151631 , line_number
151632 , source_application_id
151633 , source_type_code
151634 , source_code
151635 , source_value
151636 , source_meaning
151637 , created_by
151638 , creation_date
151639 , last_update_date
151640 , last_updated_by
151641 , last_update_login
151642 , program_update_date
151643 , program_application_id
151644 , program_id
151645 , request_id
151646 )
151647 SELECT event_id
151648 , p_target_ledger_id
151649 , p_sla_ledger_id
151650 , p_language
151651 , object_name
151652 , object_type_code
151653 , line_number
151654 , source_application_id
151655 , source_type_code
151656 , source_code
151657 , SUBSTR(source_value,1,1996)
151658 , SUBSTR(source_meaning,1,200)
151659 , xla_environment_pkg.g_Usr_Id
151660 , TRUNC(SYSDATE)
151661 , TRUNC(SYSDATE)
151662 , xla_environment_pkg.g_Usr_Id
151663 , xla_environment_pkg.g_Login_Id
151664 , TRUNC(SYSDATE)
151665 , xla_environment_pkg.g_Prog_Appl_Id
151666 , xla_environment_pkg.g_Prog_Id
151667 , xla_environment_pkg.g_Req_Id
151668 FROM (
151669 SELECT xet.event_id event_id
151670 , l2.line_number line_number
151671 , CASE r
151672 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
151673 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
151674 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
151675 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
151676 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
151677
151678 ELSE null
151679 END object_name
151680 , CASE r
151681 WHEN 1 THEN 'LINE'
151682 WHEN 2 THEN 'LINE'
151683 WHEN 3 THEN 'LINE'
151684 WHEN 4 THEN 'LINE'
151685 WHEN 5 THEN 'LINE'
151686
151687 ELSE null
151688 END object_type_code
151689 , CASE r
151690 WHEN 1 THEN '555'
151691 WHEN 2 THEN '555'
151692 WHEN 3 THEN '555'
151693 WHEN 4 THEN '555'
151694 WHEN 5 THEN '555'
151695
151696 ELSE null
151697 END source_application_id
151698 , 'S' source_type_code
151699 , CASE r
151700 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
151701 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
151702 WHEN 3 THEN 'ENTERED_AMOUNT'
151703 WHEN 4 THEN 'LINE_ID'
151704 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
151705
151706 ELSE null
151707 END source_code
151708 , CASE r
151709 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
151710 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
151711 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
151712 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
151713 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
151714
151715 ELSE null
151716 END source_value
151717 , null source_meaning
151718 FROM xla_events_gt xet
151719 , GMF_XLA_EXTRACT_LINES l2
151720 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
151721 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151722 AND xet.event_type_code = C_EVENT_TYPE_CODE
151723 AND l2.event_id = xet.event_id
151724
151725 )
151726 ;
151727 --
151728 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151729
151730 trace
151731 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
151732 ,p_level => C_LEVEL_STATEMENT
151733 ,p_module => l_log_module);
151734
151735 END IF;
151736
151737
151738 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151739 trace
151740 (p_msg => 'END of insert_sources_274'
151741 ,p_level => C_LEVEL_PROCEDURE
151742 ,p_module => l_log_module);
151743 END IF;
151744 EXCEPTION
151745 WHEN xla_exceptions_pkg.application_exception THEN
151746 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
151747 trace
151748 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
151749 ,p_level => C_LEVEL_EXCEPTION
151750 ,p_module => l_log_module);
151751 END IF;
151752 RAISE;
151753 WHEN OTHERS THEN
151754 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
151755 trace
151756 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
151757 ,p_level => C_LEVEL_EXCEPTION
151758 ,p_module => l_log_module);
151759 END IF;
151760 xla_exceptions_pkg.raise_message
151764
151761 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_274');
151762 END insert_sources_274;
151763 --
151765 ---------------------------------------
151766 --
151767 -- PRIVATE FUNCTION
151768 -- EventType_274
151769 --
151770 ----------------------------------------
151771 --
151772 FUNCTION EventType_274
151773 (p_application_id IN NUMBER
151774 ,p_base_ledger_id IN NUMBER
151775 ,p_target_ledger_id IN NUMBER
151776 ,p_language IN VARCHAR2
151777 ,p_currency_code IN VARCHAR2
151778 ,p_sla_ledger_id IN NUMBER
151779 ,p_pad_start_date IN DATE
151780 ,p_pad_end_date IN DATE
151781 ,p_primary_ledger_id IN NUMBER)
151782 RETURN BOOLEAN IS
151783 --
151784 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP_TP';
151785 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
151786
151787 l_calculate_acctd_flag VARCHAR2(1) :='N';
151788 l_calculate_g_l_flag VARCHAR2(1) :='N';
151789 --
151790 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151791 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151792 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151793 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151794 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151795 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151796 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151797 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151798 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151799 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151800 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151801 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151802 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151803 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151804 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151805 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151806 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151807 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151808 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151809 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151810 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151811 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151812 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
151813 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151814 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
151815 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
151816
151817 l_event_id NUMBER;
151818 l_previous_event_id NUMBER;
151819 l_first_event_id NUMBER;
151820 l_last_event_id NUMBER;
151821
151822 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
151823 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
151824 --
151825 --
151826 l_result BOOLEAN := TRUE;
151827 l_rows NUMBER := 1000;
151828 l_event_type_name VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment, Transfer Pricing';
151829 l_event_class_name VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
151830 l_description VARCHAR2(4000);
151831 l_transaction_reversal NUMBER;
151832 l_ae_header_id NUMBER;
151833 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
151834 l_log_module VARCHAR2(240);
151835 --
151836 l_acct_reversal_source VARCHAR2(30);
151837 l_trx_reversal_source VARCHAR2(30);
151838
151839 l_continue_with_lines BOOLEAN := TRUE;
151840 --
151841 l_acc_rev_gl_date_source DATE; -- 4262811
151842 --
151843 type t_array_event_id is table of number index by binary_integer;
151844
151845 l_rec_array_event t_rec_array_event;
151846 l_null_rec_array_event t_rec_array_event;
151847 l_array_ae_header_id xla_number_array_type;
151848 l_actual_flag VARCHAR2(1) := NULL;
151849 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
151850 l_balance_type_code VARCHAR2(1) :=NULL;
151851 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
151852
151853 --
151854 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
151855 --
151856
151857 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
151858 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
151859 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
151860 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
151864 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
151861 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
151862 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
151863
151865 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
151866 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151867 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
151868 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151869
151870 l_array_source_6 t_array_source_6;
151871 l_array_source_7 t_array_source_7;
151872 l_array_source_8 t_array_source_8;
151873 l_array_source_9 t_array_source_9;
151874 l_array_source_10 t_array_source_10;
151875 l_array_source_12 t_array_source_12;
151876
151877 l_array_source_1 t_array_source_1;
151878 l_array_source_2 t_array_source_2;
151879 l_array_source_3 t_array_source_3;
151880 l_array_source_5 t_array_source_5;
151881 l_array_source_11 t_array_source_11;
151882
151883 --
151884 CURSOR header_cur
151885 IS
151886 SELECT /*+ leading(xet) cardinality(xet,1) */
151887 -- Event Type Code: FOB_SHIP_SENDER_SHIP_TP
151888 -- Event Class Code: FOB_SHIP_SENDER_SHIP
151889 xet.entity_id
151890 , xet.legal_entity_id
151891 , xet.entity_code
151892 , xet.transaction_number
151893 , xet.event_id
151894 , xet.event_class_code
151895 , xet.event_type_code
151896 , xet.event_number
151897 , xet.event_date
151898 , xet.transaction_date
151899 , xet.reference_num_1
151900 , xet.reference_num_2
151901 , xet.reference_num_3
151902 , xet.reference_num_4
151903 , xet.reference_char_1
151904 , xet.reference_char_2
151905 , xet.reference_char_3
151906 , xet.reference_char_4
151907 , xet.reference_date_1
151908 , xet.reference_date_2
151909 , xet.reference_date_3
151910 , xet.reference_date_4
151911 , xet.event_created_by
151912 , xet.budgetary_control_flag
151913 , h1.ENTITY_CODE source_6
151914 , h1.CURRENCY_CODE source_7
151915 , h1.CURRENCY_CONVERSION_DATE source_8
151916 , h1.CURRENCY_CONVERSION_RATE source_9
151917 , h1.CURRENCY_CONVERSION_TYPE source_10
151918 , h1.TRANSACTION_DATE source_12
151919 FROM xla_events_gt xet
151920 , GMF_XLA_EXTRACT_HEADERS h1
151921 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
151922 and xet.event_type_code = C_EVENT_TYPE_CODE
151923 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
151924
151925 ORDER BY event_id
151926 ;
151927
151928
151929 --
151930 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
151931 IS
151932 SELECT /*+ leading(xet) cardinality(xet,1) */
151933 -- Event Type Code: FOB_SHIP_SENDER_SHIP_TP
151934 -- Event Class Code: FOB_SHIP_SENDER_SHIP
151935 xet.entity_id
151936 ,xet.legal_entity_id
151937 ,xet.entity_code
151938 ,xet.transaction_number
151939 ,xet.event_id
151940 ,xet.event_class_code
151941 ,xet.event_type_code
151942 ,xet.event_number
151943 ,xet.event_date
151944 ,xet.transaction_date
151945 ,xet.reference_num_1
151946 ,xet.reference_num_2
151947 ,xet.reference_num_3
151948 ,xet.reference_num_4
151949 ,xet.reference_char_1
151950 ,xet.reference_char_2
151951 ,xet.reference_char_3
151952 ,xet.reference_char_4
151953 ,xet.reference_date_1
151954 ,xet.reference_date_2
151955 ,xet.reference_date_3
151956 ,xet.reference_date_4
151957 ,xet.event_created_by
151958 ,xet.budgetary_control_flag , l2.LINE_NUMBER
151959 , l2.TRANSACTION_ACCOUNT_ID source_1
151960 , l2.JOURNAL_LINE_TYPE source_2
151961 , l2.ENTERED_AMOUNT source_3
151962 , l2.LINE_ID source_5
151963 , l2.ACCOUNTED_AMOUNT source_11
151964 FROM xla_events_gt xet
151965 , GMF_XLA_EXTRACT_LINES l2
151966 WHERE xet.event_id between x_first_event_id and x_last_event_id
151967 and xet.event_date between p_pad_start_date and p_pad_end_date
151968 and xet.event_type_code = C_EVENT_TYPE_CODE
151969 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
151970 ;
151971
151972 --
151973 BEGIN
151974 IF g_log_enabled THEN
151975 l_log_module := C_DEFAULT_MODULE||'.EventType_274';
151976 END IF;
151977 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151978 trace
151979 (p_msg => 'BEGIN of EventType_274'
151980 ,p_level => C_LEVEL_PROCEDURE
151981 ,p_module => l_log_module);
151982 END IF;
151983
151984 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151985 trace
151986 (p_msg => 'p_application_id = '||p_application_id||
151987 ' - p_base_ledger_id = '||p_base_ledger_id||
151988 ' - p_target_ledger_id = '||p_target_ledger_id||
151989 ' - p_language = '||p_language||
151990 ' - p_currency_code = '||p_currency_code||
151991 ' - p_sla_ledger_id = '||p_sla_ledger_id
151992 ,p_level => C_LEVEL_STATEMENT
151993 ,p_module => l_log_module);
151994 END IF;
151995 --
151999 l_rec_array_event := l_null_rec_array_event;
151996 -- initialze arrays
151997 --
151998 g_array_event.DELETE;
152000 --
152001 --------------------------------------
152002 -- 4262811 Initialze MPA Line Number
152003 --------------------------------------
152004 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
152005
152006 --
152007
152008 --
152009 OPEN header_cur;
152010 --
152011 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152012 trace
152013 (p_msg => 'SQL - FETCH header_cur'
152014 ,p_level => C_LEVEL_STATEMENT
152015 ,p_module => l_log_module);
152016 END IF;
152017 --
152018 LOOP
152019 FETCH header_cur BULK COLLECT INTO
152020 l_array_entity_id
152021 , l_array_legal_entity_id
152022 , l_array_entity_code
152023 , l_array_transaction_num
152024 , l_array_event_id
152025 , l_array_class_code
152026 , l_array_event_type
152027 , l_array_event_number
152028 , l_array_event_date
152029 , l_array_transaction_date
152030 , l_array_reference_num_1
152031 , l_array_reference_num_2
152032 , l_array_reference_num_3
152033 , l_array_reference_num_4
152034 , l_array_reference_char_1
152035 , l_array_reference_char_2
152036 , l_array_reference_char_3
152037 , l_array_reference_char_4
152038 , l_array_reference_date_1
152039 , l_array_reference_date_2
152040 , l_array_reference_date_3
152041 , l_array_reference_date_4
152042 , l_array_event_created_by
152043 , l_array_budgetary_control_flag
152044 , l_array_source_6
152045 , l_array_source_7
152046 , l_array_source_8
152047 , l_array_source_9
152048 , l_array_source_10
152049 , l_array_source_12
152050 LIMIT l_rows;
152051 --
152052 IF (C_LEVEL_EVENT >= g_log_level) THEN
152053 trace
152054 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
152055 ,p_level => C_LEVEL_EVENT
152056 ,p_module => l_log_module);
152057 END IF;
152058 --
152059 EXIT WHEN l_array_entity_id.COUNT = 0;
152060
152061 -- initialize arrays
152062 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
152063 XLA_AE_LINES_PKG.g_rec_lines := NULL;
152064
152065 --
152066 -- Bug 4458708
152067 --
152068 XLA_AE_LINES_PKG.g_LineNumber := 0;
152069
152070
152071 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
152072 g_last_hdr_idx := l_array_event_id.LAST;
152073 --
152074 -- loop for the headers. Each iteration is for each header extract row
152075 -- fetched in header cursor
152076 --
152077 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
152078
152079 --
152080 -- set event info as cache for other routines to refer event attributes
152081 --
152082 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152083 (p_application_id => p_application_id
152084 ,p_primary_ledger_id => p_primary_ledger_id
152085 ,p_base_ledger_id => p_base_ledger_id
152086 ,p_target_ledger_id => p_target_ledger_id
152087 ,p_entity_id => l_array_entity_id(hdr_idx)
152088 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
152089 ,p_entity_code => l_array_entity_code(hdr_idx)
152090 ,p_transaction_num => l_array_transaction_num(hdr_idx)
152091 ,p_event_id => l_array_event_id(hdr_idx)
152092 ,p_event_class_code => l_array_class_code(hdr_idx)
152093 ,p_event_type_code => l_array_event_type(hdr_idx)
152094 ,p_event_number => l_array_event_number(hdr_idx)
152095 ,p_event_date => l_array_event_date(hdr_idx)
152096 ,p_transaction_date => l_array_transaction_date(hdr_idx)
152097 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
152098 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
152099 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
152100 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
152101 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
152102 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
152103 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
152104 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
152105 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
152106 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
152107 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
152108 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
152109 ,p_event_created_by => l_array_event_created_by(hdr_idx)
152110 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
152111
152112 --
152113 -- set the status of entry to C_VALID (0)
152114 --
152115 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152116
152117 --
152118 -- initialize a row for ae header
152119 --
152120 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
152121
152122 l_event_id := l_array_event_id(hdr_idx);
152123
152124 --
152125 -- storing the hdr_idx for event. May be used by line cursor.
152126 --
152127 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
152128
152129 --
152130 -- store sources from header extract. This can be improved to
152131 -- store only those sources from header extract that may be used in lines
152132 --
152133
152137 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
152134 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
152135 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
152136 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
152138 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
152139 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
152140
152141 --
152142 -- initilaize the status of ae headers for diffrent balance types
152143 -- the status is initialised to C_NOT_CREATED (2)
152144 --
152145 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152146 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152147 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152148
152149 --
152150 -- call api to validate and store accounting attributes for header
152151 --
152152
152153 ------------------------------------------------------------
152154 -- Accrual Reversal : to get date for Standard Source (NONE)
152155 ------------------------------------------------------------
152156 l_acc_rev_gl_date_source := NULL;
152157
152158 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
152159 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
152160
152161
152162 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
152163
152164 XLA_AE_HEADER_PKG.SetJeCategoryName;
152165
152166 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
152167 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
152168 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
152169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
152170 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
152171
152172
152173 -- No header level analytical criteria
152174
152175 --
152176 --accounting attribute enhancement, bug 3612931
152177 --
152178 l_trx_reversal_source := SUBSTR(NULL, 1,30);
152179
152180 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
152181 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
152182
152183 xla_accounting_err_pkg.build_message
152184 (p_appli_s_name => 'XLA'
152185 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
152186 ,p_token_1 => 'ACCT_ATTR_NAME'
152187 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
152188 ,p_token_2 => 'PRODUCT_NAME'
152189 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152190 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152191 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
152192 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152193
152194 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
152195 --
152196 -- following sets the accounting attributes needed to reverse
152197 -- accounting for a distributeion
152198 --
152199 xla_ae_lines_pkg.SetTrxReversalAttrs
152200 (p_event_id => l_event_id
152201 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
152202 ,p_trx_reversal_source => l_trx_reversal_source);
152203
152204 END IF;
152205
152206
152207 ----------------------------------------------------------------
152208 -- 4262811 - update the header statuses to invalid in need be
152209 ----------------------------------------------------------------
152210 --
152211 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
152212
152213
152214 -----------------------------------------------
152215 -- No accrual reversal for the event class/type
152216 -----------------------------------------------
152217 ----------------------------------------------------------------
152218
152219 --
152220 -- this ends the header loop iteration for one bulk fetch
152221 --
152222 END LOOP;
152223
152224 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
152225 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
152226
152227 --
152228 -- insert dummy rows into lines gt table that were created due to
152229 -- transaction reversals
152230 --
152231 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
152232 l_result := XLA_AE_LINES_PKG.InsertLines;
152233 END IF;
152234
152235 --
152236 -- reset the temp_line_num for each set of events fetched from header
152237 -- cursor rather than doing it for each new event in line cursor
152238 -- Bug 3939231
152239 --
152240 xla_ae_lines_pkg.g_temp_line_num := 0;
152241
152242
152243
152244 --
152245 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
152246 --
152247 --
152248 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152249
152250 trace
152251 (p_msg => 'SQL - FETCH line_cur'
152252 ,p_level => C_LEVEL_STATEMENT
152253 ,p_module => l_log_module);
152254
152255 END IF;
152256 --
152260 FETCH line_cur BULK COLLECT INTO
152257 --
152258 LOOP
152259 --
152261 l_array_entity_id
152262 , l_array_legal_entity_id
152263 , l_array_entity_code
152264 , l_array_transaction_num
152265 , l_array_event_id
152266 , l_array_class_code
152267 , l_array_event_type
152268 , l_array_event_number
152269 , l_array_event_date
152270 , l_array_transaction_date
152271 , l_array_reference_num_1
152272 , l_array_reference_num_2
152273 , l_array_reference_num_3
152274 , l_array_reference_num_4
152275 , l_array_reference_char_1
152276 , l_array_reference_char_2
152277 , l_array_reference_char_3
152278 , l_array_reference_char_4
152279 , l_array_reference_date_1
152280 , l_array_reference_date_2
152281 , l_array_reference_date_3
152282 , l_array_reference_date_4
152283 , l_array_event_created_by
152284 , l_array_budgetary_control_flag
152285 , l_array_extract_line_num
152286 , l_array_source_1
152287 , l_array_source_2
152288 , l_array_source_3
152289 , l_array_source_5
152290 , l_array_source_11
152291 LIMIT l_rows;
152292
152293 --
152294 IF (C_LEVEL_EVENT >= g_log_level) THEN
152295 trace
152296 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
152297 ,p_level => C_LEVEL_EVENT
152298 ,p_module => l_log_module);
152299 END IF;
152300 --
152301 EXIT WHEN l_array_entity_id.count = 0;
152302
152303 XLA_AE_LINES_PKG.g_rec_lines := null;
152304
152305 --
152306 -- Bug 4458708
152307 --
152308 XLA_AE_LINES_PKG.g_LineNumber := 0;
152309 --
152310 --
152311
152312 FOR Idx IN 1..l_array_event_id.count LOOP
152313 --
152314 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
152315 --
152316 l_event_id := l_array_event_id(idx); -- 5648433
152317
152318 --
152319 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152320 --
152321
152322 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
152323 (g_array_event(l_event_id).array_value_num('header_index'))
152324 ,'N'
152325 ) <> 'Y'
152326 THEN
152327 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152328 trace
152329 (p_msg => 'Trancaction revesal option is not Y '
152330 ,p_level => C_LEVEL_STATEMENT
152331 ,p_module => l_log_module);
152332 END IF;
152333
152334 --
152335 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
152336 --
152337 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152338 --
152339 -- set event info as cache for other routines to refer event attributes
152340 --
152341
152342 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
152343 l_previous_event_id := l_event_id;
152344
152345 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152346 (p_application_id => p_application_id
152347 ,p_primary_ledger_id => p_primary_ledger_id
152348 ,p_base_ledger_id => p_base_ledger_id
152349 ,p_target_ledger_id => p_target_ledger_id
152350 ,p_entity_id => l_array_entity_id(Idx)
152351 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
152352 ,p_entity_code => l_array_entity_code(Idx)
152353 ,p_transaction_num => l_array_transaction_num(Idx)
152354 ,p_event_id => l_array_event_id(Idx)
152355 ,p_event_class_code => l_array_class_code(Idx)
152356 ,p_event_type_code => l_array_event_type(Idx)
152357 ,p_event_number => l_array_event_number(Idx)
152358 ,p_event_date => l_array_event_date(Idx)
152359 ,p_transaction_date => l_array_transaction_date(Idx)
152360 ,p_reference_num_1 => l_array_reference_num_1(Idx)
152361 ,p_reference_num_2 => l_array_reference_num_2(Idx)
152362 ,p_reference_num_3 => l_array_reference_num_3(Idx)
152363 ,p_reference_num_4 => l_array_reference_num_4(Idx)
152364 ,p_reference_char_1 => l_array_reference_char_1(Idx)
152365 ,p_reference_char_2 => l_array_reference_char_2(Idx)
152366 ,p_reference_char_3 => l_array_reference_char_3(Idx)
152367 ,p_reference_char_4 => l_array_reference_char_4(Idx)
152368 ,p_reference_date_1 => l_array_reference_date_1(Idx)
152369 ,p_reference_date_2 => l_array_reference_date_2(Idx)
152370 ,p_reference_date_3 => l_array_reference_date_3(Idx)
152371 ,p_reference_date_4 => l_array_reference_date_4(Idx)
152372 ,p_event_created_by => l_array_event_created_by(Idx)
152373 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
152374 --
152375 END IF;
152376
152377
152378
152379 --
152380 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
152381
152382 l_acct_reversal_source := SUBSTR(NULL, 1,30);
152383
152384 IF l_continue_with_lines THEN
152385 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
152386 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
152387
152388 xla_accounting_err_pkg.build_message
152389 (p_appli_s_name => 'XLA'
152393 ,p_token_2 => 'PRODUCT_NAME'
152390 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
152391 ,p_token_1 => 'LINE_NUMBER'
152392 ,p_value_1 => l_array_extract_line_num(Idx)
152394 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152395 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152396 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
152397 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152398
152399 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
152400 --
152401 -- following sets the accounting attributes needed to reverse
152402 -- accounting for a distributeion
152403 --
152404
152405 --
152406 -- 5217187
152407 --
152408 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
152409 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
152410 g_array_event(l_event_id).array_value_num('header_index'));
152411 --
152412 --
152413
152414 -- No reversal code generated
152415
152416 xla_ae_lines_pkg.SetAcctReversalAttrs
152417 (p_event_id => l_event_id
152418 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
152419 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152420 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
152421 END IF;
152422
152423 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
152424 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
152425
152426 --
152427 AcctLineType_73 (
152428 p_application_id => p_application_id
152429 ,p_event_id => l_event_id
152430 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152431 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152432 ,p_actual_flag => l_actual_flag
152433 ,p_balance_type_code => l_balance_type_code
152434 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152435
152436 , p_source_1 => l_array_source_1(Idx)
152437 , p_source_2 => l_array_source_2(Idx)
152438 , p_source_3 => l_array_source_3(Idx)
152439 , p_source_5 => l_array_source_5(Idx)
152440 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152441 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152442 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152443 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152444 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152445 , p_source_11 => l_array_source_11(Idx)
152446 );
152447 If(l_balance_type_code = 'A') THEN
152448 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152449 END IF;
152450
152451 --
152452
152453
152454 --
152455 AcctLineType_94 (
152456 p_application_id => p_application_id
152457 ,p_event_id => l_event_id
152458 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152459 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152460 ,p_actual_flag => l_actual_flag
152461 ,p_balance_type_code => l_balance_type_code
152462 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152463
152464 , p_source_1 => l_array_source_1(Idx)
152465 , p_source_2 => l_array_source_2(Idx)
152466 , p_source_3 => l_array_source_3(Idx)
152467 , p_source_5 => l_array_source_5(Idx)
152468 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152469 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152470 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152471 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152472 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152473 , p_source_11 => l_array_source_11(Idx)
152474 );
152475 If(l_balance_type_code = 'A') THEN
152476 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152477 END IF;
152478
152479 --
152480
152481
152482 --
152483 AcctLineType_131 (
152484 p_application_id => p_application_id
152485 ,p_event_id => l_event_id
152486 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152487 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152488 ,p_actual_flag => l_actual_flag
152489 ,p_balance_type_code => l_balance_type_code
152490 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152491
152492 , p_source_1 => l_array_source_1(Idx)
152493 , p_source_2 => l_array_source_2(Idx)
152494 , p_source_3 => l_array_source_3(Idx)
152495 , p_source_5 => l_array_source_5(Idx)
152496 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152497 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152498 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152499 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152500 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152501 , p_source_11 => l_array_source_11(Idx)
152502 );
152503 If(l_balance_type_code = 'A') THEN
152504 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152505 END IF;
152506
152507 --
152508
152509
152510 --
152511 AcctLineType_179 (
152512 p_application_id => p_application_id
152513 ,p_event_id => l_event_id
152514 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152515 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152516 ,p_actual_flag => l_actual_flag
152520 , p_source_1 => l_array_source_1(Idx)
152517 ,p_balance_type_code => l_balance_type_code
152518 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152519
152521 , p_source_2 => l_array_source_2(Idx)
152522 , p_source_3 => l_array_source_3(Idx)
152523 , p_source_5 => l_array_source_5(Idx)
152524 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
152525 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152526 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
152527 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152528 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152529 , p_source_11 => l_array_source_11(Idx)
152530 );
152531 If(l_balance_type_code = 'A') THEN
152532 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152533 END IF;
152534
152535 --
152536
152537
152538 --
152539 AcctLineType_187 (
152540 p_application_id => p_application_id
152541 ,p_event_id => l_event_id
152542 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152543 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152544 ,p_actual_flag => l_actual_flag
152545 ,p_balance_type_code => l_balance_type_code
152546 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152547
152548 , p_source_1 => l_array_source_1(Idx)
152549 , p_source_2 => l_array_source_2(Idx)
152550 , p_source_3 => l_array_source_3(Idx)
152551 , p_source_5 => l_array_source_5(Idx)
152552 , p_source_6 => g_array_event(l_event_id).array_value_char('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_date('source_8')
152555 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
152556 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
152557 , p_source_11 => l_array_source_11(Idx)
152558 );
152559 If(l_balance_type_code = 'A') THEN
152560 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152561 END IF;
152562
152563 --
152564
152565 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
152566 -- or secondary ledger that has different currency with primary
152567 -- or alc that is calculated by sla
152568 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
152569 (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'))
152570
152571 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
152572 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
152573 AND (l_actual_flag = 'A')) THEN
152574 XLA_AE_LINES_PKG.CreateGainOrLossLines(
152575 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
152576 ,p_application_id => p_application_id
152577 ,p_amb_context_code => 'DEFAULT'
152578 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
152579 ,p_event_class_code => C_EVENT_CLASS_CODE
152580 ,p_event_type_code => C_EVENT_TYPE_CODE
152581
152582 ,p_gain_ccid => -1
152583 ,p_loss_ccid => -1
152584
152585 ,p_actual_flag => l_actual_flag
152586 ,p_enc_flag => null
152587 ,p_actual_g_l_ref => l_actual_gain_loss_ref
152588 ,p_enc_g_l_ref => null
152589 );
152590 END IF;
152591 END IF;
152592 END IF;
152593
152594 ELSE
152595 --
152596 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152597 --
152598 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152599 trace
152600 (p_msg => 'Trancaction revesal option is Y'
152601 ,p_level => C_LEVEL_STATEMENT
152602 ,p_module => l_log_module);
152603 END IF;
152604 END IF;
152605
152606 END LOOP;
152607 l_result := XLA_AE_LINES_PKG.InsertLines ;
152608 end loop;
152609 close line_cur;
152610
152611
152612 --
152613 -- insert headers into xla_ae_headers_gt table
152614 --
152615 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
152616
152617 -- insert into errors table here.
152618
152619 END LOOP;
152620
152621 --
152622 -- 4865292
152623 --
152624 -- Compare g_hdr_extract_count with event count in
152625 -- CreateHeadersAndLines.
152626 --
152627 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
152628
152629 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152630 trace (p_msg => '# rows extracted from header extract objects '
152631 || ' (running total): '
152632 || g_hdr_extract_count
152633 ,p_level => C_LEVEL_STATEMENT
152634 ,p_module => l_log_module);
152635 END IF;
152636
152637 CLOSE header_cur;
152638 --
152639
152640 --
152641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152642 trace
152643 (p_msg => 'END of EventType_274'
152644 ,p_level => C_LEVEL_PROCEDURE
152645 ,p_module => l_log_module);
152646 END IF;
152647 --
152648 RETURN l_result;
152649 EXCEPTION
152650 WHEN xla_exceptions_pkg.application_exception THEN
152651
152652 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
152653
152654
152655 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
152659 WHEN NO_DATA_FOUND THEN
152656
152657 RAISE;
152658
152660
152661 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
152662 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
152663
152664 FOR header_record IN header_cur
152665 LOOP
152666 l_array_header_events(header_record.event_id) := header_record.event_id;
152667 END LOOP;
152668
152669 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
152670 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
152671
152672 fnd_file.put_line(fnd_file.LOG, ' ');
152673 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
152674 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
152675 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
152676
152677 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
152678 LOOP
152679 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
152680 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
152681 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
152682 END IF;
152683 END LOOP;
152684
152685 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
152686 fnd_file.put_line(fnd_file.LOG, ' ');
152687
152688
152689 xla_exceptions_pkg.raise_message
152690 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_274');
152691
152692
152693 WHEN OTHERS THEN
152694 xla_exceptions_pkg.raise_message
152695 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_274');
152696 END EventType_274;
152697 --
152698
152699 ---------------------------------------
152700 --
152701 -- PRIVATE PROCEDURE
152702 -- insert_sources_275
152703 --
152704 ----------------------------------------
152705 --
152706 PROCEDURE insert_sources_275(
152707 p_target_ledger_id IN NUMBER
152708 , p_language IN VARCHAR2
152709 , p_sla_ledger_id IN NUMBER
152710 , p_pad_start_date IN DATE
152711 , p_pad_end_date IN DATE
152712 )
152713 IS
152714
152715 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'GLCOSTALOC';
152716 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'GLCOSTALOC';
152717 p_apps_owner VARCHAR2(30);
152718 l_log_module VARCHAR2(240);
152719 BEGIN
152720 IF g_log_enabled THEN
152721 l_log_module := C_DEFAULT_MODULE||'.insert_sources_275';
152722 END IF;
152723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152724
152725 trace
152726 (p_msg => 'BEGIN of insert_sources_275'
152727 ,p_level => C_LEVEL_PROCEDURE
152728 ,p_module => l_log_module);
152729
152730 END IF;
152731
152732 -- select APPS owner
152733 SELECT oracle_username
152734 INTO p_apps_owner
152735 FROM fnd_oracle_userid
152736 WHERE read_only_flag = 'U'
152737 ;
152738
152739 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152740 trace
152741 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
152742 ' - p_language = '||p_language||
152743 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
152744 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
152745 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
152746 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
152747 ,p_level => C_LEVEL_STATEMENT
152748 ,p_module => l_log_module);
152749 END IF;
152750
152751
152752 --
152753 INSERT INTO xla_diag_sources --hdr1
152754 (
152755 event_id
152756 , ledger_id
152757 , sla_ledger_id
152758 , description_language
152759 , object_name
152760 , object_type_code
152761 , line_number
152762 , source_application_id
152763 , source_type_code
152764 , source_code
152765 , source_value
152766 , source_meaning
152767 , created_by
152768 , creation_date
152769 , last_update_date
152770 , last_updated_by
152771 , last_update_login
152772 , program_update_date
152773 , program_application_id
152774 , program_id
152775 , request_id
152776 )
152777 SELECT
152778 event_id
152779 , p_target_ledger_id
152780 , p_sla_ledger_id
152781 , p_language
152782 , object_name
152783 , object_type_code
152784 , line_number
152785 , source_application_id
152786 , source_type_code
152787 , source_code
152788 , SUBSTR(source_value ,1,1996)
152789 , SUBSTR(source_meaning,1,200)
152790 , xla_environment_pkg.g_Usr_Id
152791 , TRUNC(SYSDATE)
152792 , TRUNC(SYSDATE)
152793 , xla_environment_pkg.g_Usr_Id
152794 , xla_environment_pkg.g_Login_Id
152795 , TRUNC(SYSDATE)
152796 , xla_environment_pkg.g_Prog_Appl_Id
152797 , xla_environment_pkg.g_Prog_Id
152798 , xla_environment_pkg.g_Req_Id
152799 FROM (
152800 SELECT xet.event_id event_id
152801 , 0 line_number
152805 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
152802 , CASE r
152803 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
152804 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
152806 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
152807 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
152808 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
152809
152810 ELSE null
152811 END object_name
152812 , CASE r
152813 WHEN 1 THEN 'HEADER'
152814 WHEN 2 THEN 'HEADER'
152815 WHEN 3 THEN 'HEADER'
152816 WHEN 4 THEN 'HEADER'
152817 WHEN 5 THEN 'HEADER'
152818 WHEN 6 THEN 'HEADER'
152819
152820 ELSE null
152821 END object_type_code
152822 , CASE r
152823 WHEN 1 THEN '555'
152824 WHEN 2 THEN '555'
152825 WHEN 3 THEN '555'
152826 WHEN 4 THEN '555'
152827 WHEN 5 THEN '555'
152828 WHEN 6 THEN '555'
152829
152830 ELSE null
152831 END source_application_id
152832 , 'S' source_type_code
152833 , CASE r
152834 WHEN 1 THEN 'ENTITY_CODE'
152835 WHEN 2 THEN 'CURRENCY_CODE'
152836 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
152837 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
152838 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
152839 WHEN 6 THEN 'TRANSACTION_DATE'
152840
152841 ELSE null
152842 END source_code
152843 , CASE r
152844 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
152845 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
152846 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
152847 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
152848 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
152849 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
152850
152851 ELSE null
152852 END source_value
152853 , CASE r
152854 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
152855 1010186
152856 ,TO_CHAR(h1.CURRENCY_CODE)
152857 ,'CURRENCY_CODE'
152858 ,'S'
152859 ,555)
152860
152861 ELSE null
152862 END source_meaning
152863 FROM xla_events_gt xet
152864 , GMF_XLA_EXTRACT_HEADERS h1
152865 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
152866 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
152867 AND xet.event_type_code = C_EVENT_TYPE_CODE
152868 AND h1.event_id = xet.event_id
152869
152870 )
152871 ;
152872 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152873
152874 trace
152875 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
152876 ,p_level => C_LEVEL_STATEMENT
152877 ,p_module => l_log_module);
152878
152879 END IF;
152880 --
152881
152882
152883
152884 --
152885 INSERT INTO xla_diag_sources --line1
152886 (
152887 event_id
152888 , ledger_id
152889 , sla_ledger_id
152890 , description_language
152891 , object_name
152892 , object_type_code
152893 , line_number
152894 , source_application_id
152895 , source_type_code
152896 , source_code
152897 , source_value
152898 , source_meaning
152899 , created_by
152900 , creation_date
152901 , last_update_date
152902 , last_updated_by
152903 , last_update_login
152904 , program_update_date
152905 , program_application_id
152906 , program_id
152907 , request_id
152908 )
152909 SELECT event_id
152910 , p_target_ledger_id
152911 , p_sla_ledger_id
152912 , p_language
152913 , object_name
152914 , object_type_code
152915 , line_number
152916 , source_application_id
152917 , source_type_code
152918 , source_code
152919 , SUBSTR(source_value,1,1996)
152920 , SUBSTR(source_meaning,1,200)
152921 , xla_environment_pkg.g_Usr_Id
152922 , TRUNC(SYSDATE)
152923 , TRUNC(SYSDATE)
152924 , xla_environment_pkg.g_Usr_Id
152925 , xla_environment_pkg.g_Login_Id
152926 , TRUNC(SYSDATE)
152927 , xla_environment_pkg.g_Prog_Appl_Id
152928 , xla_environment_pkg.g_Prog_Id
152929 , xla_environment_pkg.g_Req_Id
152930 FROM (
152931 SELECT xet.event_id event_id
152932 , l2.line_number line_number
152933 , CASE r
152934 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
152935 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
152936 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
152937 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
152938 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
152939
152940 ELSE null
152944 WHEN 2 THEN 'LINE'
152941 END object_name
152942 , CASE r
152943 WHEN 1 THEN 'LINE'
152945 WHEN 3 THEN 'LINE'
152946 WHEN 4 THEN 'LINE'
152947 WHEN 5 THEN 'LINE'
152948
152949 ELSE null
152950 END object_type_code
152951 , CASE r
152952 WHEN 1 THEN '555'
152953 WHEN 2 THEN '555'
152954 WHEN 3 THEN '555'
152955 WHEN 4 THEN '555'
152956 WHEN 5 THEN '555'
152957
152958 ELSE null
152959 END source_application_id
152960 , 'S' source_type_code
152961 , CASE r
152962 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
152963 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
152964 WHEN 3 THEN 'ENTERED_AMOUNT'
152965 WHEN 4 THEN 'LINE_ID'
152966 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
152967
152968 ELSE null
152969 END source_code
152970 , CASE r
152971 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
152972 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
152973 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
152974 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
152975 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
152976
152977 ELSE null
152978 END source_value
152979 , null source_meaning
152980 FROM xla_events_gt xet
152981 , GMF_XLA_EXTRACT_LINES l2
152982 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
152983 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
152984 AND xet.event_type_code = C_EVENT_TYPE_CODE
152985 AND l2.event_id = xet.event_id
152986
152987 )
152988 ;
152989 --
152990 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152991
152992 trace
152993 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
152994 ,p_level => C_LEVEL_STATEMENT
152995 ,p_module => l_log_module);
152996
152997 END IF;
152998
152999
153000 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153001 trace
153002 (p_msg => 'END of insert_sources_275'
153003 ,p_level => C_LEVEL_PROCEDURE
153004 ,p_module => l_log_module);
153005 END IF;
153006 EXCEPTION
153007 WHEN xla_exceptions_pkg.application_exception THEN
153008 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153009 trace
153010 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153011 ,p_level => C_LEVEL_EXCEPTION
153012 ,p_module => l_log_module);
153013 END IF;
153014 RAISE;
153015 WHEN OTHERS THEN
153016 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153017 trace
153018 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153019 ,p_level => C_LEVEL_EXCEPTION
153020 ,p_module => l_log_module);
153021 END IF;
153022 xla_exceptions_pkg.raise_message
153023 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_275');
153024 END insert_sources_275;
153025 --
153026
153027 ---------------------------------------
153028 --
153029 -- PRIVATE FUNCTION
153030 -- EventType_275
153031 --
153032 ----------------------------------------
153033 --
153034 FUNCTION EventType_275
153035 (p_application_id IN NUMBER
153036 ,p_base_ledger_id IN NUMBER
153037 ,p_target_ledger_id IN NUMBER
153038 ,p_language IN VARCHAR2
153039 ,p_currency_code IN VARCHAR2
153040 ,p_sla_ledger_id IN NUMBER
153041 ,p_pad_start_date IN DATE
153042 ,p_pad_end_date IN DATE
153043 ,p_primary_ledger_id IN NUMBER)
153044 RETURN BOOLEAN IS
153045 --
153046 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'GLCOSTALOC';
153047 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'GLCOSTALOC';
153048
153049 l_calculate_acctd_flag VARCHAR2(1) :='N';
153050 l_calculate_g_l_flag VARCHAR2(1) :='N';
153051 --
153052 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153053 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153054 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153055 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153056 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153057 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153058 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153059 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153060 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153061 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153062 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153063 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153067 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153064 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153065 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153066 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153068 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153069 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153070 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153071 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153072 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153073 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153074 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
153075 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153076 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
153077 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
153078
153079 l_event_id NUMBER;
153080 l_previous_event_id NUMBER;
153081 l_first_event_id NUMBER;
153082 l_last_event_id NUMBER;
153083
153084 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
153085 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
153086 --
153087 --
153088 l_result BOOLEAN := TRUE;
153089 l_rows NUMBER := 1000;
153090 l_event_type_name VARCHAR2(80) := 'GL Cost Allocation';
153091 l_event_class_name VARCHAR2(80) := 'GL Cost Allocation';
153092 l_description VARCHAR2(4000);
153093 l_transaction_reversal NUMBER;
153094 l_ae_header_id NUMBER;
153095 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
153096 l_log_module VARCHAR2(240);
153097 --
153098 l_acct_reversal_source VARCHAR2(30);
153099 l_trx_reversal_source VARCHAR2(30);
153100
153101 l_continue_with_lines BOOLEAN := TRUE;
153102 --
153103 l_acc_rev_gl_date_source DATE; -- 4262811
153104 --
153105 type t_array_event_id is table of number index by binary_integer;
153106
153107 l_rec_array_event t_rec_array_event;
153108 l_null_rec_array_event t_rec_array_event;
153109 l_array_ae_header_id xla_number_array_type;
153110 l_actual_flag VARCHAR2(1) := NULL;
153111 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
153112 l_balance_type_code VARCHAR2(1) :=NULL;
153113 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
153114
153115 --
153116 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
153117 --
153118
153119 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
153120 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
153121 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
153122 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
153123 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153124 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
153125
153126 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
153127 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
153128 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153129 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
153130 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153131
153132 l_array_source_6 t_array_source_6;
153133 l_array_source_7 t_array_source_7;
153134 l_array_source_8 t_array_source_8;
153135 l_array_source_9 t_array_source_9;
153136 l_array_source_10 t_array_source_10;
153137 l_array_source_12 t_array_source_12;
153138
153139 l_array_source_1 t_array_source_1;
153140 l_array_source_2 t_array_source_2;
153141 l_array_source_3 t_array_source_3;
153142 l_array_source_5 t_array_source_5;
153143 l_array_source_11 t_array_source_11;
153144
153145 --
153146 CURSOR header_cur
153147 IS
153148 SELECT /*+ leading(xet) cardinality(xet,1) */
153149 -- Event Type Code: GLCOSTALOC
153150 -- Event Class Code: GLCOSTALOC
153151 xet.entity_id
153152 , xet.legal_entity_id
153153 , xet.entity_code
153154 , xet.transaction_number
153155 , xet.event_id
153156 , xet.event_class_code
153157 , xet.event_type_code
153158 , xet.event_number
153159 , xet.event_date
153160 , xet.transaction_date
153161 , xet.reference_num_1
153162 , xet.reference_num_2
153163 , xet.reference_num_3
153164 , xet.reference_num_4
153165 , xet.reference_char_1
153166 , xet.reference_char_2
153167 , xet.reference_char_3
153168 , xet.reference_char_4
153169 , xet.reference_date_1
153170 , xet.reference_date_2
153174 , xet.budgetary_control_flag
153171 , xet.reference_date_3
153172 , xet.reference_date_4
153173 , xet.event_created_by
153175 , h1.ENTITY_CODE source_6
153176 , h1.CURRENCY_CODE source_7
153177 , h1.CURRENCY_CONVERSION_DATE source_8
153178 , h1.CURRENCY_CONVERSION_RATE source_9
153179 , h1.CURRENCY_CONVERSION_TYPE source_10
153180 , h1.TRANSACTION_DATE source_12
153181 FROM xla_events_gt xet
153182 , GMF_XLA_EXTRACT_HEADERS h1
153183 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
153184 and xet.event_type_code = C_EVENT_TYPE_CODE
153185 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
153186
153187 ORDER BY event_id
153188 ;
153189
153190
153191 --
153192 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
153193 IS
153194 SELECT /*+ leading(xet) cardinality(xet,1) */
153195 -- Event Type Code: GLCOSTALOC
153196 -- Event Class Code: GLCOSTALOC
153197 xet.entity_id
153198 ,xet.legal_entity_id
153199 ,xet.entity_code
153200 ,xet.transaction_number
153201 ,xet.event_id
153202 ,xet.event_class_code
153203 ,xet.event_type_code
153204 ,xet.event_number
153205 ,xet.event_date
153206 ,xet.transaction_date
153207 ,xet.reference_num_1
153208 ,xet.reference_num_2
153209 ,xet.reference_num_3
153210 ,xet.reference_num_4
153211 ,xet.reference_char_1
153212 ,xet.reference_char_2
153213 ,xet.reference_char_3
153214 ,xet.reference_char_4
153215 ,xet.reference_date_1
153216 ,xet.reference_date_2
153217 ,xet.reference_date_3
153218 ,xet.reference_date_4
153219 ,xet.event_created_by
153220 ,xet.budgetary_control_flag , l2.LINE_NUMBER
153221 , l2.TRANSACTION_ACCOUNT_ID source_1
153222 , l2.JOURNAL_LINE_TYPE source_2
153223 , l2.ENTERED_AMOUNT source_3
153224 , l2.LINE_ID source_5
153225 , l2.ACCOUNTED_AMOUNT source_11
153226 FROM xla_events_gt xet
153227 , GMF_XLA_EXTRACT_LINES l2
153228 WHERE xet.event_id between x_first_event_id and x_last_event_id
153229 and xet.event_date between p_pad_start_date and p_pad_end_date
153230 and xet.event_type_code = C_EVENT_TYPE_CODE
153231 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
153232 ;
153233
153234 --
153235 BEGIN
153236 IF g_log_enabled THEN
153237 l_log_module := C_DEFAULT_MODULE||'.EventType_275';
153238 END IF;
153239 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153240 trace
153241 (p_msg => 'BEGIN of EventType_275'
153242 ,p_level => C_LEVEL_PROCEDURE
153243 ,p_module => l_log_module);
153244 END IF;
153245
153246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153247 trace
153248 (p_msg => 'p_application_id = '||p_application_id||
153249 ' - p_base_ledger_id = '||p_base_ledger_id||
153250 ' - p_target_ledger_id = '||p_target_ledger_id||
153251 ' - p_language = '||p_language||
153252 ' - p_currency_code = '||p_currency_code||
153253 ' - p_sla_ledger_id = '||p_sla_ledger_id
153254 ,p_level => C_LEVEL_STATEMENT
153255 ,p_module => l_log_module);
153256 END IF;
153257 --
153258 -- initialze arrays
153259 --
153260 g_array_event.DELETE;
153261 l_rec_array_event := l_null_rec_array_event;
153262 --
153263 --------------------------------------
153264 -- 4262811 Initialze MPA Line Number
153265 --------------------------------------
153266 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
153267
153268 --
153269
153270 --
153271 OPEN header_cur;
153272 --
153273 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153274 trace
153275 (p_msg => 'SQL - FETCH header_cur'
153276 ,p_level => C_LEVEL_STATEMENT
153277 ,p_module => l_log_module);
153278 END IF;
153279 --
153280 LOOP
153281 FETCH header_cur BULK COLLECT INTO
153282 l_array_entity_id
153283 , l_array_legal_entity_id
153284 , l_array_entity_code
153285 , l_array_transaction_num
153286 , l_array_event_id
153287 , l_array_class_code
153288 , l_array_event_type
153289 , l_array_event_number
153290 , l_array_event_date
153291 , l_array_transaction_date
153292 , l_array_reference_num_1
153293 , l_array_reference_num_2
153294 , l_array_reference_num_3
153295 , l_array_reference_num_4
153296 , l_array_reference_char_1
153297 , l_array_reference_char_2
153298 , l_array_reference_char_3
153299 , l_array_reference_char_4
153300 , l_array_reference_date_1
153301 , l_array_reference_date_2
153302 , l_array_reference_date_3
153303 , l_array_reference_date_4
153304 , l_array_event_created_by
153305 , l_array_budgetary_control_flag
153306 , l_array_source_6
153307 , l_array_source_7
153308 , l_array_source_8
153309 , l_array_source_9
153310 , l_array_source_10
153311 , l_array_source_12
153312 LIMIT l_rows;
153313 --
153314 IF (C_LEVEL_EVENT >= g_log_level) THEN
153315 trace
153316 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
153317 ,p_level => C_LEVEL_EVENT
153318 ,p_module => l_log_module);
153319 END IF;
153320 --
153321 EXIT WHEN l_array_entity_id.COUNT = 0;
153322
153323 -- initialize arrays
153324 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
153328 -- Bug 4458708
153325 XLA_AE_LINES_PKG.g_rec_lines := NULL;
153326
153327 --
153329 --
153330 XLA_AE_LINES_PKG.g_LineNumber := 0;
153331
153332
153333 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
153334 g_last_hdr_idx := l_array_event_id.LAST;
153335 --
153336 -- loop for the headers. Each iteration is for each header extract row
153337 -- fetched in header cursor
153338 --
153339 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
153340
153341 --
153342 -- set event info as cache for other routines to refer event attributes
153343 --
153344 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153345 (p_application_id => p_application_id
153346 ,p_primary_ledger_id => p_primary_ledger_id
153347 ,p_base_ledger_id => p_base_ledger_id
153348 ,p_target_ledger_id => p_target_ledger_id
153349 ,p_entity_id => l_array_entity_id(hdr_idx)
153350 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
153351 ,p_entity_code => l_array_entity_code(hdr_idx)
153352 ,p_transaction_num => l_array_transaction_num(hdr_idx)
153353 ,p_event_id => l_array_event_id(hdr_idx)
153354 ,p_event_class_code => l_array_class_code(hdr_idx)
153355 ,p_event_type_code => l_array_event_type(hdr_idx)
153356 ,p_event_number => l_array_event_number(hdr_idx)
153357 ,p_event_date => l_array_event_date(hdr_idx)
153358 ,p_transaction_date => l_array_transaction_date(hdr_idx)
153359 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
153360 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
153361 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
153362 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
153363 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
153364 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
153365 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
153366 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
153367 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
153368 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
153369 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
153370 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
153371 ,p_event_created_by => l_array_event_created_by(hdr_idx)
153372 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
153373
153374 --
153375 -- set the status of entry to C_VALID (0)
153376 --
153377 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153378
153379 --
153380 -- initialize a row for ae header
153381 --
153382 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
153383
153384 l_event_id := l_array_event_id(hdr_idx);
153385
153386 --
153387 -- storing the hdr_idx for event. May be used by line cursor.
153388 --
153389 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
153390
153391 --
153392 -- store sources from header extract. This can be improved to
153393 -- store only those sources from header extract that may be used in lines
153394 --
153395
153396 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
153397 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
153398 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
153399 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
153400 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
153401 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
153402
153403 --
153404 -- initilaize the status of ae headers for diffrent balance types
153405 -- the status is initialised to C_NOT_CREATED (2)
153406 --
153407 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153408 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153409 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153410
153411 --
153412 -- call api to validate and store accounting attributes for header
153413 --
153414
153415 ------------------------------------------------------------
153416 -- Accrual Reversal : to get date for Standard Source (NONE)
153417 ------------------------------------------------------------
153418 l_acc_rev_gl_date_source := NULL;
153419
153420 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
153421 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
153422
153423
153424 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
153425
153426 XLA_AE_HEADER_PKG.SetJeCategoryName;
153427
153428 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
153429 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
153430 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
153431 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
153432 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
153433
153434
153435 -- No header level analytical criteria
153436
153437 --
153438 --accounting attribute enhancement, bug 3612931
153439 --
153443 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
153440 l_trx_reversal_source := SUBSTR(NULL, 1,30);
153441
153442 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
153444
153445 xla_accounting_err_pkg.build_message
153446 (p_appli_s_name => 'XLA'
153447 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
153448 ,p_token_1 => 'ACCT_ATTR_NAME'
153449 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
153450 ,p_token_2 => 'PRODUCT_NAME'
153451 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
153452 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
153453 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
153454 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
153455
153456 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
153457 --
153458 -- following sets the accounting attributes needed to reverse
153459 -- accounting for a distributeion
153460 --
153461 xla_ae_lines_pkg.SetTrxReversalAttrs
153462 (p_event_id => l_event_id
153463 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
153464 ,p_trx_reversal_source => l_trx_reversal_source);
153465
153466 END IF;
153467
153468
153469 ----------------------------------------------------------------
153470 -- 4262811 - update the header statuses to invalid in need be
153471 ----------------------------------------------------------------
153472 --
153473 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
153474
153475
153476 -----------------------------------------------
153477 -- No accrual reversal for the event class/type
153478 -----------------------------------------------
153479 ----------------------------------------------------------------
153480
153481 --
153482 -- this ends the header loop iteration for one bulk fetch
153483 --
153484 END LOOP;
153485
153486 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
153487 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
153488
153489 --
153490 -- insert dummy rows into lines gt table that were created due to
153491 -- transaction reversals
153492 --
153493 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
153494 l_result := XLA_AE_LINES_PKG.InsertLines;
153495 END IF;
153496
153497 --
153498 -- reset the temp_line_num for each set of events fetched from header
153499 -- cursor rather than doing it for each new event in line cursor
153500 -- Bug 3939231
153501 --
153502 xla_ae_lines_pkg.g_temp_line_num := 0;
153503
153504
153505
153506 --
153507 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
153508 --
153509 --
153510 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153511
153512 trace
153513 (p_msg => 'SQL - FETCH line_cur'
153514 ,p_level => C_LEVEL_STATEMENT
153515 ,p_module => l_log_module);
153516
153517 END IF;
153518 --
153519 --
153520 LOOP
153521 --
153522 FETCH line_cur BULK COLLECT INTO
153523 l_array_entity_id
153524 , l_array_legal_entity_id
153525 , l_array_entity_code
153526 , l_array_transaction_num
153527 , l_array_event_id
153528 , l_array_class_code
153529 , l_array_event_type
153530 , l_array_event_number
153531 , l_array_event_date
153532 , l_array_transaction_date
153533 , l_array_reference_num_1
153534 , l_array_reference_num_2
153535 , l_array_reference_num_3
153536 , l_array_reference_num_4
153537 , l_array_reference_char_1
153538 , l_array_reference_char_2
153539 , l_array_reference_char_3
153540 , l_array_reference_char_4
153541 , l_array_reference_date_1
153542 , l_array_reference_date_2
153543 , l_array_reference_date_3
153544 , l_array_reference_date_4
153545 , l_array_event_created_by
153546 , l_array_budgetary_control_flag
153547 , l_array_extract_line_num
153548 , l_array_source_1
153549 , l_array_source_2
153550 , l_array_source_3
153551 , l_array_source_5
153552 , l_array_source_11
153553 LIMIT l_rows;
153554
153555 --
153556 IF (C_LEVEL_EVENT >= g_log_level) THEN
153557 trace
153558 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
153559 ,p_level => C_LEVEL_EVENT
153560 ,p_module => l_log_module);
153561 END IF;
153562 --
153563 EXIT WHEN l_array_entity_id.count = 0;
153564
153565 XLA_AE_LINES_PKG.g_rec_lines := null;
153566
153567 --
153568 -- Bug 4458708
153569 --
153570 XLA_AE_LINES_PKG.g_LineNumber := 0;
153571 --
153572 --
153573
153574 FOR Idx IN 1..l_array_event_id.count LOOP
153575 --
153576 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
153577 --
153578 l_event_id := l_array_event_id(idx); -- 5648433
153579
153580 --
153581 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
153582 --
153583
153584 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
153588 THEN
153585 (g_array_event(l_event_id).array_value_num('header_index'))
153586 ,'N'
153587 ) <> 'Y'
153589 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153590 trace
153591 (p_msg => 'Trancaction revesal option is not Y '
153592 ,p_level => C_LEVEL_STATEMENT
153593 ,p_module => l_log_module);
153594 END IF;
153595
153596 --
153597 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
153598 --
153599 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153600 --
153601 -- set event info as cache for other routines to refer event attributes
153602 --
153603
153604 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
153605 l_previous_event_id := l_event_id;
153606
153607 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153608 (p_application_id => p_application_id
153609 ,p_primary_ledger_id => p_primary_ledger_id
153610 ,p_base_ledger_id => p_base_ledger_id
153611 ,p_target_ledger_id => p_target_ledger_id
153612 ,p_entity_id => l_array_entity_id(Idx)
153613 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
153614 ,p_entity_code => l_array_entity_code(Idx)
153615 ,p_transaction_num => l_array_transaction_num(Idx)
153616 ,p_event_id => l_array_event_id(Idx)
153617 ,p_event_class_code => l_array_class_code(Idx)
153618 ,p_event_type_code => l_array_event_type(Idx)
153619 ,p_event_number => l_array_event_number(Idx)
153620 ,p_event_date => l_array_event_date(Idx)
153621 ,p_transaction_date => l_array_transaction_date(Idx)
153622 ,p_reference_num_1 => l_array_reference_num_1(Idx)
153623 ,p_reference_num_2 => l_array_reference_num_2(Idx)
153624 ,p_reference_num_3 => l_array_reference_num_3(Idx)
153625 ,p_reference_num_4 => l_array_reference_num_4(Idx)
153626 ,p_reference_char_1 => l_array_reference_char_1(Idx)
153627 ,p_reference_char_2 => l_array_reference_char_2(Idx)
153628 ,p_reference_char_3 => l_array_reference_char_3(Idx)
153629 ,p_reference_char_4 => l_array_reference_char_4(Idx)
153630 ,p_reference_date_1 => l_array_reference_date_1(Idx)
153631 ,p_reference_date_2 => l_array_reference_date_2(Idx)
153632 ,p_reference_date_3 => l_array_reference_date_3(Idx)
153633 ,p_reference_date_4 => l_array_reference_date_4(Idx)
153634 ,p_event_created_by => l_array_event_created_by(Idx)
153635 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
153636 --
153637 END IF;
153638
153639
153640
153641 --
153642 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
153643
153644 l_acct_reversal_source := SUBSTR(NULL, 1,30);
153645
153646 IF l_continue_with_lines THEN
153647 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
153648 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
153649
153650 xla_accounting_err_pkg.build_message
153651 (p_appli_s_name => 'XLA'
153652 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
153653 ,p_token_1 => 'LINE_NUMBER'
153654 ,p_value_1 => l_array_extract_line_num(Idx)
153655 ,p_token_2 => 'PRODUCT_NAME'
153656 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
153657 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
153658 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
153659 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
153660
153661 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
153662 --
153663 -- following sets the accounting attributes needed to reverse
153664 -- accounting for a distributeion
153665 --
153666
153667 --
153668 -- 5217187
153669 --
153670 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
153671 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
153672 g_array_event(l_event_id).array_value_num('header_index'));
153673 --
153674 --
153675
153676 -- No reversal code generated
153677
153678 xla_ae_lines_pkg.SetAcctReversalAttrs
153679 (p_event_id => l_event_id
153680 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
153681 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153682 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
153683 END IF;
153684
153685 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
153686 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
153687
153688 --
153689 AcctLineType_60 (
153690 p_application_id => p_application_id
153691 ,p_event_id => l_event_id
153692 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153693 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153694 ,p_actual_flag => l_actual_flag
153695 ,p_balance_type_code => l_balance_type_code
153696 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153697
153698 , p_source_1 => l_array_source_1(Idx)
153699 , p_source_2 => l_array_source_2(Idx)
153703 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
153700 , p_source_3 => l_array_source_3(Idx)
153701 , p_source_5 => l_array_source_5(Idx)
153702 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
153704 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
153705 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
153706 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
153707 , p_source_11 => l_array_source_11(Idx)
153708 );
153709 If(l_balance_type_code = 'A') THEN
153710 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153711 END IF;
153712
153713 --
153714
153715
153716 --
153717 AcctLineType_141 (
153718 p_application_id => p_application_id
153719 ,p_event_id => l_event_id
153720 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153721 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153722 ,p_actual_flag => l_actual_flag
153723 ,p_balance_type_code => l_balance_type_code
153724 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153725
153726 , p_source_1 => l_array_source_1(Idx)
153727 , p_source_2 => l_array_source_2(Idx)
153728 , p_source_3 => l_array_source_3(Idx)
153729 , p_source_5 => l_array_source_5(Idx)
153730 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
153731 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
153732 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
153733 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
153734 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
153735 , p_source_11 => l_array_source_11(Idx)
153736 );
153737 If(l_balance_type_code = 'A') THEN
153738 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153739 END IF;
153740
153741 --
153742
153743 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
153744 -- or secondary ledger that has different currency with primary
153745 -- or alc that is calculated by sla
153746 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
153747 (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'))
153748
153749 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
153750 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
153751 AND (l_actual_flag = 'A')) THEN
153752 XLA_AE_LINES_PKG.CreateGainOrLossLines(
153753 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
153754 ,p_application_id => p_application_id
153755 ,p_amb_context_code => 'DEFAULT'
153756 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
153757 ,p_event_class_code => C_EVENT_CLASS_CODE
153758 ,p_event_type_code => C_EVENT_TYPE_CODE
153759
153760 ,p_gain_ccid => -1
153761 ,p_loss_ccid => -1
153762
153763 ,p_actual_flag => l_actual_flag
153764 ,p_enc_flag => null
153765 ,p_actual_g_l_ref => l_actual_gain_loss_ref
153766 ,p_enc_g_l_ref => null
153767 );
153768 END IF;
153769 END IF;
153770 END IF;
153771
153772 ELSE
153773 --
153774 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
153775 --
153776 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153777 trace
153778 (p_msg => 'Trancaction revesal option is Y'
153779 ,p_level => C_LEVEL_STATEMENT
153780 ,p_module => l_log_module);
153781 END IF;
153782 END IF;
153783
153784 END LOOP;
153785 l_result := XLA_AE_LINES_PKG.InsertLines ;
153786 end loop;
153787 close line_cur;
153788
153789
153790 --
153791 -- insert headers into xla_ae_headers_gt table
153792 --
153793 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
153794
153795 -- insert into errors table here.
153796
153797 END LOOP;
153798
153799 --
153800 -- 4865292
153801 --
153802 -- Compare g_hdr_extract_count with event count in
153803 -- CreateHeadersAndLines.
153804 --
153805 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
153806
153807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153808 trace (p_msg => '# rows extracted from header extract objects '
153809 || ' (running total): '
153810 || g_hdr_extract_count
153811 ,p_level => C_LEVEL_STATEMENT
153812 ,p_module => l_log_module);
153813 END IF;
153814
153815 CLOSE header_cur;
153816 --
153817
153818 --
153819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153820 trace
153821 (p_msg => 'END of EventType_275'
153822 ,p_level => C_LEVEL_PROCEDURE
153823 ,p_module => l_log_module);
153824 END IF;
153825 --
153826 RETURN l_result;
153827 EXCEPTION
153828 WHEN xla_exceptions_pkg.application_exception THEN
153829
153830 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
153831
153832
153833 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
153834
153835 RAISE;
153836
153837 WHEN NO_DATA_FOUND THEN
153838
153839 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
153840 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
153841
153845 END LOOP;
153842 FOR header_record IN header_cur
153843 LOOP
153844 l_array_header_events(header_record.event_id) := header_record.event_id;
153846
153847 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
153848 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
153849
153850 fnd_file.put_line(fnd_file.LOG, ' ');
153851 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
153852 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
153853 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
153854
153855 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
153856 LOOP
153857 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
153858 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
153859 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
153860 END IF;
153861 END LOOP;
153862
153863 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
153864 fnd_file.put_line(fnd_file.LOG, ' ');
153865
153866
153867 xla_exceptions_pkg.raise_message
153868 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_275');
153869
153870
153871 WHEN OTHERS THEN
153872 xla_exceptions_pkg.raise_message
153873 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_275');
153874 END EventType_275;
153875 --
153876
153877 ---------------------------------------
153878 --
153879 -- PRIVATE PROCEDURE
153880 -- insert_sources_276
153881 --
153882 ----------------------------------------
153883 --
153884 PROCEDURE insert_sources_276(
153885 p_target_ledger_id IN NUMBER
153886 , p_language IN VARCHAR2
153887 , p_sla_ledger_id IN NUMBER
153888 , p_pad_start_date IN DATE
153889 , p_pad_end_date IN DATE
153890 )
153891 IS
153892
153893 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_ISSUE';
153894 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
153895 p_apps_owner VARCHAR2(30);
153896 l_log_module VARCHAR2(240);
153897 BEGIN
153898 IF g_log_enabled THEN
153899 l_log_module := C_DEFAULT_MODULE||'.insert_sources_276';
153900 END IF;
153901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153902
153903 trace
153904 (p_msg => 'BEGIN of insert_sources_276'
153905 ,p_level => C_LEVEL_PROCEDURE
153906 ,p_module => l_log_module);
153907
153908 END IF;
153909
153910 -- select APPS owner
153911 SELECT oracle_username
153912 INTO p_apps_owner
153913 FROM fnd_oracle_userid
153914 WHERE read_only_flag = 'U'
153915 ;
153916
153917 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153918 trace
153919 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
153920 ' - p_language = '||p_language||
153921 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
153922 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
153923 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
153924 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
153925 ,p_level => C_LEVEL_STATEMENT
153926 ,p_module => l_log_module);
153927 END IF;
153928
153929
153930 --
153931 INSERT INTO xla_diag_sources --hdr1
153932 (
153933 event_id
153934 , ledger_id
153935 , sla_ledger_id
153936 , description_language
153937 , object_name
153938 , object_type_code
153939 , line_number
153940 , source_application_id
153941 , source_type_code
153942 , source_code
153943 , source_value
153944 , source_meaning
153945 , created_by
153946 , creation_date
153947 , last_update_date
153948 , last_updated_by
153949 , last_update_login
153950 , program_update_date
153951 , program_application_id
153952 , program_id
153953 , request_id
153954 )
153955 SELECT
153956 event_id
153957 , p_target_ledger_id
153958 , p_sla_ledger_id
153959 , p_language
153960 , object_name
153961 , object_type_code
153962 , line_number
153963 , source_application_id
153964 , source_type_code
153965 , source_code
153966 , SUBSTR(source_value ,1,1996)
153967 , SUBSTR(source_meaning,1,200)
153968 , xla_environment_pkg.g_Usr_Id
153969 , TRUNC(SYSDATE)
153970 , TRUNC(SYSDATE)
153971 , xla_environment_pkg.g_Usr_Id
153972 , xla_environment_pkg.g_Login_Id
153973 , TRUNC(SYSDATE)
153974 , xla_environment_pkg.g_Prog_Appl_Id
153975 , xla_environment_pkg.g_Prog_Id
153976 , xla_environment_pkg.g_Req_Id
153977 FROM (
153978 SELECT xet.event_id event_id
153979 , 0 line_number
153980 , CASE r
153981 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
153982 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
153983 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
153987
153984 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
153985 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
153986 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
153988 ELSE null
153989 END object_name
153990 , CASE r
153991 WHEN 1 THEN 'HEADER'
153992 WHEN 2 THEN 'HEADER'
153993 WHEN 3 THEN 'HEADER'
153994 WHEN 4 THEN 'HEADER'
153995 WHEN 5 THEN 'HEADER'
153996 WHEN 6 THEN 'HEADER'
153997
153998 ELSE null
153999 END object_type_code
154000 , CASE r
154001 WHEN 1 THEN '555'
154002 WHEN 2 THEN '555'
154003 WHEN 3 THEN '555'
154004 WHEN 4 THEN '555'
154005 WHEN 5 THEN '555'
154006 WHEN 6 THEN '555'
154007
154008 ELSE null
154009 END source_application_id
154010 , 'S' source_type_code
154011 , CASE r
154012 WHEN 1 THEN 'ENTITY_CODE'
154013 WHEN 2 THEN 'CURRENCY_CODE'
154014 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
154015 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
154016 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
154017 WHEN 6 THEN 'TRANSACTION_DATE'
154018
154019 ELSE null
154020 END source_code
154021 , CASE r
154022 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
154023 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
154024 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
154025 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
154026 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
154027 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
154028
154029 ELSE null
154030 END source_value
154031 , CASE r
154032 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
154033 1010186
154034 ,TO_CHAR(h1.CURRENCY_CODE)
154035 ,'CURRENCY_CODE'
154036 ,'S'
154037 ,555)
154038
154039 ELSE null
154040 END source_meaning
154041 FROM xla_events_gt xet
154042 , GMF_XLA_EXTRACT_HEADERS h1
154043 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
154044 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154045 AND xet.event_type_code = C_EVENT_TYPE_CODE
154046 AND h1.event_id = xet.event_id
154047
154048 )
154049 ;
154050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154051
154052 trace
154053 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
154054 ,p_level => C_LEVEL_STATEMENT
154055 ,p_module => l_log_module);
154056
154057 END IF;
154058 --
154059
154060
154061
154062 --
154063 INSERT INTO xla_diag_sources --line1
154064 (
154065 event_id
154066 , ledger_id
154067 , sla_ledger_id
154068 , description_language
154069 , object_name
154070 , object_type_code
154071 , line_number
154072 , source_application_id
154073 , source_type_code
154074 , source_code
154075 , source_value
154076 , source_meaning
154077 , created_by
154078 , creation_date
154079 , last_update_date
154080 , last_updated_by
154081 , last_update_login
154082 , program_update_date
154083 , program_application_id
154084 , program_id
154085 , request_id
154086 )
154087 SELECT event_id
154088 , p_target_ledger_id
154089 , p_sla_ledger_id
154090 , p_language
154091 , object_name
154092 , object_type_code
154093 , line_number
154094 , source_application_id
154095 , source_type_code
154096 , source_code
154097 , SUBSTR(source_value,1,1996)
154098 , SUBSTR(source_meaning,1,200)
154099 , xla_environment_pkg.g_Usr_Id
154100 , TRUNC(SYSDATE)
154101 , TRUNC(SYSDATE)
154102 , xla_environment_pkg.g_Usr_Id
154103 , xla_environment_pkg.g_Login_Id
154104 , TRUNC(SYSDATE)
154105 , xla_environment_pkg.g_Prog_Appl_Id
154106 , xla_environment_pkg.g_Prog_Id
154107 , xla_environment_pkg.g_Req_Id
154108 FROM (
154109 SELECT xet.event_id event_id
154110 , l2.line_number line_number
154111 , CASE r
154112 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
154113 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
154114 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
154115 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
154116 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
154117
154118 ELSE null
154119 END object_name
154120 , CASE r
154121 WHEN 1 THEN 'LINE'
154122 WHEN 2 THEN 'LINE'
154126
154123 WHEN 3 THEN 'LINE'
154124 WHEN 4 THEN 'LINE'
154125 WHEN 5 THEN 'LINE'
154127 ELSE null
154128 END object_type_code
154129 , CASE r
154130 WHEN 1 THEN '555'
154131 WHEN 2 THEN '555'
154132 WHEN 3 THEN '555'
154133 WHEN 4 THEN '555'
154134 WHEN 5 THEN '555'
154135
154136 ELSE null
154137 END source_application_id
154138 , 'S' source_type_code
154139 , CASE r
154140 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
154141 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
154142 WHEN 3 THEN 'ENTERED_AMOUNT'
154143 WHEN 4 THEN 'LINE_ID'
154144 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
154145
154146 ELSE null
154147 END source_code
154148 , CASE r
154149 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
154150 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
154151 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
154152 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
154153 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
154154
154155 ELSE null
154156 END source_value
154157 , null source_meaning
154158 FROM xla_events_gt xet
154159 , GMF_XLA_EXTRACT_LINES l2
154160 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
154161 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154162 AND xet.event_type_code = C_EVENT_TYPE_CODE
154163 AND l2.event_id = xet.event_id
154164
154165 )
154166 ;
154167 --
154168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154169
154170 trace
154171 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
154172 ,p_level => C_LEVEL_STATEMENT
154173 ,p_module => l_log_module);
154174
154175 END IF;
154176
154177
154178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154179 trace
154180 (p_msg => 'END of insert_sources_276'
154181 ,p_level => C_LEVEL_PROCEDURE
154182 ,p_module => l_log_module);
154183 END IF;
154184 EXCEPTION
154185 WHEN xla_exceptions_pkg.application_exception THEN
154186 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154187 trace
154188 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154189 ,p_level => C_LEVEL_EXCEPTION
154190 ,p_module => l_log_module);
154191 END IF;
154192 RAISE;
154193 WHEN OTHERS THEN
154194 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154195 trace
154196 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154197 ,p_level => C_LEVEL_EXCEPTION
154198 ,p_module => l_log_module);
154199 END IF;
154200 xla_exceptions_pkg.raise_message
154201 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_276');
154202 END insert_sources_276;
154203 --
154204
154205 ---------------------------------------
154206 --
154207 -- PRIVATE FUNCTION
154208 -- EventType_276
154209 --
154210 ----------------------------------------
154211 --
154212 FUNCTION EventType_276
154213 (p_application_id IN NUMBER
154214 ,p_base_ledger_id IN NUMBER
154215 ,p_target_ledger_id IN NUMBER
154216 ,p_language IN VARCHAR2
154217 ,p_currency_code IN VARCHAR2
154218 ,p_sla_ledger_id IN NUMBER
154219 ,p_pad_start_date IN DATE
154220 ,p_pad_end_date IN DATE
154221 ,p_primary_ledger_id IN NUMBER)
154222 RETURN BOOLEAN IS
154223 --
154224 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_ISSUE';
154225 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
154226
154227 l_calculate_acctd_flag VARCHAR2(1) :='N';
154228 l_calculate_g_l_flag VARCHAR2(1) :='N';
154229 --
154230 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154231 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154232 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154233 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154234 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154235 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154236 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154237 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154238 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154239 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154240 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154241 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154242 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154246 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154243 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154244 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154245 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154247 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154248 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154249 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154250 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154251 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154252 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
154253 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154254 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
154255 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
154256
154257 l_event_id NUMBER;
154258 l_previous_event_id NUMBER;
154259 l_first_event_id NUMBER;
154260 l_last_event_id NUMBER;
154261
154262 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
154263 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
154264 --
154265 --
154266 l_result BOOLEAN := TRUE;
154267 l_rows NUMBER := 1000;
154268 l_event_type_name VARCHAR2(80) := 'Internal Order Issue to Expense';
154269 l_event_class_name VARCHAR2(80) := 'Internal Order to Expense';
154270 l_description VARCHAR2(4000);
154271 l_transaction_reversal NUMBER;
154272 l_ae_header_id NUMBER;
154273 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
154274 l_log_module VARCHAR2(240);
154275 --
154276 l_acct_reversal_source VARCHAR2(30);
154277 l_trx_reversal_source VARCHAR2(30);
154278
154279 l_continue_with_lines BOOLEAN := TRUE;
154280 --
154281 l_acc_rev_gl_date_source DATE; -- 4262811
154282 --
154283 type t_array_event_id is table of number index by binary_integer;
154284
154285 l_rec_array_event t_rec_array_event;
154286 l_null_rec_array_event t_rec_array_event;
154287 l_array_ae_header_id xla_number_array_type;
154288 l_actual_flag VARCHAR2(1) := NULL;
154289 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
154290 l_balance_type_code VARCHAR2(1) :=NULL;
154291 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
154292
154293 --
154294 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
154295 --
154296
154297 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
154298 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
154299 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
154300 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
154301 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
154302 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
154303
154304 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
154305 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
154306 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
154307 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
154308 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
154309
154310 l_array_source_6 t_array_source_6;
154311 l_array_source_7 t_array_source_7;
154312 l_array_source_8 t_array_source_8;
154313 l_array_source_9 t_array_source_9;
154314 l_array_source_10 t_array_source_10;
154315 l_array_source_12 t_array_source_12;
154316
154317 l_array_source_1 t_array_source_1;
154318 l_array_source_2 t_array_source_2;
154319 l_array_source_3 t_array_source_3;
154320 l_array_source_5 t_array_source_5;
154321 l_array_source_11 t_array_source_11;
154322
154323 --
154324 CURSOR header_cur
154325 IS
154326 SELECT /*+ leading(xet) cardinality(xet,1) */
154327 -- Event Type Code: INT_ORDER_ISSUE
154328 -- Event Class Code: INT_ORDER_TO_EXP
154329 xet.entity_id
154330 , xet.legal_entity_id
154331 , xet.entity_code
154332 , xet.transaction_number
154333 , xet.event_id
154334 , xet.event_class_code
154335 , xet.event_type_code
154336 , xet.event_number
154337 , xet.event_date
154338 , xet.transaction_date
154339 , xet.reference_num_1
154340 , xet.reference_num_2
154341 , xet.reference_num_3
154342 , xet.reference_num_4
154343 , xet.reference_char_1
154344 , xet.reference_char_2
154345 , xet.reference_char_3
154346 , xet.reference_char_4
154347 , xet.reference_date_1
154348 , xet.reference_date_2
154349 , xet.reference_date_3
154350 , xet.reference_date_4
154354 , h1.CURRENCY_CODE source_7
154351 , xet.event_created_by
154352 , xet.budgetary_control_flag
154353 , h1.ENTITY_CODE source_6
154355 , h1.CURRENCY_CONVERSION_DATE source_8
154356 , h1.CURRENCY_CONVERSION_RATE source_9
154357 , h1.CURRENCY_CONVERSION_TYPE source_10
154358 , h1.TRANSACTION_DATE source_12
154359 FROM xla_events_gt xet
154360 , GMF_XLA_EXTRACT_HEADERS h1
154361 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
154362 and xet.event_type_code = C_EVENT_TYPE_CODE
154363 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
154364
154365 ORDER BY event_id
154366 ;
154367
154368
154369 --
154370 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
154371 IS
154372 SELECT /*+ leading(xet) cardinality(xet,1) */
154373 -- Event Type Code: INT_ORDER_ISSUE
154374 -- Event Class Code: INT_ORDER_TO_EXP
154375 xet.entity_id
154376 ,xet.legal_entity_id
154377 ,xet.entity_code
154378 ,xet.transaction_number
154379 ,xet.event_id
154380 ,xet.event_class_code
154381 ,xet.event_type_code
154382 ,xet.event_number
154383 ,xet.event_date
154384 ,xet.transaction_date
154385 ,xet.reference_num_1
154386 ,xet.reference_num_2
154387 ,xet.reference_num_3
154388 ,xet.reference_num_4
154389 ,xet.reference_char_1
154390 ,xet.reference_char_2
154391 ,xet.reference_char_3
154392 ,xet.reference_char_4
154393 ,xet.reference_date_1
154394 ,xet.reference_date_2
154395 ,xet.reference_date_3
154396 ,xet.reference_date_4
154397 ,xet.event_created_by
154398 ,xet.budgetary_control_flag , l2.LINE_NUMBER
154399 , l2.TRANSACTION_ACCOUNT_ID source_1
154400 , l2.JOURNAL_LINE_TYPE source_2
154401 , l2.ENTERED_AMOUNT source_3
154402 , l2.LINE_ID source_5
154403 , l2.ACCOUNTED_AMOUNT source_11
154404 FROM xla_events_gt xet
154405 , GMF_XLA_EXTRACT_LINES l2
154406 WHERE xet.event_id between x_first_event_id and x_last_event_id
154407 and xet.event_date between p_pad_start_date and p_pad_end_date
154408 and xet.event_type_code = C_EVENT_TYPE_CODE
154409 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
154410 ;
154411
154412 --
154413 BEGIN
154414 IF g_log_enabled THEN
154415 l_log_module := C_DEFAULT_MODULE||'.EventType_276';
154416 END IF;
154417 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154418 trace
154419 (p_msg => 'BEGIN of EventType_276'
154420 ,p_level => C_LEVEL_PROCEDURE
154421 ,p_module => l_log_module);
154422 END IF;
154423
154424 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154425 trace
154426 (p_msg => 'p_application_id = '||p_application_id||
154427 ' - p_base_ledger_id = '||p_base_ledger_id||
154428 ' - p_target_ledger_id = '||p_target_ledger_id||
154429 ' - p_language = '||p_language||
154430 ' - p_currency_code = '||p_currency_code||
154431 ' - p_sla_ledger_id = '||p_sla_ledger_id
154432 ,p_level => C_LEVEL_STATEMENT
154433 ,p_module => l_log_module);
154434 END IF;
154435 --
154436 -- initialze arrays
154437 --
154438 g_array_event.DELETE;
154439 l_rec_array_event := l_null_rec_array_event;
154440 --
154441 --------------------------------------
154442 -- 4262811 Initialze MPA Line Number
154443 --------------------------------------
154444 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
154445
154446 --
154447
154448 --
154449 OPEN header_cur;
154450 --
154451 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154452 trace
154453 (p_msg => 'SQL - FETCH header_cur'
154454 ,p_level => C_LEVEL_STATEMENT
154455 ,p_module => l_log_module);
154456 END IF;
154457 --
154458 LOOP
154459 FETCH header_cur BULK COLLECT INTO
154460 l_array_entity_id
154461 , l_array_legal_entity_id
154462 , l_array_entity_code
154463 , l_array_transaction_num
154464 , l_array_event_id
154465 , l_array_class_code
154466 , l_array_event_type
154467 , l_array_event_number
154468 , l_array_event_date
154469 , l_array_transaction_date
154470 , l_array_reference_num_1
154471 , l_array_reference_num_2
154472 , l_array_reference_num_3
154473 , l_array_reference_num_4
154474 , l_array_reference_char_1
154475 , l_array_reference_char_2
154476 , l_array_reference_char_3
154477 , l_array_reference_char_4
154478 , l_array_reference_date_1
154479 , l_array_reference_date_2
154480 , l_array_reference_date_3
154481 , l_array_reference_date_4
154482 , l_array_event_created_by
154483 , l_array_budgetary_control_flag
154484 , l_array_source_6
154485 , l_array_source_7
154486 , l_array_source_8
154487 , l_array_source_9
154488 , l_array_source_10
154489 , l_array_source_12
154490 LIMIT l_rows;
154491 --
154492 IF (C_LEVEL_EVENT >= g_log_level) THEN
154493 trace
154494 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
154495 ,p_level => C_LEVEL_EVENT
154496 ,p_module => l_log_module);
154497 END IF;
154498 --
154499 EXIT WHEN l_array_entity_id.COUNT = 0;
154500
154501 -- initialize arrays
154502 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
154503 XLA_AE_LINES_PKG.g_rec_lines := NULL;
154504
154508 XLA_AE_LINES_PKG.g_LineNumber := 0;
154505 --
154506 -- Bug 4458708
154507 --
154509
154510
154511 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
154512 g_last_hdr_idx := l_array_event_id.LAST;
154513 --
154514 -- loop for the headers. Each iteration is for each header extract row
154515 -- fetched in header cursor
154516 --
154517 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
154518
154519 --
154520 -- set event info as cache for other routines to refer event attributes
154521 --
154522 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
154523 (p_application_id => p_application_id
154524 ,p_primary_ledger_id => p_primary_ledger_id
154525 ,p_base_ledger_id => p_base_ledger_id
154526 ,p_target_ledger_id => p_target_ledger_id
154527 ,p_entity_id => l_array_entity_id(hdr_idx)
154528 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
154529 ,p_entity_code => l_array_entity_code(hdr_idx)
154530 ,p_transaction_num => l_array_transaction_num(hdr_idx)
154531 ,p_event_id => l_array_event_id(hdr_idx)
154532 ,p_event_class_code => l_array_class_code(hdr_idx)
154533 ,p_event_type_code => l_array_event_type(hdr_idx)
154534 ,p_event_number => l_array_event_number(hdr_idx)
154535 ,p_event_date => l_array_event_date(hdr_idx)
154536 ,p_transaction_date => l_array_transaction_date(hdr_idx)
154537 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
154538 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
154539 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
154540 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
154541 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
154542 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
154543 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
154544 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
154545 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
154546 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
154547 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
154548 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
154549 ,p_event_created_by => l_array_event_created_by(hdr_idx)
154550 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
154551
154552 --
154553 -- set the status of entry to C_VALID (0)
154554 --
154555 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
154556
154557 --
154558 -- initialize a row for ae header
154559 --
154560 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
154561
154562 l_event_id := l_array_event_id(hdr_idx);
154563
154564 --
154565 -- storing the hdr_idx for event. May be used by line cursor.
154566 --
154567 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
154568
154569 --
154570 -- store sources from header extract. This can be improved to
154571 -- store only those sources from header extract that may be used in lines
154572 --
154573
154574 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
154575 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
154576 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
154577 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
154578 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
154579 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
154580
154581 --
154582 -- initilaize the status of ae headers for diffrent balance types
154583 -- the status is initialised to C_NOT_CREATED (2)
154584 --
154585 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154586 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154587 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154588
154589 --
154590 -- call api to validate and store accounting attributes for header
154591 --
154592
154593 ------------------------------------------------------------
154594 -- Accrual Reversal : to get date for Standard Source (NONE)
154595 ------------------------------------------------------------
154596 l_acc_rev_gl_date_source := NULL;
154597
154598 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
154599 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
154600
154601
154602 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
154603
154604 XLA_AE_HEADER_PKG.SetJeCategoryName;
154605
154606 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
154607 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
154608 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
154609 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
154610 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
154611
154612
154613 -- No header level analytical criteria
154614
154615 --
154616 --accounting attribute enhancement, bug 3612931
154617 --
154618 l_trx_reversal_source := SUBSTR(NULL, 1,30);
154622
154619
154620 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
154621 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
154623 xla_accounting_err_pkg.build_message
154624 (p_appli_s_name => 'XLA'
154625 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
154626 ,p_token_1 => 'ACCT_ATTR_NAME'
154627 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
154628 ,p_token_2 => 'PRODUCT_NAME'
154629 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154630 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154631 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
154632 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
154633
154634 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
154635 --
154636 -- following sets the accounting attributes needed to reverse
154637 -- accounting for a distributeion
154638 --
154639 xla_ae_lines_pkg.SetTrxReversalAttrs
154640 (p_event_id => l_event_id
154641 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
154642 ,p_trx_reversal_source => l_trx_reversal_source);
154643
154644 END IF;
154645
154646
154647 ----------------------------------------------------------------
154648 -- 4262811 - update the header statuses to invalid in need be
154649 ----------------------------------------------------------------
154650 --
154651 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
154652
154653
154654 -----------------------------------------------
154655 -- No accrual reversal for the event class/type
154656 -----------------------------------------------
154657 ----------------------------------------------------------------
154658
154659 --
154660 -- this ends the header loop iteration for one bulk fetch
154661 --
154662 END LOOP;
154663
154664 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
154665 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
154666
154667 --
154668 -- insert dummy rows into lines gt table that were created due to
154669 -- transaction reversals
154670 --
154671 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
154672 l_result := XLA_AE_LINES_PKG.InsertLines;
154673 END IF;
154674
154675 --
154676 -- reset the temp_line_num for each set of events fetched from header
154677 -- cursor rather than doing it for each new event in line cursor
154678 -- Bug 3939231
154679 --
154680 xla_ae_lines_pkg.g_temp_line_num := 0;
154681
154682
154683
154684 --
154685 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
154686 --
154687 --
154688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154689
154690 trace
154691 (p_msg => 'SQL - FETCH line_cur'
154692 ,p_level => C_LEVEL_STATEMENT
154693 ,p_module => l_log_module);
154694
154695 END IF;
154696 --
154697 --
154698 LOOP
154699 --
154700 FETCH line_cur BULK COLLECT INTO
154701 l_array_entity_id
154702 , l_array_legal_entity_id
154703 , l_array_entity_code
154704 , l_array_transaction_num
154705 , l_array_event_id
154706 , l_array_class_code
154707 , l_array_event_type
154708 , l_array_event_number
154709 , l_array_event_date
154710 , l_array_transaction_date
154711 , l_array_reference_num_1
154712 , l_array_reference_num_2
154713 , l_array_reference_num_3
154714 , l_array_reference_num_4
154715 , l_array_reference_char_1
154716 , l_array_reference_char_2
154717 , l_array_reference_char_3
154718 , l_array_reference_char_4
154719 , l_array_reference_date_1
154720 , l_array_reference_date_2
154721 , l_array_reference_date_3
154722 , l_array_reference_date_4
154723 , l_array_event_created_by
154724 , l_array_budgetary_control_flag
154725 , l_array_extract_line_num
154726 , l_array_source_1
154727 , l_array_source_2
154728 , l_array_source_3
154729 , l_array_source_5
154730 , l_array_source_11
154731 LIMIT l_rows;
154732
154733 --
154734 IF (C_LEVEL_EVENT >= g_log_level) THEN
154735 trace
154736 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
154737 ,p_level => C_LEVEL_EVENT
154738 ,p_module => l_log_module);
154739 END IF;
154740 --
154741 EXIT WHEN l_array_entity_id.count = 0;
154742
154743 XLA_AE_LINES_PKG.g_rec_lines := null;
154744
154745 --
154746 -- Bug 4458708
154747 --
154748 XLA_AE_LINES_PKG.g_LineNumber := 0;
154749 --
154750 --
154751
154752 FOR Idx IN 1..l_array_event_id.count LOOP
154753 --
154754 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
154755 --
154756 l_event_id := l_array_event_id(idx); -- 5648433
154757
154758 --
154759 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154760 --
154761
154762 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
154766 THEN
154763 (g_array_event(l_event_id).array_value_num('header_index'))
154764 ,'N'
154765 ) <> 'Y'
154767 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154768 trace
154769 (p_msg => 'Trancaction revesal option is not Y '
154770 ,p_level => C_LEVEL_STATEMENT
154771 ,p_module => l_log_module);
154772 END IF;
154773
154774 --
154775 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
154776 --
154777 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
154778 --
154779 -- set event info as cache for other routines to refer event attributes
154780 --
154781
154782 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
154783 l_previous_event_id := l_event_id;
154784
154785 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
154786 (p_application_id => p_application_id
154787 ,p_primary_ledger_id => p_primary_ledger_id
154788 ,p_base_ledger_id => p_base_ledger_id
154789 ,p_target_ledger_id => p_target_ledger_id
154790 ,p_entity_id => l_array_entity_id(Idx)
154791 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
154792 ,p_entity_code => l_array_entity_code(Idx)
154793 ,p_transaction_num => l_array_transaction_num(Idx)
154794 ,p_event_id => l_array_event_id(Idx)
154795 ,p_event_class_code => l_array_class_code(Idx)
154796 ,p_event_type_code => l_array_event_type(Idx)
154797 ,p_event_number => l_array_event_number(Idx)
154798 ,p_event_date => l_array_event_date(Idx)
154799 ,p_transaction_date => l_array_transaction_date(Idx)
154800 ,p_reference_num_1 => l_array_reference_num_1(Idx)
154801 ,p_reference_num_2 => l_array_reference_num_2(Idx)
154802 ,p_reference_num_3 => l_array_reference_num_3(Idx)
154803 ,p_reference_num_4 => l_array_reference_num_4(Idx)
154804 ,p_reference_char_1 => l_array_reference_char_1(Idx)
154805 ,p_reference_char_2 => l_array_reference_char_2(Idx)
154806 ,p_reference_char_3 => l_array_reference_char_3(Idx)
154807 ,p_reference_char_4 => l_array_reference_char_4(Idx)
154808 ,p_reference_date_1 => l_array_reference_date_1(Idx)
154809 ,p_reference_date_2 => l_array_reference_date_2(Idx)
154810 ,p_reference_date_3 => l_array_reference_date_3(Idx)
154811 ,p_reference_date_4 => l_array_reference_date_4(Idx)
154812 ,p_event_created_by => l_array_event_created_by(Idx)
154813 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
154814 --
154815 END IF;
154816
154817
154818
154819 --
154820 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
154821
154822 l_acct_reversal_source := SUBSTR(NULL, 1,30);
154823
154824 IF l_continue_with_lines THEN
154825 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
154826 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
154827
154828 xla_accounting_err_pkg.build_message
154829 (p_appli_s_name => 'XLA'
154830 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
154831 ,p_token_1 => 'LINE_NUMBER'
154832 ,p_value_1 => l_array_extract_line_num(Idx)
154833 ,p_token_2 => 'PRODUCT_NAME'
154834 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154835 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154836 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
154837 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
154838
154839 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
154840 --
154841 -- following sets the accounting attributes needed to reverse
154842 -- accounting for a distributeion
154843 --
154844
154845 --
154846 -- 5217187
154847 --
154848 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
154849 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
154850 g_array_event(l_event_id).array_value_num('header_index'));
154851 --
154852 --
154853
154854 -- No reversal code generated
154855
154856 xla_ae_lines_pkg.SetAcctReversalAttrs
154857 (p_event_id => l_event_id
154858 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
154859 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154860 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
154861 END IF;
154862
154863 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
154864 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
154865
154866 --
154867 AcctLineType_107 (
154868 p_application_id => p_application_id
154869 ,p_event_id => l_event_id
154870 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154871 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154872 ,p_actual_flag => l_actual_flag
154873 ,p_balance_type_code => l_balance_type_code
154874 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154875
154876 , p_source_1 => l_array_source_1(Idx)
154877 , p_source_2 => l_array_source_2(Idx)
154881 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
154878 , p_source_3 => l_array_source_3(Idx)
154879 , p_source_5 => l_array_source_5(Idx)
154880 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
154882 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
154883 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
154884 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
154885 , p_source_11 => l_array_source_11(Idx)
154886 );
154887 If(l_balance_type_code = 'A') THEN
154888 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154889 END IF;
154890
154891 --
154892
154893
154894 --
154895 AcctLineType_167 (
154896 p_application_id => p_application_id
154897 ,p_event_id => l_event_id
154898 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154899 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154900 ,p_actual_flag => l_actual_flag
154901 ,p_balance_type_code => l_balance_type_code
154902 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154903
154904 , p_source_1 => l_array_source_1(Idx)
154905 , p_source_2 => l_array_source_2(Idx)
154906 , p_source_3 => l_array_source_3(Idx)
154907 , p_source_5 => l_array_source_5(Idx)
154908 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
154909 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
154910 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
154911 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
154912 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
154913 , p_source_11 => l_array_source_11(Idx)
154914 );
154915 If(l_balance_type_code = 'A') THEN
154916 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154917 END IF;
154918
154919 --
154920
154921
154922 --
154923 AcctLineType_188 (
154924 p_application_id => p_application_id
154925 ,p_event_id => l_event_id
154926 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154927 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154928 ,p_actual_flag => l_actual_flag
154929 ,p_balance_type_code => l_balance_type_code
154930 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154931
154932 , p_source_1 => l_array_source_1(Idx)
154933 , p_source_2 => l_array_source_2(Idx)
154934 , p_source_3 => l_array_source_3(Idx)
154935 , p_source_5 => l_array_source_5(Idx)
154936 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
154937 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
154938 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
154939 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
154940 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
154941 , p_source_11 => l_array_source_11(Idx)
154942 );
154943 If(l_balance_type_code = 'A') THEN
154944 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154945 END IF;
154946
154947 --
154948
154949 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
154950 -- or secondary ledger that has different currency with primary
154951 -- or alc that is calculated by sla
154952 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
154953 (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'))
154954
154955 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
154956 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
154957 AND (l_actual_flag = 'A')) THEN
154958 XLA_AE_LINES_PKG.CreateGainOrLossLines(
154959 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
154960 ,p_application_id => p_application_id
154961 ,p_amb_context_code => 'DEFAULT'
154962 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
154963 ,p_event_class_code => C_EVENT_CLASS_CODE
154964 ,p_event_type_code => C_EVENT_TYPE_CODE
154965
154966 ,p_gain_ccid => -1
154967 ,p_loss_ccid => -1
154968
154969 ,p_actual_flag => l_actual_flag
154970 ,p_enc_flag => null
154971 ,p_actual_g_l_ref => l_actual_gain_loss_ref
154972 ,p_enc_g_l_ref => null
154973 );
154974 END IF;
154975 END IF;
154976 END IF;
154977
154978 ELSE
154979 --
154980 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154981 --
154982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154983 trace
154984 (p_msg => 'Trancaction revesal option is Y'
154985 ,p_level => C_LEVEL_STATEMENT
154986 ,p_module => l_log_module);
154987 END IF;
154988 END IF;
154989
154990 END LOOP;
154991 l_result := XLA_AE_LINES_PKG.InsertLines ;
154992 end loop;
154993 close line_cur;
154994
154995
154996 --
154997 -- insert headers into xla_ae_headers_gt table
154998 --
154999 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
155000
155001 -- insert into errors table here.
155002
155003 END LOOP;
155004
155005 --
155006 -- 4865292
155007 --
155008 -- Compare g_hdr_extract_count with event count in
155009 -- CreateHeadersAndLines.
155010 --
155014 trace (p_msg => '# rows extracted from header extract objects '
155011 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
155012
155013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155015 || ' (running total): '
155016 || g_hdr_extract_count
155017 ,p_level => C_LEVEL_STATEMENT
155018 ,p_module => l_log_module);
155019 END IF;
155020
155021 CLOSE header_cur;
155022 --
155023
155024 --
155025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155026 trace
155027 (p_msg => 'END of EventType_276'
155028 ,p_level => C_LEVEL_PROCEDURE
155029 ,p_module => l_log_module);
155030 END IF;
155031 --
155032 RETURN l_result;
155033 EXCEPTION
155034 WHEN xla_exceptions_pkg.application_exception THEN
155035
155036 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155037
155038
155039 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
155040
155041 RAISE;
155042
155043 WHEN NO_DATA_FOUND THEN
155044
155045 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155046 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
155047
155048 FOR header_record IN header_cur
155049 LOOP
155050 l_array_header_events(header_record.event_id) := header_record.event_id;
155051 END LOOP;
155052
155053 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
155054 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
155055
155056 fnd_file.put_line(fnd_file.LOG, ' ');
155057 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155058 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
155059 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
155060
155061 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
155062 LOOP
155063 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
155064 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
155065 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
155066 END IF;
155067 END LOOP;
155068
155069 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155070 fnd_file.put_line(fnd_file.LOG, ' ');
155071
155072
155073 xla_exceptions_pkg.raise_message
155074 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_276');
155075
155076
155077 WHEN OTHERS THEN
155078 xla_exceptions_pkg.raise_message
155079 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_276');
155080 END EventType_276;
155081 --
155082
155083 ---------------------------------------
155084 --
155085 -- PRIVATE PROCEDURE
155086 -- insert_sources_277
155087 --
155088 ----------------------------------------
155089 --
155090 PROCEDURE insert_sources_277(
155091 p_target_ledger_id IN NUMBER
155092 , p_language IN VARCHAR2
155093 , p_sla_ledger_id IN NUMBER
155094 , p_pad_start_date IN DATE
155095 , p_pad_end_date IN DATE
155096 )
155097 IS
155098
155099 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_ISSUE_TP';
155100 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
155101 p_apps_owner VARCHAR2(30);
155102 l_log_module VARCHAR2(240);
155103 BEGIN
155104 IF g_log_enabled THEN
155105 l_log_module := C_DEFAULT_MODULE||'.insert_sources_277';
155106 END IF;
155107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155108
155109 trace
155110 (p_msg => 'BEGIN of insert_sources_277'
155111 ,p_level => C_LEVEL_PROCEDURE
155112 ,p_module => l_log_module);
155113
155114 END IF;
155115
155116 -- select APPS owner
155117 SELECT oracle_username
155118 INTO p_apps_owner
155119 FROM fnd_oracle_userid
155120 WHERE read_only_flag = 'U'
155121 ;
155122
155123 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155124 trace
155125 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
155126 ' - p_language = '||p_language||
155127 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
155128 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
155129 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
155130 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
155131 ,p_level => C_LEVEL_STATEMENT
155132 ,p_module => l_log_module);
155133 END IF;
155134
155135
155136 --
155137 INSERT INTO xla_diag_sources --hdr1
155138 (
155139 event_id
155140 , ledger_id
155141 , sla_ledger_id
155142 , description_language
155143 , object_name
155144 , object_type_code
155145 , line_number
155146 , source_application_id
155147 , source_type_code
155148 , source_code
155149 , source_value
155150 , source_meaning
155151 , created_by
155152 , creation_date
155153 , last_update_date
155154 , last_updated_by
155155 , last_update_login
155156 , program_update_date
155160 )
155157 , program_application_id
155158 , program_id
155159 , request_id
155161 SELECT
155162 event_id
155163 , p_target_ledger_id
155164 , p_sla_ledger_id
155165 , p_language
155166 , object_name
155167 , object_type_code
155168 , line_number
155169 , source_application_id
155170 , source_type_code
155171 , source_code
155172 , SUBSTR(source_value ,1,1996)
155173 , SUBSTR(source_meaning,1,200)
155174 , xla_environment_pkg.g_Usr_Id
155175 , TRUNC(SYSDATE)
155176 , TRUNC(SYSDATE)
155177 , xla_environment_pkg.g_Usr_Id
155178 , xla_environment_pkg.g_Login_Id
155179 , TRUNC(SYSDATE)
155180 , xla_environment_pkg.g_Prog_Appl_Id
155181 , xla_environment_pkg.g_Prog_Id
155182 , xla_environment_pkg.g_Req_Id
155183 FROM (
155184 SELECT xet.event_id event_id
155185 , 0 line_number
155186 , CASE r
155187 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
155188 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
155189 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
155190 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
155191 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
155192 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
155193
155194 ELSE null
155195 END object_name
155196 , CASE r
155197 WHEN 1 THEN 'HEADER'
155198 WHEN 2 THEN 'HEADER'
155199 WHEN 3 THEN 'HEADER'
155200 WHEN 4 THEN 'HEADER'
155201 WHEN 5 THEN 'HEADER'
155202 WHEN 6 THEN 'HEADER'
155203
155204 ELSE null
155205 END object_type_code
155206 , CASE r
155207 WHEN 1 THEN '555'
155208 WHEN 2 THEN '555'
155209 WHEN 3 THEN '555'
155210 WHEN 4 THEN '555'
155211 WHEN 5 THEN '555'
155212 WHEN 6 THEN '555'
155213
155214 ELSE null
155215 END source_application_id
155216 , 'S' source_type_code
155217 , CASE r
155218 WHEN 1 THEN 'ENTITY_CODE'
155219 WHEN 2 THEN 'CURRENCY_CODE'
155220 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
155221 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
155222 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
155223 WHEN 6 THEN 'TRANSACTION_DATE'
155224
155225 ELSE null
155226 END source_code
155227 , CASE r
155228 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
155229 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
155230 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
155231 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
155232 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
155233 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
155234
155235 ELSE null
155236 END source_value
155237 , CASE r
155238 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
155239 1010186
155240 ,TO_CHAR(h1.CURRENCY_CODE)
155241 ,'CURRENCY_CODE'
155242 ,'S'
155243 ,555)
155244
155245 ELSE null
155246 END source_meaning
155247 FROM xla_events_gt xet
155248 , GMF_XLA_EXTRACT_HEADERS h1
155249 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
155250 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155251 AND xet.event_type_code = C_EVENT_TYPE_CODE
155252 AND h1.event_id = xet.event_id
155253
155254 )
155255 ;
155256 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155257
155258 trace
155259 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
155260 ,p_level => C_LEVEL_STATEMENT
155261 ,p_module => l_log_module);
155262
155263 END IF;
155264 --
155265
155266
155267
155268 --
155269 INSERT INTO xla_diag_sources --line1
155270 (
155271 event_id
155272 , ledger_id
155273 , sla_ledger_id
155274 , description_language
155275 , object_name
155276 , object_type_code
155277 , line_number
155278 , source_application_id
155279 , source_type_code
155280 , source_code
155281 , source_value
155282 , source_meaning
155283 , created_by
155284 , creation_date
155285 , last_update_date
155286 , last_updated_by
155287 , last_update_login
155288 , program_update_date
155289 , program_application_id
155290 , program_id
155291 , request_id
155292 )
155293 SELECT event_id
155294 , p_target_ledger_id
155295 , p_sla_ledger_id
155296 , p_language
155297 , object_name
155298 , object_type_code
155299 , line_number
155303 , SUBSTR(source_value,1,1996)
155300 , source_application_id
155301 , source_type_code
155302 , source_code
155304 , SUBSTR(source_meaning,1,200)
155305 , xla_environment_pkg.g_Usr_Id
155306 , TRUNC(SYSDATE)
155307 , TRUNC(SYSDATE)
155308 , xla_environment_pkg.g_Usr_Id
155309 , xla_environment_pkg.g_Login_Id
155310 , TRUNC(SYSDATE)
155311 , xla_environment_pkg.g_Prog_Appl_Id
155312 , xla_environment_pkg.g_Prog_Id
155313 , xla_environment_pkg.g_Req_Id
155314 FROM (
155315 SELECT xet.event_id event_id
155316 , l2.line_number line_number
155317 , CASE r
155318 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
155319 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
155320 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
155321 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
155322 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
155323
155324 ELSE null
155325 END object_name
155326 , CASE r
155327 WHEN 1 THEN 'LINE'
155328 WHEN 2 THEN 'LINE'
155329 WHEN 3 THEN 'LINE'
155330 WHEN 4 THEN 'LINE'
155331 WHEN 5 THEN 'LINE'
155332
155333 ELSE null
155334 END object_type_code
155335 , CASE r
155336 WHEN 1 THEN '555'
155337 WHEN 2 THEN '555'
155338 WHEN 3 THEN '555'
155339 WHEN 4 THEN '555'
155340 WHEN 5 THEN '555'
155341
155342 ELSE null
155343 END source_application_id
155344 , 'S' source_type_code
155345 , CASE r
155346 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
155347 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
155348 WHEN 3 THEN 'ENTERED_AMOUNT'
155349 WHEN 4 THEN 'LINE_ID'
155350 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
155351
155352 ELSE null
155353 END source_code
155354 , CASE r
155355 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
155356 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
155357 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
155358 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
155359 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
155360
155361 ELSE null
155362 END source_value
155363 , null source_meaning
155364 FROM xla_events_gt xet
155365 , GMF_XLA_EXTRACT_LINES l2
155366 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
155367 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155368 AND xet.event_type_code = C_EVENT_TYPE_CODE
155369 AND l2.event_id = xet.event_id
155370
155371 )
155372 ;
155373 --
155374 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155375
155376 trace
155377 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
155378 ,p_level => C_LEVEL_STATEMENT
155379 ,p_module => l_log_module);
155380
155381 END IF;
155382
155383
155384 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155385 trace
155386 (p_msg => 'END of insert_sources_277'
155387 ,p_level => C_LEVEL_PROCEDURE
155388 ,p_module => l_log_module);
155389 END IF;
155390 EXCEPTION
155391 WHEN xla_exceptions_pkg.application_exception THEN
155392 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
155393 trace
155394 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
155395 ,p_level => C_LEVEL_EXCEPTION
155396 ,p_module => l_log_module);
155397 END IF;
155398 RAISE;
155399 WHEN OTHERS THEN
155400 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
155401 trace
155402 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
155403 ,p_level => C_LEVEL_EXCEPTION
155404 ,p_module => l_log_module);
155405 END IF;
155406 xla_exceptions_pkg.raise_message
155407 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_277');
155408 END insert_sources_277;
155409 --
155410
155411 ---------------------------------------
155412 --
155413 -- PRIVATE FUNCTION
155414 -- EventType_277
155415 --
155416 ----------------------------------------
155417 --
155418 FUNCTION EventType_277
155419 (p_application_id IN NUMBER
155420 ,p_base_ledger_id IN NUMBER
155421 ,p_target_ledger_id IN NUMBER
155422 ,p_language IN VARCHAR2
155423 ,p_currency_code IN VARCHAR2
155424 ,p_sla_ledger_id IN NUMBER
155425 ,p_pad_start_date IN DATE
155426 ,p_pad_end_date IN DATE
155427 ,p_primary_ledger_id IN NUMBER)
155428 RETURN BOOLEAN IS
155429 --
155430 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_ISSUE_TP';
155434 l_calculate_g_l_flag VARCHAR2(1) :='N';
155431 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
155432
155433 l_calculate_acctd_flag VARCHAR2(1) :='N';
155435 --
155436 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155437 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155438 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155439 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155440 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155441 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155442 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155443 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155444 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155445 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155446 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155447 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155448 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155449 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155450 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155451 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155452 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155453 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155454 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155455 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155456 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155457 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155458 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
155459 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155460 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
155461 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
155462
155463 l_event_id NUMBER;
155464 l_previous_event_id NUMBER;
155465 l_first_event_id NUMBER;
155466 l_last_event_id NUMBER;
155467
155468 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
155469 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
155470 --
155471 --
155472 l_result BOOLEAN := TRUE;
155473 l_rows NUMBER := 1000;
155474 l_event_type_name VARCHAR2(80) := 'Internal Order Issue to Expense, Transfer Pricing';
155475 l_event_class_name VARCHAR2(80) := 'Internal Order to Expense';
155476 l_description VARCHAR2(4000);
155477 l_transaction_reversal NUMBER;
155478 l_ae_header_id NUMBER;
155479 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
155480 l_log_module VARCHAR2(240);
155481 --
155482 l_acct_reversal_source VARCHAR2(30);
155483 l_trx_reversal_source VARCHAR2(30);
155484
155485 l_continue_with_lines BOOLEAN := TRUE;
155486 --
155487 l_acc_rev_gl_date_source DATE; -- 4262811
155488 --
155489 type t_array_event_id is table of number index by binary_integer;
155490
155491 l_rec_array_event t_rec_array_event;
155492 l_null_rec_array_event t_rec_array_event;
155493 l_array_ae_header_id xla_number_array_type;
155494 l_actual_flag VARCHAR2(1) := NULL;
155495 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
155496 l_balance_type_code VARCHAR2(1) :=NULL;
155497 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
155498
155499 --
155500 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
155501 --
155502
155503 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
155504 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
155505 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
155506 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
155507 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155508 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
155509
155510 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
155511 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
155512 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155513 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
155514 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155515
155516 l_array_source_6 t_array_source_6;
155517 l_array_source_7 t_array_source_7;
155518 l_array_source_8 t_array_source_8;
155519 l_array_source_9 t_array_source_9;
155520 l_array_source_10 t_array_source_10;
155524 l_array_source_2 t_array_source_2;
155521 l_array_source_12 t_array_source_12;
155522
155523 l_array_source_1 t_array_source_1;
155525 l_array_source_3 t_array_source_3;
155526 l_array_source_5 t_array_source_5;
155527 l_array_source_11 t_array_source_11;
155528
155529 --
155530 CURSOR header_cur
155531 IS
155532 SELECT /*+ leading(xet) cardinality(xet,1) */
155533 -- Event Type Code: INT_ORDER_ISSUE_TP
155534 -- Event Class Code: INT_ORDER_TO_EXP
155535 xet.entity_id
155536 , xet.legal_entity_id
155537 , xet.entity_code
155538 , xet.transaction_number
155539 , xet.event_id
155540 , xet.event_class_code
155541 , xet.event_type_code
155542 , xet.event_number
155543 , xet.event_date
155544 , xet.transaction_date
155545 , xet.reference_num_1
155546 , xet.reference_num_2
155547 , xet.reference_num_3
155548 , xet.reference_num_4
155549 , xet.reference_char_1
155550 , xet.reference_char_2
155551 , xet.reference_char_3
155552 , xet.reference_char_4
155553 , xet.reference_date_1
155554 , xet.reference_date_2
155555 , xet.reference_date_3
155556 , xet.reference_date_4
155557 , xet.event_created_by
155558 , xet.budgetary_control_flag
155559 , h1.ENTITY_CODE source_6
155560 , h1.CURRENCY_CODE source_7
155561 , h1.CURRENCY_CONVERSION_DATE source_8
155562 , h1.CURRENCY_CONVERSION_RATE source_9
155563 , h1.CURRENCY_CONVERSION_TYPE source_10
155564 , h1.TRANSACTION_DATE source_12
155565 FROM xla_events_gt xet
155566 , GMF_XLA_EXTRACT_HEADERS h1
155567 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
155568 and xet.event_type_code = C_EVENT_TYPE_CODE
155569 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
155570
155571 ORDER BY event_id
155572 ;
155573
155574
155575 --
155576 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
155577 IS
155578 SELECT /*+ leading(xet) cardinality(xet,1) */
155579 -- Event Type Code: INT_ORDER_ISSUE_TP
155580 -- Event Class Code: INT_ORDER_TO_EXP
155581 xet.entity_id
155582 ,xet.legal_entity_id
155583 ,xet.entity_code
155584 ,xet.transaction_number
155585 ,xet.event_id
155586 ,xet.event_class_code
155587 ,xet.event_type_code
155588 ,xet.event_number
155589 ,xet.event_date
155590 ,xet.transaction_date
155591 ,xet.reference_num_1
155592 ,xet.reference_num_2
155593 ,xet.reference_num_3
155594 ,xet.reference_num_4
155595 ,xet.reference_char_1
155596 ,xet.reference_char_2
155597 ,xet.reference_char_3
155598 ,xet.reference_char_4
155599 ,xet.reference_date_1
155600 ,xet.reference_date_2
155601 ,xet.reference_date_3
155602 ,xet.reference_date_4
155603 ,xet.event_created_by
155604 ,xet.budgetary_control_flag , l2.LINE_NUMBER
155605 , l2.TRANSACTION_ACCOUNT_ID source_1
155606 , l2.JOURNAL_LINE_TYPE source_2
155607 , l2.ENTERED_AMOUNT source_3
155608 , l2.LINE_ID source_5
155609 , l2.ACCOUNTED_AMOUNT source_11
155610 FROM xla_events_gt xet
155611 , GMF_XLA_EXTRACT_LINES l2
155612 WHERE xet.event_id between x_first_event_id and x_last_event_id
155613 and xet.event_date between p_pad_start_date and p_pad_end_date
155614 and xet.event_type_code = C_EVENT_TYPE_CODE
155615 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
155616 ;
155617
155618 --
155619 BEGIN
155620 IF g_log_enabled THEN
155621 l_log_module := C_DEFAULT_MODULE||'.EventType_277';
155622 END IF;
155623 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155624 trace
155625 (p_msg => 'BEGIN of EventType_277'
155626 ,p_level => C_LEVEL_PROCEDURE
155627 ,p_module => l_log_module);
155628 END IF;
155629
155630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155631 trace
155632 (p_msg => 'p_application_id = '||p_application_id||
155633 ' - p_base_ledger_id = '||p_base_ledger_id||
155634 ' - p_target_ledger_id = '||p_target_ledger_id||
155635 ' - p_language = '||p_language||
155636 ' - p_currency_code = '||p_currency_code||
155637 ' - p_sla_ledger_id = '||p_sla_ledger_id
155638 ,p_level => C_LEVEL_STATEMENT
155639 ,p_module => l_log_module);
155640 END IF;
155641 --
155642 -- initialze arrays
155643 --
155644 g_array_event.DELETE;
155645 l_rec_array_event := l_null_rec_array_event;
155646 --
155647 --------------------------------------
155648 -- 4262811 Initialze MPA Line Number
155649 --------------------------------------
155650 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
155651
155652 --
155653
155654 --
155655 OPEN header_cur;
155656 --
155657 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155658 trace
155659 (p_msg => 'SQL - FETCH header_cur'
155660 ,p_level => C_LEVEL_STATEMENT
155661 ,p_module => l_log_module);
155662 END IF;
155663 --
155664 LOOP
155665 FETCH header_cur BULK COLLECT INTO
155666 l_array_entity_id
155667 , l_array_legal_entity_id
155668 , l_array_entity_code
155669 , l_array_transaction_num
155670 , l_array_event_id
155671 , l_array_class_code
155672 , l_array_event_type
155673 , l_array_event_number
155674 , l_array_event_date
155675 , l_array_transaction_date
155676 , l_array_reference_num_1
155677 , l_array_reference_num_2
155681 , l_array_reference_char_2
155678 , l_array_reference_num_3
155679 , l_array_reference_num_4
155680 , l_array_reference_char_1
155682 , l_array_reference_char_3
155683 , l_array_reference_char_4
155684 , l_array_reference_date_1
155685 , l_array_reference_date_2
155686 , l_array_reference_date_3
155687 , l_array_reference_date_4
155688 , l_array_event_created_by
155689 , l_array_budgetary_control_flag
155690 , l_array_source_6
155691 , l_array_source_7
155692 , l_array_source_8
155693 , l_array_source_9
155694 , l_array_source_10
155695 , l_array_source_12
155696 LIMIT l_rows;
155697 --
155698 IF (C_LEVEL_EVENT >= g_log_level) THEN
155699 trace
155700 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
155701 ,p_level => C_LEVEL_EVENT
155702 ,p_module => l_log_module);
155703 END IF;
155704 --
155705 EXIT WHEN l_array_entity_id.COUNT = 0;
155706
155707 -- initialize arrays
155708 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
155709 XLA_AE_LINES_PKG.g_rec_lines := NULL;
155710
155711 --
155712 -- Bug 4458708
155713 --
155714 XLA_AE_LINES_PKG.g_LineNumber := 0;
155715
155716
155717 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
155718 g_last_hdr_idx := l_array_event_id.LAST;
155719 --
155720 -- loop for the headers. Each iteration is for each header extract row
155721 -- fetched in header cursor
155722 --
155723 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
155724
155725 --
155726 -- set event info as cache for other routines to refer event attributes
155727 --
155728 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155729 (p_application_id => p_application_id
155730 ,p_primary_ledger_id => p_primary_ledger_id
155731 ,p_base_ledger_id => p_base_ledger_id
155732 ,p_target_ledger_id => p_target_ledger_id
155733 ,p_entity_id => l_array_entity_id(hdr_idx)
155734 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
155735 ,p_entity_code => l_array_entity_code(hdr_idx)
155736 ,p_transaction_num => l_array_transaction_num(hdr_idx)
155737 ,p_event_id => l_array_event_id(hdr_idx)
155738 ,p_event_class_code => l_array_class_code(hdr_idx)
155739 ,p_event_type_code => l_array_event_type(hdr_idx)
155740 ,p_event_number => l_array_event_number(hdr_idx)
155741 ,p_event_date => l_array_event_date(hdr_idx)
155742 ,p_transaction_date => l_array_transaction_date(hdr_idx)
155743 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
155744 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
155745 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
155746 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
155747 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
155748 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
155749 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
155750 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
155751 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
155752 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
155753 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
155754 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
155755 ,p_event_created_by => l_array_event_created_by(hdr_idx)
155756 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
155757
155758 --
155759 -- set the status of entry to C_VALID (0)
155760 --
155761 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155762
155763 --
155764 -- initialize a row for ae header
155765 --
155766 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
155767
155768 l_event_id := l_array_event_id(hdr_idx);
155769
155770 --
155771 -- storing the hdr_idx for event. May be used by line cursor.
155772 --
155773 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
155774
155775 --
155776 -- store sources from header extract. This can be improved to
155777 -- store only those sources from header extract that may be used in lines
155778 --
155779
155780 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
155781 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
155782 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
155783 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
155784 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
155785 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
155786
155787 --
155788 -- initilaize the status of ae headers for diffrent balance types
155789 -- the status is initialised to C_NOT_CREATED (2)
155790 --
155791 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155792 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155793 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
155794
155795 --
155796 -- call api to validate and store accounting attributes for header
155797 --
155801 ------------------------------------------------------------
155798
155799 ------------------------------------------------------------
155800 -- Accrual Reversal : to get date for Standard Source (NONE)
155802 l_acc_rev_gl_date_source := NULL;
155803
155804 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
155805 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
155806
155807
155808 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
155809
155810 XLA_AE_HEADER_PKG.SetJeCategoryName;
155811
155812 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
155813 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
155814 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
155815 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
155816 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
155817
155818
155819 -- No header level analytical criteria
155820
155821 --
155822 --accounting attribute enhancement, bug 3612931
155823 --
155824 l_trx_reversal_source := SUBSTR(NULL, 1,30);
155825
155826 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
155827 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
155828
155829 xla_accounting_err_pkg.build_message
155830 (p_appli_s_name => 'XLA'
155831 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
155832 ,p_token_1 => 'ACCT_ATTR_NAME'
155833 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
155834 ,p_token_2 => 'PRODUCT_NAME'
155835 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
155836 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
155837 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
155838 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155839
155840 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
155841 --
155842 -- following sets the accounting attributes needed to reverse
155843 -- accounting for a distributeion
155844 --
155845 xla_ae_lines_pkg.SetTrxReversalAttrs
155846 (p_event_id => l_event_id
155847 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
155848 ,p_trx_reversal_source => l_trx_reversal_source);
155849
155850 END IF;
155851
155852
155853 ----------------------------------------------------------------
155854 -- 4262811 - update the header statuses to invalid in need be
155855 ----------------------------------------------------------------
155856 --
155857 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
155858
155859
155860 -----------------------------------------------
155861 -- No accrual reversal for the event class/type
155862 -----------------------------------------------
155863 ----------------------------------------------------------------
155864
155865 --
155866 -- this ends the header loop iteration for one bulk fetch
155867 --
155868 END LOOP;
155869
155870 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
155871 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
155872
155873 --
155874 -- insert dummy rows into lines gt table that were created due to
155875 -- transaction reversals
155876 --
155877 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
155878 l_result := XLA_AE_LINES_PKG.InsertLines;
155879 END IF;
155880
155881 --
155882 -- reset the temp_line_num for each set of events fetched from header
155883 -- cursor rather than doing it for each new event in line cursor
155884 -- Bug 3939231
155885 --
155886 xla_ae_lines_pkg.g_temp_line_num := 0;
155887
155888
155889
155890 --
155891 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
155892 --
155893 --
155894 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155895
155896 trace
155897 (p_msg => 'SQL - FETCH line_cur'
155898 ,p_level => C_LEVEL_STATEMENT
155899 ,p_module => l_log_module);
155900
155901 END IF;
155902 --
155903 --
155904 LOOP
155905 --
155906 FETCH line_cur BULK COLLECT INTO
155907 l_array_entity_id
155908 , l_array_legal_entity_id
155909 , l_array_entity_code
155910 , l_array_transaction_num
155911 , l_array_event_id
155912 , l_array_class_code
155913 , l_array_event_type
155914 , l_array_event_number
155915 , l_array_event_date
155916 , l_array_transaction_date
155917 , l_array_reference_num_1
155918 , l_array_reference_num_2
155919 , l_array_reference_num_3
155920 , l_array_reference_num_4
155921 , l_array_reference_char_1
155922 , l_array_reference_char_2
155923 , l_array_reference_char_3
155924 , l_array_reference_char_4
155925 , l_array_reference_date_1
155926 , l_array_reference_date_2
155927 , l_array_reference_date_3
155928 , l_array_reference_date_4
155929 , l_array_event_created_by
155930 , l_array_budgetary_control_flag
155931 , l_array_extract_line_num
155935 , l_array_source_5
155932 , l_array_source_1
155933 , l_array_source_2
155934 , l_array_source_3
155936 , l_array_source_11
155937 LIMIT l_rows;
155938
155939 --
155940 IF (C_LEVEL_EVENT >= g_log_level) THEN
155941 trace
155942 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
155943 ,p_level => C_LEVEL_EVENT
155944 ,p_module => l_log_module);
155945 END IF;
155946 --
155947 EXIT WHEN l_array_entity_id.count = 0;
155948
155949 XLA_AE_LINES_PKG.g_rec_lines := null;
155950
155951 --
155952 -- Bug 4458708
155953 --
155954 XLA_AE_LINES_PKG.g_LineNumber := 0;
155955 --
155956 --
155957
155958 FOR Idx IN 1..l_array_event_id.count LOOP
155959 --
155960 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
155961 --
155962 l_event_id := l_array_event_id(idx); -- 5648433
155963
155964 --
155965 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155966 --
155967
155968 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
155969 (g_array_event(l_event_id).array_value_num('header_index'))
155970 ,'N'
155971 ) <> 'Y'
155972 THEN
155973 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155974 trace
155975 (p_msg => 'Trancaction revesal option is not Y '
155976 ,p_level => C_LEVEL_STATEMENT
155977 ,p_module => l_log_module);
155978 END IF;
155979
155980 --
155981 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
155982 --
155983 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155984 --
155985 -- set event info as cache for other routines to refer event attributes
155986 --
155987
155988 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
155989 l_previous_event_id := l_event_id;
155990
155991 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155992 (p_application_id => p_application_id
155993 ,p_primary_ledger_id => p_primary_ledger_id
155994 ,p_base_ledger_id => p_base_ledger_id
155995 ,p_target_ledger_id => p_target_ledger_id
155996 ,p_entity_id => l_array_entity_id(Idx)
155997 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
155998 ,p_entity_code => l_array_entity_code(Idx)
155999 ,p_transaction_num => l_array_transaction_num(Idx)
156000 ,p_event_id => l_array_event_id(Idx)
156001 ,p_event_class_code => l_array_class_code(Idx)
156002 ,p_event_type_code => l_array_event_type(Idx)
156003 ,p_event_number => l_array_event_number(Idx)
156004 ,p_event_date => l_array_event_date(Idx)
156005 ,p_transaction_date => l_array_transaction_date(Idx)
156006 ,p_reference_num_1 => l_array_reference_num_1(Idx)
156007 ,p_reference_num_2 => l_array_reference_num_2(Idx)
156008 ,p_reference_num_3 => l_array_reference_num_3(Idx)
156009 ,p_reference_num_4 => l_array_reference_num_4(Idx)
156010 ,p_reference_char_1 => l_array_reference_char_1(Idx)
156011 ,p_reference_char_2 => l_array_reference_char_2(Idx)
156012 ,p_reference_char_3 => l_array_reference_char_3(Idx)
156013 ,p_reference_char_4 => l_array_reference_char_4(Idx)
156014 ,p_reference_date_1 => l_array_reference_date_1(Idx)
156015 ,p_reference_date_2 => l_array_reference_date_2(Idx)
156016 ,p_reference_date_3 => l_array_reference_date_3(Idx)
156017 ,p_reference_date_4 => l_array_reference_date_4(Idx)
156018 ,p_event_created_by => l_array_event_created_by(Idx)
156019 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
156020 --
156021 END IF;
156022
156023
156024
156025 --
156026 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
156027
156028 l_acct_reversal_source := SUBSTR(NULL, 1,30);
156029
156030 IF l_continue_with_lines THEN
156031 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
156032 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
156033
156034 xla_accounting_err_pkg.build_message
156035 (p_appli_s_name => 'XLA'
156036 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
156037 ,p_token_1 => 'LINE_NUMBER'
156038 ,p_value_1 => l_array_extract_line_num(Idx)
156039 ,p_token_2 => 'PRODUCT_NAME'
156040 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156041 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156042 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
156043 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156044
156045 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
156046 --
156047 -- following sets the accounting attributes needed to reverse
156048 -- accounting for a distributeion
156049 --
156050
156051 --
156052 -- 5217187
156053 --
156057 --
156054 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
156055 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
156056 g_array_event(l_event_id).array_value_num('header_index'));
156058 --
156059
156060 -- No reversal code generated
156061
156062 xla_ae_lines_pkg.SetAcctReversalAttrs
156063 (p_event_id => l_event_id
156064 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
156065 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156066 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
156067 END IF;
156068
156069 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
156070 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
156071
156072 --
156073 AcctLineType_86 (
156074 p_application_id => p_application_id
156075 ,p_event_id => l_event_id
156076 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156077 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156078 ,p_actual_flag => l_actual_flag
156079 ,p_balance_type_code => l_balance_type_code
156080 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156081
156082 , p_source_1 => l_array_source_1(Idx)
156083 , p_source_2 => l_array_source_2(Idx)
156084 , p_source_3 => l_array_source_3(Idx)
156085 , p_source_5 => l_array_source_5(Idx)
156086 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
156087 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156088 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
156089 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
156090 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
156091 , p_source_11 => l_array_source_11(Idx)
156092 );
156093 If(l_balance_type_code = 'A') THEN
156094 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156095 END IF;
156096
156097 --
156098
156099
156100 --
156101 AcctLineType_159 (
156102 p_application_id => p_application_id
156103 ,p_event_id => l_event_id
156104 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156105 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156106 ,p_actual_flag => l_actual_flag
156107 ,p_balance_type_code => l_balance_type_code
156108 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156109
156110 , p_source_1 => l_array_source_1(Idx)
156111 , p_source_2 => l_array_source_2(Idx)
156112 , p_source_3 => l_array_source_3(Idx)
156113 , p_source_5 => l_array_source_5(Idx)
156114 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
156115 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156116 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
156117 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
156118 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
156119 , p_source_11 => l_array_source_11(Idx)
156120 );
156121 If(l_balance_type_code = 'A') THEN
156122 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156123 END IF;
156124
156125 --
156126
156127
156128 --
156129 AcctLineType_181 (
156130 p_application_id => p_application_id
156131 ,p_event_id => l_event_id
156132 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156133 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156134 ,p_actual_flag => l_actual_flag
156135 ,p_balance_type_code => l_balance_type_code
156136 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156137
156138 , p_source_1 => l_array_source_1(Idx)
156139 , p_source_2 => l_array_source_2(Idx)
156140 , p_source_3 => l_array_source_3(Idx)
156141 , p_source_5 => l_array_source_5(Idx)
156142 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
156143 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156144 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
156145 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
156146 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
156147 , p_source_11 => l_array_source_11(Idx)
156148 );
156149 If(l_balance_type_code = 'A') THEN
156150 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156151 END IF;
156152
156153 --
156154
156155
156156 --
156157 AcctLineType_183 (
156158 p_application_id => p_application_id
156159 ,p_event_id => l_event_id
156160 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156161 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156162 ,p_actual_flag => l_actual_flag
156163 ,p_balance_type_code => l_balance_type_code
156164 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156165
156166 , p_source_1 => l_array_source_1(Idx)
156167 , p_source_2 => l_array_source_2(Idx)
156168 , p_source_3 => l_array_source_3(Idx)
156169 , p_source_5 => l_array_source_5(Idx)
156170 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
156171 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156172 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
156173 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
156174 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
156175 , p_source_11 => l_array_source_11(Idx)
156176 );
156177 If(l_balance_type_code = 'A') THEN
156178 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156179 END IF;
156180
156181 --
156182
156183 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
156184 -- or secondary ledger that has different currency with primary
156188
156185 -- or alc that is calculated by sla
156186 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
156187 (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'))
156189 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
156190 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
156191 AND (l_actual_flag = 'A')) THEN
156192 XLA_AE_LINES_PKG.CreateGainOrLossLines(
156193 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
156194 ,p_application_id => p_application_id
156195 ,p_amb_context_code => 'DEFAULT'
156196 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
156197 ,p_event_class_code => C_EVENT_CLASS_CODE
156198 ,p_event_type_code => C_EVENT_TYPE_CODE
156199
156200 ,p_gain_ccid => -1
156201 ,p_loss_ccid => -1
156202
156203 ,p_actual_flag => l_actual_flag
156204 ,p_enc_flag => null
156205 ,p_actual_g_l_ref => l_actual_gain_loss_ref
156206 ,p_enc_g_l_ref => null
156207 );
156208 END IF;
156209 END IF;
156210 END IF;
156211
156212 ELSE
156213 --
156214 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
156215 --
156216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156217 trace
156218 (p_msg => 'Trancaction revesal option is Y'
156219 ,p_level => C_LEVEL_STATEMENT
156220 ,p_module => l_log_module);
156221 END IF;
156222 END IF;
156223
156224 END LOOP;
156225 l_result := XLA_AE_LINES_PKG.InsertLines ;
156226 end loop;
156227 close line_cur;
156228
156229
156230 --
156231 -- insert headers into xla_ae_headers_gt table
156232 --
156233 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
156234
156235 -- insert into errors table here.
156236
156237 END LOOP;
156238
156239 --
156240 -- 4865292
156241 --
156242 -- Compare g_hdr_extract_count with event count in
156243 -- CreateHeadersAndLines.
156244 --
156245 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
156246
156247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156248 trace (p_msg => '# rows extracted from header extract objects '
156249 || ' (running total): '
156250 || g_hdr_extract_count
156251 ,p_level => C_LEVEL_STATEMENT
156252 ,p_module => l_log_module);
156253 END IF;
156254
156255 CLOSE header_cur;
156256 --
156257
156258 --
156259 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156260 trace
156261 (p_msg => 'END of EventType_277'
156262 ,p_level => C_LEVEL_PROCEDURE
156263 ,p_module => l_log_module);
156264 END IF;
156265 --
156266 RETURN l_result;
156267 EXCEPTION
156268 WHEN xla_exceptions_pkg.application_exception THEN
156269
156270 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
156271
156272
156273 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
156274
156275 RAISE;
156276
156277 WHEN NO_DATA_FOUND THEN
156278
156279 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
156280 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
156281
156282 FOR header_record IN header_cur
156283 LOOP
156284 l_array_header_events(header_record.event_id) := header_record.event_id;
156285 END LOOP;
156286
156287 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
156288 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
156289
156290 fnd_file.put_line(fnd_file.LOG, ' ');
156291 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
156292 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
156293 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
156294
156295 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
156296 LOOP
156297 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
156298 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
156299 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
156300 END IF;
156301 END LOOP;
156302
156303 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
156304 fnd_file.put_line(fnd_file.LOG, ' ');
156305
156306
156307 xla_exceptions_pkg.raise_message
156308 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_277');
156309
156310
156311 WHEN OTHERS THEN
156312 xla_exceptions_pkg.raise_message
156313 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_277');
156314 END EventType_277;
156315 --
156316
156317 ---------------------------------------
156318 --
156319 -- PRIVATE PROCEDURE
156320 -- insert_sources_278
156321 --
156322 ----------------------------------------
156323 --
156324 PROCEDURE insert_sources_278(
156325 p_target_ledger_id IN NUMBER
156329 , p_pad_end_date IN DATE
156326 , p_language IN VARCHAR2
156327 , p_sla_ledger_id IN NUMBER
156328 , p_pad_start_date IN DATE
156330 )
156331 IS
156332
156333 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_REQ_RECEIPT_ADJ';
156334 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
156335 p_apps_owner VARCHAR2(30);
156336 l_log_module VARCHAR2(240);
156337 BEGIN
156338 IF g_log_enabled THEN
156339 l_log_module := C_DEFAULT_MODULE||'.insert_sources_278';
156340 END IF;
156341 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156342
156343 trace
156344 (p_msg => 'BEGIN of insert_sources_278'
156345 ,p_level => C_LEVEL_PROCEDURE
156346 ,p_module => l_log_module);
156347
156348 END IF;
156349
156350 -- select APPS owner
156351 SELECT oracle_username
156352 INTO p_apps_owner
156353 FROM fnd_oracle_userid
156354 WHERE read_only_flag = 'U'
156355 ;
156356
156357 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156358 trace
156359 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
156360 ' - p_language = '||p_language||
156361 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
156362 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
156363 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
156364 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
156365 ,p_level => C_LEVEL_STATEMENT
156366 ,p_module => l_log_module);
156367 END IF;
156368
156369
156370 --
156371 INSERT INTO xla_diag_sources --hdr1
156372 (
156373 event_id
156374 , ledger_id
156375 , sla_ledger_id
156376 , description_language
156377 , object_name
156378 , object_type_code
156379 , line_number
156380 , source_application_id
156381 , source_type_code
156382 , source_code
156383 , source_value
156384 , source_meaning
156385 , created_by
156386 , creation_date
156387 , last_update_date
156388 , last_updated_by
156389 , last_update_login
156390 , program_update_date
156391 , program_application_id
156392 , program_id
156393 , request_id
156394 )
156395 SELECT
156396 event_id
156397 , p_target_ledger_id
156398 , p_sla_ledger_id
156399 , p_language
156400 , object_name
156401 , object_type_code
156402 , line_number
156403 , source_application_id
156404 , source_type_code
156405 , source_code
156406 , SUBSTR(source_value ,1,1996)
156407 , SUBSTR(source_meaning,1,200)
156408 , xla_environment_pkg.g_Usr_Id
156409 , TRUNC(SYSDATE)
156410 , TRUNC(SYSDATE)
156411 , xla_environment_pkg.g_Usr_Id
156412 , xla_environment_pkg.g_Login_Id
156413 , TRUNC(SYSDATE)
156414 , xla_environment_pkg.g_Prog_Appl_Id
156415 , xla_environment_pkg.g_Prog_Id
156416 , xla_environment_pkg.g_Req_Id
156417 FROM (
156418 SELECT xet.event_id event_id
156419 , 0 line_number
156420 , CASE r
156421 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
156422 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
156423 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
156424 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
156425 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
156426 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
156427
156428 ELSE null
156429 END object_name
156430 , CASE r
156431 WHEN 1 THEN 'HEADER'
156432 WHEN 2 THEN 'HEADER'
156433 WHEN 3 THEN 'HEADER'
156434 WHEN 4 THEN 'HEADER'
156435 WHEN 5 THEN 'HEADER'
156436 WHEN 6 THEN 'HEADER'
156437
156438 ELSE null
156439 END object_type_code
156440 , CASE r
156441 WHEN 1 THEN '555'
156442 WHEN 2 THEN '555'
156443 WHEN 3 THEN '555'
156444 WHEN 4 THEN '555'
156445 WHEN 5 THEN '555'
156446 WHEN 6 THEN '555'
156447
156448 ELSE null
156449 END source_application_id
156450 , 'S' source_type_code
156451 , CASE r
156452 WHEN 1 THEN 'ENTITY_CODE'
156453 WHEN 2 THEN 'CURRENCY_CODE'
156454 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
156455 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
156456 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
156457 WHEN 6 THEN 'TRANSACTION_DATE'
156458
156459 ELSE null
156460 END source_code
156461 , CASE r
156462 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
156463 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
156464 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
156468
156465 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
156466 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
156467 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
156469 ELSE null
156470 END source_value
156471 , CASE r
156472 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
156473 1010186
156474 ,TO_CHAR(h1.CURRENCY_CODE)
156475 ,'CURRENCY_CODE'
156476 ,'S'
156477 ,555)
156478
156479 ELSE null
156480 END source_meaning
156481 FROM xla_events_gt xet
156482 , GMF_XLA_EXTRACT_HEADERS h1
156483 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
156484 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
156485 AND xet.event_type_code = C_EVENT_TYPE_CODE
156486 AND h1.event_id = xet.event_id
156487
156488 )
156489 ;
156490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156491
156492 trace
156493 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
156494 ,p_level => C_LEVEL_STATEMENT
156495 ,p_module => l_log_module);
156496
156497 END IF;
156498 --
156499
156500
156501
156502 --
156503 INSERT INTO xla_diag_sources --line1
156504 (
156505 event_id
156506 , ledger_id
156507 , sla_ledger_id
156508 , description_language
156509 , object_name
156510 , object_type_code
156511 , line_number
156512 , source_application_id
156513 , source_type_code
156514 , source_code
156515 , source_value
156516 , source_meaning
156517 , created_by
156518 , creation_date
156519 , last_update_date
156520 , last_updated_by
156521 , last_update_login
156522 , program_update_date
156523 , program_application_id
156524 , program_id
156525 , request_id
156526 )
156527 SELECT event_id
156528 , p_target_ledger_id
156529 , p_sla_ledger_id
156530 , p_language
156531 , object_name
156532 , object_type_code
156533 , line_number
156534 , source_application_id
156535 , source_type_code
156536 , source_code
156537 , SUBSTR(source_value,1,1996)
156538 , SUBSTR(source_meaning,1,200)
156539 , xla_environment_pkg.g_Usr_Id
156540 , TRUNC(SYSDATE)
156541 , TRUNC(SYSDATE)
156542 , xla_environment_pkg.g_Usr_Id
156543 , xla_environment_pkg.g_Login_Id
156544 , TRUNC(SYSDATE)
156545 , xla_environment_pkg.g_Prog_Appl_Id
156546 , xla_environment_pkg.g_Prog_Id
156547 , xla_environment_pkg.g_Req_Id
156548 FROM (
156549 SELECT xet.event_id event_id
156550 , l2.line_number line_number
156551 , CASE r
156552 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
156553 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
156554 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
156555 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
156556 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
156557
156558 ELSE null
156559 END object_name
156560 , CASE r
156561 WHEN 1 THEN 'LINE'
156562 WHEN 2 THEN 'LINE'
156563 WHEN 3 THEN 'LINE'
156564 WHEN 4 THEN 'LINE'
156565 WHEN 5 THEN 'LINE'
156566
156567 ELSE null
156568 END object_type_code
156569 , CASE r
156570 WHEN 1 THEN '555'
156571 WHEN 2 THEN '555'
156572 WHEN 3 THEN '555'
156573 WHEN 4 THEN '555'
156574 WHEN 5 THEN '555'
156575
156576 ELSE null
156577 END source_application_id
156578 , 'S' source_type_code
156579 , CASE r
156580 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
156581 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
156582 WHEN 3 THEN 'ENTERED_AMOUNT'
156583 WHEN 4 THEN 'LINE_ID'
156584 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
156585
156586 ELSE null
156587 END source_code
156588 , CASE r
156589 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
156590 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
156591 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
156592 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
156593 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
156594
156595 ELSE null
156596 END source_value
156597 , null source_meaning
156598 FROM xla_events_gt xet
156599 , GMF_XLA_EXTRACT_LINES l2
156600 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
156601 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
156605 )
156602 AND xet.event_type_code = C_EVENT_TYPE_CODE
156603 AND l2.event_id = xet.event_id
156604
156606 ;
156607 --
156608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156609
156610 trace
156611 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
156612 ,p_level => C_LEVEL_STATEMENT
156613 ,p_module => l_log_module);
156614
156615 END IF;
156616
156617
156618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156619 trace
156620 (p_msg => 'END of insert_sources_278'
156621 ,p_level => C_LEVEL_PROCEDURE
156622 ,p_module => l_log_module);
156623 END IF;
156624 EXCEPTION
156625 WHEN xla_exceptions_pkg.application_exception THEN
156626 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
156627 trace
156628 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
156629 ,p_level => C_LEVEL_EXCEPTION
156630 ,p_module => l_log_module);
156631 END IF;
156632 RAISE;
156633 WHEN OTHERS THEN
156634 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
156635 trace
156636 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
156637 ,p_level => C_LEVEL_EXCEPTION
156638 ,p_module => l_log_module);
156639 END IF;
156640 xla_exceptions_pkg.raise_message
156641 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_278');
156642 END insert_sources_278;
156643 --
156644
156645 ---------------------------------------
156646 --
156647 -- PRIVATE FUNCTION
156648 -- EventType_278
156649 --
156650 ----------------------------------------
156651 --
156652 FUNCTION EventType_278
156653 (p_application_id IN NUMBER
156654 ,p_base_ledger_id IN NUMBER
156655 ,p_target_ledger_id IN NUMBER
156656 ,p_language IN VARCHAR2
156657 ,p_currency_code IN VARCHAR2
156658 ,p_sla_ledger_id IN NUMBER
156659 ,p_pad_start_date IN DATE
156660 ,p_pad_end_date IN DATE
156661 ,p_primary_ledger_id IN NUMBER)
156662 RETURN BOOLEAN IS
156663 --
156664 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_REQ_RECEIPT_ADJ';
156665 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
156666
156667 l_calculate_acctd_flag VARCHAR2(1) :='N';
156668 l_calculate_g_l_flag VARCHAR2(1) :='N';
156669 --
156670 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156671 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156672 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156673 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156674 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156675 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156676 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156677 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156678 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156679 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156680 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156681 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156682 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156683 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
156684 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156685 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156686 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156687 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
156688 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156689 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156690 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156691 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
156692 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
156693 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
156694 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
156695 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
156696
156697 l_event_id NUMBER;
156698 l_previous_event_id NUMBER;
156699 l_first_event_id NUMBER;
156700 l_last_event_id NUMBER;
156701
156702 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
156703 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
156704 --
156705 --
156706 l_result BOOLEAN := TRUE;
156707 l_rows NUMBER := 1000;
156708 l_event_type_name VARCHAR2(80) := 'Internal Requisition Receipt Adjustment';
156709 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
156710 l_description VARCHAR2(4000);
156711 l_transaction_reversal NUMBER;
156712 l_ae_header_id NUMBER;
156713 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
156714 l_log_module VARCHAR2(240);
156715 --
156719 l_continue_with_lines BOOLEAN := TRUE;
156716 l_acct_reversal_source VARCHAR2(30);
156717 l_trx_reversal_source VARCHAR2(30);
156718
156720 --
156721 l_acc_rev_gl_date_source DATE; -- 4262811
156722 --
156723 type t_array_event_id is table of number index by binary_integer;
156724
156725 l_rec_array_event t_rec_array_event;
156726 l_null_rec_array_event t_rec_array_event;
156727 l_array_ae_header_id xla_number_array_type;
156728 l_actual_flag VARCHAR2(1) := NULL;
156729 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
156730 l_balance_type_code VARCHAR2(1) :=NULL;
156731 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
156732
156733 --
156734 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
156735 --
156736
156737 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
156738 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
156739 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
156740 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
156741 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
156742 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
156743
156744 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
156745 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
156746 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
156747 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
156748 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
156749
156750 l_array_source_6 t_array_source_6;
156751 l_array_source_7 t_array_source_7;
156752 l_array_source_8 t_array_source_8;
156753 l_array_source_9 t_array_source_9;
156754 l_array_source_10 t_array_source_10;
156755 l_array_source_12 t_array_source_12;
156756
156757 l_array_source_1 t_array_source_1;
156758 l_array_source_2 t_array_source_2;
156759 l_array_source_3 t_array_source_3;
156760 l_array_source_5 t_array_source_5;
156761 l_array_source_11 t_array_source_11;
156762
156763 --
156764 CURSOR header_cur
156765 IS
156766 SELECT /*+ leading(xet) cardinality(xet,1) */
156767 -- Event Type Code: INT_REQ_RECEIPT_ADJ
156768 -- Event Class Code: DELIVER
156769 xet.entity_id
156770 , xet.legal_entity_id
156771 , xet.entity_code
156772 , xet.transaction_number
156773 , xet.event_id
156774 , xet.event_class_code
156775 , xet.event_type_code
156776 , xet.event_number
156777 , xet.event_date
156778 , xet.transaction_date
156779 , xet.reference_num_1
156780 , xet.reference_num_2
156781 , xet.reference_num_3
156782 , xet.reference_num_4
156783 , xet.reference_char_1
156784 , xet.reference_char_2
156785 , xet.reference_char_3
156786 , xet.reference_char_4
156787 , xet.reference_date_1
156788 , xet.reference_date_2
156789 , xet.reference_date_3
156790 , xet.reference_date_4
156791 , xet.event_created_by
156792 , xet.budgetary_control_flag
156793 , h1.ENTITY_CODE source_6
156794 , h1.CURRENCY_CODE source_7
156795 , h1.CURRENCY_CONVERSION_DATE source_8
156796 , h1.CURRENCY_CONVERSION_RATE source_9
156797 , h1.CURRENCY_CONVERSION_TYPE source_10
156798 , h1.TRANSACTION_DATE source_12
156799 FROM xla_events_gt xet
156800 , GMF_XLA_EXTRACT_HEADERS h1
156801 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
156802 and xet.event_type_code = C_EVENT_TYPE_CODE
156803 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
156804
156805 ORDER BY event_id
156806 ;
156807
156808
156809 --
156810 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
156811 IS
156812 SELECT /*+ leading(xet) cardinality(xet,1) */
156813 -- Event Type Code: INT_REQ_RECEIPT_ADJ
156814 -- Event Class Code: DELIVER
156815 xet.entity_id
156816 ,xet.legal_entity_id
156817 ,xet.entity_code
156818 ,xet.transaction_number
156819 ,xet.event_id
156820 ,xet.event_class_code
156821 ,xet.event_type_code
156822 ,xet.event_number
156823 ,xet.event_date
156824 ,xet.transaction_date
156825 ,xet.reference_num_1
156826 ,xet.reference_num_2
156827 ,xet.reference_num_3
156828 ,xet.reference_num_4
156829 ,xet.reference_char_1
156830 ,xet.reference_char_2
156831 ,xet.reference_char_3
156832 ,xet.reference_char_4
156833 ,xet.reference_date_1
156834 ,xet.reference_date_2
156835 ,xet.reference_date_3
156836 ,xet.reference_date_4
156837 ,xet.event_created_by
156838 ,xet.budgetary_control_flag , l2.LINE_NUMBER
156839 , l2.TRANSACTION_ACCOUNT_ID source_1
156840 , l2.JOURNAL_LINE_TYPE source_2
156841 , l2.ENTERED_AMOUNT source_3
156842 , l2.LINE_ID source_5
156843 , l2.ACCOUNTED_AMOUNT source_11
156844 FROM xla_events_gt xet
156845 , GMF_XLA_EXTRACT_LINES l2
156846 WHERE xet.event_id between x_first_event_id and x_last_event_id
156850 ;
156847 and xet.event_date between p_pad_start_date and p_pad_end_date
156848 and xet.event_type_code = C_EVENT_TYPE_CODE
156849 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
156851
156852 --
156853 BEGIN
156854 IF g_log_enabled THEN
156855 l_log_module := C_DEFAULT_MODULE||'.EventType_278';
156856 END IF;
156857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156858 trace
156859 (p_msg => 'BEGIN of EventType_278'
156860 ,p_level => C_LEVEL_PROCEDURE
156861 ,p_module => l_log_module);
156862 END IF;
156863
156864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156865 trace
156866 (p_msg => 'p_application_id = '||p_application_id||
156867 ' - p_base_ledger_id = '||p_base_ledger_id||
156868 ' - p_target_ledger_id = '||p_target_ledger_id||
156869 ' - p_language = '||p_language||
156870 ' - p_currency_code = '||p_currency_code||
156871 ' - p_sla_ledger_id = '||p_sla_ledger_id
156872 ,p_level => C_LEVEL_STATEMENT
156873 ,p_module => l_log_module);
156874 END IF;
156875 --
156876 -- initialze arrays
156877 --
156878 g_array_event.DELETE;
156879 l_rec_array_event := l_null_rec_array_event;
156880 --
156881 --------------------------------------
156882 -- 4262811 Initialze MPA Line Number
156883 --------------------------------------
156884 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
156885
156886 --
156887
156888 --
156889 OPEN header_cur;
156890 --
156891 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156892 trace
156893 (p_msg => 'SQL - FETCH header_cur'
156894 ,p_level => C_LEVEL_STATEMENT
156895 ,p_module => l_log_module);
156896 END IF;
156897 --
156898 LOOP
156899 FETCH header_cur BULK COLLECT INTO
156900 l_array_entity_id
156901 , l_array_legal_entity_id
156902 , l_array_entity_code
156903 , l_array_transaction_num
156904 , l_array_event_id
156905 , l_array_class_code
156906 , l_array_event_type
156907 , l_array_event_number
156908 , l_array_event_date
156909 , l_array_transaction_date
156910 , l_array_reference_num_1
156911 , l_array_reference_num_2
156912 , l_array_reference_num_3
156913 , l_array_reference_num_4
156914 , l_array_reference_char_1
156915 , l_array_reference_char_2
156916 , l_array_reference_char_3
156917 , l_array_reference_char_4
156918 , l_array_reference_date_1
156919 , l_array_reference_date_2
156920 , l_array_reference_date_3
156921 , l_array_reference_date_4
156922 , l_array_event_created_by
156923 , l_array_budgetary_control_flag
156924 , l_array_source_6
156925 , l_array_source_7
156926 , l_array_source_8
156927 , l_array_source_9
156928 , l_array_source_10
156929 , l_array_source_12
156930 LIMIT l_rows;
156931 --
156932 IF (C_LEVEL_EVENT >= g_log_level) THEN
156933 trace
156934 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
156935 ,p_level => C_LEVEL_EVENT
156936 ,p_module => l_log_module);
156937 END IF;
156938 --
156939 EXIT WHEN l_array_entity_id.COUNT = 0;
156940
156941 -- initialize arrays
156942 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
156943 XLA_AE_LINES_PKG.g_rec_lines := NULL;
156944
156945 --
156946 -- Bug 4458708
156947 --
156948 XLA_AE_LINES_PKG.g_LineNumber := 0;
156949
156950
156951 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
156952 g_last_hdr_idx := l_array_event_id.LAST;
156953 --
156954 -- loop for the headers. Each iteration is for each header extract row
156955 -- fetched in header cursor
156956 --
156957 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
156958
156959 --
156960 -- set event info as cache for other routines to refer event attributes
156961 --
156962 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156963 (p_application_id => p_application_id
156964 ,p_primary_ledger_id => p_primary_ledger_id
156965 ,p_base_ledger_id => p_base_ledger_id
156966 ,p_target_ledger_id => p_target_ledger_id
156967 ,p_entity_id => l_array_entity_id(hdr_idx)
156968 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
156969 ,p_entity_code => l_array_entity_code(hdr_idx)
156970 ,p_transaction_num => l_array_transaction_num(hdr_idx)
156971 ,p_event_id => l_array_event_id(hdr_idx)
156972 ,p_event_class_code => l_array_class_code(hdr_idx)
156973 ,p_event_type_code => l_array_event_type(hdr_idx)
156974 ,p_event_number => l_array_event_number(hdr_idx)
156975 ,p_event_date => l_array_event_date(hdr_idx)
156976 ,p_transaction_date => l_array_transaction_date(hdr_idx)
156977 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
156978 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
156979 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
156980 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
156981 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
156982 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
156983 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
156987 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
156984 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
156985 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
156986 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
156988 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
156989 ,p_event_created_by => l_array_event_created_by(hdr_idx)
156990 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
156991
156992 --
156993 -- set the status of entry to C_VALID (0)
156994 --
156995 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156996
156997 --
156998 -- initialize a row for ae header
156999 --
157000 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
157001
157002 l_event_id := l_array_event_id(hdr_idx);
157003
157004 --
157005 -- storing the hdr_idx for event. May be used by line cursor.
157006 --
157007 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
157008
157009 --
157010 -- store sources from header extract. This can be improved to
157011 -- store only those sources from header extract that may be used in lines
157012 --
157013
157014 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
157015 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
157016 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
157017 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
157018 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
157019 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
157020
157021 --
157022 -- initilaize the status of ae headers for diffrent balance types
157023 -- the status is initialised to C_NOT_CREATED (2)
157024 --
157025 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157026 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157027 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157028
157029 --
157030 -- call api to validate and store accounting attributes for header
157031 --
157032
157033 ------------------------------------------------------------
157034 -- Accrual Reversal : to get date for Standard Source (NONE)
157035 ------------------------------------------------------------
157036 l_acc_rev_gl_date_source := NULL;
157037
157038 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
157039 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
157040
157041
157042 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
157043
157044 XLA_AE_HEADER_PKG.SetJeCategoryName;
157045
157046 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
157047 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
157048 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
157049 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
157050 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
157051
157052
157053 -- No header level analytical criteria
157054
157055 --
157056 --accounting attribute enhancement, bug 3612931
157057 --
157058 l_trx_reversal_source := SUBSTR(NULL, 1,30);
157059
157060 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
157061 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
157062
157063 xla_accounting_err_pkg.build_message
157064 (p_appli_s_name => 'XLA'
157065 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
157066 ,p_token_1 => 'ACCT_ATTR_NAME'
157067 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
157068 ,p_token_2 => 'PRODUCT_NAME'
157069 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157070 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157071 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
157072 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157073
157074 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
157075 --
157076 -- following sets the accounting attributes needed to reverse
157077 -- accounting for a distributeion
157078 --
157079 xla_ae_lines_pkg.SetTrxReversalAttrs
157080 (p_event_id => l_event_id
157081 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
157082 ,p_trx_reversal_source => l_trx_reversal_source);
157083
157084 END IF;
157085
157086
157087 ----------------------------------------------------------------
157088 -- 4262811 - update the header statuses to invalid in need be
157089 ----------------------------------------------------------------
157090 --
157091 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
157092
157093
157094 -----------------------------------------------
157095 -- No accrual reversal for the event class/type
157096 -----------------------------------------------
157100 -- this ends the header loop iteration for one bulk fetch
157097 ----------------------------------------------------------------
157098
157099 --
157101 --
157102 END LOOP;
157103
157104 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
157105 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
157106
157107 --
157108 -- insert dummy rows into lines gt table that were created due to
157109 -- transaction reversals
157110 --
157111 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
157112 l_result := XLA_AE_LINES_PKG.InsertLines;
157113 END IF;
157114
157115 --
157116 -- reset the temp_line_num for each set of events fetched from header
157117 -- cursor rather than doing it for each new event in line cursor
157118 -- Bug 3939231
157119 --
157120 xla_ae_lines_pkg.g_temp_line_num := 0;
157121
157122
157123
157124 --
157125 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
157126 --
157127 --
157128 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157129
157130 trace
157131 (p_msg => 'SQL - FETCH line_cur'
157132 ,p_level => C_LEVEL_STATEMENT
157133 ,p_module => l_log_module);
157134
157135 END IF;
157136 --
157137 --
157138 LOOP
157139 --
157140 FETCH line_cur BULK COLLECT INTO
157141 l_array_entity_id
157142 , l_array_legal_entity_id
157143 , l_array_entity_code
157144 , l_array_transaction_num
157145 , l_array_event_id
157146 , l_array_class_code
157147 , l_array_event_type
157148 , l_array_event_number
157149 , l_array_event_date
157150 , l_array_transaction_date
157151 , l_array_reference_num_1
157152 , l_array_reference_num_2
157153 , l_array_reference_num_3
157154 , l_array_reference_num_4
157155 , l_array_reference_char_1
157156 , l_array_reference_char_2
157157 , l_array_reference_char_3
157158 , l_array_reference_char_4
157159 , l_array_reference_date_1
157160 , l_array_reference_date_2
157161 , l_array_reference_date_3
157162 , l_array_reference_date_4
157163 , l_array_event_created_by
157164 , l_array_budgetary_control_flag
157165 , l_array_extract_line_num
157166 , l_array_source_1
157167 , l_array_source_2
157168 , l_array_source_3
157169 , l_array_source_5
157170 , l_array_source_11
157171 LIMIT l_rows;
157172
157173 --
157174 IF (C_LEVEL_EVENT >= g_log_level) THEN
157175 trace
157176 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
157177 ,p_level => C_LEVEL_EVENT
157178 ,p_module => l_log_module);
157179 END IF;
157180 --
157181 EXIT WHEN l_array_entity_id.count = 0;
157182
157183 XLA_AE_LINES_PKG.g_rec_lines := null;
157184
157185 --
157186 -- Bug 4458708
157187 --
157188 XLA_AE_LINES_PKG.g_LineNumber := 0;
157189 --
157190 --
157191
157192 FOR Idx IN 1..l_array_event_id.count LOOP
157193 --
157194 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
157195 --
157196 l_event_id := l_array_event_id(idx); -- 5648433
157197
157198 --
157199 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
157200 --
157201
157202 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
157203 (g_array_event(l_event_id).array_value_num('header_index'))
157204 ,'N'
157205 ) <> 'Y'
157206 THEN
157207 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157208 trace
157209 (p_msg => 'Trancaction revesal option is not Y '
157210 ,p_level => C_LEVEL_STATEMENT
157211 ,p_module => l_log_module);
157212 END IF;
157213
157214 --
157215 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
157216 --
157217 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
157218 --
157219 -- set event info as cache for other routines to refer event attributes
157220 --
157221
157222 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
157223 l_previous_event_id := l_event_id;
157224
157225 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
157226 (p_application_id => p_application_id
157227 ,p_primary_ledger_id => p_primary_ledger_id
157228 ,p_base_ledger_id => p_base_ledger_id
157229 ,p_target_ledger_id => p_target_ledger_id
157230 ,p_entity_id => l_array_entity_id(Idx)
157231 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
157232 ,p_entity_code => l_array_entity_code(Idx)
157233 ,p_transaction_num => l_array_transaction_num(Idx)
157234 ,p_event_id => l_array_event_id(Idx)
157235 ,p_event_class_code => l_array_class_code(Idx)
157236 ,p_event_type_code => l_array_event_type(Idx)
157237 ,p_event_number => l_array_event_number(Idx)
157238 ,p_event_date => l_array_event_date(Idx)
157239 ,p_transaction_date => l_array_transaction_date(Idx)
157240 ,p_reference_num_1 => l_array_reference_num_1(Idx)
157241 ,p_reference_num_2 => l_array_reference_num_2(Idx)
157245 ,p_reference_char_2 => l_array_reference_char_2(Idx)
157242 ,p_reference_num_3 => l_array_reference_num_3(Idx)
157243 ,p_reference_num_4 => l_array_reference_num_4(Idx)
157244 ,p_reference_char_1 => l_array_reference_char_1(Idx)
157246 ,p_reference_char_3 => l_array_reference_char_3(Idx)
157247 ,p_reference_char_4 => l_array_reference_char_4(Idx)
157248 ,p_reference_date_1 => l_array_reference_date_1(Idx)
157249 ,p_reference_date_2 => l_array_reference_date_2(Idx)
157250 ,p_reference_date_3 => l_array_reference_date_3(Idx)
157251 ,p_reference_date_4 => l_array_reference_date_4(Idx)
157252 ,p_event_created_by => l_array_event_created_by(Idx)
157253 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
157254 --
157255 END IF;
157256
157257
157258
157259 --
157260 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
157261
157262 l_acct_reversal_source := SUBSTR(NULL, 1,30);
157263
157264 IF l_continue_with_lines THEN
157265 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
157266 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
157267
157268 xla_accounting_err_pkg.build_message
157269 (p_appli_s_name => 'XLA'
157270 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
157271 ,p_token_1 => 'LINE_NUMBER'
157272 ,p_value_1 => l_array_extract_line_num(Idx)
157273 ,p_token_2 => 'PRODUCT_NAME'
157274 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157275 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157276 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
157277 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157278
157279 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
157280 --
157281 -- following sets the accounting attributes needed to reverse
157282 -- accounting for a distributeion
157283 --
157284
157285 --
157286 -- 5217187
157287 --
157288 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
157289 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
157290 g_array_event(l_event_id).array_value_num('header_index'));
157291 --
157292 --
157293
157294 -- No reversal code generated
157295
157296 xla_ae_lines_pkg.SetAcctReversalAttrs
157297 (p_event_id => l_event_id
157298 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
157299 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157300 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
157301 END IF;
157302
157303 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
157304 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
157305
157306 --
157307 AcctLineType_44 (
157308 p_application_id => p_application_id
157309 ,p_event_id => l_event_id
157310 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157311 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157312 ,p_actual_flag => l_actual_flag
157313 ,p_balance_type_code => l_balance_type_code
157314 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157315
157316 , p_source_1 => l_array_source_1(Idx)
157317 , p_source_2 => l_array_source_2(Idx)
157318 , p_source_3 => l_array_source_3(Idx)
157319 , p_source_5 => l_array_source_5(Idx)
157320 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157321 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157322 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157323 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157324 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157325 , p_source_11 => l_array_source_11(Idx)
157326 );
157327 If(l_balance_type_code = 'A') THEN
157328 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157329 END IF;
157330
157331 --
157332
157333
157334 --
157335 AcctLineType_57 (
157336 p_application_id => p_application_id
157337 ,p_event_id => l_event_id
157338 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157339 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157340 ,p_actual_flag => l_actual_flag
157341 ,p_balance_type_code => l_balance_type_code
157342 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157343
157344 , p_source_1 => l_array_source_1(Idx)
157345 , p_source_2 => l_array_source_2(Idx)
157346 , p_source_3 => l_array_source_3(Idx)
157347 , p_source_5 => l_array_source_5(Idx)
157348 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157349 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157350 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157351 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157352 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157353 , p_source_11 => l_array_source_11(Idx)
157354 );
157355 If(l_balance_type_code = 'A') THEN
157356 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157357 END IF;
157358
157359 --
157360
157361
157362 --
157363 AcctLineType_100 (
157364 p_application_id => p_application_id
157365 ,p_event_id => l_event_id
157369 ,p_balance_type_code => l_balance_type_code
157366 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157367 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157368 ,p_actual_flag => l_actual_flag
157370 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157371
157372 , p_source_1 => l_array_source_1(Idx)
157373 , p_source_2 => l_array_source_2(Idx)
157374 , p_source_3 => l_array_source_3(Idx)
157375 , p_source_5 => l_array_source_5(Idx)
157376 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157377 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157378 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157379 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157380 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157381 , p_source_11 => l_array_source_11(Idx)
157382 );
157383 If(l_balance_type_code = 'A') THEN
157384 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157385 END IF;
157386
157387 --
157388
157389
157390 --
157391 AcctLineType_161 (
157392 p_application_id => p_application_id
157393 ,p_event_id => l_event_id
157394 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157395 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157396 ,p_actual_flag => l_actual_flag
157397 ,p_balance_type_code => l_balance_type_code
157398 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157399
157400 , p_source_1 => l_array_source_1(Idx)
157401 , p_source_2 => l_array_source_2(Idx)
157402 , p_source_3 => l_array_source_3(Idx)
157403 , p_source_5 => l_array_source_5(Idx)
157404 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157405 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157406 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157407 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157408 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157409 , p_source_11 => l_array_source_11(Idx)
157410 );
157411 If(l_balance_type_code = 'A') THEN
157412 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157413 END IF;
157414
157415 --
157416
157417
157418 --
157419 AcctLineType_196 (
157420 p_application_id => p_application_id
157421 ,p_event_id => l_event_id
157422 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157423 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157424 ,p_actual_flag => l_actual_flag
157425 ,p_balance_type_code => l_balance_type_code
157426 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157427
157428 , p_source_1 => l_array_source_1(Idx)
157429 , p_source_2 => l_array_source_2(Idx)
157430 , p_source_3 => l_array_source_3(Idx)
157431 , p_source_5 => l_array_source_5(Idx)
157432 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157433 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157434 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157435 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157436 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157437 , p_source_11 => l_array_source_11(Idx)
157438 );
157439 If(l_balance_type_code = 'A') THEN
157440 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157441 END IF;
157442
157443 --
157444
157445
157446 --
157447 AcctLineType_223 (
157448 p_application_id => p_application_id
157449 ,p_event_id => l_event_id
157450 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157451 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157452 ,p_actual_flag => l_actual_flag
157453 ,p_balance_type_code => l_balance_type_code
157454 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157455
157456 , p_source_1 => l_array_source_1(Idx)
157457 , p_source_2 => l_array_source_2(Idx)
157458 , p_source_3 => l_array_source_3(Idx)
157459 , p_source_5 => l_array_source_5(Idx)
157460 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
157461 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
157462 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
157463 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
157464 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
157465 , p_source_11 => l_array_source_11(Idx)
157466 );
157467 If(l_balance_type_code = 'A') THEN
157468 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157469 END IF;
157470
157471 --
157472
157473 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
157474 -- or secondary ledger that has different currency with primary
157475 -- or alc that is calculated by sla
157476 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
157477 (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'))
157478
157479 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
157480 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
157481 AND (l_actual_flag = 'A')) THEN
157482 XLA_AE_LINES_PKG.CreateGainOrLossLines(
157483 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
157484 ,p_application_id => p_application_id
157485 ,p_amb_context_code => 'DEFAULT'
157486 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
157490 ,p_gain_ccid => -1
157487 ,p_event_class_code => C_EVENT_CLASS_CODE
157488 ,p_event_type_code => C_EVENT_TYPE_CODE
157489
157491 ,p_loss_ccid => -1
157492
157493 ,p_actual_flag => l_actual_flag
157494 ,p_enc_flag => null
157495 ,p_actual_g_l_ref => l_actual_gain_loss_ref
157496 ,p_enc_g_l_ref => null
157497 );
157498 END IF;
157499 END IF;
157500 END IF;
157501
157502 ELSE
157503 --
157504 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
157505 --
157506 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157507 trace
157508 (p_msg => 'Trancaction revesal option is Y'
157509 ,p_level => C_LEVEL_STATEMENT
157510 ,p_module => l_log_module);
157511 END IF;
157512 END IF;
157513
157514 END LOOP;
157515 l_result := XLA_AE_LINES_PKG.InsertLines ;
157516 end loop;
157517 close line_cur;
157518
157519
157520 --
157521 -- insert headers into xla_ae_headers_gt table
157522 --
157523 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
157524
157525 -- insert into errors table here.
157526
157527 END LOOP;
157528
157529 --
157530 -- 4865292
157531 --
157532 -- Compare g_hdr_extract_count with event count in
157533 -- CreateHeadersAndLines.
157534 --
157535 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
157536
157537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157538 trace (p_msg => '# rows extracted from header extract objects '
157539 || ' (running total): '
157540 || g_hdr_extract_count
157541 ,p_level => C_LEVEL_STATEMENT
157542 ,p_module => l_log_module);
157543 END IF;
157544
157545 CLOSE header_cur;
157546 --
157547
157548 --
157549 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157550 trace
157551 (p_msg => 'END of EventType_278'
157552 ,p_level => C_LEVEL_PROCEDURE
157553 ,p_module => l_log_module);
157554 END IF;
157555 --
157556 RETURN l_result;
157557 EXCEPTION
157558 WHEN xla_exceptions_pkg.application_exception THEN
157559
157560 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
157561
157562
157563 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
157564
157565 RAISE;
157566
157567 WHEN NO_DATA_FOUND THEN
157568
157569 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
157570 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
157571
157572 FOR header_record IN header_cur
157573 LOOP
157574 l_array_header_events(header_record.event_id) := header_record.event_id;
157575 END LOOP;
157576
157577 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
157578 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
157579
157580 fnd_file.put_line(fnd_file.LOG, ' ');
157581 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
157582 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
157583 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
157584
157585 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
157586 LOOP
157587 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
157588 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
157589 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
157590 END IF;
157591 END LOOP;
157592
157593 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
157594 fnd_file.put_line(fnd_file.LOG, ' ');
157595
157596
157597 xla_exceptions_pkg.raise_message
157598 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_278');
157599
157600
157601 WHEN OTHERS THEN
157602 xla_exceptions_pkg.raise_message
157603 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_278');
157604 END EventType_278;
157605 --
157606
157607 ---------------------------------------
157608 --
157609 -- PRIVATE PROCEDURE
157610 -- insert_sources_279
157611 --
157612 ----------------------------------------
157613 --
157614 PROCEDURE insert_sources_279(
157615 p_target_ledger_id IN NUMBER
157616 , p_language IN VARCHAR2
157617 , p_sla_ledger_id IN NUMBER
157618 , p_pad_start_date IN DATE
157619 , p_pad_end_date IN DATE
157620 )
157621 IS
157622
157623 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INVOICE_ERV_ADJ';
157624 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PAYABLES_INVOICE';
157625 p_apps_owner VARCHAR2(30);
157626 l_log_module VARCHAR2(240);
157627 BEGIN
157628 IF g_log_enabled THEN
157629 l_log_module := C_DEFAULT_MODULE||'.insert_sources_279';
157630 END IF;
157631 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157632
157633 trace
157634 (p_msg => 'BEGIN of insert_sources_279'
157635 ,p_level => C_LEVEL_PROCEDURE
157639
157636 ,p_module => l_log_module);
157637
157638 END IF;
157640 -- select APPS owner
157641 SELECT oracle_username
157642 INTO p_apps_owner
157643 FROM fnd_oracle_userid
157644 WHERE read_only_flag = 'U'
157645 ;
157646
157647 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157648 trace
157649 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
157650 ' - p_language = '||p_language||
157651 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
157652 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
157653 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
157654 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
157655 ,p_level => C_LEVEL_STATEMENT
157656 ,p_module => l_log_module);
157657 END IF;
157658
157659
157660 --
157661 INSERT INTO xla_diag_sources --hdr1
157662 (
157663 event_id
157664 , ledger_id
157665 , sla_ledger_id
157666 , description_language
157667 , object_name
157668 , object_type_code
157669 , line_number
157670 , source_application_id
157671 , source_type_code
157672 , source_code
157673 , source_value
157674 , source_meaning
157675 , created_by
157676 , creation_date
157677 , last_update_date
157678 , last_updated_by
157679 , last_update_login
157680 , program_update_date
157681 , program_application_id
157682 , program_id
157683 , request_id
157684 )
157685 SELECT
157686 event_id
157687 , p_target_ledger_id
157688 , p_sla_ledger_id
157689 , p_language
157690 , object_name
157691 , object_type_code
157692 , line_number
157693 , source_application_id
157694 , source_type_code
157695 , source_code
157696 , SUBSTR(source_value ,1,1996)
157697 , SUBSTR(source_meaning,1,200)
157698 , xla_environment_pkg.g_Usr_Id
157699 , TRUNC(SYSDATE)
157700 , TRUNC(SYSDATE)
157701 , xla_environment_pkg.g_Usr_Id
157702 , xla_environment_pkg.g_Login_Id
157703 , TRUNC(SYSDATE)
157704 , xla_environment_pkg.g_Prog_Appl_Id
157705 , xla_environment_pkg.g_Prog_Id
157706 , xla_environment_pkg.g_Req_Id
157707 FROM (
157708 SELECT xet.event_id event_id
157709 , 0 line_number
157710 , CASE r
157711 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
157712 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
157713 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
157714 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
157715 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
157716 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
157717
157718 ELSE null
157719 END object_name
157720 , CASE r
157721 WHEN 1 THEN 'HEADER'
157722 WHEN 2 THEN 'HEADER'
157723 WHEN 3 THEN 'HEADER'
157724 WHEN 4 THEN 'HEADER'
157725 WHEN 5 THEN 'HEADER'
157726 WHEN 6 THEN 'HEADER'
157727
157728 ELSE null
157729 END object_type_code
157730 , CASE r
157731 WHEN 1 THEN '555'
157732 WHEN 2 THEN '555'
157733 WHEN 3 THEN '555'
157734 WHEN 4 THEN '555'
157735 WHEN 5 THEN '555'
157736 WHEN 6 THEN '555'
157737
157738 ELSE null
157739 END source_application_id
157740 , 'S' source_type_code
157741 , CASE r
157742 WHEN 1 THEN 'ENTITY_CODE'
157743 WHEN 2 THEN 'CURRENCY_CODE'
157744 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
157745 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
157746 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
157747 WHEN 6 THEN 'TRANSACTION_DATE'
157748
157749 ELSE null
157750 END source_code
157751 , CASE r
157752 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
157753 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
157754 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
157755 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
157756 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
157757 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
157758
157759 ELSE null
157760 END source_value
157761 , CASE r
157762 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
157763 1010186
157764 ,TO_CHAR(h1.CURRENCY_CODE)
157765 ,'CURRENCY_CODE'
157766 ,'S'
157767 ,555)
157768
157769 ELSE null
157770 END source_meaning
157771 FROM xla_events_gt xet
157772 , GMF_XLA_EXTRACT_HEADERS h1
157776 AND h1.event_id = xet.event_id
157773 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
157774 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157775 AND xet.event_type_code = C_EVENT_TYPE_CODE
157777
157778 )
157779 ;
157780 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157781
157782 trace
157783 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
157784 ,p_level => C_LEVEL_STATEMENT
157785 ,p_module => l_log_module);
157786
157787 END IF;
157788 --
157789
157790
157791
157792 --
157793 INSERT INTO xla_diag_sources --line1
157794 (
157795 event_id
157796 , ledger_id
157797 , sla_ledger_id
157798 , description_language
157799 , object_name
157800 , object_type_code
157801 , line_number
157802 , source_application_id
157803 , source_type_code
157804 , source_code
157805 , source_value
157806 , source_meaning
157807 , created_by
157808 , creation_date
157809 , last_update_date
157810 , last_updated_by
157811 , last_update_login
157812 , program_update_date
157813 , program_application_id
157814 , program_id
157815 , request_id
157816 )
157817 SELECT event_id
157818 , p_target_ledger_id
157819 , p_sla_ledger_id
157820 , p_language
157821 , object_name
157822 , object_type_code
157823 , line_number
157824 , source_application_id
157825 , source_type_code
157826 , source_code
157827 , SUBSTR(source_value,1,1996)
157828 , SUBSTR(source_meaning,1,200)
157829 , xla_environment_pkg.g_Usr_Id
157830 , TRUNC(SYSDATE)
157831 , TRUNC(SYSDATE)
157832 , xla_environment_pkg.g_Usr_Id
157833 , xla_environment_pkg.g_Login_Id
157834 , TRUNC(SYSDATE)
157835 , xla_environment_pkg.g_Prog_Appl_Id
157836 , xla_environment_pkg.g_Prog_Id
157837 , xla_environment_pkg.g_Req_Id
157838 FROM (
157839 SELECT xet.event_id event_id
157840 , l2.line_number line_number
157841 , CASE r
157842 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
157843 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
157844 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
157845 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
157846 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
157847
157848 ELSE null
157849 END object_name
157850 , CASE r
157851 WHEN 1 THEN 'LINE'
157852 WHEN 2 THEN 'LINE'
157853 WHEN 3 THEN 'LINE'
157854 WHEN 4 THEN 'LINE'
157855 WHEN 5 THEN 'LINE'
157856
157857 ELSE null
157858 END object_type_code
157859 , CASE r
157860 WHEN 1 THEN '555'
157861 WHEN 2 THEN '555'
157862 WHEN 3 THEN '555'
157863 WHEN 4 THEN '555'
157864 WHEN 5 THEN '555'
157865
157866 ELSE null
157867 END source_application_id
157868 , 'S' source_type_code
157869 , CASE r
157870 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
157871 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
157872 WHEN 3 THEN 'ENTERED_AMOUNT'
157873 WHEN 4 THEN 'LINE_ID'
157874 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
157875
157876 ELSE null
157877 END source_code
157878 , CASE r
157879 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
157880 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
157881 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
157882 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
157883 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
157884
157885 ELSE null
157886 END source_value
157887 , null source_meaning
157888 FROM xla_events_gt xet
157889 , GMF_XLA_EXTRACT_LINES l2
157890 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
157891 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157892 AND xet.event_type_code = C_EVENT_TYPE_CODE
157893 AND l2.event_id = xet.event_id
157894
157895 )
157896 ;
157897 --
157898 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157899
157900 trace
157901 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
157902 ,p_level => C_LEVEL_STATEMENT
157903 ,p_module => l_log_module);
157904
157905 END IF;
157906
157907
157908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157909 trace
157910 (p_msg => 'END of insert_sources_279'
157911 ,p_level => C_LEVEL_PROCEDURE
157912 ,p_module => l_log_module);
157913 END IF;
157914 EXCEPTION
157915 WHEN xla_exceptions_pkg.application_exception THEN
157916 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157920 ,p_module => l_log_module);
157917 trace
157918 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157919 ,p_level => C_LEVEL_EXCEPTION
157921 END IF;
157922 RAISE;
157923 WHEN OTHERS THEN
157924 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157925 trace
157926 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157927 ,p_level => C_LEVEL_EXCEPTION
157928 ,p_module => l_log_module);
157929 END IF;
157930 xla_exceptions_pkg.raise_message
157931 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_279');
157932 END insert_sources_279;
157933 --
157934
157935 ---------------------------------------
157936 --
157937 -- PRIVATE FUNCTION
157938 -- EventType_279
157939 --
157940 ----------------------------------------
157941 --
157942 FUNCTION EventType_279
157943 (p_application_id IN NUMBER
157944 ,p_base_ledger_id IN NUMBER
157945 ,p_target_ledger_id IN NUMBER
157946 ,p_language IN VARCHAR2
157947 ,p_currency_code IN VARCHAR2
157948 ,p_sla_ledger_id IN NUMBER
157949 ,p_pad_start_date IN DATE
157950 ,p_pad_end_date IN DATE
157951 ,p_primary_ledger_id IN NUMBER)
157952 RETURN BOOLEAN IS
157953 --
157954 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INVOICE_ERV_ADJ';
157955 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PAYABLES_INVOICE';
157956
157957 l_calculate_acctd_flag VARCHAR2(1) :='N';
157958 l_calculate_g_l_flag VARCHAR2(1) :='N';
157959 --
157960 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157961 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157962 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157963 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157964 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157965 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157966 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157967 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157968 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157969 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157970 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157971 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157972 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157973 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157974 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157975 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157976 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157977 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157978 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157979 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157980 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157981 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157982 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
157983 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157984 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
157985 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
157986
157987 l_event_id NUMBER;
157988 l_previous_event_id NUMBER;
157989 l_first_event_id NUMBER;
157990 l_last_event_id NUMBER;
157991
157992 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
157993 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
157994 --
157995 --
157996 l_result BOOLEAN := TRUE;
157997 l_rows NUMBER := 1000;
157998 l_event_type_name VARCHAR2(80) := 'Invoice ERV Adjustment';
157999 l_event_class_name VARCHAR2(80) := 'Invoicing In Actual Costing';
158000 l_description VARCHAR2(4000);
158001 l_transaction_reversal NUMBER;
158002 l_ae_header_id NUMBER;
158003 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
158004 l_log_module VARCHAR2(240);
158005 --
158006 l_acct_reversal_source VARCHAR2(30);
158007 l_trx_reversal_source VARCHAR2(30);
158008
158009 l_continue_with_lines BOOLEAN := TRUE;
158010 --
158011 l_acc_rev_gl_date_source DATE; -- 4262811
158012 --
158013 type t_array_event_id is table of number index by binary_integer;
158014
158015 l_rec_array_event t_rec_array_event;
158016 l_null_rec_array_event t_rec_array_event;
158017 l_array_ae_header_id xla_number_array_type;
158018 l_actual_flag VARCHAR2(1) := NULL;
158019 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
158020 l_balance_type_code VARCHAR2(1) :=NULL;
158021 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
158022
158023 --
158024 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
158025 --
158026
158030 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
158027 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
158028 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
158029 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
158031 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158032 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
158033
158034 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
158035 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
158036 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158037 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
158038 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158039
158040 l_array_source_6 t_array_source_6;
158041 l_array_source_7 t_array_source_7;
158042 l_array_source_8 t_array_source_8;
158043 l_array_source_9 t_array_source_9;
158044 l_array_source_10 t_array_source_10;
158045 l_array_source_12 t_array_source_12;
158046
158047 l_array_source_1 t_array_source_1;
158048 l_array_source_2 t_array_source_2;
158049 l_array_source_3 t_array_source_3;
158050 l_array_source_5 t_array_source_5;
158051 l_array_source_11 t_array_source_11;
158052
158053 --
158054 CURSOR header_cur
158055 IS
158056 SELECT /*+ leading(xet) cardinality(xet,1) */
158057 -- Event Type Code: INVOICE_ERV_ADJ
158058 -- Event Class Code: PAYABLES_INVOICE
158059 xet.entity_id
158060 , xet.legal_entity_id
158061 , xet.entity_code
158062 , xet.transaction_number
158063 , xet.event_id
158064 , xet.event_class_code
158065 , xet.event_type_code
158066 , xet.event_number
158067 , xet.event_date
158068 , xet.transaction_date
158069 , xet.reference_num_1
158070 , xet.reference_num_2
158071 , xet.reference_num_3
158072 , xet.reference_num_4
158073 , xet.reference_char_1
158074 , xet.reference_char_2
158075 , xet.reference_char_3
158076 , xet.reference_char_4
158077 , xet.reference_date_1
158078 , xet.reference_date_2
158079 , xet.reference_date_3
158080 , xet.reference_date_4
158081 , xet.event_created_by
158082 , xet.budgetary_control_flag
158083 , h1.ENTITY_CODE source_6
158084 , h1.CURRENCY_CODE source_7
158085 , h1.CURRENCY_CONVERSION_DATE source_8
158086 , h1.CURRENCY_CONVERSION_RATE source_9
158087 , h1.CURRENCY_CONVERSION_TYPE source_10
158088 , h1.TRANSACTION_DATE source_12
158089 FROM xla_events_gt xet
158090 , GMF_XLA_EXTRACT_HEADERS h1
158091 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
158092 and xet.event_type_code = C_EVENT_TYPE_CODE
158093 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
158094
158095 ORDER BY event_id
158096 ;
158097
158098
158099 --
158100 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
158101 IS
158102 SELECT /*+ leading(xet) cardinality(xet,1) */
158103 -- Event Type Code: INVOICE_ERV_ADJ
158104 -- Event Class Code: PAYABLES_INVOICE
158105 xet.entity_id
158106 ,xet.legal_entity_id
158107 ,xet.entity_code
158108 ,xet.transaction_number
158109 ,xet.event_id
158110 ,xet.event_class_code
158111 ,xet.event_type_code
158112 ,xet.event_number
158113 ,xet.event_date
158114 ,xet.transaction_date
158115 ,xet.reference_num_1
158116 ,xet.reference_num_2
158117 ,xet.reference_num_3
158118 ,xet.reference_num_4
158119 ,xet.reference_char_1
158120 ,xet.reference_char_2
158121 ,xet.reference_char_3
158122 ,xet.reference_char_4
158123 ,xet.reference_date_1
158124 ,xet.reference_date_2
158125 ,xet.reference_date_3
158126 ,xet.reference_date_4
158127 ,xet.event_created_by
158128 ,xet.budgetary_control_flag , l2.LINE_NUMBER
158129 , l2.TRANSACTION_ACCOUNT_ID source_1
158130 , l2.JOURNAL_LINE_TYPE source_2
158131 , l2.ENTERED_AMOUNT source_3
158132 , l2.LINE_ID source_5
158133 , l2.ACCOUNTED_AMOUNT source_11
158134 FROM xla_events_gt xet
158135 , GMF_XLA_EXTRACT_LINES l2
158136 WHERE xet.event_id between x_first_event_id and x_last_event_id
158137 and xet.event_date between p_pad_start_date and p_pad_end_date
158138 and xet.event_type_code = C_EVENT_TYPE_CODE
158139 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
158140 ;
158141
158142 --
158143 BEGIN
158144 IF g_log_enabled THEN
158145 l_log_module := C_DEFAULT_MODULE||'.EventType_279';
158146 END IF;
158147 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158148 trace
158149 (p_msg => 'BEGIN of EventType_279'
158150 ,p_level => C_LEVEL_PROCEDURE
158151 ,p_module => l_log_module);
158152 END IF;
158153
158154 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158155 trace
158156 (p_msg => 'p_application_id = '||p_application_id||
158157 ' - p_base_ledger_id = '||p_base_ledger_id||
158161 ' - p_sla_ledger_id = '||p_sla_ledger_id
158158 ' - p_target_ledger_id = '||p_target_ledger_id||
158159 ' - p_language = '||p_language||
158160 ' - p_currency_code = '||p_currency_code||
158162 ,p_level => C_LEVEL_STATEMENT
158163 ,p_module => l_log_module);
158164 END IF;
158165 --
158166 -- initialze arrays
158167 --
158168 g_array_event.DELETE;
158169 l_rec_array_event := l_null_rec_array_event;
158170 --
158171 --------------------------------------
158172 -- 4262811 Initialze MPA Line Number
158173 --------------------------------------
158174 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
158175
158176 --
158177
158178 --
158179 OPEN header_cur;
158180 --
158181 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158182 trace
158183 (p_msg => 'SQL - FETCH header_cur'
158184 ,p_level => C_LEVEL_STATEMENT
158185 ,p_module => l_log_module);
158186 END IF;
158187 --
158188 LOOP
158189 FETCH header_cur BULK COLLECT INTO
158190 l_array_entity_id
158191 , l_array_legal_entity_id
158192 , l_array_entity_code
158193 , l_array_transaction_num
158194 , l_array_event_id
158195 , l_array_class_code
158196 , l_array_event_type
158197 , l_array_event_number
158198 , l_array_event_date
158199 , l_array_transaction_date
158200 , l_array_reference_num_1
158201 , l_array_reference_num_2
158202 , l_array_reference_num_3
158203 , l_array_reference_num_4
158204 , l_array_reference_char_1
158205 , l_array_reference_char_2
158206 , l_array_reference_char_3
158207 , l_array_reference_char_4
158208 , l_array_reference_date_1
158209 , l_array_reference_date_2
158210 , l_array_reference_date_3
158211 , l_array_reference_date_4
158212 , l_array_event_created_by
158213 , l_array_budgetary_control_flag
158214 , l_array_source_6
158215 , l_array_source_7
158216 , l_array_source_8
158217 , l_array_source_9
158218 , l_array_source_10
158219 , l_array_source_12
158220 LIMIT l_rows;
158221 --
158222 IF (C_LEVEL_EVENT >= g_log_level) THEN
158223 trace
158224 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
158225 ,p_level => C_LEVEL_EVENT
158226 ,p_module => l_log_module);
158227 END IF;
158228 --
158229 EXIT WHEN l_array_entity_id.COUNT = 0;
158230
158231 -- initialize arrays
158232 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
158233 XLA_AE_LINES_PKG.g_rec_lines := NULL;
158234
158235 --
158236 -- Bug 4458708
158237 --
158238 XLA_AE_LINES_PKG.g_LineNumber := 0;
158239
158240
158241 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
158242 g_last_hdr_idx := l_array_event_id.LAST;
158243 --
158244 -- loop for the headers. Each iteration is for each header extract row
158245 -- fetched in header cursor
158246 --
158247 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
158248
158249 --
158250 -- set event info as cache for other routines to refer event attributes
158251 --
158252 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
158253 (p_application_id => p_application_id
158254 ,p_primary_ledger_id => p_primary_ledger_id
158255 ,p_base_ledger_id => p_base_ledger_id
158256 ,p_target_ledger_id => p_target_ledger_id
158257 ,p_entity_id => l_array_entity_id(hdr_idx)
158258 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
158259 ,p_entity_code => l_array_entity_code(hdr_idx)
158260 ,p_transaction_num => l_array_transaction_num(hdr_idx)
158261 ,p_event_id => l_array_event_id(hdr_idx)
158262 ,p_event_class_code => l_array_class_code(hdr_idx)
158263 ,p_event_type_code => l_array_event_type(hdr_idx)
158264 ,p_event_number => l_array_event_number(hdr_idx)
158265 ,p_event_date => l_array_event_date(hdr_idx)
158266 ,p_transaction_date => l_array_transaction_date(hdr_idx)
158267 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
158268 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
158269 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
158270 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
158271 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
158272 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
158273 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
158274 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
158275 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
158276 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
158277 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
158278 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
158279 ,p_event_created_by => l_array_event_created_by(hdr_idx)
158280 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
158281
158282 --
158283 -- set the status of entry to C_VALID (0)
158284 --
158285 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
158286
158287 --
158288 -- initialize a row for ae header
158289 --
158293
158290 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
158291
158292 l_event_id := l_array_event_id(hdr_idx);
158294 --
158295 -- storing the hdr_idx for event. May be used by line cursor.
158296 --
158297 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
158298
158299 --
158300 -- store sources from header extract. This can be improved to
158301 -- store only those sources from header extract that may be used in lines
158302 --
158303
158304 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
158305 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
158306 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
158307 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
158308 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
158309 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
158310
158311 --
158312 -- initilaize the status of ae headers for diffrent balance types
158313 -- the status is initialised to C_NOT_CREATED (2)
158314 --
158315 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158316 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158317 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158318
158319 --
158320 -- call api to validate and store accounting attributes for header
158321 --
158322
158323 ------------------------------------------------------------
158324 -- Accrual Reversal : to get date for Standard Source (NONE)
158325 ------------------------------------------------------------
158326 l_acc_rev_gl_date_source := NULL;
158327
158328 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
158329 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
158330
158331
158332 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
158333
158334 XLA_AE_HEADER_PKG.SetJeCategoryName;
158335
158336 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
158337 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
158338 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
158339 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
158340 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
158341
158342
158343 -- No header level analytical criteria
158344
158345 --
158346 --accounting attribute enhancement, bug 3612931
158347 --
158348 l_trx_reversal_source := SUBSTR(NULL, 1,30);
158349
158350 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
158351 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
158352
158353 xla_accounting_err_pkg.build_message
158354 (p_appli_s_name => 'XLA'
158355 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
158356 ,p_token_1 => 'ACCT_ATTR_NAME'
158357 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
158358 ,p_token_2 => 'PRODUCT_NAME'
158359 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
158360 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
158361 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
158362 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
158363
158364 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
158365 --
158366 -- following sets the accounting attributes needed to reverse
158367 -- accounting for a distributeion
158368 --
158369 xla_ae_lines_pkg.SetTrxReversalAttrs
158370 (p_event_id => l_event_id
158371 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
158372 ,p_trx_reversal_source => l_trx_reversal_source);
158373
158374 END IF;
158375
158376
158377 ----------------------------------------------------------------
158378 -- 4262811 - update the header statuses to invalid in need be
158379 ----------------------------------------------------------------
158380 --
158381 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
158382
158383
158384 -----------------------------------------------
158385 -- No accrual reversal for the event class/type
158386 -----------------------------------------------
158387 ----------------------------------------------------------------
158388
158389 --
158390 -- this ends the header loop iteration for one bulk fetch
158391 --
158392 END LOOP;
158393
158394 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
158395 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
158396
158397 --
158398 -- insert dummy rows into lines gt table that were created due to
158399 -- transaction reversals
158400 --
158401 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
158402 l_result := XLA_AE_LINES_PKG.InsertLines;
158403 END IF;
158404
158405 --
158406 -- reset the temp_line_num for each set of events fetched from header
158407 -- cursor rather than doing it for each new event in line cursor
158411
158408 -- Bug 3939231
158409 --
158410 xla_ae_lines_pkg.g_temp_line_num := 0;
158412
158413
158414 --
158415 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
158416 --
158417 --
158418 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158419
158420 trace
158421 (p_msg => 'SQL - FETCH line_cur'
158422 ,p_level => C_LEVEL_STATEMENT
158423 ,p_module => l_log_module);
158424
158425 END IF;
158426 --
158427 --
158428 LOOP
158429 --
158430 FETCH line_cur BULK COLLECT INTO
158431 l_array_entity_id
158432 , l_array_legal_entity_id
158433 , l_array_entity_code
158434 , l_array_transaction_num
158435 , l_array_event_id
158436 , l_array_class_code
158437 , l_array_event_type
158438 , l_array_event_number
158439 , l_array_event_date
158440 , l_array_transaction_date
158441 , l_array_reference_num_1
158442 , l_array_reference_num_2
158443 , l_array_reference_num_3
158444 , l_array_reference_num_4
158445 , l_array_reference_char_1
158446 , l_array_reference_char_2
158447 , l_array_reference_char_3
158448 , l_array_reference_char_4
158449 , l_array_reference_date_1
158450 , l_array_reference_date_2
158451 , l_array_reference_date_3
158452 , l_array_reference_date_4
158453 , l_array_event_created_by
158454 , l_array_budgetary_control_flag
158455 , l_array_extract_line_num
158456 , l_array_source_1
158457 , l_array_source_2
158458 , l_array_source_3
158459 , l_array_source_5
158460 , l_array_source_11
158461 LIMIT l_rows;
158462
158463 --
158464 IF (C_LEVEL_EVENT >= g_log_level) THEN
158465 trace
158466 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
158467 ,p_level => C_LEVEL_EVENT
158468 ,p_module => l_log_module);
158469 END IF;
158470 --
158471 EXIT WHEN l_array_entity_id.count = 0;
158472
158473 XLA_AE_LINES_PKG.g_rec_lines := null;
158474
158475 --
158476 -- Bug 4458708
158477 --
158478 XLA_AE_LINES_PKG.g_LineNumber := 0;
158479 --
158480 --
158481
158482 FOR Idx IN 1..l_array_event_id.count LOOP
158483 --
158484 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
158485 --
158486 l_event_id := l_array_event_id(idx); -- 5648433
158487
158488 --
158489 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158490 --
158491
158492 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
158493 (g_array_event(l_event_id).array_value_num('header_index'))
158494 ,'N'
158495 ) <> 'Y'
158496 THEN
158497 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158498 trace
158499 (p_msg => 'Trancaction revesal option is not Y '
158500 ,p_level => C_LEVEL_STATEMENT
158501 ,p_module => l_log_module);
158502 END IF;
158503
158504 --
158505 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
158506 --
158507 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
158508 --
158509 -- set event info as cache for other routines to refer event attributes
158510 --
158511
158512 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
158513 l_previous_event_id := l_event_id;
158514
158515 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
158516 (p_application_id => p_application_id
158517 ,p_primary_ledger_id => p_primary_ledger_id
158518 ,p_base_ledger_id => p_base_ledger_id
158519 ,p_target_ledger_id => p_target_ledger_id
158520 ,p_entity_id => l_array_entity_id(Idx)
158521 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
158522 ,p_entity_code => l_array_entity_code(Idx)
158523 ,p_transaction_num => l_array_transaction_num(Idx)
158524 ,p_event_id => l_array_event_id(Idx)
158525 ,p_event_class_code => l_array_class_code(Idx)
158526 ,p_event_type_code => l_array_event_type(Idx)
158527 ,p_event_number => l_array_event_number(Idx)
158528 ,p_event_date => l_array_event_date(Idx)
158529 ,p_transaction_date => l_array_transaction_date(Idx)
158530 ,p_reference_num_1 => l_array_reference_num_1(Idx)
158531 ,p_reference_num_2 => l_array_reference_num_2(Idx)
158532 ,p_reference_num_3 => l_array_reference_num_3(Idx)
158533 ,p_reference_num_4 => l_array_reference_num_4(Idx)
158534 ,p_reference_char_1 => l_array_reference_char_1(Idx)
158535 ,p_reference_char_2 => l_array_reference_char_2(Idx)
158536 ,p_reference_char_3 => l_array_reference_char_3(Idx)
158537 ,p_reference_char_4 => l_array_reference_char_4(Idx)
158538 ,p_reference_date_1 => l_array_reference_date_1(Idx)
158539 ,p_reference_date_2 => l_array_reference_date_2(Idx)
158540 ,p_reference_date_3 => l_array_reference_date_3(Idx)
158541 ,p_reference_date_4 => l_array_reference_date_4(Idx)
158542 ,p_event_created_by => l_array_event_created_by(Idx)
158543 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
158544 --
158545 END IF;
158546
158547
158548
158552 l_acct_reversal_source := SUBSTR(NULL, 1,30);
158549 --
158550 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
158551
158553
158554 IF l_continue_with_lines THEN
158555 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
158556 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
158557
158558 xla_accounting_err_pkg.build_message
158559 (p_appli_s_name => 'XLA'
158560 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
158561 ,p_token_1 => 'LINE_NUMBER'
158562 ,p_value_1 => l_array_extract_line_num(Idx)
158563 ,p_token_2 => 'PRODUCT_NAME'
158564 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
158565 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
158566 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
158567 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
158568
158569 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
158570 --
158571 -- following sets the accounting attributes needed to reverse
158572 -- accounting for a distributeion
158573 --
158574
158575 --
158576 -- 5217187
158577 --
158578 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
158579 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
158580 g_array_event(l_event_id).array_value_num('header_index'));
158581 --
158582 --
158583
158584 -- No reversal code generated
158585
158586 xla_ae_lines_pkg.SetAcctReversalAttrs
158587 (p_event_id => l_event_id
158588 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
158589 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158590 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
158591 END IF;
158592
158593 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
158594 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
158595
158596 --
158597 AcctLineType_82 (
158598 p_application_id => p_application_id
158599 ,p_event_id => l_event_id
158600 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158601 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158602 ,p_actual_flag => l_actual_flag
158603 ,p_balance_type_code => l_balance_type_code
158604 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158605
158606 , p_source_1 => l_array_source_1(Idx)
158607 , p_source_2 => l_array_source_2(Idx)
158608 , p_source_3 => l_array_source_3(Idx)
158609 , p_source_5 => l_array_source_5(Idx)
158610 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
158611 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
158612 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
158613 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
158614 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
158615 , p_source_11 => l_array_source_11(Idx)
158616 );
158617 If(l_balance_type_code = 'A') THEN
158618 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158619 END IF;
158620
158621 --
158622
158623
158624 --
158625 AcctLineType_168 (
158626 p_application_id => p_application_id
158627 ,p_event_id => l_event_id
158628 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158629 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158630 ,p_actual_flag => l_actual_flag
158631 ,p_balance_type_code => l_balance_type_code
158632 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158633
158634 , p_source_1 => l_array_source_1(Idx)
158635 , p_source_2 => l_array_source_2(Idx)
158636 , p_source_3 => l_array_source_3(Idx)
158637 , p_source_5 => l_array_source_5(Idx)
158638 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
158639 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
158640 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
158641 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
158642 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
158643 , p_source_11 => l_array_source_11(Idx)
158644 );
158645 If(l_balance_type_code = 'A') THEN
158646 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158647 END IF;
158648
158649 --
158650
158651 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
158652 -- or secondary ledger that has different currency with primary
158653 -- or alc that is calculated by sla
158654 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
158655 (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'))
158656
158657 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
158658 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
158659 AND (l_actual_flag = 'A')) THEN
158660 XLA_AE_LINES_PKG.CreateGainOrLossLines(
158661 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
158662 ,p_application_id => p_application_id
158663 ,p_amb_context_code => 'DEFAULT'
158667
158664 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
158665 ,p_event_class_code => C_EVENT_CLASS_CODE
158666 ,p_event_type_code => C_EVENT_TYPE_CODE
158668 ,p_gain_ccid => -1
158669 ,p_loss_ccid => -1
158670
158671 ,p_actual_flag => l_actual_flag
158672 ,p_enc_flag => null
158673 ,p_actual_g_l_ref => l_actual_gain_loss_ref
158674 ,p_enc_g_l_ref => null
158675 );
158676 END IF;
158677 END IF;
158678 END IF;
158679
158680 ELSE
158681 --
158682 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158683 --
158684 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158685 trace
158686 (p_msg => 'Trancaction revesal option is Y'
158687 ,p_level => C_LEVEL_STATEMENT
158688 ,p_module => l_log_module);
158689 END IF;
158690 END IF;
158691
158692 END LOOP;
158693 l_result := XLA_AE_LINES_PKG.InsertLines ;
158694 end loop;
158695 close line_cur;
158696
158697
158698 --
158699 -- insert headers into xla_ae_headers_gt table
158700 --
158701 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
158702
158703 -- insert into errors table here.
158704
158705 END LOOP;
158706
158707 --
158708 -- 4865292
158709 --
158710 -- Compare g_hdr_extract_count with event count in
158711 -- CreateHeadersAndLines.
158712 --
158713 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
158714
158715 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158716 trace (p_msg => '# rows extracted from header extract objects '
158717 || ' (running total): '
158718 || g_hdr_extract_count
158719 ,p_level => C_LEVEL_STATEMENT
158720 ,p_module => l_log_module);
158721 END IF;
158722
158723 CLOSE header_cur;
158724 --
158725
158726 --
158727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158728 trace
158729 (p_msg => 'END of EventType_279'
158730 ,p_level => C_LEVEL_PROCEDURE
158731 ,p_module => l_log_module);
158732 END IF;
158733 --
158734 RETURN l_result;
158735 EXCEPTION
158736 WHEN xla_exceptions_pkg.application_exception THEN
158737
158738 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158739
158740
158741 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
158742
158743 RAISE;
158744
158745 WHEN NO_DATA_FOUND THEN
158746
158747 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158748 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
158749
158750 FOR header_record IN header_cur
158751 LOOP
158752 l_array_header_events(header_record.event_id) := header_record.event_id;
158753 END LOOP;
158754
158755 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
158756 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
158757
158758 fnd_file.put_line(fnd_file.LOG, ' ');
158759 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158760 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
158761 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
158762
158763 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
158764 LOOP
158765 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
158766 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
158767 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
158768 END IF;
158769 END LOOP;
158770
158771 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158772 fnd_file.put_line(fnd_file.LOG, ' ');
158773
158774
158775 xla_exceptions_pkg.raise_message
158776 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_279');
158777
158778
158779 WHEN OTHERS THEN
158780 xla_exceptions_pkg.raise_message
158781 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_279');
158782 END EventType_279;
158783 --
158784
158785 ---------------------------------------
158786 --
158787 -- PRIVATE PROCEDURE
158788 -- insert_sources_280
158789 --
158790 ----------------------------------------
158791 --
158792 PROCEDURE insert_sources_280(
158793 p_target_ledger_id IN NUMBER
158794 , p_language IN VARCHAR2
158795 , p_sla_ledger_id IN NUMBER
158796 , p_pad_start_date IN DATE
158797 , p_pad_end_date IN DATE
158798 )
158799 IS
158800
158801 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INVOICE_IPV_ADJ';
158802 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PAYABLES_INVOICE';
158803 p_apps_owner VARCHAR2(30);
158804 l_log_module VARCHAR2(240);
158805 BEGIN
158806 IF g_log_enabled THEN
158807 l_log_module := C_DEFAULT_MODULE||'.insert_sources_280';
158808 END IF;
158809 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158810
158811 trace
158815
158812 (p_msg => 'BEGIN of insert_sources_280'
158813 ,p_level => C_LEVEL_PROCEDURE
158814 ,p_module => l_log_module);
158816 END IF;
158817
158818 -- select APPS owner
158819 SELECT oracle_username
158820 INTO p_apps_owner
158821 FROM fnd_oracle_userid
158822 WHERE read_only_flag = 'U'
158823 ;
158824
158825 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158826 trace
158827 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
158828 ' - p_language = '||p_language||
158829 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
158830 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
158831 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
158832 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
158833 ,p_level => C_LEVEL_STATEMENT
158834 ,p_module => l_log_module);
158835 END IF;
158836
158837
158838 --
158839 INSERT INTO xla_diag_sources --hdr1
158840 (
158841 event_id
158842 , ledger_id
158843 , sla_ledger_id
158844 , description_language
158845 , object_name
158846 , object_type_code
158847 , line_number
158848 , source_application_id
158849 , source_type_code
158850 , source_code
158851 , source_value
158852 , source_meaning
158853 , created_by
158854 , creation_date
158855 , last_update_date
158856 , last_updated_by
158857 , last_update_login
158858 , program_update_date
158859 , program_application_id
158860 , program_id
158861 , request_id
158862 )
158863 SELECT
158864 event_id
158865 , p_target_ledger_id
158866 , p_sla_ledger_id
158867 , p_language
158868 , object_name
158869 , object_type_code
158870 , line_number
158871 , source_application_id
158872 , source_type_code
158873 , source_code
158874 , SUBSTR(source_value ,1,1996)
158875 , SUBSTR(source_meaning,1,200)
158876 , xla_environment_pkg.g_Usr_Id
158877 , TRUNC(SYSDATE)
158878 , TRUNC(SYSDATE)
158879 , xla_environment_pkg.g_Usr_Id
158880 , xla_environment_pkg.g_Login_Id
158881 , TRUNC(SYSDATE)
158882 , xla_environment_pkg.g_Prog_Appl_Id
158883 , xla_environment_pkg.g_Prog_Id
158884 , xla_environment_pkg.g_Req_Id
158885 FROM (
158886 SELECT xet.event_id event_id
158887 , 0 line_number
158888 , CASE r
158889 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
158890 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
158891 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
158892 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
158893 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
158894 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
158895
158896 ELSE null
158897 END object_name
158898 , CASE r
158899 WHEN 1 THEN 'HEADER'
158900 WHEN 2 THEN 'HEADER'
158901 WHEN 3 THEN 'HEADER'
158902 WHEN 4 THEN 'HEADER'
158903 WHEN 5 THEN 'HEADER'
158904 WHEN 6 THEN 'HEADER'
158905
158906 ELSE null
158907 END object_type_code
158908 , CASE r
158909 WHEN 1 THEN '555'
158910 WHEN 2 THEN '555'
158911 WHEN 3 THEN '555'
158912 WHEN 4 THEN '555'
158913 WHEN 5 THEN '555'
158914 WHEN 6 THEN '555'
158915
158916 ELSE null
158917 END source_application_id
158918 , 'S' source_type_code
158919 , CASE r
158920 WHEN 1 THEN 'ENTITY_CODE'
158921 WHEN 2 THEN 'CURRENCY_CODE'
158922 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
158923 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
158924 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
158925 WHEN 6 THEN 'TRANSACTION_DATE'
158926
158927 ELSE null
158928 END source_code
158929 , CASE r
158930 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
158931 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
158932 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
158933 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
158934 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
158935 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
158936
158937 ELSE null
158938 END source_value
158939 , CASE r
158940 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
158941 1010186
158942 ,TO_CHAR(h1.CURRENCY_CODE)
158943 ,'CURRENCY_CODE'
158944 ,'S'
158945 ,555)
158946
158947 ELSE null
158951 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
158948 END source_meaning
158949 FROM xla_events_gt xet
158950 , GMF_XLA_EXTRACT_HEADERS h1
158952 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158953 AND xet.event_type_code = C_EVENT_TYPE_CODE
158954 AND h1.event_id = xet.event_id
158955
158956 )
158957 ;
158958 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158959
158960 trace
158961 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
158962 ,p_level => C_LEVEL_STATEMENT
158963 ,p_module => l_log_module);
158964
158965 END IF;
158966 --
158967
158968
158969
158970 --
158971 INSERT INTO xla_diag_sources --line1
158972 (
158973 event_id
158974 , ledger_id
158975 , sla_ledger_id
158976 , description_language
158977 , object_name
158978 , object_type_code
158979 , line_number
158980 , source_application_id
158981 , source_type_code
158982 , source_code
158983 , source_value
158984 , source_meaning
158985 , created_by
158986 , creation_date
158987 , last_update_date
158988 , last_updated_by
158989 , last_update_login
158990 , program_update_date
158991 , program_application_id
158992 , program_id
158993 , request_id
158994 )
158995 SELECT event_id
158996 , p_target_ledger_id
158997 , p_sla_ledger_id
158998 , p_language
158999 , object_name
159000 , object_type_code
159001 , line_number
159002 , source_application_id
159003 , source_type_code
159004 , source_code
159005 , SUBSTR(source_value,1,1996)
159006 , SUBSTR(source_meaning,1,200)
159007 , xla_environment_pkg.g_Usr_Id
159008 , TRUNC(SYSDATE)
159009 , TRUNC(SYSDATE)
159010 , xla_environment_pkg.g_Usr_Id
159011 , xla_environment_pkg.g_Login_Id
159012 , TRUNC(SYSDATE)
159013 , xla_environment_pkg.g_Prog_Appl_Id
159014 , xla_environment_pkg.g_Prog_Id
159015 , xla_environment_pkg.g_Req_Id
159016 FROM (
159017 SELECT xet.event_id event_id
159018 , l2.line_number line_number
159019 , CASE r
159020 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
159021 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
159022 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
159023 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
159024 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
159025
159026 ELSE null
159027 END object_name
159028 , CASE r
159029 WHEN 1 THEN 'LINE'
159030 WHEN 2 THEN 'LINE'
159031 WHEN 3 THEN 'LINE'
159032 WHEN 4 THEN 'LINE'
159033 WHEN 5 THEN 'LINE'
159034
159035 ELSE null
159036 END object_type_code
159037 , CASE r
159038 WHEN 1 THEN '555'
159039 WHEN 2 THEN '555'
159040 WHEN 3 THEN '555'
159041 WHEN 4 THEN '555'
159042 WHEN 5 THEN '555'
159043
159044 ELSE null
159045 END source_application_id
159046 , 'S' source_type_code
159047 , CASE r
159048 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
159049 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
159050 WHEN 3 THEN 'ENTERED_AMOUNT'
159051 WHEN 4 THEN 'LINE_ID'
159052 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
159053
159054 ELSE null
159055 END source_code
159056 , CASE r
159057 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
159058 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
159059 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
159060 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
159061 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
159062
159063 ELSE null
159064 END source_value
159065 , null source_meaning
159066 FROM xla_events_gt xet
159067 , GMF_XLA_EXTRACT_LINES l2
159068 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
159069 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159070 AND xet.event_type_code = C_EVENT_TYPE_CODE
159071 AND l2.event_id = xet.event_id
159072
159073 )
159074 ;
159075 --
159076 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159077
159078 trace
159079 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
159080 ,p_level => C_LEVEL_STATEMENT
159081 ,p_module => l_log_module);
159082
159083 END IF;
159084
159085
159086 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159087 trace
159088 (p_msg => 'END of insert_sources_280'
159089 ,p_level => C_LEVEL_PROCEDURE
159090 ,p_module => l_log_module);
159091 END IF;
159092 EXCEPTION
159096 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159093 WHEN xla_exceptions_pkg.application_exception THEN
159094 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159095 trace
159097 ,p_level => C_LEVEL_EXCEPTION
159098 ,p_module => l_log_module);
159099 END IF;
159100 RAISE;
159101 WHEN OTHERS THEN
159102 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159103 trace
159104 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159105 ,p_level => C_LEVEL_EXCEPTION
159106 ,p_module => l_log_module);
159107 END IF;
159108 xla_exceptions_pkg.raise_message
159109 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_280');
159110 END insert_sources_280;
159111 --
159112
159113 ---------------------------------------
159114 --
159115 -- PRIVATE FUNCTION
159116 -- EventType_280
159117 --
159118 ----------------------------------------
159119 --
159120 FUNCTION EventType_280
159121 (p_application_id IN NUMBER
159122 ,p_base_ledger_id IN NUMBER
159123 ,p_target_ledger_id IN NUMBER
159124 ,p_language IN VARCHAR2
159125 ,p_currency_code IN VARCHAR2
159126 ,p_sla_ledger_id IN NUMBER
159127 ,p_pad_start_date IN DATE
159128 ,p_pad_end_date IN DATE
159129 ,p_primary_ledger_id IN NUMBER)
159130 RETURN BOOLEAN IS
159131 --
159132 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INVOICE_IPV_ADJ';
159133 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PAYABLES_INVOICE';
159134
159135 l_calculate_acctd_flag VARCHAR2(1) :='N';
159136 l_calculate_g_l_flag VARCHAR2(1) :='N';
159137 --
159138 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159139 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159140 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159141 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159142 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159143 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159144 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159145 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159146 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159147 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159148 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159149 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159150 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159151 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159152 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159153 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159154 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159155 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159156 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159157 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159158 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159159 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159160 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
159161 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159162 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
159163 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
159164
159165 l_event_id NUMBER;
159166 l_previous_event_id NUMBER;
159167 l_first_event_id NUMBER;
159168 l_last_event_id NUMBER;
159169
159170 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
159171 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
159172 --
159173 --
159174 l_result BOOLEAN := TRUE;
159175 l_rows NUMBER := 1000;
159176 l_event_type_name VARCHAR2(80) := 'Invoice IPV Adjustment';
159177 l_event_class_name VARCHAR2(80) := 'Invoicing In Actual Costing';
159178 l_description VARCHAR2(4000);
159179 l_transaction_reversal NUMBER;
159180 l_ae_header_id NUMBER;
159181 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
159182 l_log_module VARCHAR2(240);
159183 --
159184 l_acct_reversal_source VARCHAR2(30);
159185 l_trx_reversal_source VARCHAR2(30);
159186
159187 l_continue_with_lines BOOLEAN := TRUE;
159188 --
159189 l_acc_rev_gl_date_source DATE; -- 4262811
159190 --
159191 type t_array_event_id is table of number index by binary_integer;
159192
159193 l_rec_array_event t_rec_array_event;
159194 l_null_rec_array_event t_rec_array_event;
159195 l_array_ae_header_id xla_number_array_type;
159196 l_actual_flag VARCHAR2(1) := NULL;
159197 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
159198 l_balance_type_code VARCHAR2(1) :=NULL;
159199 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
159200
159201 --
159205 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
159202 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
159203 --
159204
159206 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
159207 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
159208 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
159209 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
159210 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
159211
159212 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
159213 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
159214 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
159215 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
159216 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
159217
159218 l_array_source_6 t_array_source_6;
159219 l_array_source_7 t_array_source_7;
159220 l_array_source_8 t_array_source_8;
159221 l_array_source_9 t_array_source_9;
159222 l_array_source_10 t_array_source_10;
159223 l_array_source_12 t_array_source_12;
159224
159225 l_array_source_1 t_array_source_1;
159226 l_array_source_2 t_array_source_2;
159227 l_array_source_3 t_array_source_3;
159228 l_array_source_5 t_array_source_5;
159229 l_array_source_11 t_array_source_11;
159230
159231 --
159232 CURSOR header_cur
159233 IS
159234 SELECT /*+ leading(xet) cardinality(xet,1) */
159235 -- Event Type Code: INVOICE_IPV_ADJ
159236 -- Event Class Code: PAYABLES_INVOICE
159237 xet.entity_id
159238 , xet.legal_entity_id
159239 , xet.entity_code
159240 , xet.transaction_number
159241 , xet.event_id
159242 , xet.event_class_code
159243 , xet.event_type_code
159244 , xet.event_number
159245 , xet.event_date
159246 , xet.transaction_date
159247 , xet.reference_num_1
159248 , xet.reference_num_2
159249 , xet.reference_num_3
159250 , xet.reference_num_4
159251 , xet.reference_char_1
159252 , xet.reference_char_2
159253 , xet.reference_char_3
159254 , xet.reference_char_4
159255 , xet.reference_date_1
159256 , xet.reference_date_2
159257 , xet.reference_date_3
159258 , xet.reference_date_4
159259 , xet.event_created_by
159260 , xet.budgetary_control_flag
159261 , h1.ENTITY_CODE source_6
159262 , h1.CURRENCY_CODE source_7
159263 , h1.CURRENCY_CONVERSION_DATE source_8
159264 , h1.CURRENCY_CONVERSION_RATE source_9
159265 , h1.CURRENCY_CONVERSION_TYPE source_10
159266 , h1.TRANSACTION_DATE source_12
159267 FROM xla_events_gt xet
159268 , GMF_XLA_EXTRACT_HEADERS h1
159269 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
159270 and xet.event_type_code = C_EVENT_TYPE_CODE
159271 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
159272
159273 ORDER BY event_id
159274 ;
159275
159276
159277 --
159278 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
159279 IS
159280 SELECT /*+ leading(xet) cardinality(xet,1) */
159281 -- Event Type Code: INVOICE_IPV_ADJ
159282 -- Event Class Code: PAYABLES_INVOICE
159283 xet.entity_id
159284 ,xet.legal_entity_id
159285 ,xet.entity_code
159286 ,xet.transaction_number
159287 ,xet.event_id
159288 ,xet.event_class_code
159289 ,xet.event_type_code
159290 ,xet.event_number
159291 ,xet.event_date
159292 ,xet.transaction_date
159293 ,xet.reference_num_1
159294 ,xet.reference_num_2
159295 ,xet.reference_num_3
159296 ,xet.reference_num_4
159297 ,xet.reference_char_1
159298 ,xet.reference_char_2
159299 ,xet.reference_char_3
159300 ,xet.reference_char_4
159301 ,xet.reference_date_1
159302 ,xet.reference_date_2
159303 ,xet.reference_date_3
159304 ,xet.reference_date_4
159305 ,xet.event_created_by
159306 ,xet.budgetary_control_flag , l2.LINE_NUMBER
159307 , l2.TRANSACTION_ACCOUNT_ID source_1
159308 , l2.JOURNAL_LINE_TYPE source_2
159309 , l2.ENTERED_AMOUNT source_3
159310 , l2.LINE_ID source_5
159311 , l2.ACCOUNTED_AMOUNT source_11
159312 FROM xla_events_gt xet
159313 , GMF_XLA_EXTRACT_LINES l2
159314 WHERE xet.event_id between x_first_event_id and x_last_event_id
159315 and xet.event_date between p_pad_start_date and p_pad_end_date
159316 and xet.event_type_code = C_EVENT_TYPE_CODE
159317 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
159318 ;
159319
159320 --
159321 BEGIN
159322 IF g_log_enabled THEN
159323 l_log_module := C_DEFAULT_MODULE||'.EventType_280';
159324 END IF;
159325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159326 trace
159327 (p_msg => 'BEGIN of EventType_280'
159328 ,p_level => C_LEVEL_PROCEDURE
159329 ,p_module => l_log_module);
159330 END IF;
159331
159332 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159333 trace
159334 (p_msg => 'p_application_id = '||p_application_id||
159338 ' - p_currency_code = '||p_currency_code||
159335 ' - p_base_ledger_id = '||p_base_ledger_id||
159336 ' - p_target_ledger_id = '||p_target_ledger_id||
159337 ' - p_language = '||p_language||
159339 ' - p_sla_ledger_id = '||p_sla_ledger_id
159340 ,p_level => C_LEVEL_STATEMENT
159341 ,p_module => l_log_module);
159342 END IF;
159343 --
159344 -- initialze arrays
159345 --
159346 g_array_event.DELETE;
159347 l_rec_array_event := l_null_rec_array_event;
159348 --
159349 --------------------------------------
159350 -- 4262811 Initialze MPA Line Number
159351 --------------------------------------
159352 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
159353
159354 --
159355
159356 --
159357 OPEN header_cur;
159358 --
159359 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159360 trace
159361 (p_msg => 'SQL - FETCH header_cur'
159362 ,p_level => C_LEVEL_STATEMENT
159363 ,p_module => l_log_module);
159364 END IF;
159365 --
159366 LOOP
159367 FETCH header_cur BULK COLLECT INTO
159368 l_array_entity_id
159369 , l_array_legal_entity_id
159370 , l_array_entity_code
159371 , l_array_transaction_num
159372 , l_array_event_id
159373 , l_array_class_code
159374 , l_array_event_type
159375 , l_array_event_number
159376 , l_array_event_date
159377 , l_array_transaction_date
159378 , l_array_reference_num_1
159379 , l_array_reference_num_2
159380 , l_array_reference_num_3
159381 , l_array_reference_num_4
159382 , l_array_reference_char_1
159383 , l_array_reference_char_2
159384 , l_array_reference_char_3
159385 , l_array_reference_char_4
159386 , l_array_reference_date_1
159387 , l_array_reference_date_2
159388 , l_array_reference_date_3
159389 , l_array_reference_date_4
159390 , l_array_event_created_by
159391 , l_array_budgetary_control_flag
159392 , l_array_source_6
159393 , l_array_source_7
159394 , l_array_source_8
159395 , l_array_source_9
159396 , l_array_source_10
159397 , l_array_source_12
159398 LIMIT l_rows;
159399 --
159400 IF (C_LEVEL_EVENT >= g_log_level) THEN
159401 trace
159402 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
159403 ,p_level => C_LEVEL_EVENT
159404 ,p_module => l_log_module);
159405 END IF;
159406 --
159407 EXIT WHEN l_array_entity_id.COUNT = 0;
159408
159409 -- initialize arrays
159410 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
159411 XLA_AE_LINES_PKG.g_rec_lines := NULL;
159412
159413 --
159414 -- Bug 4458708
159415 --
159416 XLA_AE_LINES_PKG.g_LineNumber := 0;
159417
159418
159419 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
159420 g_last_hdr_idx := l_array_event_id.LAST;
159421 --
159422 -- loop for the headers. Each iteration is for each header extract row
159423 -- fetched in header cursor
159424 --
159425 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
159426
159427 --
159428 -- set event info as cache for other routines to refer event attributes
159429 --
159430 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159431 (p_application_id => p_application_id
159432 ,p_primary_ledger_id => p_primary_ledger_id
159433 ,p_base_ledger_id => p_base_ledger_id
159434 ,p_target_ledger_id => p_target_ledger_id
159435 ,p_entity_id => l_array_entity_id(hdr_idx)
159436 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
159437 ,p_entity_code => l_array_entity_code(hdr_idx)
159438 ,p_transaction_num => l_array_transaction_num(hdr_idx)
159439 ,p_event_id => l_array_event_id(hdr_idx)
159440 ,p_event_class_code => l_array_class_code(hdr_idx)
159441 ,p_event_type_code => l_array_event_type(hdr_idx)
159442 ,p_event_number => l_array_event_number(hdr_idx)
159443 ,p_event_date => l_array_event_date(hdr_idx)
159444 ,p_transaction_date => l_array_transaction_date(hdr_idx)
159445 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
159446 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
159447 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
159448 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
159449 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
159450 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
159451 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
159452 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
159453 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
159454 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
159455 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
159456 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
159457 ,p_event_created_by => l_array_event_created_by(hdr_idx)
159458 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
159459
159460 --
159461 -- set the status of entry to C_VALID (0)
159462 --
159463 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159464
159465 --
159469
159466 -- initialize a row for ae header
159467 --
159468 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
159470 l_event_id := l_array_event_id(hdr_idx);
159471
159472 --
159473 -- storing the hdr_idx for event. May be used by line cursor.
159474 --
159475 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
159476
159477 --
159478 -- store sources from header extract. This can be improved to
159479 -- store only those sources from header extract that may be used in lines
159480 --
159481
159482 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
159483 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
159484 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
159485 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
159486 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
159487 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
159488
159489 --
159490 -- initilaize the status of ae headers for diffrent balance types
159491 -- the status is initialised to C_NOT_CREATED (2)
159492 --
159493 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159494 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159495 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
159496
159497 --
159498 -- call api to validate and store accounting attributes for header
159499 --
159500
159501 ------------------------------------------------------------
159502 -- Accrual Reversal : to get date for Standard Source (NONE)
159503 ------------------------------------------------------------
159504 l_acc_rev_gl_date_source := NULL;
159505
159506 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
159507 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
159508
159509
159510 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
159511
159512 XLA_AE_HEADER_PKG.SetJeCategoryName;
159513
159514 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
159515 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
159516 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
159517 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
159518 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
159519
159520
159521 -- No header level analytical criteria
159522
159523 --
159524 --accounting attribute enhancement, bug 3612931
159525 --
159526 l_trx_reversal_source := SUBSTR(NULL, 1,30);
159527
159528 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
159529 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
159530
159531 xla_accounting_err_pkg.build_message
159532 (p_appli_s_name => 'XLA'
159533 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
159534 ,p_token_1 => 'ACCT_ATTR_NAME'
159535 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
159536 ,p_token_2 => 'PRODUCT_NAME'
159537 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159538 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159539 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159540 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159541
159542 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
159543 --
159544 -- following sets the accounting attributes needed to reverse
159545 -- accounting for a distributeion
159546 --
159547 xla_ae_lines_pkg.SetTrxReversalAttrs
159548 (p_event_id => l_event_id
159549 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
159550 ,p_trx_reversal_source => l_trx_reversal_source);
159551
159552 END IF;
159553
159554
159555 ----------------------------------------------------------------
159556 -- 4262811 - update the header statuses to invalid in need be
159557 ----------------------------------------------------------------
159558 --
159559 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
159560
159561
159562 -----------------------------------------------
159563 -- No accrual reversal for the event class/type
159564 -----------------------------------------------
159565 ----------------------------------------------------------------
159566
159567 --
159568 -- this ends the header loop iteration for one bulk fetch
159569 --
159570 END LOOP;
159571
159572 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
159573 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
159574
159575 --
159576 -- insert dummy rows into lines gt table that were created due to
159577 -- transaction reversals
159578 --
159579 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
159580 l_result := XLA_AE_LINES_PKG.InsertLines;
159581 END IF;
159582
159583 --
159584 -- reset the temp_line_num for each set of events fetched from header
159588 xla_ae_lines_pkg.g_temp_line_num := 0;
159585 -- cursor rather than doing it for each new event in line cursor
159586 -- Bug 3939231
159587 --
159589
159590
159591
159592 --
159593 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
159594 --
159595 --
159596 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159597
159598 trace
159599 (p_msg => 'SQL - FETCH line_cur'
159600 ,p_level => C_LEVEL_STATEMENT
159601 ,p_module => l_log_module);
159602
159603 END IF;
159604 --
159605 --
159606 LOOP
159607 --
159608 FETCH line_cur BULK COLLECT INTO
159609 l_array_entity_id
159610 , l_array_legal_entity_id
159611 , l_array_entity_code
159612 , l_array_transaction_num
159613 , l_array_event_id
159614 , l_array_class_code
159615 , l_array_event_type
159616 , l_array_event_number
159617 , l_array_event_date
159618 , l_array_transaction_date
159619 , l_array_reference_num_1
159620 , l_array_reference_num_2
159621 , l_array_reference_num_3
159622 , l_array_reference_num_4
159623 , l_array_reference_char_1
159624 , l_array_reference_char_2
159625 , l_array_reference_char_3
159626 , l_array_reference_char_4
159627 , l_array_reference_date_1
159628 , l_array_reference_date_2
159629 , l_array_reference_date_3
159630 , l_array_reference_date_4
159631 , l_array_event_created_by
159632 , l_array_budgetary_control_flag
159633 , l_array_extract_line_num
159634 , l_array_source_1
159635 , l_array_source_2
159636 , l_array_source_3
159637 , l_array_source_5
159638 , l_array_source_11
159639 LIMIT l_rows;
159640
159641 --
159642 IF (C_LEVEL_EVENT >= g_log_level) THEN
159643 trace
159644 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
159645 ,p_level => C_LEVEL_EVENT
159646 ,p_module => l_log_module);
159647 END IF;
159648 --
159649 EXIT WHEN l_array_entity_id.count = 0;
159650
159651 XLA_AE_LINES_PKG.g_rec_lines := null;
159652
159653 --
159654 -- Bug 4458708
159655 --
159656 XLA_AE_LINES_PKG.g_LineNumber := 0;
159657 --
159658 --
159659
159660 FOR Idx IN 1..l_array_event_id.count LOOP
159661 --
159662 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
159663 --
159664 l_event_id := l_array_event_id(idx); -- 5648433
159665
159666 --
159667 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159668 --
159669
159670 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
159671 (g_array_event(l_event_id).array_value_num('header_index'))
159672 ,'N'
159673 ) <> 'Y'
159674 THEN
159675 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159676 trace
159677 (p_msg => 'Trancaction revesal option is not Y '
159678 ,p_level => C_LEVEL_STATEMENT
159679 ,p_module => l_log_module);
159680 END IF;
159681
159682 --
159683 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
159684 --
159685 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159686 --
159687 -- set event info as cache for other routines to refer event attributes
159688 --
159689
159690 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
159691 l_previous_event_id := l_event_id;
159692
159693 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159694 (p_application_id => p_application_id
159695 ,p_primary_ledger_id => p_primary_ledger_id
159696 ,p_base_ledger_id => p_base_ledger_id
159697 ,p_target_ledger_id => p_target_ledger_id
159698 ,p_entity_id => l_array_entity_id(Idx)
159699 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
159700 ,p_entity_code => l_array_entity_code(Idx)
159701 ,p_transaction_num => l_array_transaction_num(Idx)
159702 ,p_event_id => l_array_event_id(Idx)
159703 ,p_event_class_code => l_array_class_code(Idx)
159704 ,p_event_type_code => l_array_event_type(Idx)
159705 ,p_event_number => l_array_event_number(Idx)
159706 ,p_event_date => l_array_event_date(Idx)
159707 ,p_transaction_date => l_array_transaction_date(Idx)
159708 ,p_reference_num_1 => l_array_reference_num_1(Idx)
159709 ,p_reference_num_2 => l_array_reference_num_2(Idx)
159710 ,p_reference_num_3 => l_array_reference_num_3(Idx)
159711 ,p_reference_num_4 => l_array_reference_num_4(Idx)
159712 ,p_reference_char_1 => l_array_reference_char_1(Idx)
159713 ,p_reference_char_2 => l_array_reference_char_2(Idx)
159714 ,p_reference_char_3 => l_array_reference_char_3(Idx)
159715 ,p_reference_char_4 => l_array_reference_char_4(Idx)
159716 ,p_reference_date_1 => l_array_reference_date_1(Idx)
159717 ,p_reference_date_2 => l_array_reference_date_2(Idx)
159718 ,p_reference_date_3 => l_array_reference_date_3(Idx)
159719 ,p_reference_date_4 => l_array_reference_date_4(Idx)
159720 ,p_event_created_by => l_array_event_created_by(Idx)
159721 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
159725
159722 --
159723 END IF;
159724
159726
159727 --
159728 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
159729
159730 l_acct_reversal_source := SUBSTR(NULL, 1,30);
159731
159732 IF l_continue_with_lines THEN
159733 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
159734 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
159735
159736 xla_accounting_err_pkg.build_message
159737 (p_appli_s_name => 'XLA'
159738 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
159739 ,p_token_1 => 'LINE_NUMBER'
159740 ,p_value_1 => l_array_extract_line_num(Idx)
159741 ,p_token_2 => 'PRODUCT_NAME'
159742 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159743 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159744 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159745 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159746
159747 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
159748 --
159749 -- following sets the accounting attributes needed to reverse
159750 -- accounting for a distributeion
159751 --
159752
159753 --
159754 -- 5217187
159755 --
159756 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
159757 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
159758 g_array_event(l_event_id).array_value_num('header_index'));
159759 --
159760 --
159761
159762 -- No reversal code generated
159763
159764 xla_ae_lines_pkg.SetAcctReversalAttrs
159765 (p_event_id => l_event_id
159766 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
159767 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159768 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
159769 END IF;
159770
159771 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
159772 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
159773
159774 --
159775 AcctLineType_148 (
159776 p_application_id => p_application_id
159777 ,p_event_id => l_event_id
159778 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159779 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159780 ,p_actual_flag => l_actual_flag
159781 ,p_balance_type_code => l_balance_type_code
159782 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159783
159784 , p_source_1 => l_array_source_1(Idx)
159785 , p_source_2 => l_array_source_2(Idx)
159786 , p_source_3 => l_array_source_3(Idx)
159787 , p_source_5 => l_array_source_5(Idx)
159788 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
159789 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
159790 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
159791 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
159792 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
159793 , p_source_11 => l_array_source_11(Idx)
159794 );
159795 If(l_balance_type_code = 'A') THEN
159796 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159797 END IF;
159798
159799 --
159800
159801
159802 --
159803 AcctLineType_191 (
159804 p_application_id => p_application_id
159805 ,p_event_id => l_event_id
159806 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159807 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159808 ,p_actual_flag => l_actual_flag
159809 ,p_balance_type_code => l_balance_type_code
159810 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159811
159812 , p_source_1 => l_array_source_1(Idx)
159813 , p_source_2 => l_array_source_2(Idx)
159814 , p_source_3 => l_array_source_3(Idx)
159815 , p_source_5 => l_array_source_5(Idx)
159816 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
159817 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
159818 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
159819 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
159820 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
159821 , p_source_11 => l_array_source_11(Idx)
159822 );
159823 If(l_balance_type_code = 'A') THEN
159824 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159825 END IF;
159826
159827 --
159828
159829 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
159830 -- or secondary ledger that has different currency with primary
159831 -- or alc that is calculated by sla
159832 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
159833 (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'))
159834
159835 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
159836 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
159837 AND (l_actual_flag = 'A')) THEN
159838 XLA_AE_LINES_PKG.CreateGainOrLossLines(
159839 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159840 ,p_application_id => p_application_id
159841 ,p_amb_context_code => 'DEFAULT'
159845
159842 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
159843 ,p_event_class_code => C_EVENT_CLASS_CODE
159844 ,p_event_type_code => C_EVENT_TYPE_CODE
159846 ,p_gain_ccid => -1
159847 ,p_loss_ccid => -1
159848
159849 ,p_actual_flag => l_actual_flag
159850 ,p_enc_flag => null
159851 ,p_actual_g_l_ref => l_actual_gain_loss_ref
159852 ,p_enc_g_l_ref => null
159853 );
159854 END IF;
159855 END IF;
159856 END IF;
159857
159858 ELSE
159859 --
159860 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159861 --
159862 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159863 trace
159864 (p_msg => 'Trancaction revesal option is Y'
159865 ,p_level => C_LEVEL_STATEMENT
159866 ,p_module => l_log_module);
159867 END IF;
159868 END IF;
159869
159870 END LOOP;
159871 l_result := XLA_AE_LINES_PKG.InsertLines ;
159872 end loop;
159873 close line_cur;
159874
159875
159876 --
159877 -- insert headers into xla_ae_headers_gt table
159878 --
159879 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
159880
159881 -- insert into errors table here.
159882
159883 END LOOP;
159884
159885 --
159886 -- 4865292
159887 --
159888 -- Compare g_hdr_extract_count with event count in
159889 -- CreateHeadersAndLines.
159890 --
159891 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
159892
159893 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159894 trace (p_msg => '# rows extracted from header extract objects '
159895 || ' (running total): '
159896 || g_hdr_extract_count
159897 ,p_level => C_LEVEL_STATEMENT
159898 ,p_module => l_log_module);
159899 END IF;
159900
159901 CLOSE header_cur;
159902 --
159903
159904 --
159905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159906 trace
159907 (p_msg => 'END of EventType_280'
159908 ,p_level => C_LEVEL_PROCEDURE
159909 ,p_module => l_log_module);
159910 END IF;
159911 --
159912 RETURN l_result;
159913 EXCEPTION
159914 WHEN xla_exceptions_pkg.application_exception THEN
159915
159916 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159917
159918
159919 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
159920
159921 RAISE;
159922
159923 WHEN NO_DATA_FOUND THEN
159924
159925 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159926 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
159927
159928 FOR header_record IN header_cur
159929 LOOP
159930 l_array_header_events(header_record.event_id) := header_record.event_id;
159931 END LOOP;
159932
159933 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
159934 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
159935
159936 fnd_file.put_line(fnd_file.LOG, ' ');
159937 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159938 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
159939 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
159940
159941 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
159942 LOOP
159943 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
159944 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
159945 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
159946 END IF;
159947 END LOOP;
159948
159949 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159950 fnd_file.put_line(fnd_file.LOG, ' ');
159951
159952
159953 xla_exceptions_pkg.raise_message
159954 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_280');
159955
159956
159957 WHEN OTHERS THEN
159958 xla_exceptions_pkg.raise_message
159959 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_280');
159960 END EventType_280;
159961 --
159962
159963 ---------------------------------------
159964 --
159965 -- PRIVATE PROCEDURE
159966 -- insert_sources_281
159967 --
159968 ----------------------------------------
159969 --
159970 PROCEDURE insert_sources_281(
159971 p_target_ledger_id IN NUMBER
159972 , p_language IN VARCHAR2
159973 , p_sla_ledger_id IN NUMBER
159974 , p_pad_start_date IN DATE
159975 , p_pad_end_date IN DATE
159976 )
159977 IS
159978
159979 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_IC_RCPT_RETURN';
159980 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
159981 p_apps_owner VARCHAR2(30);
159982 l_log_module VARCHAR2(240);
159983 BEGIN
159984 IF g_log_enabled THEN
159985 l_log_module := C_DEFAULT_MODULE||'.insert_sources_281';
159986 END IF;
159987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159988
159989 trace
159993
159990 (p_msg => 'BEGIN of insert_sources_281'
159991 ,p_level => C_LEVEL_PROCEDURE
159992 ,p_module => l_log_module);
159994 END IF;
159995
159996 -- select APPS owner
159997 SELECT oracle_username
159998 INTO p_apps_owner
159999 FROM fnd_oracle_userid
160000 WHERE read_only_flag = 'U'
160001 ;
160002
160003 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160004 trace
160005 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
160006 ' - p_language = '||p_language||
160007 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
160008 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
160009 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
160010 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
160011 ,p_level => C_LEVEL_STATEMENT
160012 ,p_module => l_log_module);
160013 END IF;
160014
160015
160016 --
160017 INSERT INTO xla_diag_sources --hdr1
160018 (
160019 event_id
160020 , ledger_id
160021 , sla_ledger_id
160022 , description_language
160023 , object_name
160024 , object_type_code
160025 , line_number
160026 , source_application_id
160027 , source_type_code
160028 , source_code
160029 , source_value
160030 , source_meaning
160031 , created_by
160032 , creation_date
160033 , last_update_date
160034 , last_updated_by
160035 , last_update_login
160036 , program_update_date
160037 , program_application_id
160038 , program_id
160039 , request_id
160040 )
160041 SELECT
160042 event_id
160043 , p_target_ledger_id
160044 , p_sla_ledger_id
160045 , p_language
160046 , object_name
160047 , object_type_code
160048 , line_number
160049 , source_application_id
160050 , source_type_code
160051 , source_code
160052 , SUBSTR(source_value ,1,1996)
160053 , SUBSTR(source_meaning,1,200)
160054 , xla_environment_pkg.g_Usr_Id
160055 , TRUNC(SYSDATE)
160056 , TRUNC(SYSDATE)
160057 , xla_environment_pkg.g_Usr_Id
160058 , xla_environment_pkg.g_Login_Id
160059 , TRUNC(SYSDATE)
160060 , xla_environment_pkg.g_Prog_Appl_Id
160061 , xla_environment_pkg.g_Prog_Id
160062 , xla_environment_pkg.g_Req_Id
160063 FROM (
160064 SELECT xet.event_id event_id
160065 , 0 line_number
160066 , CASE r
160067 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
160068 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
160069 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
160070 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
160071 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
160072 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
160073
160074 ELSE null
160075 END object_name
160076 , CASE r
160077 WHEN 1 THEN 'HEADER'
160078 WHEN 2 THEN 'HEADER'
160079 WHEN 3 THEN 'HEADER'
160080 WHEN 4 THEN 'HEADER'
160081 WHEN 5 THEN 'HEADER'
160082 WHEN 6 THEN 'HEADER'
160083
160084 ELSE null
160085 END object_type_code
160086 , CASE r
160087 WHEN 1 THEN '555'
160088 WHEN 2 THEN '555'
160089 WHEN 3 THEN '555'
160090 WHEN 4 THEN '555'
160091 WHEN 5 THEN '555'
160092 WHEN 6 THEN '555'
160093
160094 ELSE null
160095 END source_application_id
160096 , 'S' source_type_code
160097 , CASE r
160098 WHEN 1 THEN 'ENTITY_CODE'
160099 WHEN 2 THEN 'CURRENCY_CODE'
160100 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
160101 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
160102 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
160103 WHEN 6 THEN 'TRANSACTION_DATE'
160104
160105 ELSE null
160106 END source_code
160107 , CASE r
160108 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
160109 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
160110 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
160111 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
160112 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
160113 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
160114
160115 ELSE null
160116 END source_value
160117 , CASE r
160118 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
160119 1010186
160120 ,TO_CHAR(h1.CURRENCY_CODE)
160121 ,'CURRENCY_CODE'
160122 ,'S'
160123 ,555)
160124
160125 ELSE null
160129 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
160126 END source_meaning
160127 FROM xla_events_gt xet
160128 , GMF_XLA_EXTRACT_HEADERS h1
160130 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
160131 AND xet.event_type_code = C_EVENT_TYPE_CODE
160132 AND h1.event_id = xet.event_id
160133
160134 )
160135 ;
160136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160137
160138 trace
160139 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
160140 ,p_level => C_LEVEL_STATEMENT
160141 ,p_module => l_log_module);
160142
160143 END IF;
160144 --
160145
160146
160147
160148 --
160149 INSERT INTO xla_diag_sources --line1
160150 (
160151 event_id
160152 , ledger_id
160153 , sla_ledger_id
160154 , description_language
160155 , object_name
160156 , object_type_code
160157 , line_number
160158 , source_application_id
160159 , source_type_code
160160 , source_code
160161 , source_value
160162 , source_meaning
160163 , created_by
160164 , creation_date
160165 , last_update_date
160166 , last_updated_by
160167 , last_update_login
160168 , program_update_date
160169 , program_application_id
160170 , program_id
160171 , request_id
160172 )
160173 SELECT event_id
160174 , p_target_ledger_id
160175 , p_sla_ledger_id
160176 , p_language
160177 , object_name
160178 , object_type_code
160179 , line_number
160180 , source_application_id
160181 , source_type_code
160182 , source_code
160183 , SUBSTR(source_value,1,1996)
160184 , SUBSTR(source_meaning,1,200)
160185 , xla_environment_pkg.g_Usr_Id
160186 , TRUNC(SYSDATE)
160187 , TRUNC(SYSDATE)
160188 , xla_environment_pkg.g_Usr_Id
160189 , xla_environment_pkg.g_Login_Id
160190 , TRUNC(SYSDATE)
160191 , xla_environment_pkg.g_Prog_Appl_Id
160192 , xla_environment_pkg.g_Prog_Id
160193 , xla_environment_pkg.g_Req_Id
160194 FROM (
160195 SELECT xet.event_id event_id
160196 , l2.line_number line_number
160197 , CASE r
160198 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
160199 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
160200 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
160201 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
160202 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
160203
160204 ELSE null
160205 END object_name
160206 , CASE r
160207 WHEN 1 THEN 'LINE'
160208 WHEN 2 THEN 'LINE'
160209 WHEN 3 THEN 'LINE'
160210 WHEN 4 THEN 'LINE'
160211 WHEN 5 THEN 'LINE'
160212
160213 ELSE null
160214 END object_type_code
160215 , CASE r
160216 WHEN 1 THEN '555'
160217 WHEN 2 THEN '555'
160218 WHEN 3 THEN '555'
160219 WHEN 4 THEN '555'
160220 WHEN 5 THEN '555'
160221
160222 ELSE null
160223 END source_application_id
160224 , 'S' source_type_code
160225 , CASE r
160226 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
160227 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
160228 WHEN 3 THEN 'ENTERED_AMOUNT'
160229 WHEN 4 THEN 'LINE_ID'
160230 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
160231
160232 ELSE null
160233 END source_code
160234 , CASE r
160235 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
160236 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
160237 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
160238 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
160239 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
160240
160241 ELSE null
160242 END source_value
160243 , null source_meaning
160244 FROM xla_events_gt xet
160245 , GMF_XLA_EXTRACT_LINES l2
160246 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
160247 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
160248 AND xet.event_type_code = C_EVENT_TYPE_CODE
160249 AND l2.event_id = xet.event_id
160250
160251 )
160252 ;
160253 --
160254 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160255
160256 trace
160257 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
160258 ,p_level => C_LEVEL_STATEMENT
160259 ,p_module => l_log_module);
160260
160261 END IF;
160262
160263
160264 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160265 trace
160266 (p_msg => 'END of insert_sources_281'
160267 ,p_level => C_LEVEL_PROCEDURE
160268 ,p_module => l_log_module);
160269 END IF;
160270 EXCEPTION
160271 WHEN xla_exceptions_pkg.application_exception THEN
160275 ,p_level => C_LEVEL_EXCEPTION
160272 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
160273 trace
160274 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
160276 ,p_module => l_log_module);
160277 END IF;
160278 RAISE;
160279 WHEN OTHERS THEN
160280 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
160281 trace
160282 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
160283 ,p_level => C_LEVEL_EXCEPTION
160284 ,p_module => l_log_module);
160285 END IF;
160286 xla_exceptions_pkg.raise_message
160287 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_281');
160288 END insert_sources_281;
160289 --
160290
160291 ---------------------------------------
160292 --
160293 -- PRIVATE FUNCTION
160294 -- EventType_281
160295 --
160296 ----------------------------------------
160297 --
160298 FUNCTION EventType_281
160299 (p_application_id IN NUMBER
160300 ,p_base_ledger_id IN NUMBER
160301 ,p_target_ledger_id IN NUMBER
160302 ,p_language IN VARCHAR2
160303 ,p_currency_code IN VARCHAR2
160304 ,p_sla_ledger_id IN NUMBER
160305 ,p_pad_start_date IN DATE
160306 ,p_pad_end_date IN DATE
160307 ,p_primary_ledger_id IN NUMBER)
160308 RETURN BOOLEAN IS
160309 --
160310 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_IC_RCPT_RETURN';
160311 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
160312
160313 l_calculate_acctd_flag VARCHAR2(1) :='N';
160314 l_calculate_g_l_flag VARCHAR2(1) :='N';
160315 --
160316 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160317 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160318 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
160319 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160320 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160321 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
160322 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
160323 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160324 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160325 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160326 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160327 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160328 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160329 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
160330 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160331 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160332 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160333 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
160334 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160335 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160336 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160337 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
160338 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
160339 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
160340 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
160341 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
160342
160343 l_event_id NUMBER;
160344 l_previous_event_id NUMBER;
160345 l_first_event_id NUMBER;
160346 l_last_event_id NUMBER;
160347
160348 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
160349 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
160350 --
160351 --
160352 l_result BOOLEAN := TRUE;
160353 l_rows NUMBER := 1000;
160354 l_event_type_name VARCHAR2(80) := 'Logical InterCompany Receipt Return';
160355 l_event_class_name VARCHAR2(80) := 'Logical Intercompany';
160356 l_description VARCHAR2(4000);
160357 l_transaction_reversal NUMBER;
160358 l_ae_header_id NUMBER;
160359 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
160360 l_log_module VARCHAR2(240);
160361 --
160362 l_acct_reversal_source VARCHAR2(30);
160363 l_trx_reversal_source VARCHAR2(30);
160364
160365 l_continue_with_lines BOOLEAN := TRUE;
160366 --
160367 l_acc_rev_gl_date_source DATE; -- 4262811
160368 --
160369 type t_array_event_id is table of number index by binary_integer;
160370
160371 l_rec_array_event t_rec_array_event;
160372 l_null_rec_array_event t_rec_array_event;
160373 l_array_ae_header_id xla_number_array_type;
160374 l_actual_flag VARCHAR2(1) := NULL;
160375 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
160376 l_balance_type_code VARCHAR2(1) :=NULL;
160377 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
160378
160379 --
160383 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
160380 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
160381 --
160382
160384 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
160385 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
160386 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
160387 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
160388 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
160389
160390 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
160391 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
160392 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160393 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
160394 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160395
160396 l_array_source_6 t_array_source_6;
160397 l_array_source_7 t_array_source_7;
160398 l_array_source_8 t_array_source_8;
160399 l_array_source_9 t_array_source_9;
160400 l_array_source_10 t_array_source_10;
160401 l_array_source_12 t_array_source_12;
160402
160403 l_array_source_1 t_array_source_1;
160404 l_array_source_2 t_array_source_2;
160405 l_array_source_3 t_array_source_3;
160406 l_array_source_5 t_array_source_5;
160407 l_array_source_11 t_array_source_11;
160408
160409 --
160410 CURSOR header_cur
160411 IS
160412 SELECT /*+ leading(xet) cardinality(xet,1) */
160413 -- Event Type Code: LOG_IC_RCPT_RETURN
160414 -- Event Class Code: LOG_INTERCOMPANY
160415 xet.entity_id
160416 , xet.legal_entity_id
160417 , xet.entity_code
160418 , xet.transaction_number
160419 , xet.event_id
160420 , xet.event_class_code
160421 , xet.event_type_code
160422 , xet.event_number
160423 , xet.event_date
160424 , xet.transaction_date
160425 , xet.reference_num_1
160426 , xet.reference_num_2
160427 , xet.reference_num_3
160428 , xet.reference_num_4
160429 , xet.reference_char_1
160430 , xet.reference_char_2
160431 , xet.reference_char_3
160432 , xet.reference_char_4
160433 , xet.reference_date_1
160434 , xet.reference_date_2
160435 , xet.reference_date_3
160436 , xet.reference_date_4
160437 , xet.event_created_by
160438 , xet.budgetary_control_flag
160439 , h1.ENTITY_CODE source_6
160440 , h1.CURRENCY_CODE source_7
160441 , h1.CURRENCY_CONVERSION_DATE source_8
160442 , h1.CURRENCY_CONVERSION_RATE source_9
160443 , h1.CURRENCY_CONVERSION_TYPE source_10
160444 , h1.TRANSACTION_DATE source_12
160445 FROM xla_events_gt xet
160446 , GMF_XLA_EXTRACT_HEADERS h1
160447 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
160448 and xet.event_type_code = C_EVENT_TYPE_CODE
160449 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
160450
160451 ORDER BY event_id
160452 ;
160453
160454
160455 --
160456 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
160457 IS
160458 SELECT /*+ leading(xet) cardinality(xet,1) */
160459 -- Event Type Code: LOG_IC_RCPT_RETURN
160460 -- Event Class Code: LOG_INTERCOMPANY
160461 xet.entity_id
160462 ,xet.legal_entity_id
160463 ,xet.entity_code
160464 ,xet.transaction_number
160465 ,xet.event_id
160466 ,xet.event_class_code
160467 ,xet.event_type_code
160468 ,xet.event_number
160469 ,xet.event_date
160470 ,xet.transaction_date
160471 ,xet.reference_num_1
160472 ,xet.reference_num_2
160473 ,xet.reference_num_3
160474 ,xet.reference_num_4
160475 ,xet.reference_char_1
160476 ,xet.reference_char_2
160477 ,xet.reference_char_3
160478 ,xet.reference_char_4
160479 ,xet.reference_date_1
160480 ,xet.reference_date_2
160481 ,xet.reference_date_3
160482 ,xet.reference_date_4
160483 ,xet.event_created_by
160484 ,xet.budgetary_control_flag , l2.LINE_NUMBER
160485 , l2.TRANSACTION_ACCOUNT_ID source_1
160486 , l2.JOURNAL_LINE_TYPE source_2
160487 , l2.ENTERED_AMOUNT source_3
160488 , l2.LINE_ID source_5
160489 , l2.ACCOUNTED_AMOUNT source_11
160490 FROM xla_events_gt xet
160491 , GMF_XLA_EXTRACT_LINES l2
160492 WHERE xet.event_id between x_first_event_id and x_last_event_id
160493 and xet.event_date between p_pad_start_date and p_pad_end_date
160494 and xet.event_type_code = C_EVENT_TYPE_CODE
160495 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
160496 ;
160497
160498 --
160499 BEGIN
160500 IF g_log_enabled THEN
160501 l_log_module := C_DEFAULT_MODULE||'.EventType_281';
160502 END IF;
160503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160504 trace
160505 (p_msg => 'BEGIN of EventType_281'
160506 ,p_level => C_LEVEL_PROCEDURE
160507 ,p_module => l_log_module);
160508 END IF;
160509
160510 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160511 trace
160512 (p_msg => 'p_application_id = '||p_application_id||
160516 ' - p_currency_code = '||p_currency_code||
160513 ' - p_base_ledger_id = '||p_base_ledger_id||
160514 ' - p_target_ledger_id = '||p_target_ledger_id||
160515 ' - p_language = '||p_language||
160517 ' - p_sla_ledger_id = '||p_sla_ledger_id
160518 ,p_level => C_LEVEL_STATEMENT
160519 ,p_module => l_log_module);
160520 END IF;
160521 --
160522 -- initialze arrays
160523 --
160524 g_array_event.DELETE;
160525 l_rec_array_event := l_null_rec_array_event;
160526 --
160527 --------------------------------------
160528 -- 4262811 Initialze MPA Line Number
160529 --------------------------------------
160530 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
160531
160532 --
160533
160534 --
160535 OPEN header_cur;
160536 --
160537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160538 trace
160539 (p_msg => 'SQL - FETCH header_cur'
160540 ,p_level => C_LEVEL_STATEMENT
160541 ,p_module => l_log_module);
160542 END IF;
160543 --
160544 LOOP
160545 FETCH header_cur BULK COLLECT INTO
160546 l_array_entity_id
160547 , l_array_legal_entity_id
160548 , l_array_entity_code
160549 , l_array_transaction_num
160550 , l_array_event_id
160551 , l_array_class_code
160552 , l_array_event_type
160553 , l_array_event_number
160554 , l_array_event_date
160555 , l_array_transaction_date
160556 , l_array_reference_num_1
160557 , l_array_reference_num_2
160558 , l_array_reference_num_3
160559 , l_array_reference_num_4
160560 , l_array_reference_char_1
160561 , l_array_reference_char_2
160562 , l_array_reference_char_3
160563 , l_array_reference_char_4
160564 , l_array_reference_date_1
160565 , l_array_reference_date_2
160566 , l_array_reference_date_3
160567 , l_array_reference_date_4
160568 , l_array_event_created_by
160569 , l_array_budgetary_control_flag
160570 , l_array_source_6
160571 , l_array_source_7
160572 , l_array_source_8
160573 , l_array_source_9
160574 , l_array_source_10
160575 , l_array_source_12
160576 LIMIT l_rows;
160577 --
160578 IF (C_LEVEL_EVENT >= g_log_level) THEN
160579 trace
160580 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
160581 ,p_level => C_LEVEL_EVENT
160582 ,p_module => l_log_module);
160583 END IF;
160584 --
160585 EXIT WHEN l_array_entity_id.COUNT = 0;
160586
160587 -- initialize arrays
160588 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
160589 XLA_AE_LINES_PKG.g_rec_lines := NULL;
160590
160591 --
160592 -- Bug 4458708
160593 --
160594 XLA_AE_LINES_PKG.g_LineNumber := 0;
160595
160596
160597 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
160598 g_last_hdr_idx := l_array_event_id.LAST;
160599 --
160600 -- loop for the headers. Each iteration is for each header extract row
160601 -- fetched in header cursor
160602 --
160603 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
160604
160605 --
160606 -- set event info as cache for other routines to refer event attributes
160607 --
160608 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160609 (p_application_id => p_application_id
160610 ,p_primary_ledger_id => p_primary_ledger_id
160611 ,p_base_ledger_id => p_base_ledger_id
160612 ,p_target_ledger_id => p_target_ledger_id
160613 ,p_entity_id => l_array_entity_id(hdr_idx)
160614 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
160615 ,p_entity_code => l_array_entity_code(hdr_idx)
160616 ,p_transaction_num => l_array_transaction_num(hdr_idx)
160617 ,p_event_id => l_array_event_id(hdr_idx)
160618 ,p_event_class_code => l_array_class_code(hdr_idx)
160619 ,p_event_type_code => l_array_event_type(hdr_idx)
160620 ,p_event_number => l_array_event_number(hdr_idx)
160621 ,p_event_date => l_array_event_date(hdr_idx)
160622 ,p_transaction_date => l_array_transaction_date(hdr_idx)
160623 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
160624 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
160625 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
160626 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
160627 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
160628 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
160629 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
160630 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
160631 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
160632 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
160633 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
160634 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
160635 ,p_event_created_by => l_array_event_created_by(hdr_idx)
160636 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
160637
160638 --
160639 -- set the status of entry to C_VALID (0)
160640 --
160641 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160642
160643 --
160647
160644 -- initialize a row for ae header
160645 --
160646 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
160648 l_event_id := l_array_event_id(hdr_idx);
160649
160650 --
160651 -- storing the hdr_idx for event. May be used by line cursor.
160652 --
160653 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
160654
160655 --
160656 -- store sources from header extract. This can be improved to
160657 -- store only those sources from header extract that may be used in lines
160658 --
160659
160660 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
160661 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
160662 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
160663 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
160664 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
160665 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
160666
160667 --
160668 -- initilaize the status of ae headers for diffrent balance types
160669 -- the status is initialised to C_NOT_CREATED (2)
160670 --
160671 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160672 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160673 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160674
160675 --
160676 -- call api to validate and store accounting attributes for header
160677 --
160678
160679 ------------------------------------------------------------
160680 -- Accrual Reversal : to get date for Standard Source (NONE)
160681 ------------------------------------------------------------
160682 l_acc_rev_gl_date_source := NULL;
160683
160684 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
160685 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
160686
160687
160688 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
160689
160690 XLA_AE_HEADER_PKG.SetJeCategoryName;
160691
160692 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
160693 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
160694 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
160695 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
160696 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
160697
160698
160699 -- No header level analytical criteria
160700
160701 --
160702 --accounting attribute enhancement, bug 3612931
160703 --
160704 l_trx_reversal_source := SUBSTR(NULL, 1,30);
160705
160706 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
160707 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
160708
160709 xla_accounting_err_pkg.build_message
160710 (p_appli_s_name => 'XLA'
160711 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
160712 ,p_token_1 => 'ACCT_ATTR_NAME'
160713 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
160714 ,p_token_2 => 'PRODUCT_NAME'
160715 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160716 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160717 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
160718 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160719
160720 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
160721 --
160722 -- following sets the accounting attributes needed to reverse
160723 -- accounting for a distributeion
160724 --
160725 xla_ae_lines_pkg.SetTrxReversalAttrs
160726 (p_event_id => l_event_id
160727 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
160728 ,p_trx_reversal_source => l_trx_reversal_source);
160729
160730 END IF;
160731
160732
160733 ----------------------------------------------------------------
160734 -- 4262811 - update the header statuses to invalid in need be
160735 ----------------------------------------------------------------
160736 --
160737 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
160738
160739
160740 -----------------------------------------------
160741 -- No accrual reversal for the event class/type
160742 -----------------------------------------------
160743 ----------------------------------------------------------------
160744
160745 --
160746 -- this ends the header loop iteration for one bulk fetch
160747 --
160748 END LOOP;
160749
160750 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
160751 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
160752
160753 --
160754 -- insert dummy rows into lines gt table that were created due to
160755 -- transaction reversals
160756 --
160757 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
160758 l_result := XLA_AE_LINES_PKG.InsertLines;
160759 END IF;
160760
160761 --
160762 -- reset the temp_line_num for each set of events fetched from header
160766 xla_ae_lines_pkg.g_temp_line_num := 0;
160763 -- cursor rather than doing it for each new event in line cursor
160764 -- Bug 3939231
160765 --
160767
160768
160769
160770 --
160771 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
160772 --
160773 --
160774 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160775
160776 trace
160777 (p_msg => 'SQL - FETCH line_cur'
160778 ,p_level => C_LEVEL_STATEMENT
160779 ,p_module => l_log_module);
160780
160781 END IF;
160782 --
160783 --
160784 LOOP
160785 --
160786 FETCH line_cur BULK COLLECT INTO
160787 l_array_entity_id
160788 , l_array_legal_entity_id
160789 , l_array_entity_code
160790 , l_array_transaction_num
160791 , l_array_event_id
160792 , l_array_class_code
160793 , l_array_event_type
160794 , l_array_event_number
160795 , l_array_event_date
160796 , l_array_transaction_date
160797 , l_array_reference_num_1
160798 , l_array_reference_num_2
160799 , l_array_reference_num_3
160800 , l_array_reference_num_4
160801 , l_array_reference_char_1
160802 , l_array_reference_char_2
160803 , l_array_reference_char_3
160804 , l_array_reference_char_4
160805 , l_array_reference_date_1
160806 , l_array_reference_date_2
160807 , l_array_reference_date_3
160808 , l_array_reference_date_4
160809 , l_array_event_created_by
160810 , l_array_budgetary_control_flag
160811 , l_array_extract_line_num
160812 , l_array_source_1
160813 , l_array_source_2
160814 , l_array_source_3
160815 , l_array_source_5
160816 , l_array_source_11
160817 LIMIT l_rows;
160818
160819 --
160820 IF (C_LEVEL_EVENT >= g_log_level) THEN
160821 trace
160822 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
160823 ,p_level => C_LEVEL_EVENT
160824 ,p_module => l_log_module);
160825 END IF;
160826 --
160827 EXIT WHEN l_array_entity_id.count = 0;
160828
160829 XLA_AE_LINES_PKG.g_rec_lines := null;
160830
160831 --
160832 -- Bug 4458708
160833 --
160834 XLA_AE_LINES_PKG.g_LineNumber := 0;
160835 --
160836 --
160837
160838 FOR Idx IN 1..l_array_event_id.count LOOP
160839 --
160840 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
160841 --
160842 l_event_id := l_array_event_id(idx); -- 5648433
160843
160844 --
160845 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160846 --
160847
160848 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
160849 (g_array_event(l_event_id).array_value_num('header_index'))
160850 ,'N'
160851 ) <> 'Y'
160852 THEN
160853 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160854 trace
160855 (p_msg => 'Trancaction revesal option is not Y '
160856 ,p_level => C_LEVEL_STATEMENT
160857 ,p_module => l_log_module);
160858 END IF;
160859
160860 --
160861 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
160862 --
160863 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160864 --
160865 -- set event info as cache for other routines to refer event attributes
160866 --
160867
160868 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
160869 l_previous_event_id := l_event_id;
160870
160871 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160872 (p_application_id => p_application_id
160873 ,p_primary_ledger_id => p_primary_ledger_id
160874 ,p_base_ledger_id => p_base_ledger_id
160875 ,p_target_ledger_id => p_target_ledger_id
160876 ,p_entity_id => l_array_entity_id(Idx)
160877 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
160878 ,p_entity_code => l_array_entity_code(Idx)
160879 ,p_transaction_num => l_array_transaction_num(Idx)
160880 ,p_event_id => l_array_event_id(Idx)
160881 ,p_event_class_code => l_array_class_code(Idx)
160882 ,p_event_type_code => l_array_event_type(Idx)
160883 ,p_event_number => l_array_event_number(Idx)
160884 ,p_event_date => l_array_event_date(Idx)
160885 ,p_transaction_date => l_array_transaction_date(Idx)
160886 ,p_reference_num_1 => l_array_reference_num_1(Idx)
160887 ,p_reference_num_2 => l_array_reference_num_2(Idx)
160888 ,p_reference_num_3 => l_array_reference_num_3(Idx)
160889 ,p_reference_num_4 => l_array_reference_num_4(Idx)
160890 ,p_reference_char_1 => l_array_reference_char_1(Idx)
160891 ,p_reference_char_2 => l_array_reference_char_2(Idx)
160892 ,p_reference_char_3 => l_array_reference_char_3(Idx)
160893 ,p_reference_char_4 => l_array_reference_char_4(Idx)
160894 ,p_reference_date_1 => l_array_reference_date_1(Idx)
160895 ,p_reference_date_2 => l_array_reference_date_2(Idx)
160896 ,p_reference_date_3 => l_array_reference_date_3(Idx)
160897 ,p_reference_date_4 => l_array_reference_date_4(Idx)
160898 ,p_event_created_by => l_array_event_created_by(Idx)
160899 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
160903
160900 --
160901 END IF;
160902
160904
160905 --
160906 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
160907
160908 l_acct_reversal_source := SUBSTR(NULL, 1,30);
160909
160910 IF l_continue_with_lines THEN
160911 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
160912 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
160913
160914 xla_accounting_err_pkg.build_message
160915 (p_appli_s_name => 'XLA'
160916 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
160917 ,p_token_1 => 'LINE_NUMBER'
160918 ,p_value_1 => l_array_extract_line_num(Idx)
160919 ,p_token_2 => 'PRODUCT_NAME'
160920 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160921 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160922 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
160923 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160924
160925 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
160926 --
160927 -- following sets the accounting attributes needed to reverse
160928 -- accounting for a distributeion
160929 --
160930
160931 --
160932 -- 5217187
160933 --
160934 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
160935 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
160936 g_array_event(l_event_id).array_value_num('header_index'));
160937 --
160938 --
160939
160940 -- No reversal code generated
160941
160942 xla_ae_lines_pkg.SetAcctReversalAttrs
160943 (p_event_id => l_event_id
160944 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
160945 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160946 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
160947 END IF;
160948
160949 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
160950 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
160951
160952 --
160953 AcctLineType_95 (
160954 p_application_id => p_application_id
160955 ,p_event_id => l_event_id
160956 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160957 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160958 ,p_actual_flag => l_actual_flag
160959 ,p_balance_type_code => l_balance_type_code
160960 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160961
160962 , p_source_1 => l_array_source_1(Idx)
160963 , p_source_2 => l_array_source_2(Idx)
160964 , p_source_3 => l_array_source_3(Idx)
160965 , p_source_5 => l_array_source_5(Idx)
160966 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
160967 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
160968 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
160969 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
160970 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
160971 , p_source_11 => l_array_source_11(Idx)
160972 );
160973 If(l_balance_type_code = 'A') THEN
160974 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160975 END IF;
160976
160977 --
160978
160979
160980 --
160981 AcctLineType_123 (
160982 p_application_id => p_application_id
160983 ,p_event_id => l_event_id
160984 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160985 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160986 ,p_actual_flag => l_actual_flag
160987 ,p_balance_type_code => l_balance_type_code
160988 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160989
160990 , p_source_1 => l_array_source_1(Idx)
160991 , p_source_2 => l_array_source_2(Idx)
160992 , p_source_3 => l_array_source_3(Idx)
160993 , p_source_5 => l_array_source_5(Idx)
160994 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
160995 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
160996 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
160997 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
160998 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
160999 , p_source_11 => l_array_source_11(Idx)
161000 );
161001 If(l_balance_type_code = 'A') THEN
161002 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161003 END IF;
161004
161005 --
161006
161007
161008 --
161009 AcctLineType_165 (
161010 p_application_id => p_application_id
161011 ,p_event_id => l_event_id
161012 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161013 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161014 ,p_actual_flag => l_actual_flag
161015 ,p_balance_type_code => l_balance_type_code
161016 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161017
161018 , p_source_1 => l_array_source_1(Idx)
161019 , p_source_2 => l_array_source_2(Idx)
161020 , p_source_3 => l_array_source_3(Idx)
161021 , p_source_5 => l_array_source_5(Idx)
161022 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
161023 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
161024 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
161025 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
161026 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
161030 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161027 , p_source_11 => l_array_source_11(Idx)
161028 );
161029 If(l_balance_type_code = 'A') THEN
161031 END IF;
161032
161033 --
161034
161035 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
161036 -- or secondary ledger that has different currency with primary
161037 -- or alc that is calculated by sla
161038 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
161039 (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'))
161040
161041 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
161042 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
161043 AND (l_actual_flag = 'A')) THEN
161044 XLA_AE_LINES_PKG.CreateGainOrLossLines(
161045 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
161046 ,p_application_id => p_application_id
161047 ,p_amb_context_code => 'DEFAULT'
161048 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
161049 ,p_event_class_code => C_EVENT_CLASS_CODE
161050 ,p_event_type_code => C_EVENT_TYPE_CODE
161051
161052 ,p_gain_ccid => -1
161053 ,p_loss_ccid => -1
161054
161055 ,p_actual_flag => l_actual_flag
161056 ,p_enc_flag => null
161057 ,p_actual_g_l_ref => l_actual_gain_loss_ref
161058 ,p_enc_g_l_ref => null
161059 );
161060 END IF;
161061 END IF;
161062 END IF;
161063
161064 ELSE
161065 --
161066 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
161067 --
161068 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161069 trace
161070 (p_msg => 'Trancaction revesal option is Y'
161071 ,p_level => C_LEVEL_STATEMENT
161072 ,p_module => l_log_module);
161073 END IF;
161074 END IF;
161075
161076 END LOOP;
161077 l_result := XLA_AE_LINES_PKG.InsertLines ;
161078 end loop;
161079 close line_cur;
161080
161081
161082 --
161083 -- insert headers into xla_ae_headers_gt table
161084 --
161085 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
161086
161087 -- insert into errors table here.
161088
161089 END LOOP;
161090
161091 --
161092 -- 4865292
161093 --
161094 -- Compare g_hdr_extract_count with event count in
161095 -- CreateHeadersAndLines.
161096 --
161097 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
161098
161099 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161100 trace (p_msg => '# rows extracted from header extract objects '
161101 || ' (running total): '
161102 || g_hdr_extract_count
161103 ,p_level => C_LEVEL_STATEMENT
161104 ,p_module => l_log_module);
161105 END IF;
161106
161107 CLOSE header_cur;
161108 --
161109
161110 --
161111 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161112 trace
161113 (p_msg => 'END of EventType_281'
161114 ,p_level => C_LEVEL_PROCEDURE
161115 ,p_module => l_log_module);
161116 END IF;
161117 --
161118 RETURN l_result;
161119 EXCEPTION
161120 WHEN xla_exceptions_pkg.application_exception THEN
161121
161122 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
161123
161124
161125 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
161126
161127 RAISE;
161128
161129 WHEN NO_DATA_FOUND THEN
161130
161131 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
161132 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
161133
161134 FOR header_record IN header_cur
161135 LOOP
161136 l_array_header_events(header_record.event_id) := header_record.event_id;
161137 END LOOP;
161138
161139 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
161140 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
161141
161142 fnd_file.put_line(fnd_file.LOG, ' ');
161143 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
161144 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
161145 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
161146
161147 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
161148 LOOP
161149 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
161150 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
161151 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
161152 END IF;
161153 END LOOP;
161154
161155 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
161156 fnd_file.put_line(fnd_file.LOG, ' ');
161157
161158
161159 xla_exceptions_pkg.raise_message
161160 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_281');
161161
161162
161163 WHEN OTHERS THEN
161164 xla_exceptions_pkg.raise_message
161168
161165 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_281');
161166 END EventType_281;
161167 --
161169 ---------------------------------------
161170 --
161171 -- PRIVATE PROCEDURE
161172 -- insert_sources_282
161173 --
161174 ----------------------------------------
161175 --
161176 PROCEDURE insert_sources_282(
161177 p_target_ledger_id IN NUMBER
161178 , p_language IN VARCHAR2
161179 , p_sla_ledger_id IN NUMBER
161180 , p_pad_start_date IN DATE
161181 , p_pad_end_date IN DATE
161182 )
161183 IS
161184
161185 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_IC_SALES_ISSUE';
161186 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
161187 p_apps_owner VARCHAR2(30);
161188 l_log_module VARCHAR2(240);
161189 BEGIN
161190 IF g_log_enabled THEN
161191 l_log_module := C_DEFAULT_MODULE||'.insert_sources_282';
161192 END IF;
161193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161194
161195 trace
161196 (p_msg => 'BEGIN of insert_sources_282'
161197 ,p_level => C_LEVEL_PROCEDURE
161198 ,p_module => l_log_module);
161199
161200 END IF;
161201
161202 -- select APPS owner
161203 SELECT oracle_username
161204 INTO p_apps_owner
161205 FROM fnd_oracle_userid
161206 WHERE read_only_flag = 'U'
161207 ;
161208
161209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161210 trace
161211 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
161212 ' - p_language = '||p_language||
161213 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
161214 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
161215 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
161216 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
161217 ,p_level => C_LEVEL_STATEMENT
161218 ,p_module => l_log_module);
161219 END IF;
161220
161221
161222 --
161223 INSERT INTO xla_diag_sources --hdr1
161224 (
161225 event_id
161226 , ledger_id
161227 , sla_ledger_id
161228 , description_language
161229 , object_name
161230 , object_type_code
161231 , line_number
161232 , source_application_id
161233 , source_type_code
161234 , source_code
161235 , source_value
161236 , source_meaning
161237 , created_by
161238 , creation_date
161239 , last_update_date
161240 , last_updated_by
161241 , last_update_login
161242 , program_update_date
161243 , program_application_id
161244 , program_id
161245 , request_id
161246 )
161247 SELECT
161248 event_id
161249 , p_target_ledger_id
161250 , p_sla_ledger_id
161251 , p_language
161252 , object_name
161253 , object_type_code
161254 , line_number
161255 , source_application_id
161256 , source_type_code
161257 , source_code
161258 , SUBSTR(source_value ,1,1996)
161259 , SUBSTR(source_meaning,1,200)
161260 , xla_environment_pkg.g_Usr_Id
161261 , TRUNC(SYSDATE)
161262 , TRUNC(SYSDATE)
161263 , xla_environment_pkg.g_Usr_Id
161264 , xla_environment_pkg.g_Login_Id
161265 , TRUNC(SYSDATE)
161266 , xla_environment_pkg.g_Prog_Appl_Id
161267 , xla_environment_pkg.g_Prog_Id
161268 , xla_environment_pkg.g_Req_Id
161269 FROM (
161270 SELECT xet.event_id event_id
161271 , 0 line_number
161272 , CASE r
161273 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
161274 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
161275 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
161276 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
161277 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
161278 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
161279
161280 ELSE null
161281 END object_name
161282 , CASE r
161283 WHEN 1 THEN 'HEADER'
161284 WHEN 2 THEN 'HEADER'
161285 WHEN 3 THEN 'HEADER'
161286 WHEN 4 THEN 'HEADER'
161287 WHEN 5 THEN 'HEADER'
161288 WHEN 6 THEN 'HEADER'
161289
161290 ELSE null
161291 END object_type_code
161292 , CASE r
161293 WHEN 1 THEN '555'
161294 WHEN 2 THEN '555'
161295 WHEN 3 THEN '555'
161296 WHEN 4 THEN '555'
161297 WHEN 5 THEN '555'
161298 WHEN 6 THEN '555'
161299
161300 ELSE null
161301 END source_application_id
161302 , 'S' source_type_code
161303 , CASE r
161304 WHEN 1 THEN 'ENTITY_CODE'
161305 WHEN 2 THEN 'CURRENCY_CODE'
161306 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
161310
161307 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
161308 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
161309 WHEN 6 THEN 'TRANSACTION_DATE'
161311 ELSE null
161312 END source_code
161313 , CASE r
161314 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
161315 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
161316 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
161317 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
161318 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
161319 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
161320
161321 ELSE null
161322 END source_value
161323 , CASE r
161324 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
161325 1010186
161326 ,TO_CHAR(h1.CURRENCY_CODE)
161327 ,'CURRENCY_CODE'
161328 ,'S'
161329 ,555)
161330
161331 ELSE null
161332 END source_meaning
161333 FROM xla_events_gt xet
161334 , GMF_XLA_EXTRACT_HEADERS h1
161335 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
161336 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161337 AND xet.event_type_code = C_EVENT_TYPE_CODE
161338 AND h1.event_id = xet.event_id
161339
161340 )
161341 ;
161342 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161343
161344 trace
161345 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
161346 ,p_level => C_LEVEL_STATEMENT
161347 ,p_module => l_log_module);
161348
161349 END IF;
161350 --
161351
161352
161353
161354 --
161355 INSERT INTO xla_diag_sources --line1
161356 (
161357 event_id
161358 , ledger_id
161359 , sla_ledger_id
161360 , description_language
161361 , object_name
161362 , object_type_code
161363 , line_number
161364 , source_application_id
161365 , source_type_code
161366 , source_code
161367 , source_value
161368 , source_meaning
161369 , created_by
161370 , creation_date
161371 , last_update_date
161372 , last_updated_by
161373 , last_update_login
161374 , program_update_date
161375 , program_application_id
161376 , program_id
161377 , request_id
161378 )
161379 SELECT event_id
161380 , p_target_ledger_id
161381 , p_sla_ledger_id
161382 , p_language
161383 , object_name
161384 , object_type_code
161385 , line_number
161386 , source_application_id
161387 , source_type_code
161388 , source_code
161389 , SUBSTR(source_value,1,1996)
161390 , SUBSTR(source_meaning,1,200)
161391 , xla_environment_pkg.g_Usr_Id
161392 , TRUNC(SYSDATE)
161393 , TRUNC(SYSDATE)
161394 , xla_environment_pkg.g_Usr_Id
161395 , xla_environment_pkg.g_Login_Id
161396 , TRUNC(SYSDATE)
161397 , xla_environment_pkg.g_Prog_Appl_Id
161398 , xla_environment_pkg.g_Prog_Id
161399 , xla_environment_pkg.g_Req_Id
161400 FROM (
161401 SELECT xet.event_id event_id
161402 , l2.line_number line_number
161403 , CASE r
161404 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
161405 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
161406 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
161407 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
161408 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
161409
161410 ELSE null
161411 END object_name
161412 , CASE r
161413 WHEN 1 THEN 'LINE'
161414 WHEN 2 THEN 'LINE'
161415 WHEN 3 THEN 'LINE'
161416 WHEN 4 THEN 'LINE'
161417 WHEN 5 THEN 'LINE'
161418
161419 ELSE null
161420 END object_type_code
161421 , CASE r
161422 WHEN 1 THEN '555'
161423 WHEN 2 THEN '555'
161424 WHEN 3 THEN '555'
161425 WHEN 4 THEN '555'
161426 WHEN 5 THEN '555'
161427
161428 ELSE null
161429 END source_application_id
161430 , 'S' source_type_code
161431 , CASE r
161432 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
161433 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
161434 WHEN 3 THEN 'ENTERED_AMOUNT'
161435 WHEN 4 THEN 'LINE_ID'
161436 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
161437
161438 ELSE null
161439 END source_code
161440 , CASE r
161441 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
161442 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
161443 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
161444 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
161445 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
161446
161450 FROM xla_events_gt xet
161447 ELSE null
161448 END source_value
161449 , null source_meaning
161451 , GMF_XLA_EXTRACT_LINES l2
161452 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
161453 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161454 AND xet.event_type_code = C_EVENT_TYPE_CODE
161455 AND l2.event_id = xet.event_id
161456
161457 )
161458 ;
161459 --
161460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161461
161462 trace
161463 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
161464 ,p_level => C_LEVEL_STATEMENT
161465 ,p_module => l_log_module);
161466
161467 END IF;
161468
161469
161470 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161471 trace
161472 (p_msg => 'END of insert_sources_282'
161473 ,p_level => C_LEVEL_PROCEDURE
161474 ,p_module => l_log_module);
161475 END IF;
161476 EXCEPTION
161477 WHEN xla_exceptions_pkg.application_exception THEN
161478 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161479 trace
161480 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161481 ,p_level => C_LEVEL_EXCEPTION
161482 ,p_module => l_log_module);
161483 END IF;
161484 RAISE;
161485 WHEN OTHERS THEN
161486 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161487 trace
161488 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161489 ,p_level => C_LEVEL_EXCEPTION
161490 ,p_module => l_log_module);
161491 END IF;
161492 xla_exceptions_pkg.raise_message
161493 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_282');
161494 END insert_sources_282;
161495 --
161496
161497 ---------------------------------------
161498 --
161499 -- PRIVATE FUNCTION
161500 -- EventType_282
161501 --
161502 ----------------------------------------
161503 --
161504 FUNCTION EventType_282
161505 (p_application_id IN NUMBER
161506 ,p_base_ledger_id IN NUMBER
161507 ,p_target_ledger_id IN NUMBER
161508 ,p_language IN VARCHAR2
161509 ,p_currency_code IN VARCHAR2
161510 ,p_sla_ledger_id IN NUMBER
161511 ,p_pad_start_date IN DATE
161512 ,p_pad_end_date IN DATE
161513 ,p_primary_ledger_id IN NUMBER)
161514 RETURN BOOLEAN IS
161515 --
161516 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_IC_SALES_ISSUE';
161517 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
161518
161519 l_calculate_acctd_flag VARCHAR2(1) :='N';
161520 l_calculate_g_l_flag VARCHAR2(1) :='N';
161521 --
161522 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161523 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161524 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161525 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161526 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161527 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161528 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161529 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161530 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161531 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161532 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161533 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161534 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161535 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161536 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161537 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161538 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161539 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161540 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161541 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161542 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161543 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161544 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
161545 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161546 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
161547 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
161548
161549 l_event_id NUMBER;
161550 l_previous_event_id NUMBER;
161551 l_first_event_id NUMBER;
161552 l_last_event_id NUMBER;
161553
161554 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
161555 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
161556 --
161557 --
161558 l_result BOOLEAN := TRUE;
161559 l_rows NUMBER := 1000;
161563 l_transaction_reversal NUMBER;
161560 l_event_type_name VARCHAR2(80) := 'Logical Intercompany Sales Issue';
161561 l_event_class_name VARCHAR2(80) := 'Logical Intercompany';
161562 l_description VARCHAR2(4000);
161564 l_ae_header_id NUMBER;
161565 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
161566 l_log_module VARCHAR2(240);
161567 --
161568 l_acct_reversal_source VARCHAR2(30);
161569 l_trx_reversal_source VARCHAR2(30);
161570
161571 l_continue_with_lines BOOLEAN := TRUE;
161572 --
161573 l_acc_rev_gl_date_source DATE; -- 4262811
161574 --
161575 type t_array_event_id is table of number index by binary_integer;
161576
161577 l_rec_array_event t_rec_array_event;
161578 l_null_rec_array_event t_rec_array_event;
161579 l_array_ae_header_id xla_number_array_type;
161580 l_actual_flag VARCHAR2(1) := NULL;
161581 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
161582 l_balance_type_code VARCHAR2(1) :=NULL;
161583 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
161584
161585 --
161586 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
161587 --
161588
161589 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
161590 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
161591 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
161592 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
161593 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161594 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
161595
161596 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
161597 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
161598 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161599 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
161600 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161601
161602 l_array_source_6 t_array_source_6;
161603 l_array_source_7 t_array_source_7;
161604 l_array_source_8 t_array_source_8;
161605 l_array_source_9 t_array_source_9;
161606 l_array_source_10 t_array_source_10;
161607 l_array_source_12 t_array_source_12;
161608
161609 l_array_source_1 t_array_source_1;
161610 l_array_source_2 t_array_source_2;
161611 l_array_source_3 t_array_source_3;
161612 l_array_source_5 t_array_source_5;
161613 l_array_source_11 t_array_source_11;
161614
161615 --
161616 CURSOR header_cur
161617 IS
161618 SELECT /*+ leading(xet) cardinality(xet,1) */
161619 -- Event Type Code: LOG_IC_SALES_ISSUE
161620 -- Event Class Code: LOG_INTERCOMPANY
161621 xet.entity_id
161622 , xet.legal_entity_id
161623 , xet.entity_code
161624 , xet.transaction_number
161625 , xet.event_id
161626 , xet.event_class_code
161627 , xet.event_type_code
161628 , xet.event_number
161629 , xet.event_date
161630 , xet.transaction_date
161631 , xet.reference_num_1
161632 , xet.reference_num_2
161633 , xet.reference_num_3
161634 , xet.reference_num_4
161635 , xet.reference_char_1
161636 , xet.reference_char_2
161637 , xet.reference_char_3
161638 , xet.reference_char_4
161639 , xet.reference_date_1
161640 , xet.reference_date_2
161641 , xet.reference_date_3
161642 , xet.reference_date_4
161643 , xet.event_created_by
161644 , xet.budgetary_control_flag
161645 , h1.ENTITY_CODE source_6
161646 , h1.CURRENCY_CODE source_7
161647 , h1.CURRENCY_CONVERSION_DATE source_8
161648 , h1.CURRENCY_CONVERSION_RATE source_9
161649 , h1.CURRENCY_CONVERSION_TYPE source_10
161650 , h1.TRANSACTION_DATE source_12
161651 FROM xla_events_gt xet
161652 , GMF_XLA_EXTRACT_HEADERS h1
161653 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
161654 and xet.event_type_code = C_EVENT_TYPE_CODE
161655 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
161656
161657 ORDER BY event_id
161658 ;
161659
161660
161661 --
161662 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
161663 IS
161664 SELECT /*+ leading(xet) cardinality(xet,1) */
161665 -- Event Type Code: LOG_IC_SALES_ISSUE
161666 -- Event Class Code: LOG_INTERCOMPANY
161667 xet.entity_id
161668 ,xet.legal_entity_id
161669 ,xet.entity_code
161670 ,xet.transaction_number
161671 ,xet.event_id
161672 ,xet.event_class_code
161673 ,xet.event_type_code
161674 ,xet.event_number
161675 ,xet.event_date
161676 ,xet.transaction_date
161677 ,xet.reference_num_1
161678 ,xet.reference_num_2
161679 ,xet.reference_num_3
161680 ,xet.reference_num_4
161681 ,xet.reference_char_1
161682 ,xet.reference_char_2
161683 ,xet.reference_char_3
161684 ,xet.reference_char_4
161685 ,xet.reference_date_1
161686 ,xet.reference_date_2
161687 ,xet.reference_date_3
161688 ,xet.reference_date_4
161692 , l2.JOURNAL_LINE_TYPE source_2
161689 ,xet.event_created_by
161690 ,xet.budgetary_control_flag , l2.LINE_NUMBER
161691 , l2.TRANSACTION_ACCOUNT_ID source_1
161693 , l2.ENTERED_AMOUNT source_3
161694 , l2.LINE_ID source_5
161695 , l2.ACCOUNTED_AMOUNT source_11
161696 FROM xla_events_gt xet
161697 , GMF_XLA_EXTRACT_LINES l2
161698 WHERE xet.event_id between x_first_event_id and x_last_event_id
161699 and xet.event_date between p_pad_start_date and p_pad_end_date
161700 and xet.event_type_code = C_EVENT_TYPE_CODE
161701 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
161702 ;
161703
161704 --
161705 BEGIN
161706 IF g_log_enabled THEN
161707 l_log_module := C_DEFAULT_MODULE||'.EventType_282';
161708 END IF;
161709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161710 trace
161711 (p_msg => 'BEGIN of EventType_282'
161712 ,p_level => C_LEVEL_PROCEDURE
161713 ,p_module => l_log_module);
161714 END IF;
161715
161716 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161717 trace
161718 (p_msg => 'p_application_id = '||p_application_id||
161719 ' - p_base_ledger_id = '||p_base_ledger_id||
161720 ' - p_target_ledger_id = '||p_target_ledger_id||
161721 ' - p_language = '||p_language||
161722 ' - p_currency_code = '||p_currency_code||
161723 ' - p_sla_ledger_id = '||p_sla_ledger_id
161724 ,p_level => C_LEVEL_STATEMENT
161725 ,p_module => l_log_module);
161726 END IF;
161727 --
161728 -- initialze arrays
161729 --
161730 g_array_event.DELETE;
161731 l_rec_array_event := l_null_rec_array_event;
161732 --
161733 --------------------------------------
161734 -- 4262811 Initialze MPA Line Number
161735 --------------------------------------
161736 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
161737
161738 --
161739
161740 --
161741 OPEN header_cur;
161742 --
161743 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161744 trace
161745 (p_msg => 'SQL - FETCH header_cur'
161746 ,p_level => C_LEVEL_STATEMENT
161747 ,p_module => l_log_module);
161748 END IF;
161749 --
161750 LOOP
161751 FETCH header_cur BULK COLLECT INTO
161752 l_array_entity_id
161753 , l_array_legal_entity_id
161754 , l_array_entity_code
161755 , l_array_transaction_num
161756 , l_array_event_id
161757 , l_array_class_code
161758 , l_array_event_type
161759 , l_array_event_number
161760 , l_array_event_date
161761 , l_array_transaction_date
161762 , l_array_reference_num_1
161763 , l_array_reference_num_2
161764 , l_array_reference_num_3
161765 , l_array_reference_num_4
161766 , l_array_reference_char_1
161767 , l_array_reference_char_2
161768 , l_array_reference_char_3
161769 , l_array_reference_char_4
161770 , l_array_reference_date_1
161771 , l_array_reference_date_2
161772 , l_array_reference_date_3
161773 , l_array_reference_date_4
161774 , l_array_event_created_by
161775 , l_array_budgetary_control_flag
161776 , l_array_source_6
161777 , l_array_source_7
161778 , l_array_source_8
161779 , l_array_source_9
161780 , l_array_source_10
161781 , l_array_source_12
161782 LIMIT l_rows;
161783 --
161784 IF (C_LEVEL_EVENT >= g_log_level) THEN
161785 trace
161786 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
161787 ,p_level => C_LEVEL_EVENT
161788 ,p_module => l_log_module);
161789 END IF;
161790 --
161791 EXIT WHEN l_array_entity_id.COUNT = 0;
161792
161793 -- initialize arrays
161794 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
161795 XLA_AE_LINES_PKG.g_rec_lines := NULL;
161796
161797 --
161798 -- Bug 4458708
161799 --
161800 XLA_AE_LINES_PKG.g_LineNumber := 0;
161801
161802
161803 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
161804 g_last_hdr_idx := l_array_event_id.LAST;
161805 --
161806 -- loop for the headers. Each iteration is for each header extract row
161807 -- fetched in header cursor
161808 --
161809 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
161810
161811 --
161812 -- set event info as cache for other routines to refer event attributes
161813 --
161814 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161815 (p_application_id => p_application_id
161816 ,p_primary_ledger_id => p_primary_ledger_id
161817 ,p_base_ledger_id => p_base_ledger_id
161818 ,p_target_ledger_id => p_target_ledger_id
161819 ,p_entity_id => l_array_entity_id(hdr_idx)
161820 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
161821 ,p_entity_code => l_array_entity_code(hdr_idx)
161822 ,p_transaction_num => l_array_transaction_num(hdr_idx)
161823 ,p_event_id => l_array_event_id(hdr_idx)
161824 ,p_event_class_code => l_array_class_code(hdr_idx)
161825 ,p_event_type_code => l_array_event_type(hdr_idx)
161826 ,p_event_number => l_array_event_number(hdr_idx)
161827 ,p_event_date => l_array_event_date(hdr_idx)
161828 ,p_transaction_date => l_array_transaction_date(hdr_idx)
161832 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
161829 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
161830 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
161831 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
161833 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
161834 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
161835 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
161836 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
161837 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
161838 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
161839 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
161840 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
161841 ,p_event_created_by => l_array_event_created_by(hdr_idx)
161842 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
161843
161844 --
161845 -- set the status of entry to C_VALID (0)
161846 --
161847 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161848
161849 --
161850 -- initialize a row for ae header
161851 --
161852 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
161853
161854 l_event_id := l_array_event_id(hdr_idx);
161855
161856 --
161857 -- storing the hdr_idx for event. May be used by line cursor.
161858 --
161859 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
161860
161861 --
161862 -- store sources from header extract. This can be improved to
161863 -- store only those sources from header extract that may be used in lines
161864 --
161865
161866 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
161867 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
161868 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
161869 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
161870 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
161871 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
161872
161873 --
161874 -- initilaize the status of ae headers for diffrent balance types
161875 -- the status is initialised to C_NOT_CREATED (2)
161876 --
161877 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161878 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161879 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161880
161881 --
161882 -- call api to validate and store accounting attributes for header
161883 --
161884
161885 ------------------------------------------------------------
161886 -- Accrual Reversal : to get date for Standard Source (NONE)
161887 ------------------------------------------------------------
161888 l_acc_rev_gl_date_source := NULL;
161889
161890 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
161891 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
161892
161893
161894 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
161895
161896 XLA_AE_HEADER_PKG.SetJeCategoryName;
161897
161898 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
161899 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
161900 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
161901 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
161902 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
161903
161904
161905 -- No header level analytical criteria
161906
161907 --
161908 --accounting attribute enhancement, bug 3612931
161909 --
161910 l_trx_reversal_source := SUBSTR(NULL, 1,30);
161911
161912 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
161913 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
161914
161915 xla_accounting_err_pkg.build_message
161916 (p_appli_s_name => 'XLA'
161917 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
161918 ,p_token_1 => 'ACCT_ATTR_NAME'
161919 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
161920 ,p_token_2 => 'PRODUCT_NAME'
161921 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161922 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161923 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
161924 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161925
161926 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
161927 --
161928 -- following sets the accounting attributes needed to reverse
161929 -- accounting for a distributeion
161930 --
161931 xla_ae_lines_pkg.SetTrxReversalAttrs
161932 (p_event_id => l_event_id
161933 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
161934 ,p_trx_reversal_source => l_trx_reversal_source);
161935
161936 END IF;
161937
161938
161939 ----------------------------------------------------------------
161943 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
161940 -- 4262811 - update the header statuses to invalid in need be
161941 ----------------------------------------------------------------
161942 --
161944
161945
161946 -----------------------------------------------
161947 -- No accrual reversal for the event class/type
161948 -----------------------------------------------
161949 ----------------------------------------------------------------
161950
161951 --
161952 -- this ends the header loop iteration for one bulk fetch
161953 --
161954 END LOOP;
161955
161956 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
161957 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
161958
161959 --
161960 -- insert dummy rows into lines gt table that were created due to
161961 -- transaction reversals
161962 --
161963 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
161964 l_result := XLA_AE_LINES_PKG.InsertLines;
161965 END IF;
161966
161967 --
161968 -- reset the temp_line_num for each set of events fetched from header
161969 -- cursor rather than doing it for each new event in line cursor
161970 -- Bug 3939231
161971 --
161972 xla_ae_lines_pkg.g_temp_line_num := 0;
161973
161974
161975
161976 --
161977 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
161978 --
161979 --
161980 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161981
161982 trace
161983 (p_msg => 'SQL - FETCH line_cur'
161984 ,p_level => C_LEVEL_STATEMENT
161985 ,p_module => l_log_module);
161986
161987 END IF;
161988 --
161989 --
161990 LOOP
161991 --
161992 FETCH line_cur BULK COLLECT INTO
161993 l_array_entity_id
161994 , l_array_legal_entity_id
161995 , l_array_entity_code
161996 , l_array_transaction_num
161997 , l_array_event_id
161998 , l_array_class_code
161999 , l_array_event_type
162000 , l_array_event_number
162001 , l_array_event_date
162002 , l_array_transaction_date
162003 , l_array_reference_num_1
162004 , l_array_reference_num_2
162005 , l_array_reference_num_3
162006 , l_array_reference_num_4
162007 , l_array_reference_char_1
162008 , l_array_reference_char_2
162009 , l_array_reference_char_3
162010 , l_array_reference_char_4
162011 , l_array_reference_date_1
162012 , l_array_reference_date_2
162013 , l_array_reference_date_3
162014 , l_array_reference_date_4
162015 , l_array_event_created_by
162016 , l_array_budgetary_control_flag
162017 , l_array_extract_line_num
162018 , l_array_source_1
162019 , l_array_source_2
162020 , l_array_source_3
162021 , l_array_source_5
162022 , l_array_source_11
162023 LIMIT l_rows;
162024
162025 --
162026 IF (C_LEVEL_EVENT >= g_log_level) THEN
162027 trace
162028 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
162029 ,p_level => C_LEVEL_EVENT
162030 ,p_module => l_log_module);
162031 END IF;
162032 --
162033 EXIT WHEN l_array_entity_id.count = 0;
162034
162035 XLA_AE_LINES_PKG.g_rec_lines := null;
162036
162037 --
162038 -- Bug 4458708
162039 --
162040 XLA_AE_LINES_PKG.g_LineNumber := 0;
162041 --
162042 --
162043
162044 FOR Idx IN 1..l_array_event_id.count LOOP
162045 --
162046 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
162047 --
162048 l_event_id := l_array_event_id(idx); -- 5648433
162049
162050 --
162051 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
162052 --
162053
162054 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
162055 (g_array_event(l_event_id).array_value_num('header_index'))
162056 ,'N'
162057 ) <> 'Y'
162058 THEN
162059 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162060 trace
162061 (p_msg => 'Trancaction revesal option is not Y '
162062 ,p_level => C_LEVEL_STATEMENT
162063 ,p_module => l_log_module);
162064 END IF;
162065
162066 --
162067 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
162068 --
162069 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
162070 --
162071 -- set event info as cache for other routines to refer event attributes
162072 --
162073
162074 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
162075 l_previous_event_id := l_event_id;
162076
162077 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
162078 (p_application_id => p_application_id
162079 ,p_primary_ledger_id => p_primary_ledger_id
162080 ,p_base_ledger_id => p_base_ledger_id
162081 ,p_target_ledger_id => p_target_ledger_id
162082 ,p_entity_id => l_array_entity_id(Idx)
162083 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
162084 ,p_entity_code => l_array_entity_code(Idx)
162085 ,p_transaction_num => l_array_transaction_num(Idx)
162086 ,p_event_id => l_array_event_id(Idx)
162087 ,p_event_class_code => l_array_class_code(Idx)
162088 ,p_event_type_code => l_array_event_type(Idx)
162092 ,p_reference_num_1 => l_array_reference_num_1(Idx)
162089 ,p_event_number => l_array_event_number(Idx)
162090 ,p_event_date => l_array_event_date(Idx)
162091 ,p_transaction_date => l_array_transaction_date(Idx)
162093 ,p_reference_num_2 => l_array_reference_num_2(Idx)
162094 ,p_reference_num_3 => l_array_reference_num_3(Idx)
162095 ,p_reference_num_4 => l_array_reference_num_4(Idx)
162096 ,p_reference_char_1 => l_array_reference_char_1(Idx)
162097 ,p_reference_char_2 => l_array_reference_char_2(Idx)
162098 ,p_reference_char_3 => l_array_reference_char_3(Idx)
162099 ,p_reference_char_4 => l_array_reference_char_4(Idx)
162100 ,p_reference_date_1 => l_array_reference_date_1(Idx)
162101 ,p_reference_date_2 => l_array_reference_date_2(Idx)
162102 ,p_reference_date_3 => l_array_reference_date_3(Idx)
162103 ,p_reference_date_4 => l_array_reference_date_4(Idx)
162104 ,p_event_created_by => l_array_event_created_by(Idx)
162105 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
162106 --
162107 END IF;
162108
162109
162110
162111 --
162112 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
162113
162114 l_acct_reversal_source := SUBSTR(NULL, 1,30);
162115
162116 IF l_continue_with_lines THEN
162117 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
162118 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
162119
162120 xla_accounting_err_pkg.build_message
162121 (p_appli_s_name => 'XLA'
162122 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
162123 ,p_token_1 => 'LINE_NUMBER'
162124 ,p_value_1 => l_array_extract_line_num(Idx)
162125 ,p_token_2 => 'PRODUCT_NAME'
162126 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
162127 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
162128 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
162129 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
162130
162131 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
162132 --
162133 -- following sets the accounting attributes needed to reverse
162134 -- accounting for a distributeion
162135 --
162136
162137 --
162138 -- 5217187
162139 --
162140 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
162141 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
162142 g_array_event(l_event_id).array_value_num('header_index'));
162143 --
162144 --
162145
162146 -- No reversal code generated
162147
162148 xla_ae_lines_pkg.SetAcctReversalAttrs
162149 (p_event_id => l_event_id
162150 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
162151 ,p_calculate_acctd_flag => l_calculate_acctd_flag
162152 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
162153 END IF;
162154
162155 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
162156 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
162157
162158 --
162159 AcctLineType_92 (
162160 p_application_id => p_application_id
162161 ,p_event_id => l_event_id
162162 ,p_calculate_acctd_flag => l_calculate_acctd_flag
162163 ,p_calculate_g_l_flag => l_calculate_g_l_flag
162164 ,p_actual_flag => l_actual_flag
162165 ,p_balance_type_code => l_balance_type_code
162166 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
162167
162168 , p_source_1 => l_array_source_1(Idx)
162169 , p_source_2 => l_array_source_2(Idx)
162170 , p_source_3 => l_array_source_3(Idx)
162171 , p_source_5 => l_array_source_5(Idx)
162172 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
162173 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
162174 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
162175 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
162176 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
162177 , p_source_11 => l_array_source_11(Idx)
162178 );
162179 If(l_balance_type_code = 'A') THEN
162180 l_actual_gain_loss_ref := l_gain_or_loss_ref;
162181 END IF;
162182
162183 --
162184
162185
162186 --
162187 AcctLineType_124 (
162188 p_application_id => p_application_id
162189 ,p_event_id => l_event_id
162190 ,p_calculate_acctd_flag => l_calculate_acctd_flag
162191 ,p_calculate_g_l_flag => l_calculate_g_l_flag
162192 ,p_actual_flag => l_actual_flag
162193 ,p_balance_type_code => l_balance_type_code
162194 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
162195
162196 , p_source_1 => l_array_source_1(Idx)
162197 , p_source_2 => l_array_source_2(Idx)
162198 , p_source_3 => l_array_source_3(Idx)
162199 , p_source_5 => l_array_source_5(Idx)
162200 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
162201 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
162202 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
162203 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
162204 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
162208 l_actual_gain_loss_ref := l_gain_or_loss_ref;
162205 , p_source_11 => l_array_source_11(Idx)
162206 );
162207 If(l_balance_type_code = 'A') THEN
162209 END IF;
162210
162211 --
162212
162213
162214 --
162215 AcctLineType_136 (
162216 p_application_id => p_application_id
162217 ,p_event_id => l_event_id
162218 ,p_calculate_acctd_flag => l_calculate_acctd_flag
162219 ,p_calculate_g_l_flag => l_calculate_g_l_flag
162220 ,p_actual_flag => l_actual_flag
162221 ,p_balance_type_code => l_balance_type_code
162222 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
162223
162224 , p_source_1 => l_array_source_1(Idx)
162225 , p_source_2 => l_array_source_2(Idx)
162226 , p_source_3 => l_array_source_3(Idx)
162227 , p_source_5 => l_array_source_5(Idx)
162228 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
162229 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
162230 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
162231 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
162232 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
162233 , p_source_11 => l_array_source_11(Idx)
162234 );
162235 If(l_balance_type_code = 'A') THEN
162236 l_actual_gain_loss_ref := l_gain_or_loss_ref;
162237 END IF;
162238
162239 --
162240
162241 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
162242 -- or secondary ledger that has different currency with primary
162243 -- or alc that is calculated by sla
162244 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
162245 (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'))
162246
162247 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
162248 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
162249 AND (l_actual_flag = 'A')) THEN
162250 XLA_AE_LINES_PKG.CreateGainOrLossLines(
162251 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
162252 ,p_application_id => p_application_id
162253 ,p_amb_context_code => 'DEFAULT'
162254 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
162255 ,p_event_class_code => C_EVENT_CLASS_CODE
162256 ,p_event_type_code => C_EVENT_TYPE_CODE
162257
162258 ,p_gain_ccid => -1
162259 ,p_loss_ccid => -1
162260
162261 ,p_actual_flag => l_actual_flag
162262 ,p_enc_flag => null
162263 ,p_actual_g_l_ref => l_actual_gain_loss_ref
162264 ,p_enc_g_l_ref => null
162265 );
162266 END IF;
162267 END IF;
162268 END IF;
162269
162270 ELSE
162271 --
162272 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
162273 --
162274 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162275 trace
162276 (p_msg => 'Trancaction revesal option is Y'
162277 ,p_level => C_LEVEL_STATEMENT
162278 ,p_module => l_log_module);
162279 END IF;
162280 END IF;
162281
162282 END LOOP;
162283 l_result := XLA_AE_LINES_PKG.InsertLines ;
162284 end loop;
162285 close line_cur;
162286
162287
162288 --
162289 -- insert headers into xla_ae_headers_gt table
162290 --
162291 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
162292
162293 -- insert into errors table here.
162294
162295 END LOOP;
162296
162297 --
162298 -- 4865292
162299 --
162300 -- Compare g_hdr_extract_count with event count in
162301 -- CreateHeadersAndLines.
162302 --
162303 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
162304
162305 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162306 trace (p_msg => '# rows extracted from header extract objects '
162307 || ' (running total): '
162308 || g_hdr_extract_count
162309 ,p_level => C_LEVEL_STATEMENT
162310 ,p_module => l_log_module);
162311 END IF;
162312
162313 CLOSE header_cur;
162314 --
162315
162316 --
162317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162318 trace
162319 (p_msg => 'END of EventType_282'
162320 ,p_level => C_LEVEL_PROCEDURE
162321 ,p_module => l_log_module);
162322 END IF;
162323 --
162324 RETURN l_result;
162325 EXCEPTION
162326 WHEN xla_exceptions_pkg.application_exception THEN
162327
162328 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162329
162330
162331 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
162332
162333 RAISE;
162334
162335 WHEN NO_DATA_FOUND THEN
162336
162337 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162338 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
162339
162340 FOR header_record IN header_cur
162341 LOOP
162342 l_array_header_events(header_record.event_id) := header_record.event_id;
162343 END LOOP;
162344
162345 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
162346 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
162347
162348 fnd_file.put_line(fnd_file.LOG, ' ');
162352
162349 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162350 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
162351 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
162353 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
162354 LOOP
162355 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
162356 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
162357 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
162358 END IF;
162359 END LOOP;
162360
162361 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162362 fnd_file.put_line(fnd_file.LOG, ' ');
162363
162364
162365 xla_exceptions_pkg.raise_message
162366 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_282');
162367
162368
162369 WHEN OTHERS THEN
162370 xla_exceptions_pkg.raise_message
162371 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_282');
162372 END EventType_282;
162373 --
162374
162375 ---------------------------------------
162376 --
162377 -- PRIVATE PROCEDURE
162378 -- insert_sources_283
162379 --
162380 ----------------------------------------
162381 --
162382 PROCEDURE insert_sources_283(
162383 p_target_ledger_id IN NUMBER
162384 , p_language IN VARCHAR2
162385 , p_sla_ledger_id IN NUMBER
162386 , p_pad_start_date IN DATE
162387 , p_pad_end_date IN DATE
162388 )
162389 IS
162390
162391 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_IC_SALES_RETURN';
162392 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
162393 p_apps_owner VARCHAR2(30);
162394 l_log_module VARCHAR2(240);
162395 BEGIN
162396 IF g_log_enabled THEN
162397 l_log_module := C_DEFAULT_MODULE||'.insert_sources_283';
162398 END IF;
162399 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162400
162401 trace
162402 (p_msg => 'BEGIN of insert_sources_283'
162403 ,p_level => C_LEVEL_PROCEDURE
162404 ,p_module => l_log_module);
162405
162406 END IF;
162407
162408 -- select APPS owner
162409 SELECT oracle_username
162410 INTO p_apps_owner
162411 FROM fnd_oracle_userid
162412 WHERE read_only_flag = 'U'
162413 ;
162414
162415 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162416 trace
162417 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
162418 ' - p_language = '||p_language||
162419 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
162420 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
162421 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
162422 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
162423 ,p_level => C_LEVEL_STATEMENT
162424 ,p_module => l_log_module);
162425 END IF;
162426
162427
162428 --
162429 INSERT INTO xla_diag_sources --hdr1
162430 (
162431 event_id
162432 , ledger_id
162433 , sla_ledger_id
162434 , description_language
162435 , object_name
162436 , object_type_code
162437 , line_number
162438 , source_application_id
162439 , source_type_code
162440 , source_code
162441 , source_value
162442 , source_meaning
162443 , created_by
162444 , creation_date
162445 , last_update_date
162446 , last_updated_by
162447 , last_update_login
162448 , program_update_date
162449 , program_application_id
162450 , program_id
162451 , request_id
162452 )
162453 SELECT
162454 event_id
162455 , p_target_ledger_id
162456 , p_sla_ledger_id
162457 , p_language
162458 , object_name
162459 , object_type_code
162460 , line_number
162461 , source_application_id
162462 , source_type_code
162463 , source_code
162464 , SUBSTR(source_value ,1,1996)
162465 , SUBSTR(source_meaning,1,200)
162466 , xla_environment_pkg.g_Usr_Id
162467 , TRUNC(SYSDATE)
162468 , TRUNC(SYSDATE)
162469 , xla_environment_pkg.g_Usr_Id
162470 , xla_environment_pkg.g_Login_Id
162471 , TRUNC(SYSDATE)
162472 , xla_environment_pkg.g_Prog_Appl_Id
162473 , xla_environment_pkg.g_Prog_Id
162474 , xla_environment_pkg.g_Req_Id
162475 FROM (
162476 SELECT xet.event_id event_id
162477 , 0 line_number
162478 , CASE r
162479 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
162480 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
162481 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
162482 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
162483 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
162484 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
162485
162486 ELSE null
162487 END object_name
162491 WHEN 3 THEN 'HEADER'
162488 , CASE r
162489 WHEN 1 THEN 'HEADER'
162490 WHEN 2 THEN 'HEADER'
162492 WHEN 4 THEN 'HEADER'
162493 WHEN 5 THEN 'HEADER'
162494 WHEN 6 THEN 'HEADER'
162495
162496 ELSE null
162497 END object_type_code
162498 , CASE r
162499 WHEN 1 THEN '555'
162500 WHEN 2 THEN '555'
162501 WHEN 3 THEN '555'
162502 WHEN 4 THEN '555'
162503 WHEN 5 THEN '555'
162504 WHEN 6 THEN '555'
162505
162506 ELSE null
162507 END source_application_id
162508 , 'S' source_type_code
162509 , CASE r
162510 WHEN 1 THEN 'ENTITY_CODE'
162511 WHEN 2 THEN 'CURRENCY_CODE'
162512 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
162513 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
162514 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
162515 WHEN 6 THEN 'TRANSACTION_DATE'
162516
162517 ELSE null
162518 END source_code
162519 , CASE r
162520 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
162521 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
162522 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
162523 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
162524 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
162525 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
162526
162527 ELSE null
162528 END source_value
162529 , CASE r
162530 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
162531 1010186
162532 ,TO_CHAR(h1.CURRENCY_CODE)
162533 ,'CURRENCY_CODE'
162534 ,'S'
162535 ,555)
162536
162537 ELSE null
162538 END source_meaning
162539 FROM xla_events_gt xet
162540 , GMF_XLA_EXTRACT_HEADERS h1
162541 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
162542 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162543 AND xet.event_type_code = C_EVENT_TYPE_CODE
162544 AND h1.event_id = xet.event_id
162545
162546 )
162547 ;
162548 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162549
162550 trace
162551 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
162552 ,p_level => C_LEVEL_STATEMENT
162553 ,p_module => l_log_module);
162554
162555 END IF;
162556 --
162557
162558
162559
162560 --
162561 INSERT INTO xla_diag_sources --line1
162562 (
162563 event_id
162564 , ledger_id
162565 , sla_ledger_id
162566 , description_language
162567 , object_name
162568 , object_type_code
162569 , line_number
162570 , source_application_id
162571 , source_type_code
162572 , source_code
162573 , source_value
162574 , source_meaning
162575 , created_by
162576 , creation_date
162577 , last_update_date
162578 , last_updated_by
162579 , last_update_login
162580 , program_update_date
162581 , program_application_id
162582 , program_id
162583 , request_id
162584 )
162585 SELECT event_id
162586 , p_target_ledger_id
162587 , p_sla_ledger_id
162588 , p_language
162589 , object_name
162590 , object_type_code
162591 , line_number
162592 , source_application_id
162593 , source_type_code
162594 , source_code
162595 , SUBSTR(source_value,1,1996)
162596 , SUBSTR(source_meaning,1,200)
162597 , xla_environment_pkg.g_Usr_Id
162598 , TRUNC(SYSDATE)
162599 , TRUNC(SYSDATE)
162600 , xla_environment_pkg.g_Usr_Id
162601 , xla_environment_pkg.g_Login_Id
162602 , TRUNC(SYSDATE)
162603 , xla_environment_pkg.g_Prog_Appl_Id
162604 , xla_environment_pkg.g_Prog_Id
162605 , xla_environment_pkg.g_Req_Id
162606 FROM (
162607 SELECT xet.event_id event_id
162608 , l2.line_number line_number
162609 , CASE r
162610 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
162611 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
162612 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
162613 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
162614 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
162615
162616 ELSE null
162617 END object_name
162618 , CASE r
162619 WHEN 1 THEN 'LINE'
162620 WHEN 2 THEN 'LINE'
162621 WHEN 3 THEN 'LINE'
162622 WHEN 4 THEN 'LINE'
162623 WHEN 5 THEN 'LINE'
162624
162625 ELSE null
162626 END object_type_code
162627 , CASE r
162628 WHEN 1 THEN '555'
162629 WHEN 2 THEN '555'
162633
162630 WHEN 3 THEN '555'
162631 WHEN 4 THEN '555'
162632 WHEN 5 THEN '555'
162634 ELSE null
162635 END source_application_id
162636 , 'S' source_type_code
162637 , CASE r
162638 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
162639 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
162640 WHEN 3 THEN 'ENTERED_AMOUNT'
162641 WHEN 4 THEN 'LINE_ID'
162642 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
162643
162644 ELSE null
162645 END source_code
162646 , CASE r
162647 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
162648 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
162649 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
162650 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
162651 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
162652
162653 ELSE null
162654 END source_value
162655 , null source_meaning
162656 FROM xla_events_gt xet
162657 , GMF_XLA_EXTRACT_LINES l2
162658 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162659 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162660 AND xet.event_type_code = C_EVENT_TYPE_CODE
162661 AND l2.event_id = xet.event_id
162662
162663 )
162664 ;
162665 --
162666 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162667
162668 trace
162669 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
162670 ,p_level => C_LEVEL_STATEMENT
162671 ,p_module => l_log_module);
162672
162673 END IF;
162674
162675
162676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162677 trace
162678 (p_msg => 'END of insert_sources_283'
162679 ,p_level => C_LEVEL_PROCEDURE
162680 ,p_module => l_log_module);
162681 END IF;
162682 EXCEPTION
162683 WHEN xla_exceptions_pkg.application_exception THEN
162684 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162685 trace
162686 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162687 ,p_level => C_LEVEL_EXCEPTION
162688 ,p_module => l_log_module);
162689 END IF;
162690 RAISE;
162691 WHEN OTHERS THEN
162692 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162693 trace
162694 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162695 ,p_level => C_LEVEL_EXCEPTION
162696 ,p_module => l_log_module);
162697 END IF;
162698 xla_exceptions_pkg.raise_message
162699 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_283');
162700 END insert_sources_283;
162701 --
162702
162703 ---------------------------------------
162704 --
162705 -- PRIVATE FUNCTION
162706 -- EventType_283
162707 --
162708 ----------------------------------------
162709 --
162710 FUNCTION EventType_283
162711 (p_application_id IN NUMBER
162712 ,p_base_ledger_id IN NUMBER
162713 ,p_target_ledger_id IN NUMBER
162714 ,p_language IN VARCHAR2
162715 ,p_currency_code IN VARCHAR2
162716 ,p_sla_ledger_id IN NUMBER
162717 ,p_pad_start_date IN DATE
162718 ,p_pad_end_date IN DATE
162719 ,p_primary_ledger_id IN NUMBER)
162720 RETURN BOOLEAN IS
162721 --
162722 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_IC_SALES_RETURN';
162723 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
162724
162725 l_calculate_acctd_flag VARCHAR2(1) :='N';
162726 l_calculate_g_l_flag VARCHAR2(1) :='N';
162727 --
162728 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162729 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162730 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162731 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162732 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162733 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162734 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162735 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162736 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162737 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162738 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162739 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162740 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162741 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162742 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162743 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162744 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162745 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162746 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162747 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162751 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162748 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162749 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162750 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
162752 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
162753 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
162754
162755 l_event_id NUMBER;
162756 l_previous_event_id NUMBER;
162757 l_first_event_id NUMBER;
162758 l_last_event_id NUMBER;
162759
162760 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
162761 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
162762 --
162763 --
162764 l_result BOOLEAN := TRUE;
162765 l_rows NUMBER := 1000;
162766 l_event_type_name VARCHAR2(80) := 'Logical InterCompany Sales Return';
162767 l_event_class_name VARCHAR2(80) := 'Logical Intercompany';
162768 l_description VARCHAR2(4000);
162769 l_transaction_reversal NUMBER;
162770 l_ae_header_id NUMBER;
162771 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
162772 l_log_module VARCHAR2(240);
162773 --
162774 l_acct_reversal_source VARCHAR2(30);
162775 l_trx_reversal_source VARCHAR2(30);
162776
162777 l_continue_with_lines BOOLEAN := TRUE;
162778 --
162779 l_acc_rev_gl_date_source DATE; -- 4262811
162780 --
162781 type t_array_event_id is table of number index by binary_integer;
162782
162783 l_rec_array_event t_rec_array_event;
162784 l_null_rec_array_event t_rec_array_event;
162785 l_array_ae_header_id xla_number_array_type;
162786 l_actual_flag VARCHAR2(1) := NULL;
162787 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
162788 l_balance_type_code VARCHAR2(1) :=NULL;
162789 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
162790
162791 --
162792 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
162793 --
162794
162795 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
162796 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
162797 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
162798 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
162799 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
162800 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
162801
162802 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
162803 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
162804 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162805 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
162806 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162807
162808 l_array_source_6 t_array_source_6;
162809 l_array_source_7 t_array_source_7;
162810 l_array_source_8 t_array_source_8;
162811 l_array_source_9 t_array_source_9;
162812 l_array_source_10 t_array_source_10;
162813 l_array_source_12 t_array_source_12;
162814
162815 l_array_source_1 t_array_source_1;
162816 l_array_source_2 t_array_source_2;
162817 l_array_source_3 t_array_source_3;
162818 l_array_source_5 t_array_source_5;
162819 l_array_source_11 t_array_source_11;
162820
162821 --
162822 CURSOR header_cur
162823 IS
162824 SELECT /*+ leading(xet) cardinality(xet,1) */
162825 -- Event Type Code: LOG_IC_SALES_RETURN
162826 -- Event Class Code: LOG_INTERCOMPANY
162827 xet.entity_id
162828 , xet.legal_entity_id
162829 , xet.entity_code
162830 , xet.transaction_number
162831 , xet.event_id
162832 , xet.event_class_code
162833 , xet.event_type_code
162834 , xet.event_number
162835 , xet.event_date
162836 , xet.transaction_date
162837 , xet.reference_num_1
162838 , xet.reference_num_2
162839 , xet.reference_num_3
162840 , xet.reference_num_4
162841 , xet.reference_char_1
162842 , xet.reference_char_2
162843 , xet.reference_char_3
162844 , xet.reference_char_4
162845 , xet.reference_date_1
162846 , xet.reference_date_2
162847 , xet.reference_date_3
162848 , xet.reference_date_4
162849 , xet.event_created_by
162850 , xet.budgetary_control_flag
162851 , h1.ENTITY_CODE source_6
162852 , h1.CURRENCY_CODE source_7
162853 , h1.CURRENCY_CONVERSION_DATE source_8
162854 , h1.CURRENCY_CONVERSION_RATE source_9
162855 , h1.CURRENCY_CONVERSION_TYPE source_10
162856 , h1.TRANSACTION_DATE source_12
162857 FROM xla_events_gt xet
162858 , GMF_XLA_EXTRACT_HEADERS h1
162859 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
162860 and xet.event_type_code = C_EVENT_TYPE_CODE
162864 ;
162861 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
162862
162863 ORDER BY event_id
162865
162866
162867 --
162868 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
162869 IS
162870 SELECT /*+ leading(xet) cardinality(xet,1) */
162871 -- Event Type Code: LOG_IC_SALES_RETURN
162872 -- Event Class Code: LOG_INTERCOMPANY
162873 xet.entity_id
162874 ,xet.legal_entity_id
162875 ,xet.entity_code
162876 ,xet.transaction_number
162877 ,xet.event_id
162878 ,xet.event_class_code
162879 ,xet.event_type_code
162880 ,xet.event_number
162881 ,xet.event_date
162882 ,xet.transaction_date
162883 ,xet.reference_num_1
162884 ,xet.reference_num_2
162885 ,xet.reference_num_3
162886 ,xet.reference_num_4
162887 ,xet.reference_char_1
162888 ,xet.reference_char_2
162889 ,xet.reference_char_3
162890 ,xet.reference_char_4
162891 ,xet.reference_date_1
162892 ,xet.reference_date_2
162893 ,xet.reference_date_3
162894 ,xet.reference_date_4
162895 ,xet.event_created_by
162896 ,xet.budgetary_control_flag , l2.LINE_NUMBER
162897 , l2.TRANSACTION_ACCOUNT_ID source_1
162898 , l2.JOURNAL_LINE_TYPE source_2
162899 , l2.ENTERED_AMOUNT source_3
162900 , l2.LINE_ID source_5
162901 , l2.ACCOUNTED_AMOUNT source_11
162902 FROM xla_events_gt xet
162903 , GMF_XLA_EXTRACT_LINES l2
162904 WHERE xet.event_id between x_first_event_id and x_last_event_id
162905 and xet.event_date between p_pad_start_date and p_pad_end_date
162906 and xet.event_type_code = C_EVENT_TYPE_CODE
162907 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
162908 ;
162909
162910 --
162911 BEGIN
162912 IF g_log_enabled THEN
162913 l_log_module := C_DEFAULT_MODULE||'.EventType_283';
162914 END IF;
162915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162916 trace
162917 (p_msg => 'BEGIN of EventType_283'
162918 ,p_level => C_LEVEL_PROCEDURE
162919 ,p_module => l_log_module);
162920 END IF;
162921
162922 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162923 trace
162924 (p_msg => 'p_application_id = '||p_application_id||
162925 ' - p_base_ledger_id = '||p_base_ledger_id||
162926 ' - p_target_ledger_id = '||p_target_ledger_id||
162927 ' - p_language = '||p_language||
162928 ' - p_currency_code = '||p_currency_code||
162929 ' - p_sla_ledger_id = '||p_sla_ledger_id
162930 ,p_level => C_LEVEL_STATEMENT
162931 ,p_module => l_log_module);
162932 END IF;
162933 --
162934 -- initialze arrays
162935 --
162936 g_array_event.DELETE;
162937 l_rec_array_event := l_null_rec_array_event;
162938 --
162939 --------------------------------------
162940 -- 4262811 Initialze MPA Line Number
162941 --------------------------------------
162942 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
162943
162944 --
162945
162946 --
162947 OPEN header_cur;
162948 --
162949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162950 trace
162951 (p_msg => 'SQL - FETCH header_cur'
162952 ,p_level => C_LEVEL_STATEMENT
162953 ,p_module => l_log_module);
162954 END IF;
162955 --
162956 LOOP
162957 FETCH header_cur BULK COLLECT INTO
162958 l_array_entity_id
162959 , l_array_legal_entity_id
162960 , l_array_entity_code
162961 , l_array_transaction_num
162962 , l_array_event_id
162963 , l_array_class_code
162964 , l_array_event_type
162965 , l_array_event_number
162966 , l_array_event_date
162967 , l_array_transaction_date
162968 , l_array_reference_num_1
162969 , l_array_reference_num_2
162970 , l_array_reference_num_3
162971 , l_array_reference_num_4
162972 , l_array_reference_char_1
162973 , l_array_reference_char_2
162974 , l_array_reference_char_3
162975 , l_array_reference_char_4
162976 , l_array_reference_date_1
162977 , l_array_reference_date_2
162978 , l_array_reference_date_3
162979 , l_array_reference_date_4
162980 , l_array_event_created_by
162981 , l_array_budgetary_control_flag
162982 , l_array_source_6
162983 , l_array_source_7
162984 , l_array_source_8
162985 , l_array_source_9
162986 , l_array_source_10
162987 , l_array_source_12
162988 LIMIT l_rows;
162989 --
162990 IF (C_LEVEL_EVENT >= g_log_level) THEN
162991 trace
162992 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
162993 ,p_level => C_LEVEL_EVENT
162994 ,p_module => l_log_module);
162995 END IF;
162996 --
162997 EXIT WHEN l_array_entity_id.COUNT = 0;
162998
162999 -- initialize arrays
163000 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
163001 XLA_AE_LINES_PKG.g_rec_lines := NULL;
163002
163003 --
163004 -- Bug 4458708
163005 --
163006 XLA_AE_LINES_PKG.g_LineNumber := 0;
163007
163008
163009 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
163010 g_last_hdr_idx := l_array_event_id.LAST;
163011 --
163012 -- loop for the headers. Each iteration is for each header extract row
163013 -- fetched in header cursor
163014 --
163018 -- set event info as cache for other routines to refer event attributes
163015 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
163016
163017 --
163019 --
163020 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
163021 (p_application_id => p_application_id
163022 ,p_primary_ledger_id => p_primary_ledger_id
163023 ,p_base_ledger_id => p_base_ledger_id
163024 ,p_target_ledger_id => p_target_ledger_id
163025 ,p_entity_id => l_array_entity_id(hdr_idx)
163026 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
163027 ,p_entity_code => l_array_entity_code(hdr_idx)
163028 ,p_transaction_num => l_array_transaction_num(hdr_idx)
163029 ,p_event_id => l_array_event_id(hdr_idx)
163030 ,p_event_class_code => l_array_class_code(hdr_idx)
163031 ,p_event_type_code => l_array_event_type(hdr_idx)
163032 ,p_event_number => l_array_event_number(hdr_idx)
163033 ,p_event_date => l_array_event_date(hdr_idx)
163034 ,p_transaction_date => l_array_transaction_date(hdr_idx)
163035 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
163036 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
163037 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
163038 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
163039 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
163040 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
163041 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
163042 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
163043 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
163044 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
163045 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
163046 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
163047 ,p_event_created_by => l_array_event_created_by(hdr_idx)
163048 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
163049
163050 --
163051 -- set the status of entry to C_VALID (0)
163052 --
163053 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
163054
163055 --
163056 -- initialize a row for ae header
163057 --
163058 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
163059
163060 l_event_id := l_array_event_id(hdr_idx);
163061
163062 --
163063 -- storing the hdr_idx for event. May be used by line cursor.
163064 --
163065 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
163066
163067 --
163068 -- store sources from header extract. This can be improved to
163069 -- store only those sources from header extract that may be used in lines
163070 --
163071
163072 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
163073 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
163074 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
163075 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
163076 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
163077 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
163078
163079 --
163080 -- initilaize the status of ae headers for diffrent balance types
163081 -- the status is initialised to C_NOT_CREATED (2)
163082 --
163083 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
163084 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
163085 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
163086
163087 --
163088 -- call api to validate and store accounting attributes for header
163089 --
163090
163091 ------------------------------------------------------------
163092 -- Accrual Reversal : to get date for Standard Source (NONE)
163093 ------------------------------------------------------------
163094 l_acc_rev_gl_date_source := NULL;
163095
163096 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
163097 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
163098
163099
163100 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
163101
163102 XLA_AE_HEADER_PKG.SetJeCategoryName;
163103
163104 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
163105 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
163106 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
163107 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
163108 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
163109
163110
163111 -- No header level analytical criteria
163112
163113 --
163114 --accounting attribute enhancement, bug 3612931
163115 --
163116 l_trx_reversal_source := SUBSTR(NULL, 1,30);
163117
163118 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
163119 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
163120
163121 xla_accounting_err_pkg.build_message
163122 (p_appli_s_name => 'XLA'
163123 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
163127 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
163124 ,p_token_1 => 'ACCT_ATTR_NAME'
163125 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
163126 ,p_token_2 => 'PRODUCT_NAME'
163128 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
163129 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
163130 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
163131
163132 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
163133 --
163134 -- following sets the accounting attributes needed to reverse
163135 -- accounting for a distributeion
163136 --
163137 xla_ae_lines_pkg.SetTrxReversalAttrs
163138 (p_event_id => l_event_id
163139 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
163140 ,p_trx_reversal_source => l_trx_reversal_source);
163141
163142 END IF;
163143
163144
163145 ----------------------------------------------------------------
163146 -- 4262811 - update the header statuses to invalid in need be
163147 ----------------------------------------------------------------
163148 --
163149 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
163150
163151
163152 -----------------------------------------------
163153 -- No accrual reversal for the event class/type
163154 -----------------------------------------------
163155 ----------------------------------------------------------------
163156
163157 --
163158 -- this ends the header loop iteration for one bulk fetch
163159 --
163160 END LOOP;
163161
163162 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
163163 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
163164
163165 --
163166 -- insert dummy rows into lines gt table that were created due to
163167 -- transaction reversals
163168 --
163169 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
163170 l_result := XLA_AE_LINES_PKG.InsertLines;
163171 END IF;
163172
163173 --
163174 -- reset the temp_line_num for each set of events fetched from header
163175 -- cursor rather than doing it for each new event in line cursor
163176 -- Bug 3939231
163177 --
163178 xla_ae_lines_pkg.g_temp_line_num := 0;
163179
163180
163181
163182 --
163183 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
163184 --
163185 --
163186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163187
163188 trace
163189 (p_msg => 'SQL - FETCH line_cur'
163190 ,p_level => C_LEVEL_STATEMENT
163191 ,p_module => l_log_module);
163192
163193 END IF;
163194 --
163195 --
163196 LOOP
163197 --
163198 FETCH line_cur BULK COLLECT INTO
163199 l_array_entity_id
163200 , l_array_legal_entity_id
163201 , l_array_entity_code
163202 , l_array_transaction_num
163203 , l_array_event_id
163204 , l_array_class_code
163205 , l_array_event_type
163206 , l_array_event_number
163207 , l_array_event_date
163208 , l_array_transaction_date
163209 , l_array_reference_num_1
163210 , l_array_reference_num_2
163211 , l_array_reference_num_3
163212 , l_array_reference_num_4
163213 , l_array_reference_char_1
163214 , l_array_reference_char_2
163215 , l_array_reference_char_3
163216 , l_array_reference_char_4
163217 , l_array_reference_date_1
163218 , l_array_reference_date_2
163219 , l_array_reference_date_3
163220 , l_array_reference_date_4
163221 , l_array_event_created_by
163222 , l_array_budgetary_control_flag
163223 , l_array_extract_line_num
163224 , l_array_source_1
163225 , l_array_source_2
163226 , l_array_source_3
163227 , l_array_source_5
163228 , l_array_source_11
163229 LIMIT l_rows;
163230
163231 --
163232 IF (C_LEVEL_EVENT >= g_log_level) THEN
163233 trace
163234 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
163235 ,p_level => C_LEVEL_EVENT
163236 ,p_module => l_log_module);
163237 END IF;
163238 --
163239 EXIT WHEN l_array_entity_id.count = 0;
163240
163241 XLA_AE_LINES_PKG.g_rec_lines := null;
163242
163243 --
163244 -- Bug 4458708
163245 --
163246 XLA_AE_LINES_PKG.g_LineNumber := 0;
163247 --
163248 --
163249
163250 FOR Idx IN 1..l_array_event_id.count LOOP
163251 --
163252 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
163253 --
163254 l_event_id := l_array_event_id(idx); -- 5648433
163255
163256 --
163257 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163258 --
163259
163260 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
163261 (g_array_event(l_event_id).array_value_num('header_index'))
163262 ,'N'
163263 ) <> 'Y'
163264 THEN
163265 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163266 trace
163267 (p_msg => 'Trancaction revesal option is not Y '
163268 ,p_level => C_LEVEL_STATEMENT
163269 ,p_module => l_log_module);
163270 END IF;
163271
163275 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
163272 --
163273 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
163274 --
163276 --
163277 -- set event info as cache for other routines to refer event attributes
163278 --
163279
163280 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
163281 l_previous_event_id := l_event_id;
163282
163283 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
163284 (p_application_id => p_application_id
163285 ,p_primary_ledger_id => p_primary_ledger_id
163286 ,p_base_ledger_id => p_base_ledger_id
163287 ,p_target_ledger_id => p_target_ledger_id
163288 ,p_entity_id => l_array_entity_id(Idx)
163289 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
163290 ,p_entity_code => l_array_entity_code(Idx)
163291 ,p_transaction_num => l_array_transaction_num(Idx)
163292 ,p_event_id => l_array_event_id(Idx)
163293 ,p_event_class_code => l_array_class_code(Idx)
163294 ,p_event_type_code => l_array_event_type(Idx)
163295 ,p_event_number => l_array_event_number(Idx)
163296 ,p_event_date => l_array_event_date(Idx)
163297 ,p_transaction_date => l_array_transaction_date(Idx)
163298 ,p_reference_num_1 => l_array_reference_num_1(Idx)
163299 ,p_reference_num_2 => l_array_reference_num_2(Idx)
163300 ,p_reference_num_3 => l_array_reference_num_3(Idx)
163301 ,p_reference_num_4 => l_array_reference_num_4(Idx)
163302 ,p_reference_char_1 => l_array_reference_char_1(Idx)
163303 ,p_reference_char_2 => l_array_reference_char_2(Idx)
163304 ,p_reference_char_3 => l_array_reference_char_3(Idx)
163305 ,p_reference_char_4 => l_array_reference_char_4(Idx)
163306 ,p_reference_date_1 => l_array_reference_date_1(Idx)
163307 ,p_reference_date_2 => l_array_reference_date_2(Idx)
163308 ,p_reference_date_3 => l_array_reference_date_3(Idx)
163309 ,p_reference_date_4 => l_array_reference_date_4(Idx)
163310 ,p_event_created_by => l_array_event_created_by(Idx)
163311 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
163312 --
163313 END IF;
163314
163315
163316
163317 --
163318 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
163319
163320 l_acct_reversal_source := SUBSTR(NULL, 1,30);
163321
163322 IF l_continue_with_lines THEN
163323 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
163324 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
163325
163326 xla_accounting_err_pkg.build_message
163327 (p_appli_s_name => 'XLA'
163328 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
163329 ,p_token_1 => 'LINE_NUMBER'
163330 ,p_value_1 => l_array_extract_line_num(Idx)
163331 ,p_token_2 => 'PRODUCT_NAME'
163332 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
163333 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
163334 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
163335 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
163336
163337 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
163338 --
163339 -- following sets the accounting attributes needed to reverse
163340 -- accounting for a distributeion
163341 --
163342
163343 --
163344 -- 5217187
163345 --
163346 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
163347 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
163348 g_array_event(l_event_id).array_value_num('header_index'));
163349 --
163350 --
163351
163352 -- No reversal code generated
163353
163354 xla_ae_lines_pkg.SetAcctReversalAttrs
163355 (p_event_id => l_event_id
163356 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
163357 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163358 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
163359 END IF;
163360
163361 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
163362 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
163363
163364 --
163365 AcctLineType_108 (
163366 p_application_id => p_application_id
163367 ,p_event_id => l_event_id
163368 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163369 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163370 ,p_actual_flag => l_actual_flag
163371 ,p_balance_type_code => l_balance_type_code
163372 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163373
163374 , p_source_1 => l_array_source_1(Idx)
163375 , p_source_2 => l_array_source_2(Idx)
163376 , p_source_3 => l_array_source_3(Idx)
163377 , p_source_5 => l_array_source_5(Idx)
163378 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
163379 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
163380 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
163381 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
163385 If(l_balance_type_code = 'A') THEN
163382 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
163383 , p_source_11 => l_array_source_11(Idx)
163384 );
163386 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163387 END IF;
163388
163389 --
163390
163391
163392 --
163393 AcctLineType_125 (
163394 p_application_id => p_application_id
163395 ,p_event_id => l_event_id
163396 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163397 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163398 ,p_actual_flag => l_actual_flag
163399 ,p_balance_type_code => l_balance_type_code
163400 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163401
163402 , p_source_1 => l_array_source_1(Idx)
163403 , p_source_2 => l_array_source_2(Idx)
163404 , p_source_3 => l_array_source_3(Idx)
163405 , p_source_5 => l_array_source_5(Idx)
163406 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
163407 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
163408 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
163409 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
163410 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
163411 , p_source_11 => l_array_source_11(Idx)
163412 );
163413 If(l_balance_type_code = 'A') THEN
163414 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163415 END IF;
163416
163417 --
163418
163419
163420 --
163421 AcctLineType_152 (
163422 p_application_id => p_application_id
163423 ,p_event_id => l_event_id
163424 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163425 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163426 ,p_actual_flag => l_actual_flag
163427 ,p_balance_type_code => l_balance_type_code
163428 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163429
163430 , p_source_1 => l_array_source_1(Idx)
163431 , p_source_2 => l_array_source_2(Idx)
163432 , p_source_3 => l_array_source_3(Idx)
163433 , p_source_5 => l_array_source_5(Idx)
163434 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
163435 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
163436 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
163437 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
163438 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
163439 , p_source_11 => l_array_source_11(Idx)
163440 );
163441 If(l_balance_type_code = 'A') THEN
163442 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163443 END IF;
163444
163445 --
163446
163447 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
163448 -- or secondary ledger that has different currency with primary
163449 -- or alc that is calculated by sla
163450 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
163451 (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'))
163452
163453 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
163454 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
163455 AND (l_actual_flag = 'A')) THEN
163456 XLA_AE_LINES_PKG.CreateGainOrLossLines(
163457 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
163458 ,p_application_id => p_application_id
163459 ,p_amb_context_code => 'DEFAULT'
163460 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
163461 ,p_event_class_code => C_EVENT_CLASS_CODE
163462 ,p_event_type_code => C_EVENT_TYPE_CODE
163463
163464 ,p_gain_ccid => -1
163465 ,p_loss_ccid => -1
163466
163467 ,p_actual_flag => l_actual_flag
163468 ,p_enc_flag => null
163469 ,p_actual_g_l_ref => l_actual_gain_loss_ref
163470 ,p_enc_g_l_ref => null
163471 );
163472 END IF;
163473 END IF;
163474 END IF;
163475
163476 ELSE
163477 --
163478 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163479 --
163480 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163481 trace
163482 (p_msg => 'Trancaction revesal option is Y'
163483 ,p_level => C_LEVEL_STATEMENT
163484 ,p_module => l_log_module);
163485 END IF;
163486 END IF;
163487
163488 END LOOP;
163489 l_result := XLA_AE_LINES_PKG.InsertLines ;
163490 end loop;
163491 close line_cur;
163492
163493
163494 --
163495 -- insert headers into xla_ae_headers_gt table
163496 --
163497 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
163498
163499 -- insert into errors table here.
163500
163501 END LOOP;
163502
163503 --
163504 -- 4865292
163505 --
163506 -- Compare g_hdr_extract_count with event count in
163507 -- CreateHeadersAndLines.
163508 --
163509 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
163510
163511 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163512 trace (p_msg => '# rows extracted from header extract objects '
163513 || ' (running total): '
163514 || g_hdr_extract_count
163515 ,p_level => C_LEVEL_STATEMENT
163516 ,p_module => l_log_module);
163517 END IF;
163521
163518
163519 CLOSE header_cur;
163520 --
163522 --
163523 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163524 trace
163525 (p_msg => 'END of EventType_283'
163526 ,p_level => C_LEVEL_PROCEDURE
163527 ,p_module => l_log_module);
163528 END IF;
163529 --
163530 RETURN l_result;
163531 EXCEPTION
163532 WHEN xla_exceptions_pkg.application_exception THEN
163533
163534 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163535
163536
163537 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
163538
163539 RAISE;
163540
163541 WHEN NO_DATA_FOUND THEN
163542
163543 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163544 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
163545
163546 FOR header_record IN header_cur
163547 LOOP
163548 l_array_header_events(header_record.event_id) := header_record.event_id;
163549 END LOOP;
163550
163551 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
163552 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
163553
163554 fnd_file.put_line(fnd_file.LOG, ' ');
163555 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163556 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
163557 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
163558
163559 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
163560 LOOP
163561 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
163562 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
163563 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
163564 END IF;
163565 END LOOP;
163566
163567 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163568 fnd_file.put_line(fnd_file.LOG, ' ');
163569
163570
163571 xla_exceptions_pkg.raise_message
163572 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_283');
163573
163574
163575 WHEN OTHERS THEN
163576 xla_exceptions_pkg.raise_message
163577 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_283');
163578 END EventType_283;
163579 --
163580
163581 ---------------------------------------
163582 --
163583 -- PRIVATE PROCEDURE
163584 -- insert_sources_284
163585 --
163586 ----------------------------------------
163587 --
163588 PROCEDURE insert_sources_284(
163589 p_target_ledger_id IN NUMBER
163590 , p_language IN VARCHAR2
163591 , p_sla_ledger_id IN NUMBER
163592 , p_pad_start_date IN DATE
163593 , p_pad_end_date IN DATE
163594 )
163595 IS
163596
163597 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_IC_SHIPMENT_RCPT';
163598 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
163599 p_apps_owner VARCHAR2(30);
163600 l_log_module VARCHAR2(240);
163601 BEGIN
163602 IF g_log_enabled THEN
163603 l_log_module := C_DEFAULT_MODULE||'.insert_sources_284';
163604 END IF;
163605 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163606
163607 trace
163608 (p_msg => 'BEGIN of insert_sources_284'
163609 ,p_level => C_LEVEL_PROCEDURE
163610 ,p_module => l_log_module);
163611
163612 END IF;
163613
163614 -- select APPS owner
163615 SELECT oracle_username
163616 INTO p_apps_owner
163617 FROM fnd_oracle_userid
163618 WHERE read_only_flag = 'U'
163619 ;
163620
163621 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163622 trace
163623 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
163624 ' - p_language = '||p_language||
163625 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
163626 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
163627 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
163628 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
163629 ,p_level => C_LEVEL_STATEMENT
163630 ,p_module => l_log_module);
163631 END IF;
163632
163633
163634 --
163635 INSERT INTO xla_diag_sources --hdr1
163636 (
163637 event_id
163638 , ledger_id
163639 , sla_ledger_id
163640 , description_language
163641 , object_name
163642 , object_type_code
163643 , line_number
163644 , source_application_id
163645 , source_type_code
163646 , source_code
163647 , source_value
163648 , source_meaning
163649 , created_by
163650 , creation_date
163651 , last_update_date
163652 , last_updated_by
163653 , last_update_login
163654 , program_update_date
163655 , program_application_id
163656 , program_id
163657 , request_id
163658 )
163659 SELECT
163660 event_id
163661 , p_target_ledger_id
163662 , p_sla_ledger_id
163663 , p_language
163664 , object_name
163665 , object_type_code
163666 , line_number
163670 , SUBSTR(source_value ,1,1996)
163667 , source_application_id
163668 , source_type_code
163669 , source_code
163671 , SUBSTR(source_meaning,1,200)
163672 , xla_environment_pkg.g_Usr_Id
163673 , TRUNC(SYSDATE)
163674 , TRUNC(SYSDATE)
163675 , xla_environment_pkg.g_Usr_Id
163676 , xla_environment_pkg.g_Login_Id
163677 , TRUNC(SYSDATE)
163678 , xla_environment_pkg.g_Prog_Appl_Id
163679 , xla_environment_pkg.g_Prog_Id
163680 , xla_environment_pkg.g_Req_Id
163681 FROM (
163682 SELECT xet.event_id event_id
163683 , 0 line_number
163684 , CASE r
163685 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
163686 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
163687 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
163688 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
163689 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
163690 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
163691
163692 ELSE null
163693 END object_name
163694 , CASE r
163695 WHEN 1 THEN 'HEADER'
163696 WHEN 2 THEN 'HEADER'
163697 WHEN 3 THEN 'HEADER'
163698 WHEN 4 THEN 'HEADER'
163699 WHEN 5 THEN 'HEADER'
163700 WHEN 6 THEN 'HEADER'
163701
163702 ELSE null
163703 END object_type_code
163704 , CASE r
163705 WHEN 1 THEN '555'
163706 WHEN 2 THEN '555'
163707 WHEN 3 THEN '555'
163708 WHEN 4 THEN '555'
163709 WHEN 5 THEN '555'
163710 WHEN 6 THEN '555'
163711
163712 ELSE null
163713 END source_application_id
163714 , 'S' source_type_code
163715 , CASE r
163716 WHEN 1 THEN 'ENTITY_CODE'
163717 WHEN 2 THEN 'CURRENCY_CODE'
163718 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
163719 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
163720 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
163721 WHEN 6 THEN 'TRANSACTION_DATE'
163722
163723 ELSE null
163724 END source_code
163725 , CASE r
163726 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
163727 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
163728 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
163729 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
163730 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
163731 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
163732
163733 ELSE null
163734 END source_value
163735 , CASE r
163736 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
163737 1010186
163738 ,TO_CHAR(h1.CURRENCY_CODE)
163739 ,'CURRENCY_CODE'
163740 ,'S'
163741 ,555)
163742
163743 ELSE null
163744 END source_meaning
163745 FROM xla_events_gt xet
163746 , GMF_XLA_EXTRACT_HEADERS h1
163747 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
163748 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163749 AND xet.event_type_code = C_EVENT_TYPE_CODE
163750 AND h1.event_id = xet.event_id
163751
163752 )
163753 ;
163754 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163755
163756 trace
163757 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
163758 ,p_level => C_LEVEL_STATEMENT
163759 ,p_module => l_log_module);
163760
163761 END IF;
163762 --
163763
163764
163765
163766 --
163767 INSERT INTO xla_diag_sources --line1
163768 (
163769 event_id
163770 , ledger_id
163771 , sla_ledger_id
163772 , description_language
163773 , object_name
163774 , object_type_code
163775 , line_number
163776 , source_application_id
163777 , source_type_code
163778 , source_code
163779 , source_value
163780 , source_meaning
163781 , created_by
163782 , creation_date
163783 , last_update_date
163784 , last_updated_by
163785 , last_update_login
163786 , program_update_date
163787 , program_application_id
163788 , program_id
163789 , request_id
163790 )
163791 SELECT event_id
163792 , p_target_ledger_id
163793 , p_sla_ledger_id
163794 , p_language
163795 , object_name
163796 , object_type_code
163797 , line_number
163798 , source_application_id
163799 , source_type_code
163800 , source_code
163801 , SUBSTR(source_value,1,1996)
163802 , SUBSTR(source_meaning,1,200)
163803 , xla_environment_pkg.g_Usr_Id
163804 , TRUNC(SYSDATE)
163805 , TRUNC(SYSDATE)
163806 , xla_environment_pkg.g_Usr_Id
163807 , xla_environment_pkg.g_Login_Id
163808 , TRUNC(SYSDATE)
163812 FROM (
163809 , xla_environment_pkg.g_Prog_Appl_Id
163810 , xla_environment_pkg.g_Prog_Id
163811 , xla_environment_pkg.g_Req_Id
163813 SELECT xet.event_id event_id
163814 , l2.line_number line_number
163815 , CASE r
163816 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
163817 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
163818 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
163819 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
163820 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
163821
163822 ELSE null
163823 END object_name
163824 , CASE r
163825 WHEN 1 THEN 'LINE'
163826 WHEN 2 THEN 'LINE'
163827 WHEN 3 THEN 'LINE'
163828 WHEN 4 THEN 'LINE'
163829 WHEN 5 THEN 'LINE'
163830
163831 ELSE null
163832 END object_type_code
163833 , CASE r
163834 WHEN 1 THEN '555'
163835 WHEN 2 THEN '555'
163836 WHEN 3 THEN '555'
163837 WHEN 4 THEN '555'
163838 WHEN 5 THEN '555'
163839
163840 ELSE null
163841 END source_application_id
163842 , 'S' source_type_code
163843 , CASE r
163844 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
163845 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
163846 WHEN 3 THEN 'ENTERED_AMOUNT'
163847 WHEN 4 THEN 'LINE_ID'
163848 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
163849
163850 ELSE null
163851 END source_code
163852 , CASE r
163853 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
163854 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
163855 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
163856 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
163857 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
163858
163859 ELSE null
163860 END source_value
163861 , null source_meaning
163862 FROM xla_events_gt xet
163863 , GMF_XLA_EXTRACT_LINES l2
163864 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
163865 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163866 AND xet.event_type_code = C_EVENT_TYPE_CODE
163867 AND l2.event_id = xet.event_id
163868
163869 )
163870 ;
163871 --
163872 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163873
163874 trace
163875 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
163876 ,p_level => C_LEVEL_STATEMENT
163877 ,p_module => l_log_module);
163878
163879 END IF;
163880
163881
163882 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163883 trace
163884 (p_msg => 'END of insert_sources_284'
163885 ,p_level => C_LEVEL_PROCEDURE
163886 ,p_module => l_log_module);
163887 END IF;
163888 EXCEPTION
163889 WHEN xla_exceptions_pkg.application_exception THEN
163890 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163891 trace
163892 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163893 ,p_level => C_LEVEL_EXCEPTION
163894 ,p_module => l_log_module);
163895 END IF;
163896 RAISE;
163897 WHEN OTHERS THEN
163898 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163899 trace
163900 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163901 ,p_level => C_LEVEL_EXCEPTION
163902 ,p_module => l_log_module);
163903 END IF;
163904 xla_exceptions_pkg.raise_message
163905 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_284');
163906 END insert_sources_284;
163907 --
163908
163909 ---------------------------------------
163910 --
163911 -- PRIVATE FUNCTION
163912 -- EventType_284
163913 --
163914 ----------------------------------------
163915 --
163916 FUNCTION EventType_284
163917 (p_application_id IN NUMBER
163918 ,p_base_ledger_id IN NUMBER
163919 ,p_target_ledger_id IN NUMBER
163920 ,p_language IN VARCHAR2
163921 ,p_currency_code IN VARCHAR2
163922 ,p_sla_ledger_id IN NUMBER
163923 ,p_pad_start_date IN DATE
163924 ,p_pad_end_date IN DATE
163925 ,p_primary_ledger_id IN NUMBER)
163926 RETURN BOOLEAN IS
163927 --
163928 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_IC_SHIPMENT_RCPT';
163929 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
163930
163931 l_calculate_acctd_flag VARCHAR2(1) :='N';
163932 l_calculate_g_l_flag VARCHAR2(1) :='N';
163933 --
163934 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163935 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163936 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163940 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163937 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163938 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163939 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163941 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163942 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163943 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163944 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163945 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163946 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163947 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163948 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163949 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163950 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163951 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163952 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163953 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163954 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163955 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163956 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
163957 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163958 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
163959 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
163960
163961 l_event_id NUMBER;
163962 l_previous_event_id NUMBER;
163963 l_first_event_id NUMBER;
163964 l_last_event_id NUMBER;
163965
163966 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
163967 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
163968 --
163969 --
163970 l_result BOOLEAN := TRUE;
163971 l_rows NUMBER := 1000;
163972 l_event_type_name VARCHAR2(80) := 'Logical InterCompany Receipt';
163973 l_event_class_name VARCHAR2(80) := 'Logical Intercompany';
163974 l_description VARCHAR2(4000);
163975 l_transaction_reversal NUMBER;
163976 l_ae_header_id NUMBER;
163977 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
163978 l_log_module VARCHAR2(240);
163979 --
163980 l_acct_reversal_source VARCHAR2(30);
163981 l_trx_reversal_source VARCHAR2(30);
163982
163983 l_continue_with_lines BOOLEAN := TRUE;
163984 --
163985 l_acc_rev_gl_date_source DATE; -- 4262811
163986 --
163987 type t_array_event_id is table of number index by binary_integer;
163988
163989 l_rec_array_event t_rec_array_event;
163990 l_null_rec_array_event t_rec_array_event;
163991 l_array_ae_header_id xla_number_array_type;
163992 l_actual_flag VARCHAR2(1) := NULL;
163993 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
163994 l_balance_type_code VARCHAR2(1) :=NULL;
163995 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
163996
163997 --
163998 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
163999 --
164000
164001 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
164002 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
164003 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
164004 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
164005 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
164006 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
164007
164008 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
164009 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
164010 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
164011 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
164012 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
164013
164014 l_array_source_6 t_array_source_6;
164015 l_array_source_7 t_array_source_7;
164016 l_array_source_8 t_array_source_8;
164017 l_array_source_9 t_array_source_9;
164018 l_array_source_10 t_array_source_10;
164019 l_array_source_12 t_array_source_12;
164020
164021 l_array_source_1 t_array_source_1;
164022 l_array_source_2 t_array_source_2;
164023 l_array_source_3 t_array_source_3;
164024 l_array_source_5 t_array_source_5;
164025 l_array_source_11 t_array_source_11;
164026
164027 --
164028 CURSOR header_cur
164029 IS
164030 SELECT /*+ leading(xet) cardinality(xet,1) */
164034 , xet.legal_entity_id
164031 -- Event Type Code: LOG_IC_SHIPMENT_RCPT
164032 -- Event Class Code: LOG_INTERCOMPANY
164033 xet.entity_id
164035 , xet.entity_code
164036 , xet.transaction_number
164037 , xet.event_id
164038 , xet.event_class_code
164039 , xet.event_type_code
164040 , xet.event_number
164041 , xet.event_date
164042 , xet.transaction_date
164043 , xet.reference_num_1
164044 , xet.reference_num_2
164045 , xet.reference_num_3
164046 , xet.reference_num_4
164047 , xet.reference_char_1
164048 , xet.reference_char_2
164049 , xet.reference_char_3
164050 , xet.reference_char_4
164051 , xet.reference_date_1
164052 , xet.reference_date_2
164053 , xet.reference_date_3
164054 , xet.reference_date_4
164055 , xet.event_created_by
164056 , xet.budgetary_control_flag
164057 , h1.ENTITY_CODE source_6
164058 , h1.CURRENCY_CODE source_7
164059 , h1.CURRENCY_CONVERSION_DATE source_8
164060 , h1.CURRENCY_CONVERSION_RATE source_9
164061 , h1.CURRENCY_CONVERSION_TYPE source_10
164062 , h1.TRANSACTION_DATE source_12
164063 FROM xla_events_gt xet
164064 , GMF_XLA_EXTRACT_HEADERS h1
164065 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
164066 and xet.event_type_code = C_EVENT_TYPE_CODE
164067 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
164068
164069 ORDER BY event_id
164070 ;
164071
164072
164073 --
164074 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
164075 IS
164076 SELECT /*+ leading(xet) cardinality(xet,1) */
164077 -- Event Type Code: LOG_IC_SHIPMENT_RCPT
164078 -- Event Class Code: LOG_INTERCOMPANY
164079 xet.entity_id
164080 ,xet.legal_entity_id
164081 ,xet.entity_code
164082 ,xet.transaction_number
164083 ,xet.event_id
164084 ,xet.event_class_code
164085 ,xet.event_type_code
164086 ,xet.event_number
164087 ,xet.event_date
164088 ,xet.transaction_date
164089 ,xet.reference_num_1
164090 ,xet.reference_num_2
164091 ,xet.reference_num_3
164092 ,xet.reference_num_4
164093 ,xet.reference_char_1
164094 ,xet.reference_char_2
164095 ,xet.reference_char_3
164096 ,xet.reference_char_4
164097 ,xet.reference_date_1
164098 ,xet.reference_date_2
164099 ,xet.reference_date_3
164100 ,xet.reference_date_4
164101 ,xet.event_created_by
164102 ,xet.budgetary_control_flag , l2.LINE_NUMBER
164103 , l2.TRANSACTION_ACCOUNT_ID source_1
164104 , l2.JOURNAL_LINE_TYPE source_2
164105 , l2.ENTERED_AMOUNT source_3
164106 , l2.LINE_ID source_5
164107 , l2.ACCOUNTED_AMOUNT source_11
164108 FROM xla_events_gt xet
164109 , GMF_XLA_EXTRACT_LINES l2
164110 WHERE xet.event_id between x_first_event_id and x_last_event_id
164111 and xet.event_date between p_pad_start_date and p_pad_end_date
164112 and xet.event_type_code = C_EVENT_TYPE_CODE
164113 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
164114 ;
164115
164116 --
164117 BEGIN
164118 IF g_log_enabled THEN
164119 l_log_module := C_DEFAULT_MODULE||'.EventType_284';
164120 END IF;
164121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164122 trace
164123 (p_msg => 'BEGIN of EventType_284'
164124 ,p_level => C_LEVEL_PROCEDURE
164125 ,p_module => l_log_module);
164126 END IF;
164127
164128 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164129 trace
164130 (p_msg => 'p_application_id = '||p_application_id||
164131 ' - p_base_ledger_id = '||p_base_ledger_id||
164132 ' - p_target_ledger_id = '||p_target_ledger_id||
164133 ' - p_language = '||p_language||
164134 ' - p_currency_code = '||p_currency_code||
164135 ' - p_sla_ledger_id = '||p_sla_ledger_id
164136 ,p_level => C_LEVEL_STATEMENT
164137 ,p_module => l_log_module);
164138 END IF;
164139 --
164140 -- initialze arrays
164141 --
164142 g_array_event.DELETE;
164143 l_rec_array_event := l_null_rec_array_event;
164144 --
164145 --------------------------------------
164146 -- 4262811 Initialze MPA Line Number
164147 --------------------------------------
164148 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
164149
164150 --
164151
164152 --
164153 OPEN header_cur;
164154 --
164155 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164156 trace
164157 (p_msg => 'SQL - FETCH header_cur'
164158 ,p_level => C_LEVEL_STATEMENT
164159 ,p_module => l_log_module);
164160 END IF;
164161 --
164162 LOOP
164163 FETCH header_cur BULK COLLECT INTO
164164 l_array_entity_id
164165 , l_array_legal_entity_id
164166 , l_array_entity_code
164167 , l_array_transaction_num
164168 , l_array_event_id
164169 , l_array_class_code
164170 , l_array_event_type
164171 , l_array_event_number
164172 , l_array_event_date
164173 , l_array_transaction_date
164174 , l_array_reference_num_1
164175 , l_array_reference_num_2
164176 , l_array_reference_num_3
164177 , l_array_reference_num_4
164178 , l_array_reference_char_1
164179 , l_array_reference_char_2
164180 , l_array_reference_char_3
164181 , l_array_reference_char_4
164182 , l_array_reference_date_1
164186 , l_array_event_created_by
164183 , l_array_reference_date_2
164184 , l_array_reference_date_3
164185 , l_array_reference_date_4
164187 , l_array_budgetary_control_flag
164188 , l_array_source_6
164189 , l_array_source_7
164190 , l_array_source_8
164191 , l_array_source_9
164192 , l_array_source_10
164193 , l_array_source_12
164194 LIMIT l_rows;
164195 --
164196 IF (C_LEVEL_EVENT >= g_log_level) THEN
164197 trace
164198 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
164199 ,p_level => C_LEVEL_EVENT
164200 ,p_module => l_log_module);
164201 END IF;
164202 --
164203 EXIT WHEN l_array_entity_id.COUNT = 0;
164204
164205 -- initialize arrays
164206 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
164207 XLA_AE_LINES_PKG.g_rec_lines := NULL;
164208
164209 --
164210 -- Bug 4458708
164211 --
164212 XLA_AE_LINES_PKG.g_LineNumber := 0;
164213
164214
164215 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
164216 g_last_hdr_idx := l_array_event_id.LAST;
164217 --
164218 -- loop for the headers. Each iteration is for each header extract row
164219 -- fetched in header cursor
164220 --
164221 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
164222
164223 --
164224 -- set event info as cache for other routines to refer event attributes
164225 --
164226 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164227 (p_application_id => p_application_id
164228 ,p_primary_ledger_id => p_primary_ledger_id
164229 ,p_base_ledger_id => p_base_ledger_id
164230 ,p_target_ledger_id => p_target_ledger_id
164231 ,p_entity_id => l_array_entity_id(hdr_idx)
164232 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
164233 ,p_entity_code => l_array_entity_code(hdr_idx)
164234 ,p_transaction_num => l_array_transaction_num(hdr_idx)
164235 ,p_event_id => l_array_event_id(hdr_idx)
164236 ,p_event_class_code => l_array_class_code(hdr_idx)
164237 ,p_event_type_code => l_array_event_type(hdr_idx)
164238 ,p_event_number => l_array_event_number(hdr_idx)
164239 ,p_event_date => l_array_event_date(hdr_idx)
164240 ,p_transaction_date => l_array_transaction_date(hdr_idx)
164241 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
164242 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
164243 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
164244 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
164245 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
164246 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
164247 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
164248 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
164249 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
164250 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
164251 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
164252 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
164253 ,p_event_created_by => l_array_event_created_by(hdr_idx)
164254 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
164255
164256 --
164257 -- set the status of entry to C_VALID (0)
164258 --
164259 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164260
164261 --
164262 -- initialize a row for ae header
164263 --
164264 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
164265
164266 l_event_id := l_array_event_id(hdr_idx);
164267
164268 --
164269 -- storing the hdr_idx for event. May be used by line cursor.
164270 --
164271 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
164272
164273 --
164274 -- store sources from header extract. This can be improved to
164275 -- store only those sources from header extract that may be used in lines
164276 --
164277
164278 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
164279 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
164280 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
164281 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
164282 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
164283 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
164284
164285 --
164286 -- initilaize the status of ae headers for diffrent balance types
164287 -- the status is initialised to C_NOT_CREATED (2)
164288 --
164289 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164290 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164291 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164292
164293 --
164294 -- call api to validate and store accounting attributes for header
164295 --
164296
164297 ------------------------------------------------------------
164298 -- Accrual Reversal : to get date for Standard Source (NONE)
164299 ------------------------------------------------------------
164300 l_acc_rev_gl_date_source := NULL;
164301
164302 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
164306 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
164303 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
164304
164305
164307
164308 XLA_AE_HEADER_PKG.SetJeCategoryName;
164309
164310 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
164311 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
164312 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
164313 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
164314 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
164315
164316
164317 -- No header level analytical criteria
164318
164319 --
164320 --accounting attribute enhancement, bug 3612931
164321 --
164322 l_trx_reversal_source := SUBSTR(NULL, 1,30);
164323
164324 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
164325 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
164326
164327 xla_accounting_err_pkg.build_message
164328 (p_appli_s_name => 'XLA'
164329 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
164330 ,p_token_1 => 'ACCT_ATTR_NAME'
164331 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
164332 ,p_token_2 => 'PRODUCT_NAME'
164333 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164334 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164335 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164336 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164337
164338 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
164339 --
164340 -- following sets the accounting attributes needed to reverse
164341 -- accounting for a distributeion
164342 --
164343 xla_ae_lines_pkg.SetTrxReversalAttrs
164344 (p_event_id => l_event_id
164345 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
164346 ,p_trx_reversal_source => l_trx_reversal_source);
164347
164348 END IF;
164349
164350
164351 ----------------------------------------------------------------
164352 -- 4262811 - update the header statuses to invalid in need be
164353 ----------------------------------------------------------------
164354 --
164355 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
164356
164357
164358 -----------------------------------------------
164359 -- No accrual reversal for the event class/type
164360 -----------------------------------------------
164361 ----------------------------------------------------------------
164362
164363 --
164364 -- this ends the header loop iteration for one bulk fetch
164365 --
164366 END LOOP;
164367
164368 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
164369 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
164370
164371 --
164372 -- insert dummy rows into lines gt table that were created due to
164373 -- transaction reversals
164374 --
164375 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
164376 l_result := XLA_AE_LINES_PKG.InsertLines;
164377 END IF;
164378
164379 --
164380 -- reset the temp_line_num for each set of events fetched from header
164381 -- cursor rather than doing it for each new event in line cursor
164382 -- Bug 3939231
164383 --
164384 xla_ae_lines_pkg.g_temp_line_num := 0;
164385
164386
164387
164388 --
164389 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
164390 --
164391 --
164392 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164393
164394 trace
164395 (p_msg => 'SQL - FETCH line_cur'
164396 ,p_level => C_LEVEL_STATEMENT
164397 ,p_module => l_log_module);
164398
164399 END IF;
164400 --
164401 --
164402 LOOP
164403 --
164404 FETCH line_cur BULK COLLECT INTO
164405 l_array_entity_id
164406 , l_array_legal_entity_id
164407 , l_array_entity_code
164408 , l_array_transaction_num
164409 , l_array_event_id
164410 , l_array_class_code
164411 , l_array_event_type
164412 , l_array_event_number
164413 , l_array_event_date
164414 , l_array_transaction_date
164415 , l_array_reference_num_1
164416 , l_array_reference_num_2
164417 , l_array_reference_num_3
164418 , l_array_reference_num_4
164419 , l_array_reference_char_1
164420 , l_array_reference_char_2
164421 , l_array_reference_char_3
164422 , l_array_reference_char_4
164423 , l_array_reference_date_1
164424 , l_array_reference_date_2
164425 , l_array_reference_date_3
164426 , l_array_reference_date_4
164427 , l_array_event_created_by
164428 , l_array_budgetary_control_flag
164429 , l_array_extract_line_num
164430 , l_array_source_1
164431 , l_array_source_2
164432 , l_array_source_3
164433 , l_array_source_5
164434 , l_array_source_11
164435 LIMIT l_rows;
164436
164437 --
164438 IF (C_LEVEL_EVENT >= g_log_level) THEN
164439 trace
164443 END IF;
164440 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
164441 ,p_level => C_LEVEL_EVENT
164442 ,p_module => l_log_module);
164444 --
164445 EXIT WHEN l_array_entity_id.count = 0;
164446
164447 XLA_AE_LINES_PKG.g_rec_lines := null;
164448
164449 --
164450 -- Bug 4458708
164451 --
164452 XLA_AE_LINES_PKG.g_LineNumber := 0;
164453 --
164454 --
164455
164456 FOR Idx IN 1..l_array_event_id.count LOOP
164457 --
164458 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
164459 --
164460 l_event_id := l_array_event_id(idx); -- 5648433
164461
164462 --
164463 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164464 --
164465
164466 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
164467 (g_array_event(l_event_id).array_value_num('header_index'))
164468 ,'N'
164469 ) <> 'Y'
164470 THEN
164471 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164472 trace
164473 (p_msg => 'Trancaction revesal option is not Y '
164474 ,p_level => C_LEVEL_STATEMENT
164475 ,p_module => l_log_module);
164476 END IF;
164477
164478 --
164479 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
164480 --
164481 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164482 --
164483 -- set event info as cache for other routines to refer event attributes
164484 --
164485
164486 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
164487 l_previous_event_id := l_event_id;
164488
164489 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164490 (p_application_id => p_application_id
164491 ,p_primary_ledger_id => p_primary_ledger_id
164492 ,p_base_ledger_id => p_base_ledger_id
164493 ,p_target_ledger_id => p_target_ledger_id
164494 ,p_entity_id => l_array_entity_id(Idx)
164495 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
164496 ,p_entity_code => l_array_entity_code(Idx)
164497 ,p_transaction_num => l_array_transaction_num(Idx)
164498 ,p_event_id => l_array_event_id(Idx)
164499 ,p_event_class_code => l_array_class_code(Idx)
164500 ,p_event_type_code => l_array_event_type(Idx)
164501 ,p_event_number => l_array_event_number(Idx)
164502 ,p_event_date => l_array_event_date(Idx)
164503 ,p_transaction_date => l_array_transaction_date(Idx)
164504 ,p_reference_num_1 => l_array_reference_num_1(Idx)
164505 ,p_reference_num_2 => l_array_reference_num_2(Idx)
164506 ,p_reference_num_3 => l_array_reference_num_3(Idx)
164507 ,p_reference_num_4 => l_array_reference_num_4(Idx)
164508 ,p_reference_char_1 => l_array_reference_char_1(Idx)
164509 ,p_reference_char_2 => l_array_reference_char_2(Idx)
164510 ,p_reference_char_3 => l_array_reference_char_3(Idx)
164511 ,p_reference_char_4 => l_array_reference_char_4(Idx)
164512 ,p_reference_date_1 => l_array_reference_date_1(Idx)
164513 ,p_reference_date_2 => l_array_reference_date_2(Idx)
164514 ,p_reference_date_3 => l_array_reference_date_3(Idx)
164515 ,p_reference_date_4 => l_array_reference_date_4(Idx)
164516 ,p_event_created_by => l_array_event_created_by(Idx)
164517 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
164518 --
164519 END IF;
164520
164521
164522
164523 --
164524 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
164525
164526 l_acct_reversal_source := SUBSTR(NULL, 1,30);
164527
164528 IF l_continue_with_lines THEN
164529 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
164530 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
164531
164532 xla_accounting_err_pkg.build_message
164533 (p_appli_s_name => 'XLA'
164534 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
164535 ,p_token_1 => 'LINE_NUMBER'
164536 ,p_value_1 => l_array_extract_line_num(Idx)
164537 ,p_token_2 => 'PRODUCT_NAME'
164538 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164539 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164540 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164541 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164542
164543 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
164544 --
164545 -- following sets the accounting attributes needed to reverse
164546 -- accounting for a distributeion
164547 --
164548
164549 --
164550 -- 5217187
164551 --
164552 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
164553 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
164554 g_array_event(l_event_id).array_value_num('header_index'));
164555 --
164556 --
164557
164558 -- No reversal code generated
164559
164560 xla_ae_lines_pkg.SetAcctReversalAttrs
164564 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
164561 (p_event_id => l_event_id
164562 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
164563 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164565 END IF;
164566
164567 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
164568 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
164569
164570 --
164571 AcctLineType_93 (
164572 p_application_id => p_application_id
164573 ,p_event_id => l_event_id
164574 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164575 ,p_calculate_g_l_flag => l_calculate_g_l_flag
164576 ,p_actual_flag => l_actual_flag
164577 ,p_balance_type_code => l_balance_type_code
164578 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164579
164580 , p_source_1 => l_array_source_1(Idx)
164581 , p_source_2 => l_array_source_2(Idx)
164582 , p_source_3 => l_array_source_3(Idx)
164583 , p_source_5 => l_array_source_5(Idx)
164584 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
164585 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164586 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
164587 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164588 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
164589 , p_source_11 => l_array_source_11(Idx)
164590 );
164591 If(l_balance_type_code = 'A') THEN
164592 l_actual_gain_loss_ref := l_gain_or_loss_ref;
164593 END IF;
164594
164595 --
164596
164597
164598 --
164599 AcctLineType_119 (
164600 p_application_id => p_application_id
164601 ,p_event_id => l_event_id
164602 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164603 ,p_calculate_g_l_flag => l_calculate_g_l_flag
164604 ,p_actual_flag => l_actual_flag
164605 ,p_balance_type_code => l_balance_type_code
164606 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164607
164608 , p_source_1 => l_array_source_1(Idx)
164609 , p_source_2 => l_array_source_2(Idx)
164610 , p_source_3 => l_array_source_3(Idx)
164611 , p_source_5 => l_array_source_5(Idx)
164612 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
164613 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164614 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
164615 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164616 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
164617 , p_source_11 => l_array_source_11(Idx)
164618 );
164619 If(l_balance_type_code = 'A') THEN
164620 l_actual_gain_loss_ref := l_gain_or_loss_ref;
164621 END IF;
164622
164623 --
164624
164625
164626 --
164627 AcctLineType_145 (
164628 p_application_id => p_application_id
164629 ,p_event_id => l_event_id
164630 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164631 ,p_calculate_g_l_flag => l_calculate_g_l_flag
164632 ,p_actual_flag => l_actual_flag
164633 ,p_balance_type_code => l_balance_type_code
164634 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164635
164636 , p_source_1 => l_array_source_1(Idx)
164637 , p_source_2 => l_array_source_2(Idx)
164638 , p_source_3 => l_array_source_3(Idx)
164639 , p_source_5 => l_array_source_5(Idx)
164640 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
164641 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
164642 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
164643 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
164644 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
164645 , p_source_11 => l_array_source_11(Idx)
164646 );
164647 If(l_balance_type_code = 'A') THEN
164648 l_actual_gain_loss_ref := l_gain_or_loss_ref;
164649 END IF;
164650
164651 --
164652
164653 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
164654 -- or secondary ledger that has different currency with primary
164655 -- or alc that is calculated by sla
164656 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
164657 (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'))
164658
164659 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
164660 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
164661 AND (l_actual_flag = 'A')) THEN
164662 XLA_AE_LINES_PKG.CreateGainOrLossLines(
164663 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164664 ,p_application_id => p_application_id
164665 ,p_amb_context_code => 'DEFAULT'
164666 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
164667 ,p_event_class_code => C_EVENT_CLASS_CODE
164668 ,p_event_type_code => C_EVENT_TYPE_CODE
164669
164670 ,p_gain_ccid => -1
164671 ,p_loss_ccid => -1
164672
164673 ,p_actual_flag => l_actual_flag
164674 ,p_enc_flag => null
164675 ,p_actual_g_l_ref => l_actual_gain_loss_ref
164676 ,p_enc_g_l_ref => null
164677 );
164678 END IF;
164679 END IF;
164680 END IF;
164681
164682 ELSE
164683 --
164687 trace
164684 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164685 --
164686 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164688 (p_msg => 'Trancaction revesal option is Y'
164689 ,p_level => C_LEVEL_STATEMENT
164690 ,p_module => l_log_module);
164691 END IF;
164692 END IF;
164693
164694 END LOOP;
164695 l_result := XLA_AE_LINES_PKG.InsertLines ;
164696 end loop;
164697 close line_cur;
164698
164699
164700 --
164701 -- insert headers into xla_ae_headers_gt table
164702 --
164703 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
164704
164705 -- insert into errors table here.
164706
164707 END LOOP;
164708
164709 --
164710 -- 4865292
164711 --
164712 -- Compare g_hdr_extract_count with event count in
164713 -- CreateHeadersAndLines.
164714 --
164715 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
164716
164717 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164718 trace (p_msg => '# rows extracted from header extract objects '
164719 || ' (running total): '
164720 || g_hdr_extract_count
164721 ,p_level => C_LEVEL_STATEMENT
164722 ,p_module => l_log_module);
164723 END IF;
164724
164725 CLOSE header_cur;
164726 --
164727
164728 --
164729 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164730 trace
164731 (p_msg => 'END of EventType_284'
164732 ,p_level => C_LEVEL_PROCEDURE
164733 ,p_module => l_log_module);
164734 END IF;
164735 --
164736 RETURN l_result;
164737 EXCEPTION
164738 WHEN xla_exceptions_pkg.application_exception THEN
164739
164740 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164741
164742
164743 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
164744
164745 RAISE;
164746
164747 WHEN NO_DATA_FOUND THEN
164748
164749 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164750 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
164751
164752 FOR header_record IN header_cur
164753 LOOP
164754 l_array_header_events(header_record.event_id) := header_record.event_id;
164755 END LOOP;
164756
164757 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
164758 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
164759
164760 fnd_file.put_line(fnd_file.LOG, ' ');
164761 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164762 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
164763 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
164764
164765 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
164766 LOOP
164767 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
164768 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
164769 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
164770 END IF;
164771 END LOOP;
164772
164773 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164774 fnd_file.put_line(fnd_file.LOG, ' ');
164775
164776
164777 xla_exceptions_pkg.raise_message
164778 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_284');
164779
164780
164781 WHEN OTHERS THEN
164782 xla_exceptions_pkg.raise_message
164783 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_284');
164784 END EventType_284;
164785 --
164786
164787 ---------------------------------------
164788 --
164789 -- PRIVATE PROCEDURE
164790 -- insert_sources_285
164791 --
164792 ----------------------------------------
164793 --
164794 PROCEDURE insert_sources_285(
164795 p_target_ledger_id IN NUMBER
164796 , p_language IN VARCHAR2
164797 , p_sla_ledger_id IN NUMBER
164798 , p_pad_start_date IN DATE
164799 , p_pad_end_date IN DATE
164800 )
164801 IS
164802
164803 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_PO_RCV_ADJ';
164804 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
164805 p_apps_owner VARCHAR2(30);
164806 l_log_module VARCHAR2(240);
164807 BEGIN
164808 IF g_log_enabled THEN
164809 l_log_module := C_DEFAULT_MODULE||'.insert_sources_285';
164810 END IF;
164811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164812
164813 trace
164814 (p_msg => 'BEGIN of insert_sources_285'
164815 ,p_level => C_LEVEL_PROCEDURE
164816 ,p_module => l_log_module);
164817
164818 END IF;
164819
164820 -- select APPS owner
164821 SELECT oracle_username
164822 INTO p_apps_owner
164823 FROM fnd_oracle_userid
164824 WHERE read_only_flag = 'U'
164825 ;
164826
164827 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164828 trace
164829 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
164830 ' - p_language = '||p_language||
164831 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
164835 ,p_level => C_LEVEL_STATEMENT
164832 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
164833 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
164834 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
164836 ,p_module => l_log_module);
164837 END IF;
164838
164839
164840 --
164841 INSERT INTO xla_diag_sources --hdr1
164842 (
164843 event_id
164844 , ledger_id
164845 , sla_ledger_id
164846 , description_language
164847 , object_name
164848 , object_type_code
164849 , line_number
164850 , source_application_id
164851 , source_type_code
164852 , source_code
164853 , source_value
164854 , source_meaning
164855 , created_by
164856 , creation_date
164857 , last_update_date
164858 , last_updated_by
164859 , last_update_login
164860 , program_update_date
164861 , program_application_id
164862 , program_id
164863 , request_id
164864 )
164865 SELECT
164866 event_id
164867 , p_target_ledger_id
164868 , p_sla_ledger_id
164869 , p_language
164870 , object_name
164871 , object_type_code
164872 , line_number
164873 , source_application_id
164874 , source_type_code
164875 , source_code
164876 , SUBSTR(source_value ,1,1996)
164877 , SUBSTR(source_meaning,1,200)
164878 , xla_environment_pkg.g_Usr_Id
164879 , TRUNC(SYSDATE)
164880 , TRUNC(SYSDATE)
164881 , xla_environment_pkg.g_Usr_Id
164882 , xla_environment_pkg.g_Login_Id
164883 , TRUNC(SYSDATE)
164884 , xla_environment_pkg.g_Prog_Appl_Id
164885 , xla_environment_pkg.g_Prog_Id
164886 , xla_environment_pkg.g_Req_Id
164887 FROM (
164888 SELECT xet.event_id event_id
164889 , 0 line_number
164890 , CASE r
164891 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
164892 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
164893 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
164894 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
164895 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
164896 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
164897
164898 ELSE null
164899 END object_name
164900 , CASE r
164901 WHEN 1 THEN 'HEADER'
164902 WHEN 2 THEN 'HEADER'
164903 WHEN 3 THEN 'HEADER'
164904 WHEN 4 THEN 'HEADER'
164905 WHEN 5 THEN 'HEADER'
164906 WHEN 6 THEN 'HEADER'
164907
164908 ELSE null
164909 END object_type_code
164910 , CASE r
164911 WHEN 1 THEN '555'
164912 WHEN 2 THEN '555'
164913 WHEN 3 THEN '555'
164914 WHEN 4 THEN '555'
164915 WHEN 5 THEN '555'
164916 WHEN 6 THEN '555'
164917
164918 ELSE null
164919 END source_application_id
164920 , 'S' source_type_code
164921 , CASE r
164922 WHEN 1 THEN 'ENTITY_CODE'
164923 WHEN 2 THEN 'CURRENCY_CODE'
164924 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
164925 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
164926 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
164927 WHEN 6 THEN 'TRANSACTION_DATE'
164928
164929 ELSE null
164930 END source_code
164931 , CASE r
164932 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
164933 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
164934 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
164935 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
164936 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
164937 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
164938
164939 ELSE null
164940 END source_value
164941 , CASE r
164942 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
164943 1010186
164944 ,TO_CHAR(h1.CURRENCY_CODE)
164945 ,'CURRENCY_CODE'
164946 ,'S'
164947 ,555)
164948
164949 ELSE null
164950 END source_meaning
164951 FROM xla_events_gt xet
164952 , GMF_XLA_EXTRACT_HEADERS h1
164953 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
164954 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
164955 AND xet.event_type_code = C_EVENT_TYPE_CODE
164956 AND h1.event_id = xet.event_id
164957
164958 )
164959 ;
164960 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164961
164962 trace
164963 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
164964 ,p_level => C_LEVEL_STATEMENT
164965 ,p_module => l_log_module);
164966
164967 END IF;
164968 --
164969
164970
164971
164972 --
164973 INSERT INTO xla_diag_sources --line1
164977 , sla_ledger_id
164974 (
164975 event_id
164976 , ledger_id
164978 , description_language
164979 , object_name
164980 , object_type_code
164981 , line_number
164982 , source_application_id
164983 , source_type_code
164984 , source_code
164985 , source_value
164986 , source_meaning
164987 , created_by
164988 , creation_date
164989 , last_update_date
164990 , last_updated_by
164991 , last_update_login
164992 , program_update_date
164993 , program_application_id
164994 , program_id
164995 , request_id
164996 )
164997 SELECT event_id
164998 , p_target_ledger_id
164999 , p_sla_ledger_id
165000 , p_language
165001 , object_name
165002 , object_type_code
165003 , line_number
165004 , source_application_id
165005 , source_type_code
165006 , source_code
165007 , SUBSTR(source_value,1,1996)
165008 , SUBSTR(source_meaning,1,200)
165009 , xla_environment_pkg.g_Usr_Id
165010 , TRUNC(SYSDATE)
165011 , TRUNC(SYSDATE)
165012 , xla_environment_pkg.g_Usr_Id
165013 , xla_environment_pkg.g_Login_Id
165014 , TRUNC(SYSDATE)
165015 , xla_environment_pkg.g_Prog_Appl_Id
165016 , xla_environment_pkg.g_Prog_Id
165017 , xla_environment_pkg.g_Req_Id
165018 FROM (
165019 SELECT xet.event_id event_id
165020 , l2.line_number line_number
165021 , CASE r
165022 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
165023 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
165024 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
165025 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
165026 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
165027
165028 ELSE null
165029 END object_name
165030 , CASE r
165031 WHEN 1 THEN 'LINE'
165032 WHEN 2 THEN 'LINE'
165033 WHEN 3 THEN 'LINE'
165034 WHEN 4 THEN 'LINE'
165035 WHEN 5 THEN 'LINE'
165036
165037 ELSE null
165038 END object_type_code
165039 , CASE r
165040 WHEN 1 THEN '555'
165041 WHEN 2 THEN '555'
165042 WHEN 3 THEN '555'
165043 WHEN 4 THEN '555'
165044 WHEN 5 THEN '555'
165045
165046 ELSE null
165047 END source_application_id
165048 , 'S' source_type_code
165049 , CASE r
165050 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
165051 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
165052 WHEN 3 THEN 'ENTERED_AMOUNT'
165053 WHEN 4 THEN 'LINE_ID'
165054 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
165055
165056 ELSE null
165057 END source_code
165058 , CASE r
165059 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
165060 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
165061 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
165062 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
165063 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
165064
165065 ELSE null
165066 END source_value
165067 , null source_meaning
165068 FROM xla_events_gt xet
165069 , GMF_XLA_EXTRACT_LINES l2
165070 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
165071 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
165072 AND xet.event_type_code = C_EVENT_TYPE_CODE
165073 AND l2.event_id = xet.event_id
165074
165075 )
165076 ;
165077 --
165078 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165079
165080 trace
165081 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
165082 ,p_level => C_LEVEL_STATEMENT
165083 ,p_module => l_log_module);
165084
165085 END IF;
165086
165087
165088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165089 trace
165090 (p_msg => 'END of insert_sources_285'
165091 ,p_level => C_LEVEL_PROCEDURE
165092 ,p_module => l_log_module);
165093 END IF;
165094 EXCEPTION
165095 WHEN xla_exceptions_pkg.application_exception THEN
165096 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
165097 trace
165098 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
165099 ,p_level => C_LEVEL_EXCEPTION
165100 ,p_module => l_log_module);
165101 END IF;
165102 RAISE;
165103 WHEN OTHERS THEN
165104 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
165105 trace
165106 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
165107 ,p_level => C_LEVEL_EXCEPTION
165108 ,p_module => l_log_module);
165109 END IF;
165110 xla_exceptions_pkg.raise_message
165111 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_285');
165112 END insert_sources_285;
165113 --
165117 -- PRIVATE FUNCTION
165114
165115 ---------------------------------------
165116 --
165118 -- EventType_285
165119 --
165120 ----------------------------------------
165121 --
165122 FUNCTION EventType_285
165123 (p_application_id IN NUMBER
165124 ,p_base_ledger_id IN NUMBER
165125 ,p_target_ledger_id IN NUMBER
165126 ,p_language IN VARCHAR2
165127 ,p_currency_code IN VARCHAR2
165128 ,p_sla_ledger_id IN NUMBER
165129 ,p_pad_start_date IN DATE
165130 ,p_pad_end_date IN DATE
165131 ,p_primary_ledger_id IN NUMBER)
165132 RETURN BOOLEAN IS
165133 --
165134 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_PO_RCV_ADJ';
165135 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
165136
165137 l_calculate_acctd_flag VARCHAR2(1) :='N';
165138 l_calculate_g_l_flag VARCHAR2(1) :='N';
165139 --
165140 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165141 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165142 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165143 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165144 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165145 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165146 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165147 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165148 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165149 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165150 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165151 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165152 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165153 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
165154 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165155 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165156 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165157 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
165158 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165159 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165160 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165161 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
165162 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
165163 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
165164 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
165165 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
165166
165167 l_event_id NUMBER;
165168 l_previous_event_id NUMBER;
165169 l_first_event_id NUMBER;
165170 l_last_event_id NUMBER;
165171
165172 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
165173 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
165174 --
165175 --
165176 l_result BOOLEAN := TRUE;
165177 l_rows NUMBER := 1000;
165178 l_event_type_name VARCHAR2(80) := 'Logical PO Receipt Adjustment';
165179 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
165180 l_description VARCHAR2(4000);
165181 l_transaction_reversal NUMBER;
165182 l_ae_header_id NUMBER;
165183 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
165184 l_log_module VARCHAR2(240);
165185 --
165186 l_acct_reversal_source VARCHAR2(30);
165187 l_trx_reversal_source VARCHAR2(30);
165188
165189 l_continue_with_lines BOOLEAN := TRUE;
165190 --
165191 l_acc_rev_gl_date_source DATE; -- 4262811
165192 --
165193 type t_array_event_id is table of number index by binary_integer;
165194
165195 l_rec_array_event t_rec_array_event;
165196 l_null_rec_array_event t_rec_array_event;
165197 l_array_ae_header_id xla_number_array_type;
165198 l_actual_flag VARCHAR2(1) := NULL;
165199 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
165200 l_balance_type_code VARCHAR2(1) :=NULL;
165201 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
165202
165203 --
165204 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
165205 --
165206
165207 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
165208 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
165209 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
165210 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
165211 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165215 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
165212 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
165213
165214 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
165216 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165217 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
165218 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165219
165220 l_array_source_6 t_array_source_6;
165221 l_array_source_7 t_array_source_7;
165222 l_array_source_8 t_array_source_8;
165223 l_array_source_9 t_array_source_9;
165224 l_array_source_10 t_array_source_10;
165225 l_array_source_12 t_array_source_12;
165226
165227 l_array_source_1 t_array_source_1;
165228 l_array_source_2 t_array_source_2;
165229 l_array_source_3 t_array_source_3;
165230 l_array_source_5 t_array_source_5;
165231 l_array_source_11 t_array_source_11;
165232
165233 --
165234 CURSOR header_cur
165235 IS
165236 SELECT /*+ leading(xet) cardinality(xet,1) */
165237 -- Event Type Code: LOG_PO_RCV_ADJ
165238 -- Event Class Code: DELIVER
165239 xet.entity_id
165240 , xet.legal_entity_id
165241 , xet.entity_code
165242 , xet.transaction_number
165243 , xet.event_id
165244 , xet.event_class_code
165245 , xet.event_type_code
165246 , xet.event_number
165247 , xet.event_date
165248 , xet.transaction_date
165249 , xet.reference_num_1
165250 , xet.reference_num_2
165251 , xet.reference_num_3
165252 , xet.reference_num_4
165253 , xet.reference_char_1
165254 , xet.reference_char_2
165255 , xet.reference_char_3
165256 , xet.reference_char_4
165257 , xet.reference_date_1
165258 , xet.reference_date_2
165259 , xet.reference_date_3
165260 , xet.reference_date_4
165261 , xet.event_created_by
165262 , xet.budgetary_control_flag
165263 , h1.ENTITY_CODE source_6
165264 , h1.CURRENCY_CODE source_7
165265 , h1.CURRENCY_CONVERSION_DATE source_8
165266 , h1.CURRENCY_CONVERSION_RATE source_9
165267 , h1.CURRENCY_CONVERSION_TYPE source_10
165268 , h1.TRANSACTION_DATE source_12
165269 FROM xla_events_gt xet
165270 , GMF_XLA_EXTRACT_HEADERS h1
165271 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
165272 and xet.event_type_code = C_EVENT_TYPE_CODE
165273 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
165274
165275 ORDER BY event_id
165276 ;
165277
165278
165279 --
165280 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
165281 IS
165282 SELECT /*+ leading(xet) cardinality(xet,1) */
165283 -- Event Type Code: LOG_PO_RCV_ADJ
165284 -- Event Class Code: DELIVER
165285 xet.entity_id
165286 ,xet.legal_entity_id
165287 ,xet.entity_code
165288 ,xet.transaction_number
165289 ,xet.event_id
165290 ,xet.event_class_code
165291 ,xet.event_type_code
165292 ,xet.event_number
165293 ,xet.event_date
165294 ,xet.transaction_date
165295 ,xet.reference_num_1
165296 ,xet.reference_num_2
165297 ,xet.reference_num_3
165298 ,xet.reference_num_4
165299 ,xet.reference_char_1
165300 ,xet.reference_char_2
165301 ,xet.reference_char_3
165302 ,xet.reference_char_4
165303 ,xet.reference_date_1
165304 ,xet.reference_date_2
165305 ,xet.reference_date_3
165306 ,xet.reference_date_4
165307 ,xet.event_created_by
165308 ,xet.budgetary_control_flag , l2.LINE_NUMBER
165309 , l2.TRANSACTION_ACCOUNT_ID source_1
165310 , l2.JOURNAL_LINE_TYPE source_2
165311 , l2.ENTERED_AMOUNT source_3
165312 , l2.LINE_ID source_5
165313 , l2.ACCOUNTED_AMOUNT source_11
165314 FROM xla_events_gt xet
165315 , GMF_XLA_EXTRACT_LINES l2
165316 WHERE xet.event_id between x_first_event_id and x_last_event_id
165317 and xet.event_date between p_pad_start_date and p_pad_end_date
165318 and xet.event_type_code = C_EVENT_TYPE_CODE
165319 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
165320 ;
165321
165322 --
165323 BEGIN
165324 IF g_log_enabled THEN
165325 l_log_module := C_DEFAULT_MODULE||'.EventType_285';
165326 END IF;
165327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165328 trace
165329 (p_msg => 'BEGIN of EventType_285'
165330 ,p_level => C_LEVEL_PROCEDURE
165331 ,p_module => l_log_module);
165332 END IF;
165333
165334 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165335 trace
165336 (p_msg => 'p_application_id = '||p_application_id||
165337 ' - p_base_ledger_id = '||p_base_ledger_id||
165338 ' - p_target_ledger_id = '||p_target_ledger_id||
165339 ' - p_language = '||p_language||
165340 ' - p_currency_code = '||p_currency_code||
165341 ' - p_sla_ledger_id = '||p_sla_ledger_id
165342 ,p_level => C_LEVEL_STATEMENT
165343 ,p_module => l_log_module);
165344 END IF;
165345 --
165346 -- initialze arrays
165347 --
165348 g_array_event.DELETE;
165349 l_rec_array_event := l_null_rec_array_event;
165350 --
165354 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
165351 --------------------------------------
165352 -- 4262811 Initialze MPA Line Number
165353 --------------------------------------
165355
165356 --
165357
165358 --
165359 OPEN header_cur;
165360 --
165361 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165362 trace
165363 (p_msg => 'SQL - FETCH header_cur'
165364 ,p_level => C_LEVEL_STATEMENT
165365 ,p_module => l_log_module);
165366 END IF;
165367 --
165368 LOOP
165369 FETCH header_cur BULK COLLECT INTO
165370 l_array_entity_id
165371 , l_array_legal_entity_id
165372 , l_array_entity_code
165373 , l_array_transaction_num
165374 , l_array_event_id
165375 , l_array_class_code
165376 , l_array_event_type
165377 , l_array_event_number
165378 , l_array_event_date
165379 , l_array_transaction_date
165380 , l_array_reference_num_1
165381 , l_array_reference_num_2
165382 , l_array_reference_num_3
165383 , l_array_reference_num_4
165384 , l_array_reference_char_1
165385 , l_array_reference_char_2
165386 , l_array_reference_char_3
165387 , l_array_reference_char_4
165388 , l_array_reference_date_1
165389 , l_array_reference_date_2
165390 , l_array_reference_date_3
165391 , l_array_reference_date_4
165392 , l_array_event_created_by
165393 , l_array_budgetary_control_flag
165394 , l_array_source_6
165395 , l_array_source_7
165396 , l_array_source_8
165397 , l_array_source_9
165398 , l_array_source_10
165399 , l_array_source_12
165400 LIMIT l_rows;
165401 --
165402 IF (C_LEVEL_EVENT >= g_log_level) THEN
165403 trace
165404 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
165405 ,p_level => C_LEVEL_EVENT
165406 ,p_module => l_log_module);
165407 END IF;
165408 --
165409 EXIT WHEN l_array_entity_id.COUNT = 0;
165410
165411 -- initialize arrays
165412 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
165413 XLA_AE_LINES_PKG.g_rec_lines := NULL;
165414
165415 --
165416 -- Bug 4458708
165417 --
165418 XLA_AE_LINES_PKG.g_LineNumber := 0;
165419
165420
165421 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
165422 g_last_hdr_idx := l_array_event_id.LAST;
165423 --
165424 -- loop for the headers. Each iteration is for each header extract row
165425 -- fetched in header cursor
165426 --
165427 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
165428
165429 --
165430 -- set event info as cache for other routines to refer event attributes
165431 --
165432 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165433 (p_application_id => p_application_id
165434 ,p_primary_ledger_id => p_primary_ledger_id
165435 ,p_base_ledger_id => p_base_ledger_id
165436 ,p_target_ledger_id => p_target_ledger_id
165437 ,p_entity_id => l_array_entity_id(hdr_idx)
165438 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
165439 ,p_entity_code => l_array_entity_code(hdr_idx)
165440 ,p_transaction_num => l_array_transaction_num(hdr_idx)
165441 ,p_event_id => l_array_event_id(hdr_idx)
165442 ,p_event_class_code => l_array_class_code(hdr_idx)
165443 ,p_event_type_code => l_array_event_type(hdr_idx)
165444 ,p_event_number => l_array_event_number(hdr_idx)
165445 ,p_event_date => l_array_event_date(hdr_idx)
165446 ,p_transaction_date => l_array_transaction_date(hdr_idx)
165447 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
165448 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
165449 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
165450 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
165451 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
165452 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
165453 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
165454 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
165455 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
165456 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
165457 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
165458 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
165459 ,p_event_created_by => l_array_event_created_by(hdr_idx)
165460 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
165461
165462 --
165463 -- set the status of entry to C_VALID (0)
165464 --
165465 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165466
165467 --
165468 -- initialize a row for ae header
165469 --
165470 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
165471
165472 l_event_id := l_array_event_id(hdr_idx);
165473
165474 --
165475 -- storing the hdr_idx for event. May be used by line cursor.
165476 --
165477 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
165478
165479 --
165480 -- store sources from header extract. This can be improved to
165481 -- store only those sources from header extract that may be used in lines
165482 --
165483
165484 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
165485 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
165489 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
165486 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
165487 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
165488 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
165490
165491 --
165492 -- initilaize the status of ae headers for diffrent balance types
165493 -- the status is initialised to C_NOT_CREATED (2)
165494 --
165495 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165496 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165497 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165498
165499 --
165500 -- call api to validate and store accounting attributes for header
165501 --
165502
165503 ------------------------------------------------------------
165504 -- Accrual Reversal : to get date for Standard Source (NONE)
165505 ------------------------------------------------------------
165506 l_acc_rev_gl_date_source := NULL;
165507
165508 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
165509 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
165510
165511
165512 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
165513
165514 XLA_AE_HEADER_PKG.SetJeCategoryName;
165515
165516 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
165517 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
165518 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
165519 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
165520 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
165521
165522
165523 -- No header level analytical criteria
165524
165525 --
165526 --accounting attribute enhancement, bug 3612931
165527 --
165528 l_trx_reversal_source := SUBSTR(NULL, 1,30);
165529
165530 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
165531 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
165532
165533 xla_accounting_err_pkg.build_message
165534 (p_appli_s_name => 'XLA'
165535 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
165536 ,p_token_1 => 'ACCT_ATTR_NAME'
165537 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
165538 ,p_token_2 => 'PRODUCT_NAME'
165539 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165540 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165541 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
165542 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165543
165544 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
165545 --
165546 -- following sets the accounting attributes needed to reverse
165547 -- accounting for a distributeion
165548 --
165549 xla_ae_lines_pkg.SetTrxReversalAttrs
165550 (p_event_id => l_event_id
165551 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
165552 ,p_trx_reversal_source => l_trx_reversal_source);
165553
165554 END IF;
165555
165556
165557 ----------------------------------------------------------------
165558 -- 4262811 - update the header statuses to invalid in need be
165559 ----------------------------------------------------------------
165560 --
165561 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
165562
165563
165564 -----------------------------------------------
165565 -- No accrual reversal for the event class/type
165566 -----------------------------------------------
165567 ----------------------------------------------------------------
165568
165569 --
165570 -- this ends the header loop iteration for one bulk fetch
165571 --
165572 END LOOP;
165573
165574 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
165575 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
165576
165577 --
165578 -- insert dummy rows into lines gt table that were created due to
165579 -- transaction reversals
165580 --
165581 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
165582 l_result := XLA_AE_LINES_PKG.InsertLines;
165583 END IF;
165584
165585 --
165586 -- reset the temp_line_num for each set of events fetched from header
165587 -- cursor rather than doing it for each new event in line cursor
165588 -- Bug 3939231
165589 --
165590 xla_ae_lines_pkg.g_temp_line_num := 0;
165591
165592
165593
165594 --
165595 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
165596 --
165597 --
165598 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165599
165600 trace
165601 (p_msg => 'SQL - FETCH line_cur'
165602 ,p_level => C_LEVEL_STATEMENT
165603 ,p_module => l_log_module);
165604
165605 END IF;
165606 --
165607 --
165608 LOOP
165609 --
165610 FETCH line_cur BULK COLLECT INTO
165611 l_array_entity_id
165615 , l_array_event_id
165612 , l_array_legal_entity_id
165613 , l_array_entity_code
165614 , l_array_transaction_num
165616 , l_array_class_code
165617 , l_array_event_type
165618 , l_array_event_number
165619 , l_array_event_date
165620 , l_array_transaction_date
165621 , l_array_reference_num_1
165622 , l_array_reference_num_2
165623 , l_array_reference_num_3
165624 , l_array_reference_num_4
165625 , l_array_reference_char_1
165626 , l_array_reference_char_2
165627 , l_array_reference_char_3
165628 , l_array_reference_char_4
165629 , l_array_reference_date_1
165630 , l_array_reference_date_2
165631 , l_array_reference_date_3
165632 , l_array_reference_date_4
165633 , l_array_event_created_by
165634 , l_array_budgetary_control_flag
165635 , l_array_extract_line_num
165636 , l_array_source_1
165637 , l_array_source_2
165638 , l_array_source_3
165639 , l_array_source_5
165640 , l_array_source_11
165641 LIMIT l_rows;
165642
165643 --
165644 IF (C_LEVEL_EVENT >= g_log_level) THEN
165645 trace
165646 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
165647 ,p_level => C_LEVEL_EVENT
165648 ,p_module => l_log_module);
165649 END IF;
165650 --
165651 EXIT WHEN l_array_entity_id.count = 0;
165652
165653 XLA_AE_LINES_PKG.g_rec_lines := null;
165654
165655 --
165656 -- Bug 4458708
165657 --
165658 XLA_AE_LINES_PKG.g_LineNumber := 0;
165659 --
165660 --
165661
165662 FOR Idx IN 1..l_array_event_id.count LOOP
165663 --
165664 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
165665 --
165666 l_event_id := l_array_event_id(idx); -- 5648433
165667
165668 --
165669 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165670 --
165671
165672 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
165673 (g_array_event(l_event_id).array_value_num('header_index'))
165674 ,'N'
165675 ) <> 'Y'
165676 THEN
165677 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165678 trace
165679 (p_msg => 'Trancaction revesal option is not Y '
165680 ,p_level => C_LEVEL_STATEMENT
165681 ,p_module => l_log_module);
165682 END IF;
165683
165684 --
165685 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
165686 --
165687 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165688 --
165689 -- set event info as cache for other routines to refer event attributes
165690 --
165691
165692 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
165693 l_previous_event_id := l_event_id;
165694
165695 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165696 (p_application_id => p_application_id
165697 ,p_primary_ledger_id => p_primary_ledger_id
165698 ,p_base_ledger_id => p_base_ledger_id
165699 ,p_target_ledger_id => p_target_ledger_id
165700 ,p_entity_id => l_array_entity_id(Idx)
165701 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
165702 ,p_entity_code => l_array_entity_code(Idx)
165703 ,p_transaction_num => l_array_transaction_num(Idx)
165704 ,p_event_id => l_array_event_id(Idx)
165705 ,p_event_class_code => l_array_class_code(Idx)
165706 ,p_event_type_code => l_array_event_type(Idx)
165707 ,p_event_number => l_array_event_number(Idx)
165708 ,p_event_date => l_array_event_date(Idx)
165709 ,p_transaction_date => l_array_transaction_date(Idx)
165710 ,p_reference_num_1 => l_array_reference_num_1(Idx)
165711 ,p_reference_num_2 => l_array_reference_num_2(Idx)
165712 ,p_reference_num_3 => l_array_reference_num_3(Idx)
165713 ,p_reference_num_4 => l_array_reference_num_4(Idx)
165714 ,p_reference_char_1 => l_array_reference_char_1(Idx)
165715 ,p_reference_char_2 => l_array_reference_char_2(Idx)
165716 ,p_reference_char_3 => l_array_reference_char_3(Idx)
165717 ,p_reference_char_4 => l_array_reference_char_4(Idx)
165718 ,p_reference_date_1 => l_array_reference_date_1(Idx)
165719 ,p_reference_date_2 => l_array_reference_date_2(Idx)
165720 ,p_reference_date_3 => l_array_reference_date_3(Idx)
165721 ,p_reference_date_4 => l_array_reference_date_4(Idx)
165722 ,p_event_created_by => l_array_event_created_by(Idx)
165723 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
165724 --
165725 END IF;
165726
165727
165728
165729 --
165730 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
165731
165732 l_acct_reversal_source := SUBSTR(NULL, 1,30);
165733
165734 IF l_continue_with_lines THEN
165735 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
165736 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
165737
165738 xla_accounting_err_pkg.build_message
165739 (p_appli_s_name => 'XLA'
165740 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
165744 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165741 ,p_token_1 => 'LINE_NUMBER'
165742 ,p_value_1 => l_array_extract_line_num(Idx)
165743 ,p_token_2 => 'PRODUCT_NAME'
165745 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165746 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
165747 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165748
165749 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
165750 --
165751 -- following sets the accounting attributes needed to reverse
165752 -- accounting for a distributeion
165753 --
165754
165755 --
165756 -- 5217187
165757 --
165758 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
165759 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
165760 g_array_event(l_event_id).array_value_num('header_index'));
165761 --
165762 --
165763
165764 -- No reversal code generated
165765
165766 xla_ae_lines_pkg.SetAcctReversalAttrs
165767 (p_event_id => l_event_id
165768 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
165769 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165770 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
165771 END IF;
165772
165773 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
165774 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
165775
165776 --
165777 AcctLineType_67 (
165778 p_application_id => p_application_id
165779 ,p_event_id => l_event_id
165780 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165781 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165782 ,p_actual_flag => l_actual_flag
165783 ,p_balance_type_code => l_balance_type_code
165784 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165785
165786 , p_source_1 => l_array_source_1(Idx)
165787 , p_source_2 => l_array_source_2(Idx)
165788 , p_source_3 => l_array_source_3(Idx)
165789 , p_source_5 => l_array_source_5(Idx)
165790 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
165791 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
165792 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
165793 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
165794 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
165795 , p_source_11 => l_array_source_11(Idx)
165796 );
165797 If(l_balance_type_code = 'A') THEN
165798 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165799 END IF;
165800
165801 --
165802
165803
165804 --
165805 AcctLineType_101 (
165806 p_application_id => p_application_id
165807 ,p_event_id => l_event_id
165808 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165809 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165810 ,p_actual_flag => l_actual_flag
165811 ,p_balance_type_code => l_balance_type_code
165812 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165813
165814 , p_source_1 => l_array_source_1(Idx)
165815 , p_source_2 => l_array_source_2(Idx)
165816 , p_source_3 => l_array_source_3(Idx)
165817 , p_source_5 => l_array_source_5(Idx)
165818 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
165819 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
165820 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
165821 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
165822 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
165823 , p_source_11 => l_array_source_11(Idx)
165824 );
165825 If(l_balance_type_code = 'A') THEN
165826 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165827 END IF;
165828
165829 --
165830
165831
165832 --
165833 AcctLineType_162 (
165834 p_application_id => p_application_id
165835 ,p_event_id => l_event_id
165836 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165837 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165838 ,p_actual_flag => l_actual_flag
165839 ,p_balance_type_code => l_balance_type_code
165840 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165841
165842 , p_source_1 => l_array_source_1(Idx)
165843 , p_source_2 => l_array_source_2(Idx)
165844 , p_source_3 => l_array_source_3(Idx)
165845 , p_source_5 => l_array_source_5(Idx)
165846 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
165847 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
165848 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
165849 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
165850 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
165851 , p_source_11 => l_array_source_11(Idx)
165852 );
165853 If(l_balance_type_code = 'A') THEN
165854 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165855 END IF;
165856
165857 --
165858
165859 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
165860 -- or secondary ledger that has different currency with primary
165861 -- or alc that is calculated by sla
165865 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
165862 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
165863 (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'))
165864
165866 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
165867 AND (l_actual_flag = 'A')) THEN
165868 XLA_AE_LINES_PKG.CreateGainOrLossLines(
165869 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
165870 ,p_application_id => p_application_id
165871 ,p_amb_context_code => 'DEFAULT'
165872 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
165873 ,p_event_class_code => C_EVENT_CLASS_CODE
165874 ,p_event_type_code => C_EVENT_TYPE_CODE
165875
165876 ,p_gain_ccid => -1
165877 ,p_loss_ccid => -1
165878
165879 ,p_actual_flag => l_actual_flag
165880 ,p_enc_flag => null
165881 ,p_actual_g_l_ref => l_actual_gain_loss_ref
165882 ,p_enc_g_l_ref => null
165883 );
165884 END IF;
165885 END IF;
165886 END IF;
165887
165888 ELSE
165889 --
165890 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165891 --
165892 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165893 trace
165894 (p_msg => 'Trancaction revesal option is Y'
165895 ,p_level => C_LEVEL_STATEMENT
165896 ,p_module => l_log_module);
165897 END IF;
165898 END IF;
165899
165900 END LOOP;
165901 l_result := XLA_AE_LINES_PKG.InsertLines ;
165902 end loop;
165903 close line_cur;
165904
165905
165906 --
165907 -- insert headers into xla_ae_headers_gt table
165908 --
165909 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
165910
165911 -- insert into errors table here.
165912
165913 END LOOP;
165914
165915 --
165916 -- 4865292
165917 --
165918 -- Compare g_hdr_extract_count with event count in
165919 -- CreateHeadersAndLines.
165920 --
165921 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
165922
165923 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165924 trace (p_msg => '# rows extracted from header extract objects '
165925 || ' (running total): '
165926 || g_hdr_extract_count
165927 ,p_level => C_LEVEL_STATEMENT
165928 ,p_module => l_log_module);
165929 END IF;
165930
165931 CLOSE header_cur;
165932 --
165933
165934 --
165935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165936 trace
165937 (p_msg => 'END of EventType_285'
165938 ,p_level => C_LEVEL_PROCEDURE
165939 ,p_module => l_log_module);
165940 END IF;
165941 --
165942 RETURN l_result;
165943 EXCEPTION
165944 WHEN xla_exceptions_pkg.application_exception THEN
165945
165946 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
165947
165948
165949 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
165950
165951 RAISE;
165952
165953 WHEN NO_DATA_FOUND THEN
165954
165955 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
165956 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
165957
165958 FOR header_record IN header_cur
165959 LOOP
165960 l_array_header_events(header_record.event_id) := header_record.event_id;
165961 END LOOP;
165962
165963 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
165964 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
165965
165966 fnd_file.put_line(fnd_file.LOG, ' ');
165967 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
165968 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
165969 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
165970
165971 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
165972 LOOP
165973 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
165974 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
165975 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
165976 END IF;
165977 END LOOP;
165978
165979 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
165980 fnd_file.put_line(fnd_file.LOG, ' ');
165981
165982
165983 xla_exceptions_pkg.raise_message
165984 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_285');
165985
165986
165987 WHEN OTHERS THEN
165988 xla_exceptions_pkg.raise_message
165989 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_285');
165990 END EventType_285;
165991 --
165992
165993 ---------------------------------------
165994 --
165995 -- PRIVATE PROCEDURE
165996 -- insert_sources_286
165997 --
165998 ----------------------------------------
165999 --
166000 PROCEDURE insert_sources_286(
166001 p_target_ledger_id IN NUMBER
166002 , p_language IN VARCHAR2
166003 , p_sla_ledger_id IN NUMBER
166007 IS
166004 , p_pad_start_date IN DATE
166005 , p_pad_end_date IN DATE
166006 )
166008
166009 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_PO_RECEIPT';
166010 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
166011 p_apps_owner VARCHAR2(30);
166012 l_log_module VARCHAR2(240);
166013 BEGIN
166014 IF g_log_enabled THEN
166015 l_log_module := C_DEFAULT_MODULE||'.insert_sources_286';
166016 END IF;
166017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166018
166019 trace
166020 (p_msg => 'BEGIN of insert_sources_286'
166021 ,p_level => C_LEVEL_PROCEDURE
166022 ,p_module => l_log_module);
166023
166024 END IF;
166025
166026 -- select APPS owner
166027 SELECT oracle_username
166028 INTO p_apps_owner
166029 FROM fnd_oracle_userid
166030 WHERE read_only_flag = 'U'
166031 ;
166032
166033 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166034 trace
166035 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
166036 ' - p_language = '||p_language||
166037 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
166038 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
166039 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
166040 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
166041 ,p_level => C_LEVEL_STATEMENT
166042 ,p_module => l_log_module);
166043 END IF;
166044
166045
166046 --
166047 INSERT INTO xla_diag_sources --hdr1
166048 (
166049 event_id
166050 , ledger_id
166051 , sla_ledger_id
166052 , description_language
166053 , object_name
166054 , object_type_code
166055 , line_number
166056 , source_application_id
166057 , source_type_code
166058 , source_code
166059 , source_value
166060 , source_meaning
166061 , created_by
166062 , creation_date
166063 , last_update_date
166064 , last_updated_by
166065 , last_update_login
166066 , program_update_date
166067 , program_application_id
166068 , program_id
166069 , request_id
166070 )
166071 SELECT
166072 event_id
166073 , p_target_ledger_id
166074 , p_sla_ledger_id
166075 , p_language
166076 , object_name
166077 , object_type_code
166078 , line_number
166079 , source_application_id
166080 , source_type_code
166081 , source_code
166082 , SUBSTR(source_value ,1,1996)
166083 , SUBSTR(source_meaning,1,200)
166084 , xla_environment_pkg.g_Usr_Id
166085 , TRUNC(SYSDATE)
166086 , TRUNC(SYSDATE)
166087 , xla_environment_pkg.g_Usr_Id
166088 , xla_environment_pkg.g_Login_Id
166089 , TRUNC(SYSDATE)
166090 , xla_environment_pkg.g_Prog_Appl_Id
166091 , xla_environment_pkg.g_Prog_Id
166092 , xla_environment_pkg.g_Req_Id
166093 FROM (
166094 SELECT xet.event_id event_id
166095 , 0 line_number
166096 , CASE r
166097 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
166098 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
166099 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
166100 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
166101 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
166102 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
166103
166104 ELSE null
166105 END object_name
166106 , CASE r
166107 WHEN 1 THEN 'HEADER'
166108 WHEN 2 THEN 'HEADER'
166109 WHEN 3 THEN 'HEADER'
166110 WHEN 4 THEN 'HEADER'
166111 WHEN 5 THEN 'HEADER'
166112 WHEN 6 THEN 'HEADER'
166113
166114 ELSE null
166115 END object_type_code
166116 , CASE r
166117 WHEN 1 THEN '555'
166118 WHEN 2 THEN '555'
166119 WHEN 3 THEN '555'
166120 WHEN 4 THEN '555'
166121 WHEN 5 THEN '555'
166122 WHEN 6 THEN '555'
166123
166124 ELSE null
166125 END source_application_id
166126 , 'S' source_type_code
166127 , CASE r
166128 WHEN 1 THEN 'ENTITY_CODE'
166129 WHEN 2 THEN 'CURRENCY_CODE'
166130 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
166131 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
166132 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
166133 WHEN 6 THEN 'TRANSACTION_DATE'
166134
166135 ELSE null
166136 END source_code
166137 , CASE r
166138 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
166139 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
166140 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
166141 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
166142 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
166146 END source_value
166143 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
166144
166145 ELSE null
166147 , CASE r
166148 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
166149 1010186
166150 ,TO_CHAR(h1.CURRENCY_CODE)
166151 ,'CURRENCY_CODE'
166152 ,'S'
166153 ,555)
166154
166155 ELSE null
166156 END source_meaning
166157 FROM xla_events_gt xet
166158 , GMF_XLA_EXTRACT_HEADERS h1
166159 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
166160 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166161 AND xet.event_type_code = C_EVENT_TYPE_CODE
166162 AND h1.event_id = xet.event_id
166163
166164 )
166165 ;
166166 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166167
166168 trace
166169 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
166170 ,p_level => C_LEVEL_STATEMENT
166171 ,p_module => l_log_module);
166172
166173 END IF;
166174 --
166175
166176
166177
166178 --
166179 INSERT INTO xla_diag_sources --line1
166180 (
166181 event_id
166182 , ledger_id
166183 , sla_ledger_id
166184 , description_language
166185 , object_name
166186 , object_type_code
166187 , line_number
166188 , source_application_id
166189 , source_type_code
166190 , source_code
166191 , source_value
166192 , source_meaning
166193 , created_by
166194 , creation_date
166195 , last_update_date
166196 , last_updated_by
166197 , last_update_login
166198 , program_update_date
166199 , program_application_id
166200 , program_id
166201 , request_id
166202 )
166203 SELECT event_id
166204 , p_target_ledger_id
166205 , p_sla_ledger_id
166206 , p_language
166207 , object_name
166208 , object_type_code
166209 , line_number
166210 , source_application_id
166211 , source_type_code
166212 , source_code
166213 , SUBSTR(source_value,1,1996)
166214 , SUBSTR(source_meaning,1,200)
166215 , xla_environment_pkg.g_Usr_Id
166216 , TRUNC(SYSDATE)
166217 , TRUNC(SYSDATE)
166218 , xla_environment_pkg.g_Usr_Id
166219 , xla_environment_pkg.g_Login_Id
166220 , TRUNC(SYSDATE)
166221 , xla_environment_pkg.g_Prog_Appl_Id
166222 , xla_environment_pkg.g_Prog_Id
166223 , xla_environment_pkg.g_Req_Id
166224 FROM (
166225 SELECT xet.event_id event_id
166226 , l2.line_number line_number
166227 , CASE r
166228 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
166229 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
166230 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
166231 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
166232 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
166233
166234 ELSE null
166235 END object_name
166236 , CASE r
166237 WHEN 1 THEN 'LINE'
166238 WHEN 2 THEN 'LINE'
166239 WHEN 3 THEN 'LINE'
166240 WHEN 4 THEN 'LINE'
166241 WHEN 5 THEN 'LINE'
166242
166243 ELSE null
166244 END object_type_code
166245 , CASE r
166246 WHEN 1 THEN '555'
166247 WHEN 2 THEN '555'
166248 WHEN 3 THEN '555'
166249 WHEN 4 THEN '555'
166250 WHEN 5 THEN '555'
166251
166252 ELSE null
166253 END source_application_id
166254 , 'S' source_type_code
166255 , CASE r
166256 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
166257 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
166258 WHEN 3 THEN 'ENTERED_AMOUNT'
166259 WHEN 4 THEN 'LINE_ID'
166260 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
166261
166262 ELSE null
166263 END source_code
166264 , CASE r
166265 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
166266 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
166267 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
166268 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
166269 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
166270
166271 ELSE null
166272 END source_value
166273 , null source_meaning
166274 FROM xla_events_gt xet
166275 , GMF_XLA_EXTRACT_LINES l2
166276 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
166277 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166278 AND xet.event_type_code = C_EVENT_TYPE_CODE
166279 AND l2.event_id = xet.event_id
166280
166281 )
166282 ;
166283 --
166287 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
166284 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166285
166286 trace
166288 ,p_level => C_LEVEL_STATEMENT
166289 ,p_module => l_log_module);
166290
166291 END IF;
166292
166293
166294 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166295 trace
166296 (p_msg => 'END of insert_sources_286'
166297 ,p_level => C_LEVEL_PROCEDURE
166298 ,p_module => l_log_module);
166299 END IF;
166300 EXCEPTION
166301 WHEN xla_exceptions_pkg.application_exception THEN
166302 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166303 trace
166304 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166305 ,p_level => C_LEVEL_EXCEPTION
166306 ,p_module => l_log_module);
166307 END IF;
166308 RAISE;
166309 WHEN OTHERS THEN
166310 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166311 trace
166312 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166313 ,p_level => C_LEVEL_EXCEPTION
166314 ,p_module => l_log_module);
166315 END IF;
166316 xla_exceptions_pkg.raise_message
166317 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_286');
166318 END insert_sources_286;
166319 --
166320
166321 ---------------------------------------
166322 --
166323 -- PRIVATE FUNCTION
166324 -- EventType_286
166325 --
166326 ----------------------------------------
166327 --
166328 FUNCTION EventType_286
166329 (p_application_id IN NUMBER
166330 ,p_base_ledger_id IN NUMBER
166331 ,p_target_ledger_id IN NUMBER
166332 ,p_language IN VARCHAR2
166333 ,p_currency_code IN VARCHAR2
166334 ,p_sla_ledger_id IN NUMBER
166335 ,p_pad_start_date IN DATE
166336 ,p_pad_end_date IN DATE
166337 ,p_primary_ledger_id IN NUMBER)
166338 RETURN BOOLEAN IS
166339 --
166340 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_PO_RECEIPT';
166341 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
166342
166343 l_calculate_acctd_flag VARCHAR2(1) :='N';
166344 l_calculate_g_l_flag VARCHAR2(1) :='N';
166345 --
166346 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166347 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166348 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166349 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166350 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166351 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166352 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166353 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166354 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166355 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166356 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166357 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166358 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166359 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166360 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166361 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166362 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166363 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166364 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166365 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166366 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166367 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166368 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
166369 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166370 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
166371 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
166372
166373 l_event_id NUMBER;
166374 l_previous_event_id NUMBER;
166375 l_first_event_id NUMBER;
166376 l_last_event_id NUMBER;
166377
166378 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
166379 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
166380 --
166381 --
166382 l_result BOOLEAN := TRUE;
166383 l_rows NUMBER := 1000;
166384 l_event_type_name VARCHAR2(80) := 'Logical PO Receipt';
166385 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
166386 l_description VARCHAR2(4000);
166387 l_transaction_reversal NUMBER;
166388 l_ae_header_id NUMBER;
166389 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
166390 l_log_module VARCHAR2(240);
166391 --
166392 l_acct_reversal_source VARCHAR2(30);
166393 l_trx_reversal_source VARCHAR2(30);
166394
166398 --
166395 l_continue_with_lines BOOLEAN := TRUE;
166396 --
166397 l_acc_rev_gl_date_source DATE; -- 4262811
166399 type t_array_event_id is table of number index by binary_integer;
166400
166401 l_rec_array_event t_rec_array_event;
166402 l_null_rec_array_event t_rec_array_event;
166403 l_array_ae_header_id xla_number_array_type;
166404 l_actual_flag VARCHAR2(1) := NULL;
166405 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
166406 l_balance_type_code VARCHAR2(1) :=NULL;
166407 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
166408
166409 --
166410 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
166411 --
166412
166413 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
166414 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
166415 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
166416 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
166417 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166418 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
166419
166420 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
166421 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
166422 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166423 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
166424 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166425
166426 l_array_source_6 t_array_source_6;
166427 l_array_source_7 t_array_source_7;
166428 l_array_source_8 t_array_source_8;
166429 l_array_source_9 t_array_source_9;
166430 l_array_source_10 t_array_source_10;
166431 l_array_source_12 t_array_source_12;
166432
166433 l_array_source_1 t_array_source_1;
166434 l_array_source_2 t_array_source_2;
166435 l_array_source_3 t_array_source_3;
166436 l_array_source_5 t_array_source_5;
166437 l_array_source_11 t_array_source_11;
166438
166439 --
166440 CURSOR header_cur
166441 IS
166442 SELECT /*+ leading(xet) cardinality(xet,1) */
166443 -- Event Type Code: LOG_PO_RECEIPT
166444 -- Event Class Code: DELIVER
166445 xet.entity_id
166446 , xet.legal_entity_id
166447 , xet.entity_code
166448 , xet.transaction_number
166449 , xet.event_id
166450 , xet.event_class_code
166451 , xet.event_type_code
166452 , xet.event_number
166453 , xet.event_date
166454 , xet.transaction_date
166455 , xet.reference_num_1
166456 , xet.reference_num_2
166457 , xet.reference_num_3
166458 , xet.reference_num_4
166459 , xet.reference_char_1
166460 , xet.reference_char_2
166461 , xet.reference_char_3
166462 , xet.reference_char_4
166463 , xet.reference_date_1
166464 , xet.reference_date_2
166465 , xet.reference_date_3
166466 , xet.reference_date_4
166467 , xet.event_created_by
166468 , xet.budgetary_control_flag
166469 , h1.ENTITY_CODE source_6
166470 , h1.CURRENCY_CODE source_7
166471 , h1.CURRENCY_CONVERSION_DATE source_8
166472 , h1.CURRENCY_CONVERSION_RATE source_9
166473 , h1.CURRENCY_CONVERSION_TYPE source_10
166474 , h1.TRANSACTION_DATE source_12
166475 FROM xla_events_gt xet
166476 , GMF_XLA_EXTRACT_HEADERS h1
166477 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
166478 and xet.event_type_code = C_EVENT_TYPE_CODE
166479 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
166480
166481 ORDER BY event_id
166482 ;
166483
166484
166485 --
166486 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
166487 IS
166488 SELECT /*+ leading(xet) cardinality(xet,1) */
166489 -- Event Type Code: LOG_PO_RECEIPT
166490 -- Event Class Code: DELIVER
166491 xet.entity_id
166492 ,xet.legal_entity_id
166493 ,xet.entity_code
166494 ,xet.transaction_number
166495 ,xet.event_id
166496 ,xet.event_class_code
166497 ,xet.event_type_code
166498 ,xet.event_number
166499 ,xet.event_date
166500 ,xet.transaction_date
166501 ,xet.reference_num_1
166502 ,xet.reference_num_2
166503 ,xet.reference_num_3
166504 ,xet.reference_num_4
166505 ,xet.reference_char_1
166506 ,xet.reference_char_2
166507 ,xet.reference_char_3
166508 ,xet.reference_char_4
166509 ,xet.reference_date_1
166510 ,xet.reference_date_2
166511 ,xet.reference_date_3
166512 ,xet.reference_date_4
166513 ,xet.event_created_by
166514 ,xet.budgetary_control_flag , l2.LINE_NUMBER
166515 , l2.TRANSACTION_ACCOUNT_ID source_1
166516 , l2.JOURNAL_LINE_TYPE source_2
166517 , l2.ENTERED_AMOUNT source_3
166518 , l2.LINE_ID source_5
166519 , l2.ACCOUNTED_AMOUNT source_11
166520 FROM xla_events_gt xet
166521 , GMF_XLA_EXTRACT_LINES l2
166522 WHERE xet.event_id between x_first_event_id and x_last_event_id
166523 and xet.event_date between p_pad_start_date and p_pad_end_date
166527
166524 and xet.event_type_code = C_EVENT_TYPE_CODE
166525 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
166526 ;
166528 --
166529 BEGIN
166530 IF g_log_enabled THEN
166531 l_log_module := C_DEFAULT_MODULE||'.EventType_286';
166532 END IF;
166533 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166534 trace
166535 (p_msg => 'BEGIN of EventType_286'
166536 ,p_level => C_LEVEL_PROCEDURE
166537 ,p_module => l_log_module);
166538 END IF;
166539
166540 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166541 trace
166542 (p_msg => 'p_application_id = '||p_application_id||
166543 ' - p_base_ledger_id = '||p_base_ledger_id||
166544 ' - p_target_ledger_id = '||p_target_ledger_id||
166545 ' - p_language = '||p_language||
166546 ' - p_currency_code = '||p_currency_code||
166547 ' - p_sla_ledger_id = '||p_sla_ledger_id
166548 ,p_level => C_LEVEL_STATEMENT
166549 ,p_module => l_log_module);
166550 END IF;
166551 --
166552 -- initialze arrays
166553 --
166554 g_array_event.DELETE;
166555 l_rec_array_event := l_null_rec_array_event;
166556 --
166557 --------------------------------------
166558 -- 4262811 Initialze MPA Line Number
166559 --------------------------------------
166560 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
166561
166562 --
166563
166564 --
166565 OPEN header_cur;
166566 --
166567 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166568 trace
166569 (p_msg => 'SQL - FETCH header_cur'
166570 ,p_level => C_LEVEL_STATEMENT
166571 ,p_module => l_log_module);
166572 END IF;
166573 --
166574 LOOP
166575 FETCH header_cur BULK COLLECT INTO
166576 l_array_entity_id
166577 , l_array_legal_entity_id
166578 , l_array_entity_code
166579 , l_array_transaction_num
166580 , l_array_event_id
166581 , l_array_class_code
166582 , l_array_event_type
166583 , l_array_event_number
166584 , l_array_event_date
166585 , l_array_transaction_date
166586 , l_array_reference_num_1
166587 , l_array_reference_num_2
166588 , l_array_reference_num_3
166589 , l_array_reference_num_4
166590 , l_array_reference_char_1
166591 , l_array_reference_char_2
166592 , l_array_reference_char_3
166593 , l_array_reference_char_4
166594 , l_array_reference_date_1
166595 , l_array_reference_date_2
166596 , l_array_reference_date_3
166597 , l_array_reference_date_4
166598 , l_array_event_created_by
166599 , l_array_budgetary_control_flag
166600 , l_array_source_6
166601 , l_array_source_7
166602 , l_array_source_8
166603 , l_array_source_9
166604 , l_array_source_10
166605 , l_array_source_12
166606 LIMIT l_rows;
166607 --
166608 IF (C_LEVEL_EVENT >= g_log_level) THEN
166609 trace
166610 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
166611 ,p_level => C_LEVEL_EVENT
166612 ,p_module => l_log_module);
166613 END IF;
166614 --
166615 EXIT WHEN l_array_entity_id.COUNT = 0;
166616
166617 -- initialize arrays
166618 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
166619 XLA_AE_LINES_PKG.g_rec_lines := NULL;
166620
166621 --
166622 -- Bug 4458708
166623 --
166624 XLA_AE_LINES_PKG.g_LineNumber := 0;
166625
166626
166627 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
166628 g_last_hdr_idx := l_array_event_id.LAST;
166629 --
166630 -- loop for the headers. Each iteration is for each header extract row
166631 -- fetched in header cursor
166632 --
166633 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
166634
166635 --
166636 -- set event info as cache for other routines to refer event attributes
166637 --
166638 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
166639 (p_application_id => p_application_id
166640 ,p_primary_ledger_id => p_primary_ledger_id
166641 ,p_base_ledger_id => p_base_ledger_id
166642 ,p_target_ledger_id => p_target_ledger_id
166643 ,p_entity_id => l_array_entity_id(hdr_idx)
166644 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
166645 ,p_entity_code => l_array_entity_code(hdr_idx)
166646 ,p_transaction_num => l_array_transaction_num(hdr_idx)
166647 ,p_event_id => l_array_event_id(hdr_idx)
166648 ,p_event_class_code => l_array_class_code(hdr_idx)
166649 ,p_event_type_code => l_array_event_type(hdr_idx)
166650 ,p_event_number => l_array_event_number(hdr_idx)
166651 ,p_event_date => l_array_event_date(hdr_idx)
166652 ,p_transaction_date => l_array_transaction_date(hdr_idx)
166653 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
166654 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
166655 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
166656 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
166657 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
166658 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
166659 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
166660 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
166664 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
166661 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
166662 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
166663 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
166665 ,p_event_created_by => l_array_event_created_by(hdr_idx)
166666 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
166667
166668 --
166669 -- set the status of entry to C_VALID (0)
166670 --
166671 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
166672
166673 --
166674 -- initialize a row for ae header
166675 --
166676 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
166677
166678 l_event_id := l_array_event_id(hdr_idx);
166679
166680 --
166681 -- storing the hdr_idx for event. May be used by line cursor.
166682 --
166683 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
166684
166685 --
166686 -- store sources from header extract. This can be improved to
166687 -- store only those sources from header extract that may be used in lines
166688 --
166689
166690 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
166691 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
166692 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
166693 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
166694 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
166695 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
166696
166697 --
166698 -- initilaize the status of ae headers for diffrent balance types
166699 -- the status is initialised to C_NOT_CREATED (2)
166700 --
166701 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166702 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166703 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166704
166705 --
166706 -- call api to validate and store accounting attributes for header
166707 --
166708
166709 ------------------------------------------------------------
166710 -- Accrual Reversal : to get date for Standard Source (NONE)
166711 ------------------------------------------------------------
166712 l_acc_rev_gl_date_source := NULL;
166713
166714 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
166715 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
166716
166717
166718 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
166719
166720 XLA_AE_HEADER_PKG.SetJeCategoryName;
166721
166722 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
166723 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
166724 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
166725 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
166726 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
166727
166728
166729 -- No header level analytical criteria
166730
166731 --
166732 --accounting attribute enhancement, bug 3612931
166733 --
166734 l_trx_reversal_source := SUBSTR(NULL, 1,30);
166735
166736 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
166737 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
166738
166739 xla_accounting_err_pkg.build_message
166740 (p_appli_s_name => 'XLA'
166741 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
166742 ,p_token_1 => 'ACCT_ATTR_NAME'
166743 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
166744 ,p_token_2 => 'PRODUCT_NAME'
166745 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
166746 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
166747 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
166748 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
166749
166750 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
166751 --
166752 -- following sets the accounting attributes needed to reverse
166753 -- accounting for a distributeion
166754 --
166755 xla_ae_lines_pkg.SetTrxReversalAttrs
166756 (p_event_id => l_event_id
166757 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
166758 ,p_trx_reversal_source => l_trx_reversal_source);
166759
166760 END IF;
166761
166762
166763 ----------------------------------------------------------------
166764 -- 4262811 - update the header statuses to invalid in need be
166765 ----------------------------------------------------------------
166766 --
166767 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
166768
166769
166770 -----------------------------------------------
166771 -- No accrual reversal for the event class/type
166772 -----------------------------------------------
166773 ----------------------------------------------------------------
166774
166775 --
166776 -- this ends the header loop iteration for one bulk fetch
166777 --
166781 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
166778 END LOOP;
166779
166780 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
166782
166783 --
166784 -- insert dummy rows into lines gt table that were created due to
166785 -- transaction reversals
166786 --
166787 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
166788 l_result := XLA_AE_LINES_PKG.InsertLines;
166789 END IF;
166790
166791 --
166792 -- reset the temp_line_num for each set of events fetched from header
166793 -- cursor rather than doing it for each new event in line cursor
166794 -- Bug 3939231
166795 --
166796 xla_ae_lines_pkg.g_temp_line_num := 0;
166797
166798
166799
166800 --
166801 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
166802 --
166803 --
166804 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166805
166806 trace
166807 (p_msg => 'SQL - FETCH line_cur'
166808 ,p_level => C_LEVEL_STATEMENT
166809 ,p_module => l_log_module);
166810
166811 END IF;
166812 --
166813 --
166814 LOOP
166815 --
166816 FETCH line_cur BULK COLLECT INTO
166817 l_array_entity_id
166818 , l_array_legal_entity_id
166819 , l_array_entity_code
166820 , l_array_transaction_num
166821 , l_array_event_id
166822 , l_array_class_code
166823 , l_array_event_type
166824 , l_array_event_number
166825 , l_array_event_date
166826 , l_array_transaction_date
166827 , l_array_reference_num_1
166828 , l_array_reference_num_2
166829 , l_array_reference_num_3
166830 , l_array_reference_num_4
166831 , l_array_reference_char_1
166832 , l_array_reference_char_2
166833 , l_array_reference_char_3
166834 , l_array_reference_char_4
166835 , l_array_reference_date_1
166836 , l_array_reference_date_2
166837 , l_array_reference_date_3
166838 , l_array_reference_date_4
166839 , l_array_event_created_by
166840 , l_array_budgetary_control_flag
166841 , l_array_extract_line_num
166842 , l_array_source_1
166843 , l_array_source_2
166844 , l_array_source_3
166845 , l_array_source_5
166846 , l_array_source_11
166847 LIMIT l_rows;
166848
166849 --
166850 IF (C_LEVEL_EVENT >= g_log_level) THEN
166851 trace
166852 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
166853 ,p_level => C_LEVEL_EVENT
166854 ,p_module => l_log_module);
166855 END IF;
166856 --
166857 EXIT WHEN l_array_entity_id.count = 0;
166858
166859 XLA_AE_LINES_PKG.g_rec_lines := null;
166860
166861 --
166862 -- Bug 4458708
166863 --
166864 XLA_AE_LINES_PKG.g_LineNumber := 0;
166865 --
166866 --
166867
166868 FOR Idx IN 1..l_array_event_id.count LOOP
166869 --
166870 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
166871 --
166872 l_event_id := l_array_event_id(idx); -- 5648433
166873
166874 --
166875 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
166876 --
166877
166878 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
166879 (g_array_event(l_event_id).array_value_num('header_index'))
166880 ,'N'
166881 ) <> 'Y'
166882 THEN
166883 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166884 trace
166885 (p_msg => 'Trancaction revesal option is not Y '
166886 ,p_level => C_LEVEL_STATEMENT
166887 ,p_module => l_log_module);
166888 END IF;
166889
166890 --
166891 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
166892 --
166893 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
166894 --
166895 -- set event info as cache for other routines to refer event attributes
166896 --
166897
166898 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
166899 l_previous_event_id := l_event_id;
166900
166901 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
166902 (p_application_id => p_application_id
166903 ,p_primary_ledger_id => p_primary_ledger_id
166904 ,p_base_ledger_id => p_base_ledger_id
166905 ,p_target_ledger_id => p_target_ledger_id
166906 ,p_entity_id => l_array_entity_id(Idx)
166907 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
166908 ,p_entity_code => l_array_entity_code(Idx)
166909 ,p_transaction_num => l_array_transaction_num(Idx)
166910 ,p_event_id => l_array_event_id(Idx)
166911 ,p_event_class_code => l_array_class_code(Idx)
166912 ,p_event_type_code => l_array_event_type(Idx)
166913 ,p_event_number => l_array_event_number(Idx)
166914 ,p_event_date => l_array_event_date(Idx)
166915 ,p_transaction_date => l_array_transaction_date(Idx)
166916 ,p_reference_num_1 => l_array_reference_num_1(Idx)
166917 ,p_reference_num_2 => l_array_reference_num_2(Idx)
166918 ,p_reference_num_3 => l_array_reference_num_3(Idx)
166919 ,p_reference_num_4 => l_array_reference_num_4(Idx)
166923 ,p_reference_char_4 => l_array_reference_char_4(Idx)
166920 ,p_reference_char_1 => l_array_reference_char_1(Idx)
166921 ,p_reference_char_2 => l_array_reference_char_2(Idx)
166922 ,p_reference_char_3 => l_array_reference_char_3(Idx)
166924 ,p_reference_date_1 => l_array_reference_date_1(Idx)
166925 ,p_reference_date_2 => l_array_reference_date_2(Idx)
166926 ,p_reference_date_3 => l_array_reference_date_3(Idx)
166927 ,p_reference_date_4 => l_array_reference_date_4(Idx)
166928 ,p_event_created_by => l_array_event_created_by(Idx)
166929 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
166930 --
166931 END IF;
166932
166933
166934
166935 --
166936 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
166937
166938 l_acct_reversal_source := SUBSTR(NULL, 1,30);
166939
166940 IF l_continue_with_lines THEN
166941 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
166942 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
166943
166944 xla_accounting_err_pkg.build_message
166945 (p_appli_s_name => 'XLA'
166946 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
166947 ,p_token_1 => 'LINE_NUMBER'
166948 ,p_value_1 => l_array_extract_line_num(Idx)
166949 ,p_token_2 => 'PRODUCT_NAME'
166950 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
166951 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
166952 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
166953 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
166954
166955 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
166956 --
166957 -- following sets the accounting attributes needed to reverse
166958 -- accounting for a distributeion
166959 --
166960
166961 --
166962 -- 5217187
166963 --
166964 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
166965 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
166966 g_array_event(l_event_id).array_value_num('header_index'));
166967 --
166968 --
166969
166970 -- No reversal code generated
166971
166972 xla_ae_lines_pkg.SetAcctReversalAttrs
166973 (p_event_id => l_event_id
166974 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
166975 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166976 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
166977 END IF;
166978
166979 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
166980 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
166981
166982 --
166983 AcctLineType_63 (
166984 p_application_id => p_application_id
166985 ,p_event_id => l_event_id
166986 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166987 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166988 ,p_actual_flag => l_actual_flag
166989 ,p_balance_type_code => l_balance_type_code
166990 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166991
166992 , p_source_1 => l_array_source_1(Idx)
166993 , p_source_2 => l_array_source_2(Idx)
166994 , p_source_3 => l_array_source_3(Idx)
166995 , p_source_5 => l_array_source_5(Idx)
166996 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
166997 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
166998 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
166999 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
167000 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
167001 , p_source_11 => l_array_source_11(Idx)
167002 );
167003 If(l_balance_type_code = 'A') THEN
167004 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167005 END IF;
167006
167007 --
167008
167009
167010 --
167011 AcctLineType_89 (
167012 p_application_id => p_application_id
167013 ,p_event_id => l_event_id
167014 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167015 ,p_calculate_g_l_flag => l_calculate_g_l_flag
167016 ,p_actual_flag => l_actual_flag
167017 ,p_balance_type_code => l_balance_type_code
167018 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167019
167020 , p_source_1 => l_array_source_1(Idx)
167021 , p_source_2 => l_array_source_2(Idx)
167022 , p_source_3 => l_array_source_3(Idx)
167023 , p_source_5 => l_array_source_5(Idx)
167024 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
167025 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
167026 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
167027 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
167028 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
167029 , p_source_11 => l_array_source_11(Idx)
167030 );
167031 If(l_balance_type_code = 'A') THEN
167032 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167033 END IF;
167034
167035 --
167036
167037
167038 --
167039 AcctLineType_137 (
167040 p_application_id => p_application_id
167041 ,p_event_id => l_event_id
167042 ,p_calculate_acctd_flag => l_calculate_acctd_flag
167046 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
167043 ,p_calculate_g_l_flag => l_calculate_g_l_flag
167044 ,p_actual_flag => l_actual_flag
167045 ,p_balance_type_code => l_balance_type_code
167047
167048 , p_source_1 => l_array_source_1(Idx)
167049 , p_source_2 => l_array_source_2(Idx)
167050 , p_source_3 => l_array_source_3(Idx)
167051 , p_source_5 => l_array_source_5(Idx)
167052 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
167053 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
167054 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
167055 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
167056 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
167057 , p_source_11 => l_array_source_11(Idx)
167058 );
167059 If(l_balance_type_code = 'A') THEN
167060 l_actual_gain_loss_ref := l_gain_or_loss_ref;
167061 END IF;
167062
167063 --
167064
167065 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
167066 -- or secondary ledger that has different currency with primary
167067 -- or alc that is calculated by sla
167068 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
167069 (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'))
167070
167071 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
167072 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
167073 AND (l_actual_flag = 'A')) THEN
167074 XLA_AE_LINES_PKG.CreateGainOrLossLines(
167075 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
167076 ,p_application_id => p_application_id
167077 ,p_amb_context_code => 'DEFAULT'
167078 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
167079 ,p_event_class_code => C_EVENT_CLASS_CODE
167080 ,p_event_type_code => C_EVENT_TYPE_CODE
167081
167082 ,p_gain_ccid => -1
167083 ,p_loss_ccid => -1
167084
167085 ,p_actual_flag => l_actual_flag
167086 ,p_enc_flag => null
167087 ,p_actual_g_l_ref => l_actual_gain_loss_ref
167088 ,p_enc_g_l_ref => null
167089 );
167090 END IF;
167091 END IF;
167092 END IF;
167093
167094 ELSE
167095 --
167096 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
167097 --
167098 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167099 trace
167100 (p_msg => 'Trancaction revesal option is Y'
167101 ,p_level => C_LEVEL_STATEMENT
167102 ,p_module => l_log_module);
167103 END IF;
167104 END IF;
167105
167106 END LOOP;
167107 l_result := XLA_AE_LINES_PKG.InsertLines ;
167108 end loop;
167109 close line_cur;
167110
167111
167112 --
167113 -- insert headers into xla_ae_headers_gt table
167114 --
167115 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
167116
167117 -- insert into errors table here.
167118
167119 END LOOP;
167120
167121 --
167122 -- 4865292
167123 --
167124 -- Compare g_hdr_extract_count with event count in
167125 -- CreateHeadersAndLines.
167126 --
167127 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
167128
167129 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167130 trace (p_msg => '# rows extracted from header extract objects '
167131 || ' (running total): '
167132 || g_hdr_extract_count
167133 ,p_level => C_LEVEL_STATEMENT
167134 ,p_module => l_log_module);
167135 END IF;
167136
167137 CLOSE header_cur;
167138 --
167139
167140 --
167141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167142 trace
167143 (p_msg => 'END of EventType_286'
167144 ,p_level => C_LEVEL_PROCEDURE
167145 ,p_module => l_log_module);
167146 END IF;
167147 --
167148 RETURN l_result;
167149 EXCEPTION
167150 WHEN xla_exceptions_pkg.application_exception THEN
167151
167152 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167153
167154
167155 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
167156
167157 RAISE;
167158
167159 WHEN NO_DATA_FOUND THEN
167160
167161 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167162 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
167163
167164 FOR header_record IN header_cur
167165 LOOP
167166 l_array_header_events(header_record.event_id) := header_record.event_id;
167167 END LOOP;
167168
167169 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
167170 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
167171
167172 fnd_file.put_line(fnd_file.LOG, ' ');
167173 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167174 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
167175 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
167176
167177 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
167178 LOOP
167179 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
167183 END LOOP;
167180 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
167181 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
167182 END IF;
167184
167185 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167186 fnd_file.put_line(fnd_file.LOG, ' ');
167187
167188
167189 xla_exceptions_pkg.raise_message
167190 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_286');
167191
167192
167193 WHEN OTHERS THEN
167194 xla_exceptions_pkg.raise_message
167195 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_286');
167196 END EventType_286;
167197 --
167198
167199 ---------------------------------------
167200 --
167201 -- PRIVATE PROCEDURE
167202 -- insert_sources_287
167203 --
167204 ----------------------------------------
167205 --
167206 PROCEDURE insert_sources_287(
167207 p_target_ledger_id IN NUMBER
167208 , p_language IN VARCHAR2
167209 , p_sla_ledger_id IN NUMBER
167210 , p_pad_start_date IN DATE
167211 , p_pad_end_date IN DATE
167212 )
167213 IS
167214
167215 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_RECEIVE';
167216 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
167217 p_apps_owner VARCHAR2(30);
167218 l_log_module VARCHAR2(240);
167219 BEGIN
167220 IF g_log_enabled THEN
167221 l_log_module := C_DEFAULT_MODULE||'.insert_sources_287';
167222 END IF;
167223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167224
167225 trace
167226 (p_msg => 'BEGIN of insert_sources_287'
167227 ,p_level => C_LEVEL_PROCEDURE
167228 ,p_module => l_log_module);
167229
167230 END IF;
167231
167232 -- select APPS owner
167233 SELECT oracle_username
167234 INTO p_apps_owner
167235 FROM fnd_oracle_userid
167236 WHERE read_only_flag = 'U'
167237 ;
167238
167239 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167240 trace
167241 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
167242 ' - p_language = '||p_language||
167243 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
167244 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
167245 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
167246 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
167247 ,p_level => C_LEVEL_STATEMENT
167248 ,p_module => l_log_module);
167249 END IF;
167250
167251
167252 --
167253 INSERT INTO xla_diag_sources --hdr1
167254 (
167255 event_id
167256 , ledger_id
167257 , sla_ledger_id
167258 , description_language
167259 , object_name
167260 , object_type_code
167261 , line_number
167262 , source_application_id
167263 , source_type_code
167264 , source_code
167265 , source_value
167266 , source_meaning
167267 , created_by
167268 , creation_date
167269 , last_update_date
167270 , last_updated_by
167271 , last_update_login
167272 , program_update_date
167273 , program_application_id
167274 , program_id
167275 , request_id
167276 )
167277 SELECT
167278 event_id
167279 , p_target_ledger_id
167280 , p_sla_ledger_id
167281 , p_language
167282 , object_name
167283 , object_type_code
167284 , line_number
167285 , source_application_id
167286 , source_type_code
167287 , source_code
167288 , SUBSTR(source_value ,1,1996)
167289 , SUBSTR(source_meaning,1,200)
167290 , xla_environment_pkg.g_Usr_Id
167291 , TRUNC(SYSDATE)
167292 , TRUNC(SYSDATE)
167293 , xla_environment_pkg.g_Usr_Id
167294 , xla_environment_pkg.g_Login_Id
167295 , TRUNC(SYSDATE)
167296 , xla_environment_pkg.g_Prog_Appl_Id
167297 , xla_environment_pkg.g_Prog_Id
167298 , xla_environment_pkg.g_Req_Id
167299 FROM (
167300 SELECT xet.event_id event_id
167301 , 0 line_number
167302 , CASE r
167303 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
167304 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
167305 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
167306 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
167307 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
167308 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
167309
167310 ELSE null
167311 END object_name
167312 , CASE r
167313 WHEN 1 THEN 'HEADER'
167314 WHEN 2 THEN 'HEADER'
167315 WHEN 3 THEN 'HEADER'
167316 WHEN 4 THEN 'HEADER'
167317 WHEN 5 THEN 'HEADER'
167318 WHEN 6 THEN 'HEADER'
167319
167320 ELSE null
167321 END object_type_code
167322 , CASE r
167323 WHEN 1 THEN '555'
167324 WHEN 2 THEN '555'
167328 WHEN 6 THEN '555'
167325 WHEN 3 THEN '555'
167326 WHEN 4 THEN '555'
167327 WHEN 5 THEN '555'
167329
167330 ELSE null
167331 END source_application_id
167332 , 'S' source_type_code
167333 , CASE r
167334 WHEN 1 THEN 'ENTITY_CODE'
167335 WHEN 2 THEN 'CURRENCY_CODE'
167336 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
167337 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
167338 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
167339 WHEN 6 THEN 'TRANSACTION_DATE'
167340
167341 ELSE null
167342 END source_code
167343 , CASE r
167344 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
167345 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
167346 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
167347 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
167348 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
167349 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
167350
167351 ELSE null
167352 END source_value
167353 , CASE r
167354 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
167355 1010186
167356 ,TO_CHAR(h1.CURRENCY_CODE)
167357 ,'CURRENCY_CODE'
167358 ,'S'
167359 ,555)
167360
167361 ELSE null
167362 END source_meaning
167363 FROM xla_events_gt xet
167364 , GMF_XLA_EXTRACT_HEADERS h1
167365 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
167366 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167367 AND xet.event_type_code = C_EVENT_TYPE_CODE
167368 AND h1.event_id = xet.event_id
167369
167370 )
167371 ;
167372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167373
167374 trace
167375 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
167376 ,p_level => C_LEVEL_STATEMENT
167377 ,p_module => l_log_module);
167378
167379 END IF;
167380 --
167381
167382
167383
167384 --
167385 INSERT INTO xla_diag_sources --line1
167386 (
167387 event_id
167388 , ledger_id
167389 , sla_ledger_id
167390 , description_language
167391 , object_name
167392 , object_type_code
167393 , line_number
167394 , source_application_id
167395 , source_type_code
167396 , source_code
167397 , source_value
167398 , source_meaning
167399 , created_by
167400 , creation_date
167401 , last_update_date
167402 , last_updated_by
167403 , last_update_login
167404 , program_update_date
167405 , program_application_id
167406 , program_id
167407 , request_id
167408 )
167409 SELECT event_id
167410 , p_target_ledger_id
167411 , p_sla_ledger_id
167412 , p_language
167413 , object_name
167414 , object_type_code
167415 , line_number
167416 , source_application_id
167417 , source_type_code
167418 , source_code
167419 , SUBSTR(source_value,1,1996)
167420 , SUBSTR(source_meaning,1,200)
167421 , xla_environment_pkg.g_Usr_Id
167422 , TRUNC(SYSDATE)
167423 , TRUNC(SYSDATE)
167424 , xla_environment_pkg.g_Usr_Id
167425 , xla_environment_pkg.g_Login_Id
167426 , TRUNC(SYSDATE)
167427 , xla_environment_pkg.g_Prog_Appl_Id
167428 , xla_environment_pkg.g_Prog_Id
167429 , xla_environment_pkg.g_Req_Id
167430 FROM (
167431 SELECT xet.event_id event_id
167432 , l2.line_number line_number
167433 , CASE r
167434 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
167435 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
167436 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
167437 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
167438 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
167439
167440 ELSE null
167441 END object_name
167442 , CASE r
167443 WHEN 1 THEN 'LINE'
167444 WHEN 2 THEN 'LINE'
167445 WHEN 3 THEN 'LINE'
167446 WHEN 4 THEN 'LINE'
167447 WHEN 5 THEN 'LINE'
167448
167449 ELSE null
167450 END object_type_code
167451 , CASE r
167452 WHEN 1 THEN '555'
167453 WHEN 2 THEN '555'
167454 WHEN 3 THEN '555'
167455 WHEN 4 THEN '555'
167456 WHEN 5 THEN '555'
167457
167458 ELSE null
167459 END source_application_id
167460 , 'S' source_type_code
167461 , CASE r
167462 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
167463 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
167467
167464 WHEN 3 THEN 'ENTERED_AMOUNT'
167465 WHEN 4 THEN 'LINE_ID'
167466 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
167468 ELSE null
167469 END source_code
167470 , CASE r
167471 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
167472 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
167473 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
167474 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
167475 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
167476
167477 ELSE null
167478 END source_value
167479 , null source_meaning
167480 FROM xla_events_gt xet
167481 , GMF_XLA_EXTRACT_LINES l2
167482 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
167483 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167484 AND xet.event_type_code = C_EVENT_TYPE_CODE
167485 AND l2.event_id = xet.event_id
167486
167487 )
167488 ;
167489 --
167490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167491
167492 trace
167493 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
167494 ,p_level => C_LEVEL_STATEMENT
167495 ,p_module => l_log_module);
167496
167497 END IF;
167498
167499
167500 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167501 trace
167502 (p_msg => 'END of insert_sources_287'
167503 ,p_level => C_LEVEL_PROCEDURE
167504 ,p_module => l_log_module);
167505 END IF;
167506 EXCEPTION
167507 WHEN xla_exceptions_pkg.application_exception THEN
167508 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
167509 trace
167510 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
167511 ,p_level => C_LEVEL_EXCEPTION
167512 ,p_module => l_log_module);
167513 END IF;
167514 RAISE;
167515 WHEN OTHERS THEN
167516 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
167517 trace
167518 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
167519 ,p_level => C_LEVEL_EXCEPTION
167520 ,p_module => l_log_module);
167521 END IF;
167522 xla_exceptions_pkg.raise_message
167523 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_287');
167524 END insert_sources_287;
167525 --
167526
167527 ---------------------------------------
167528 --
167529 -- PRIVATE FUNCTION
167530 -- EventType_287
167531 --
167532 ----------------------------------------
167533 --
167534 FUNCTION EventType_287
167535 (p_application_id IN NUMBER
167536 ,p_base_ledger_id IN NUMBER
167537 ,p_target_ledger_id IN NUMBER
167538 ,p_language IN VARCHAR2
167539 ,p_currency_code IN VARCHAR2
167540 ,p_sla_ledger_id IN NUMBER
167541 ,p_pad_start_date IN DATE
167542 ,p_pad_end_date IN DATE
167543 ,p_primary_ledger_id IN NUMBER)
167544 RETURN BOOLEAN IS
167545 --
167546 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_RECEIVE';
167547 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
167548
167549 l_calculate_acctd_flag VARCHAR2(1) :='N';
167550 l_calculate_g_l_flag VARCHAR2(1) :='N';
167551 --
167552 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167553 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167554 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167555 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167556 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167557 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167558 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167559 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167560 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167561 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167562 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167563 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167564 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167565 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167566 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167567 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167568 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167569 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167570 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167571 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167572 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167573 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167574 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
167575 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167579 l_event_id NUMBER;
167576 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
167577 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
167578
167580 l_previous_event_id NUMBER;
167581 l_first_event_id NUMBER;
167582 l_last_event_id NUMBER;
167583
167584 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
167585 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
167586 --
167587 --
167588 l_result BOOLEAN := TRUE;
167589 l_rows NUMBER := 1000;
167590 l_event_type_name VARCHAR2(80) := 'Logical Receiving';
167591 l_event_class_name VARCHAR2(80) := 'Receiving';
167592 l_description VARCHAR2(4000);
167593 l_transaction_reversal NUMBER;
167594 l_ae_header_id NUMBER;
167595 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
167596 l_log_module VARCHAR2(240);
167597 --
167598 l_acct_reversal_source VARCHAR2(30);
167599 l_trx_reversal_source VARCHAR2(30);
167600
167601 l_continue_with_lines BOOLEAN := TRUE;
167602 --
167603 l_acc_rev_gl_date_source DATE; -- 4262811
167604 --
167605 type t_array_event_id is table of number index by binary_integer;
167606
167607 l_rec_array_event t_rec_array_event;
167608 l_null_rec_array_event t_rec_array_event;
167609 l_array_ae_header_id xla_number_array_type;
167610 l_actual_flag VARCHAR2(1) := NULL;
167611 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
167612 l_balance_type_code VARCHAR2(1) :=NULL;
167613 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
167614
167615 --
167616 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
167617 --
167618
167619 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
167620 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
167621 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
167622 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
167623 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
167624 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
167625
167626 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
167627 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
167628 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
167629 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
167630 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
167631
167632 l_array_source_6 t_array_source_6;
167633 l_array_source_7 t_array_source_7;
167634 l_array_source_8 t_array_source_8;
167635 l_array_source_9 t_array_source_9;
167636 l_array_source_10 t_array_source_10;
167637 l_array_source_12 t_array_source_12;
167638
167639 l_array_source_1 t_array_source_1;
167640 l_array_source_2 t_array_source_2;
167641 l_array_source_3 t_array_source_3;
167642 l_array_source_5 t_array_source_5;
167643 l_array_source_11 t_array_source_11;
167644
167645 --
167646 CURSOR header_cur
167647 IS
167648 SELECT /*+ leading(xet) cardinality(xet,1) */
167649 -- Event Type Code: LOG_RECEIVE
167650 -- Event Class Code: RECEIVE
167651 xet.entity_id
167652 , xet.legal_entity_id
167653 , xet.entity_code
167654 , xet.transaction_number
167655 , xet.event_id
167656 , xet.event_class_code
167657 , xet.event_type_code
167658 , xet.event_number
167659 , xet.event_date
167660 , xet.transaction_date
167661 , xet.reference_num_1
167662 , xet.reference_num_2
167663 , xet.reference_num_3
167664 , xet.reference_num_4
167665 , xet.reference_char_1
167666 , xet.reference_char_2
167667 , xet.reference_char_3
167668 , xet.reference_char_4
167669 , xet.reference_date_1
167670 , xet.reference_date_2
167671 , xet.reference_date_3
167672 , xet.reference_date_4
167673 , xet.event_created_by
167674 , xet.budgetary_control_flag
167675 , h1.ENTITY_CODE source_6
167676 , h1.CURRENCY_CODE source_7
167677 , h1.CURRENCY_CONVERSION_DATE source_8
167678 , h1.CURRENCY_CONVERSION_RATE source_9
167679 , h1.CURRENCY_CONVERSION_TYPE source_10
167680 , h1.TRANSACTION_DATE source_12
167681 FROM xla_events_gt xet
167682 , GMF_XLA_EXTRACT_HEADERS h1
167683 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
167684 and xet.event_type_code = C_EVENT_TYPE_CODE
167685 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
167686
167687 ORDER BY event_id
167688 ;
167689
167690
167691 --
167692 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
167693 IS
167694 SELECT /*+ leading(xet) cardinality(xet,1) */
167695 -- Event Type Code: LOG_RECEIVE
167696 -- Event Class Code: RECEIVE
167697 xet.entity_id
167698 ,xet.legal_entity_id
167699 ,xet.entity_code
167703 ,xet.event_type_code
167700 ,xet.transaction_number
167701 ,xet.event_id
167702 ,xet.event_class_code
167704 ,xet.event_number
167705 ,xet.event_date
167706 ,xet.transaction_date
167707 ,xet.reference_num_1
167708 ,xet.reference_num_2
167709 ,xet.reference_num_3
167710 ,xet.reference_num_4
167711 ,xet.reference_char_1
167712 ,xet.reference_char_2
167713 ,xet.reference_char_3
167714 ,xet.reference_char_4
167715 ,xet.reference_date_1
167716 ,xet.reference_date_2
167717 ,xet.reference_date_3
167718 ,xet.reference_date_4
167719 ,xet.event_created_by
167720 ,xet.budgetary_control_flag , l2.LINE_NUMBER
167721 , l2.TRANSACTION_ACCOUNT_ID source_1
167722 , l2.JOURNAL_LINE_TYPE source_2
167723 , l2.ENTERED_AMOUNT source_3
167724 , l2.LINE_ID source_5
167725 , l2.ACCOUNTED_AMOUNT source_11
167726 FROM xla_events_gt xet
167727 , GMF_XLA_EXTRACT_LINES l2
167728 WHERE xet.event_id between x_first_event_id and x_last_event_id
167729 and xet.event_date between p_pad_start_date and p_pad_end_date
167730 and xet.event_type_code = C_EVENT_TYPE_CODE
167731 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
167732 ;
167733
167734 --
167735 BEGIN
167736 IF g_log_enabled THEN
167737 l_log_module := C_DEFAULT_MODULE||'.EventType_287';
167738 END IF;
167739 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167740 trace
167741 (p_msg => 'BEGIN of EventType_287'
167742 ,p_level => C_LEVEL_PROCEDURE
167743 ,p_module => l_log_module);
167744 END IF;
167745
167746 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167747 trace
167748 (p_msg => 'p_application_id = '||p_application_id||
167749 ' - p_base_ledger_id = '||p_base_ledger_id||
167750 ' - p_target_ledger_id = '||p_target_ledger_id||
167751 ' - p_language = '||p_language||
167752 ' - p_currency_code = '||p_currency_code||
167753 ' - p_sla_ledger_id = '||p_sla_ledger_id
167754 ,p_level => C_LEVEL_STATEMENT
167755 ,p_module => l_log_module);
167756 END IF;
167757 --
167758 -- initialze arrays
167759 --
167760 g_array_event.DELETE;
167761 l_rec_array_event := l_null_rec_array_event;
167762 --
167763 --------------------------------------
167764 -- 4262811 Initialze MPA Line Number
167765 --------------------------------------
167766 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
167767
167768 --
167769
167770 --
167771 OPEN header_cur;
167772 --
167773 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167774 trace
167775 (p_msg => 'SQL - FETCH header_cur'
167776 ,p_level => C_LEVEL_STATEMENT
167777 ,p_module => l_log_module);
167778 END IF;
167779 --
167780 LOOP
167781 FETCH header_cur BULK COLLECT INTO
167782 l_array_entity_id
167783 , l_array_legal_entity_id
167784 , l_array_entity_code
167785 , l_array_transaction_num
167786 , l_array_event_id
167787 , l_array_class_code
167788 , l_array_event_type
167789 , l_array_event_number
167790 , l_array_event_date
167791 , l_array_transaction_date
167792 , l_array_reference_num_1
167793 , l_array_reference_num_2
167794 , l_array_reference_num_3
167795 , l_array_reference_num_4
167796 , l_array_reference_char_1
167797 , l_array_reference_char_2
167798 , l_array_reference_char_3
167799 , l_array_reference_char_4
167800 , l_array_reference_date_1
167801 , l_array_reference_date_2
167802 , l_array_reference_date_3
167803 , l_array_reference_date_4
167804 , l_array_event_created_by
167805 , l_array_budgetary_control_flag
167806 , l_array_source_6
167807 , l_array_source_7
167808 , l_array_source_8
167809 , l_array_source_9
167810 , l_array_source_10
167811 , l_array_source_12
167812 LIMIT l_rows;
167813 --
167814 IF (C_LEVEL_EVENT >= g_log_level) THEN
167815 trace
167816 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
167817 ,p_level => C_LEVEL_EVENT
167818 ,p_module => l_log_module);
167819 END IF;
167820 --
167821 EXIT WHEN l_array_entity_id.COUNT = 0;
167822
167823 -- initialize arrays
167824 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
167825 XLA_AE_LINES_PKG.g_rec_lines := NULL;
167826
167827 --
167828 -- Bug 4458708
167829 --
167830 XLA_AE_LINES_PKG.g_LineNumber := 0;
167831
167832
167833 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
167834 g_last_hdr_idx := l_array_event_id.LAST;
167835 --
167836 -- loop for the headers. Each iteration is for each header extract row
167837 -- fetched in header cursor
167838 --
167839 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
167840
167841 --
167842 -- set event info as cache for other routines to refer event attributes
167843 --
167844 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
167845 (p_application_id => p_application_id
167846 ,p_primary_ledger_id => p_primary_ledger_id
167847 ,p_base_ledger_id => p_base_ledger_id
167848 ,p_target_ledger_id => p_target_ledger_id
167849 ,p_entity_id => l_array_entity_id(hdr_idx)
167853 ,p_event_id => l_array_event_id(hdr_idx)
167850 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
167851 ,p_entity_code => l_array_entity_code(hdr_idx)
167852 ,p_transaction_num => l_array_transaction_num(hdr_idx)
167854 ,p_event_class_code => l_array_class_code(hdr_idx)
167855 ,p_event_type_code => l_array_event_type(hdr_idx)
167856 ,p_event_number => l_array_event_number(hdr_idx)
167857 ,p_event_date => l_array_event_date(hdr_idx)
167858 ,p_transaction_date => l_array_transaction_date(hdr_idx)
167859 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
167860 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
167861 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
167862 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
167863 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
167864 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
167865 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
167866 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
167867 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
167868 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
167869 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
167870 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
167871 ,p_event_created_by => l_array_event_created_by(hdr_idx)
167872 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
167873
167874 --
167875 -- set the status of entry to C_VALID (0)
167876 --
167877 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
167878
167879 --
167880 -- initialize a row for ae header
167881 --
167882 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
167883
167884 l_event_id := l_array_event_id(hdr_idx);
167885
167886 --
167887 -- storing the hdr_idx for event. May be used by line cursor.
167888 --
167889 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
167890
167891 --
167892 -- store sources from header extract. This can be improved to
167893 -- store only those sources from header extract that may be used in lines
167894 --
167895
167896 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
167897 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
167898 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
167899 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
167900 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
167901 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
167902
167903 --
167904 -- initilaize the status of ae headers for diffrent balance types
167905 -- the status is initialised to C_NOT_CREATED (2)
167906 --
167907 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167908 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167909 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167910
167911 --
167912 -- call api to validate and store accounting attributes for header
167913 --
167914
167915 ------------------------------------------------------------
167916 -- Accrual Reversal : to get date for Standard Source (NONE)
167917 ------------------------------------------------------------
167918 l_acc_rev_gl_date_source := NULL;
167919
167920 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
167921 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
167922
167923
167924 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
167925
167926 XLA_AE_HEADER_PKG.SetJeCategoryName;
167927
167928 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
167929 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
167930 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
167931 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
167932 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
167933
167934
167935 -- No header level analytical criteria
167936
167937 --
167938 --accounting attribute enhancement, bug 3612931
167939 --
167940 l_trx_reversal_source := SUBSTR(NULL, 1,30);
167941
167942 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
167943 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
167944
167945 xla_accounting_err_pkg.build_message
167946 (p_appli_s_name => 'XLA'
167947 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
167948 ,p_token_1 => 'ACCT_ATTR_NAME'
167949 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
167950 ,p_token_2 => 'PRODUCT_NAME'
167951 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
167952 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
167953 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
167954 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
167955
167959 -- accounting for a distributeion
167956 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
167957 --
167958 -- following sets the accounting attributes needed to reverse
167960 --
167961 xla_ae_lines_pkg.SetTrxReversalAttrs
167962 (p_event_id => l_event_id
167963 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
167964 ,p_trx_reversal_source => l_trx_reversal_source);
167965
167966 END IF;
167967
167968
167969 ----------------------------------------------------------------
167970 -- 4262811 - update the header statuses to invalid in need be
167971 ----------------------------------------------------------------
167972 --
167973 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
167974
167975
167976 -----------------------------------------------
167977 -- No accrual reversal for the event class/type
167978 -----------------------------------------------
167979 ----------------------------------------------------------------
167980
167981 --
167982 -- this ends the header loop iteration for one bulk fetch
167983 --
167984 END LOOP;
167985
167986 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
167987 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
167988
167989 --
167990 -- insert dummy rows into lines gt table that were created due to
167991 -- transaction reversals
167992 --
167993 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
167994 l_result := XLA_AE_LINES_PKG.InsertLines;
167995 END IF;
167996
167997 --
167998 -- reset the temp_line_num for each set of events fetched from header
167999 -- cursor rather than doing it for each new event in line cursor
168000 -- Bug 3939231
168001 --
168002 xla_ae_lines_pkg.g_temp_line_num := 0;
168003
168004
168005
168006 --
168007 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
168008 --
168009 --
168010 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168011
168012 trace
168013 (p_msg => 'SQL - FETCH line_cur'
168014 ,p_level => C_LEVEL_STATEMENT
168015 ,p_module => l_log_module);
168016
168017 END IF;
168018 --
168019 --
168020 LOOP
168021 --
168022 FETCH line_cur BULK COLLECT INTO
168023 l_array_entity_id
168024 , l_array_legal_entity_id
168025 , l_array_entity_code
168026 , l_array_transaction_num
168027 , l_array_event_id
168028 , l_array_class_code
168029 , l_array_event_type
168030 , l_array_event_number
168031 , l_array_event_date
168032 , l_array_transaction_date
168033 , l_array_reference_num_1
168034 , l_array_reference_num_2
168035 , l_array_reference_num_3
168036 , l_array_reference_num_4
168037 , l_array_reference_char_1
168038 , l_array_reference_char_2
168039 , l_array_reference_char_3
168040 , l_array_reference_char_4
168041 , l_array_reference_date_1
168042 , l_array_reference_date_2
168043 , l_array_reference_date_3
168044 , l_array_reference_date_4
168045 , l_array_event_created_by
168046 , l_array_budgetary_control_flag
168047 , l_array_extract_line_num
168048 , l_array_source_1
168049 , l_array_source_2
168050 , l_array_source_3
168051 , l_array_source_5
168052 , l_array_source_11
168053 LIMIT l_rows;
168054
168055 --
168056 IF (C_LEVEL_EVENT >= g_log_level) THEN
168057 trace
168058 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
168059 ,p_level => C_LEVEL_EVENT
168060 ,p_module => l_log_module);
168061 END IF;
168062 --
168063 EXIT WHEN l_array_entity_id.count = 0;
168064
168065 XLA_AE_LINES_PKG.g_rec_lines := null;
168066
168067 --
168068 -- Bug 4458708
168069 --
168070 XLA_AE_LINES_PKG.g_LineNumber := 0;
168071 --
168072 --
168073
168074 FOR Idx IN 1..l_array_event_id.count LOOP
168075 --
168076 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
168077 --
168078 l_event_id := l_array_event_id(idx); -- 5648433
168079
168080 --
168081 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168082 --
168083
168084 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
168085 (g_array_event(l_event_id).array_value_num('header_index'))
168086 ,'N'
168087 ) <> 'Y'
168088 THEN
168089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168090 trace
168091 (p_msg => 'Trancaction revesal option is not Y '
168092 ,p_level => C_LEVEL_STATEMENT
168093 ,p_module => l_log_module);
168094 END IF;
168095
168096 --
168097 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
168098 --
168099 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
168100 --
168101 -- set event info as cache for other routines to refer event attributes
168102 --
168103
168104 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
168105 l_previous_event_id := l_event_id;
168106
168107 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
168111 ,p_target_ledger_id => p_target_ledger_id
168108 (p_application_id => p_application_id
168109 ,p_primary_ledger_id => p_primary_ledger_id
168110 ,p_base_ledger_id => p_base_ledger_id
168112 ,p_entity_id => l_array_entity_id(Idx)
168113 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
168114 ,p_entity_code => l_array_entity_code(Idx)
168115 ,p_transaction_num => l_array_transaction_num(Idx)
168116 ,p_event_id => l_array_event_id(Idx)
168117 ,p_event_class_code => l_array_class_code(Idx)
168118 ,p_event_type_code => l_array_event_type(Idx)
168119 ,p_event_number => l_array_event_number(Idx)
168120 ,p_event_date => l_array_event_date(Idx)
168121 ,p_transaction_date => l_array_transaction_date(Idx)
168122 ,p_reference_num_1 => l_array_reference_num_1(Idx)
168123 ,p_reference_num_2 => l_array_reference_num_2(Idx)
168124 ,p_reference_num_3 => l_array_reference_num_3(Idx)
168125 ,p_reference_num_4 => l_array_reference_num_4(Idx)
168126 ,p_reference_char_1 => l_array_reference_char_1(Idx)
168127 ,p_reference_char_2 => l_array_reference_char_2(Idx)
168128 ,p_reference_char_3 => l_array_reference_char_3(Idx)
168129 ,p_reference_char_4 => l_array_reference_char_4(Idx)
168130 ,p_reference_date_1 => l_array_reference_date_1(Idx)
168131 ,p_reference_date_2 => l_array_reference_date_2(Idx)
168132 ,p_reference_date_3 => l_array_reference_date_3(Idx)
168133 ,p_reference_date_4 => l_array_reference_date_4(Idx)
168134 ,p_event_created_by => l_array_event_created_by(Idx)
168135 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
168136 --
168137 END IF;
168138
168139
168140
168141 --
168142 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
168143
168144 l_acct_reversal_source := SUBSTR(NULL, 1,30);
168145
168146 IF l_continue_with_lines THEN
168147 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
168148 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
168149
168150 xla_accounting_err_pkg.build_message
168151 (p_appli_s_name => 'XLA'
168152 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
168153 ,p_token_1 => 'LINE_NUMBER'
168154 ,p_value_1 => l_array_extract_line_num(Idx)
168155 ,p_token_2 => 'PRODUCT_NAME'
168156 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
168157 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
168158 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
168159 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
168160
168161 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
168162 --
168163 -- following sets the accounting attributes needed to reverse
168164 -- accounting for a distributeion
168165 --
168166
168167 --
168168 -- 5217187
168169 --
168170 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
168171 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
168172 g_array_event(l_event_id).array_value_num('header_index'));
168173 --
168174 --
168175
168176 -- No reversal code generated
168177
168178 xla_ae_lines_pkg.SetAcctReversalAttrs
168179 (p_event_id => l_event_id
168180 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
168181 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168182 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
168183 END IF;
168184
168185 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
168186 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
168187
168188 --
168189 AcctLineType_48 (
168190 p_application_id => p_application_id
168191 ,p_event_id => l_event_id
168192 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168193 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168194 ,p_actual_flag => l_actual_flag
168195 ,p_balance_type_code => l_balance_type_code
168196 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168197
168198 , p_source_1 => l_array_source_1(Idx)
168199 , p_source_2 => l_array_source_2(Idx)
168200 , p_source_3 => l_array_source_3(Idx)
168201 , p_source_5 => l_array_source_5(Idx)
168202 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
168203 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
168204 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
168205 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
168206 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
168207 , p_source_11 => l_array_source_11(Idx)
168208 );
168209 If(l_balance_type_code = 'A') THEN
168210 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168211 END IF;
168212
168213 --
168214
168215
168216 --
168217 AcctLineType_64 (
168218 p_application_id => p_application_id
168219 ,p_event_id => l_event_id
168220 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168224 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168221 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168222 ,p_actual_flag => l_actual_flag
168223 ,p_balance_type_code => l_balance_type_code
168225
168226 , p_source_1 => l_array_source_1(Idx)
168227 , p_source_2 => l_array_source_2(Idx)
168228 , p_source_3 => l_array_source_3(Idx)
168229 , p_source_5 => l_array_source_5(Idx)
168230 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
168231 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
168232 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
168233 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
168234 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
168235 , p_source_11 => l_array_source_11(Idx)
168236 );
168237 If(l_balance_type_code = 'A') THEN
168238 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168239 END IF;
168240
168241 --
168242
168243
168244 --
168245 AcctLineType_121 (
168246 p_application_id => p_application_id
168247 ,p_event_id => l_event_id
168248 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168249 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168250 ,p_actual_flag => l_actual_flag
168251 ,p_balance_type_code => l_balance_type_code
168252 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168253
168254 , p_source_1 => l_array_source_1(Idx)
168255 , p_source_2 => l_array_source_2(Idx)
168256 , p_source_3 => l_array_source_3(Idx)
168257 , p_source_5 => l_array_source_5(Idx)
168258 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
168259 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
168260 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
168261 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
168262 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
168263 , p_source_11 => l_array_source_11(Idx)
168264 );
168265 If(l_balance_type_code = 'A') THEN
168266 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168267 END IF;
168268
168269 --
168270
168271 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
168272 -- or secondary ledger that has different currency with primary
168273 -- or alc that is calculated by sla
168274 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
168275 (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'))
168276
168277 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
168278 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
168279 AND (l_actual_flag = 'A')) THEN
168280 XLA_AE_LINES_PKG.CreateGainOrLossLines(
168281 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
168282 ,p_application_id => p_application_id
168283 ,p_amb_context_code => 'DEFAULT'
168284 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
168285 ,p_event_class_code => C_EVENT_CLASS_CODE
168286 ,p_event_type_code => C_EVENT_TYPE_CODE
168287
168288 ,p_gain_ccid => -1
168289 ,p_loss_ccid => -1
168290
168291 ,p_actual_flag => l_actual_flag
168292 ,p_enc_flag => null
168293 ,p_actual_g_l_ref => l_actual_gain_loss_ref
168294 ,p_enc_g_l_ref => null
168295 );
168296 END IF;
168297 END IF;
168298 END IF;
168299
168300 ELSE
168301 --
168302 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168303 --
168304 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168305 trace
168306 (p_msg => 'Trancaction revesal option is Y'
168307 ,p_level => C_LEVEL_STATEMENT
168308 ,p_module => l_log_module);
168309 END IF;
168310 END IF;
168311
168312 END LOOP;
168313 l_result := XLA_AE_LINES_PKG.InsertLines ;
168314 end loop;
168315 close line_cur;
168316
168317
168318 --
168319 -- insert headers into xla_ae_headers_gt table
168320 --
168321 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
168322
168323 -- insert into errors table here.
168324
168325 END LOOP;
168326
168327 --
168328 -- 4865292
168329 --
168330 -- Compare g_hdr_extract_count with event count in
168331 -- CreateHeadersAndLines.
168332 --
168333 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
168334
168335 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168336 trace (p_msg => '# rows extracted from header extract objects '
168337 || ' (running total): '
168338 || g_hdr_extract_count
168339 ,p_level => C_LEVEL_STATEMENT
168340 ,p_module => l_log_module);
168341 END IF;
168342
168343 CLOSE header_cur;
168344 --
168345
168346 --
168347 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168348 trace
168349 (p_msg => 'END of EventType_287'
168350 ,p_level => C_LEVEL_PROCEDURE
168351 ,p_module => l_log_module);
168352 END IF;
168353 --
168354 RETURN l_result;
168355 EXCEPTION
168356 WHEN xla_exceptions_pkg.application_exception THEN
168357
168358 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168359
168360
168364
168361 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
168362
168363 RAISE;
168365 WHEN NO_DATA_FOUND THEN
168366
168367 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168368 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
168369
168370 FOR header_record IN header_cur
168371 LOOP
168372 l_array_header_events(header_record.event_id) := header_record.event_id;
168373 END LOOP;
168374
168375 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
168376 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
168377
168378 fnd_file.put_line(fnd_file.LOG, ' ');
168379 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168380 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
168381 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
168382
168383 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
168384 LOOP
168385 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
168386 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
168387 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
168388 END IF;
168389 END LOOP;
168390
168391 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168392 fnd_file.put_line(fnd_file.LOG, ' ');
168393
168394
168395 xla_exceptions_pkg.raise_message
168396 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_287');
168397
168398
168399 WHEN OTHERS THEN
168400 xla_exceptions_pkg.raise_message
168401 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_287');
168402 END EventType_287;
168403 --
168404
168405 ---------------------------------------
168406 --
168407 -- PRIVATE PROCEDURE
168408 -- insert_sources_288
168409 --
168410 ----------------------------------------
168411 --
168412 PROCEDURE insert_sources_288(
168413 p_target_ledger_id IN NUMBER
168414 , p_language IN VARCHAR2
168415 , p_sla_ledger_id IN NUMBER
168416 , p_pad_start_date IN DATE
168417 , p_pad_end_date IN DATE
168418 )
168419 IS
168420
168421 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_RET_TO_RECEIVING';
168422 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
168423 p_apps_owner VARCHAR2(30);
168424 l_log_module VARCHAR2(240);
168425 BEGIN
168426 IF g_log_enabled THEN
168427 l_log_module := C_DEFAULT_MODULE||'.insert_sources_288';
168428 END IF;
168429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168430
168431 trace
168432 (p_msg => 'BEGIN of insert_sources_288'
168433 ,p_level => C_LEVEL_PROCEDURE
168434 ,p_module => l_log_module);
168435
168436 END IF;
168437
168438 -- select APPS owner
168439 SELECT oracle_username
168440 INTO p_apps_owner
168441 FROM fnd_oracle_userid
168442 WHERE read_only_flag = 'U'
168443 ;
168444
168445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168446 trace
168447 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
168448 ' - p_language = '||p_language||
168449 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
168450 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
168451 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
168452 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
168453 ,p_level => C_LEVEL_STATEMENT
168454 ,p_module => l_log_module);
168455 END IF;
168456
168457
168458 --
168459 INSERT INTO xla_diag_sources --hdr1
168460 (
168461 event_id
168462 , ledger_id
168463 , sla_ledger_id
168464 , description_language
168465 , object_name
168466 , object_type_code
168467 , line_number
168468 , source_application_id
168469 , source_type_code
168470 , source_code
168471 , source_value
168472 , source_meaning
168473 , created_by
168474 , creation_date
168475 , last_update_date
168476 , last_updated_by
168477 , last_update_login
168478 , program_update_date
168479 , program_application_id
168480 , program_id
168481 , request_id
168482 )
168483 SELECT
168484 event_id
168485 , p_target_ledger_id
168486 , p_sla_ledger_id
168487 , p_language
168488 , object_name
168489 , object_type_code
168490 , line_number
168491 , source_application_id
168492 , source_type_code
168493 , source_code
168494 , SUBSTR(source_value ,1,1996)
168495 , SUBSTR(source_meaning,1,200)
168496 , xla_environment_pkg.g_Usr_Id
168497 , TRUNC(SYSDATE)
168498 , TRUNC(SYSDATE)
168499 , xla_environment_pkg.g_Usr_Id
168500 , xla_environment_pkg.g_Login_Id
168501 , TRUNC(SYSDATE)
168502 , xla_environment_pkg.g_Prog_Appl_Id
168503 , xla_environment_pkg.g_Prog_Id
168504 , xla_environment_pkg.g_Req_Id
168508 , CASE r
168505 FROM (
168506 SELECT xet.event_id event_id
168507 , 0 line_number
168509 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
168510 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
168511 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
168512 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
168513 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
168514 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
168515
168516 ELSE null
168517 END object_name
168518 , CASE r
168519 WHEN 1 THEN 'HEADER'
168520 WHEN 2 THEN 'HEADER'
168521 WHEN 3 THEN 'HEADER'
168522 WHEN 4 THEN 'HEADER'
168523 WHEN 5 THEN 'HEADER'
168524 WHEN 6 THEN 'HEADER'
168525
168526 ELSE null
168527 END object_type_code
168528 , CASE r
168529 WHEN 1 THEN '555'
168530 WHEN 2 THEN '555'
168531 WHEN 3 THEN '555'
168532 WHEN 4 THEN '555'
168533 WHEN 5 THEN '555'
168534 WHEN 6 THEN '555'
168535
168536 ELSE null
168537 END source_application_id
168538 , 'S' source_type_code
168539 , CASE r
168540 WHEN 1 THEN 'ENTITY_CODE'
168541 WHEN 2 THEN 'CURRENCY_CODE'
168542 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
168543 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
168544 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
168545 WHEN 6 THEN 'TRANSACTION_DATE'
168546
168547 ELSE null
168548 END source_code
168549 , CASE r
168550 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
168551 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
168552 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
168553 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
168554 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
168555 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
168556
168557 ELSE null
168558 END source_value
168559 , CASE r
168560 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
168561 1010186
168562 ,TO_CHAR(h1.CURRENCY_CODE)
168563 ,'CURRENCY_CODE'
168564 ,'S'
168565 ,555)
168566
168567 ELSE null
168568 END source_meaning
168569 FROM xla_events_gt xet
168570 , GMF_XLA_EXTRACT_HEADERS h1
168571 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
168572 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168573 AND xet.event_type_code = C_EVENT_TYPE_CODE
168574 AND h1.event_id = xet.event_id
168575
168576 )
168577 ;
168578 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168579
168580 trace
168581 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
168582 ,p_level => C_LEVEL_STATEMENT
168583 ,p_module => l_log_module);
168584
168585 END IF;
168586 --
168587
168588
168589
168590 --
168591 INSERT INTO xla_diag_sources --line1
168592 (
168593 event_id
168594 , ledger_id
168595 , sla_ledger_id
168596 , description_language
168597 , object_name
168598 , object_type_code
168599 , line_number
168600 , source_application_id
168601 , source_type_code
168602 , source_code
168603 , source_value
168604 , source_meaning
168605 , created_by
168606 , creation_date
168607 , last_update_date
168608 , last_updated_by
168609 , last_update_login
168610 , program_update_date
168611 , program_application_id
168612 , program_id
168613 , request_id
168614 )
168615 SELECT event_id
168616 , p_target_ledger_id
168617 , p_sla_ledger_id
168618 , p_language
168619 , object_name
168620 , object_type_code
168621 , line_number
168622 , source_application_id
168623 , source_type_code
168624 , source_code
168625 , SUBSTR(source_value,1,1996)
168626 , SUBSTR(source_meaning,1,200)
168627 , xla_environment_pkg.g_Usr_Id
168628 , TRUNC(SYSDATE)
168629 , TRUNC(SYSDATE)
168630 , xla_environment_pkg.g_Usr_Id
168631 , xla_environment_pkg.g_Login_Id
168632 , TRUNC(SYSDATE)
168633 , xla_environment_pkg.g_Prog_Appl_Id
168634 , xla_environment_pkg.g_Prog_Id
168635 , xla_environment_pkg.g_Req_Id
168636 FROM (
168637 SELECT xet.event_id event_id
168638 , l2.line_number line_number
168639 , CASE r
168640 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
168641 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
168645
168642 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
168643 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
168644 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
168646 ELSE null
168647 END object_name
168648 , CASE r
168649 WHEN 1 THEN 'LINE'
168650 WHEN 2 THEN 'LINE'
168651 WHEN 3 THEN 'LINE'
168652 WHEN 4 THEN 'LINE'
168653 WHEN 5 THEN 'LINE'
168654
168655 ELSE null
168656 END object_type_code
168657 , CASE r
168658 WHEN 1 THEN '555'
168659 WHEN 2 THEN '555'
168660 WHEN 3 THEN '555'
168661 WHEN 4 THEN '555'
168662 WHEN 5 THEN '555'
168663
168664 ELSE null
168665 END source_application_id
168666 , 'S' source_type_code
168667 , CASE r
168668 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
168669 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
168670 WHEN 3 THEN 'ENTERED_AMOUNT'
168671 WHEN 4 THEN 'LINE_ID'
168672 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
168673
168674 ELSE null
168675 END source_code
168676 , CASE r
168677 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
168678 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
168679 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
168680 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
168681 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
168682
168683 ELSE null
168684 END source_value
168685 , null source_meaning
168686 FROM xla_events_gt xet
168687 , GMF_XLA_EXTRACT_LINES l2
168688 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
168689 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168690 AND xet.event_type_code = C_EVENT_TYPE_CODE
168691 AND l2.event_id = xet.event_id
168692
168693 )
168694 ;
168695 --
168696 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168697
168698 trace
168699 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
168700 ,p_level => C_LEVEL_STATEMENT
168701 ,p_module => l_log_module);
168702
168703 END IF;
168704
168705
168706 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168707 trace
168708 (p_msg => 'END of insert_sources_288'
168709 ,p_level => C_LEVEL_PROCEDURE
168710 ,p_module => l_log_module);
168711 END IF;
168712 EXCEPTION
168713 WHEN xla_exceptions_pkg.application_exception THEN
168714 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168715 trace
168716 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168717 ,p_level => C_LEVEL_EXCEPTION
168718 ,p_module => l_log_module);
168719 END IF;
168720 RAISE;
168721 WHEN OTHERS THEN
168722 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168723 trace
168724 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168725 ,p_level => C_LEVEL_EXCEPTION
168726 ,p_module => l_log_module);
168727 END IF;
168728 xla_exceptions_pkg.raise_message
168729 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_288');
168730 END insert_sources_288;
168731 --
168732
168733 ---------------------------------------
168734 --
168735 -- PRIVATE FUNCTION
168736 -- EventType_288
168737 --
168738 ----------------------------------------
168739 --
168740 FUNCTION EventType_288
168741 (p_application_id IN NUMBER
168742 ,p_base_ledger_id IN NUMBER
168743 ,p_target_ledger_id IN NUMBER
168744 ,p_language IN VARCHAR2
168745 ,p_currency_code IN VARCHAR2
168746 ,p_sla_ledger_id IN NUMBER
168747 ,p_pad_start_date IN DATE
168748 ,p_pad_end_date IN DATE
168749 ,p_primary_ledger_id IN NUMBER)
168750 RETURN BOOLEAN IS
168751 --
168752 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_RET_TO_RECEIVING';
168753 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
168754
168755 l_calculate_acctd_flag VARCHAR2(1) :='N';
168756 l_calculate_g_l_flag VARCHAR2(1) :='N';
168757 --
168758 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168759 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168760 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168761 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168762 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168763 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168764 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168765 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168766 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168770 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168767 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168768 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168769 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168771 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168772 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168773 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168774 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168775 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168776 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168777 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168778 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168779 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168780 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
168781 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168782 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
168783 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
168784
168785 l_event_id NUMBER;
168786 l_previous_event_id NUMBER;
168787 l_first_event_id NUMBER;
168788 l_last_event_id NUMBER;
168789
168790 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
168791 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
168792 --
168793 --
168794 l_result BOOLEAN := TRUE;
168795 l_rows NUMBER := 1000;
168796 l_event_type_name VARCHAR2(80) := 'Logical Return to Receiving';
168797 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
168798 l_description VARCHAR2(4000);
168799 l_transaction_reversal NUMBER;
168800 l_ae_header_id NUMBER;
168801 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
168802 l_log_module VARCHAR2(240);
168803 --
168804 l_acct_reversal_source VARCHAR2(30);
168805 l_trx_reversal_source VARCHAR2(30);
168806
168807 l_continue_with_lines BOOLEAN := TRUE;
168808 --
168809 l_acc_rev_gl_date_source DATE; -- 4262811
168810 --
168811 type t_array_event_id is table of number index by binary_integer;
168812
168813 l_rec_array_event t_rec_array_event;
168814 l_null_rec_array_event t_rec_array_event;
168815 l_array_ae_header_id xla_number_array_type;
168816 l_actual_flag VARCHAR2(1) := NULL;
168817 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
168818 l_balance_type_code VARCHAR2(1) :=NULL;
168819 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
168820
168821 --
168822 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
168823 --
168824
168825 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
168826 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
168827 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
168828 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
168829 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
168830 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
168831
168832 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
168833 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
168834 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168835 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
168836 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168837
168838 l_array_source_6 t_array_source_6;
168839 l_array_source_7 t_array_source_7;
168840 l_array_source_8 t_array_source_8;
168841 l_array_source_9 t_array_source_9;
168842 l_array_source_10 t_array_source_10;
168843 l_array_source_12 t_array_source_12;
168844
168845 l_array_source_1 t_array_source_1;
168846 l_array_source_2 t_array_source_2;
168847 l_array_source_3 t_array_source_3;
168848 l_array_source_5 t_array_source_5;
168849 l_array_source_11 t_array_source_11;
168850
168851 --
168852 CURSOR header_cur
168853 IS
168854 SELECT /*+ leading(xet) cardinality(xet,1) */
168855 -- Event Type Code: LOG_RET_TO_RECEIVING
168856 -- Event Class Code: DELIVER
168857 xet.entity_id
168858 , xet.legal_entity_id
168859 , xet.entity_code
168860 , xet.transaction_number
168861 , xet.event_id
168862 , xet.event_class_code
168863 , xet.event_type_code
168864 , xet.event_number
168865 , xet.event_date
168866 , xet.transaction_date
168867 , xet.reference_num_1
168868 , xet.reference_num_2
168869 , xet.reference_num_3
168870 , xet.reference_num_4
168871 , xet.reference_char_1
168872 , xet.reference_char_2
168876 , xet.reference_date_2
168873 , xet.reference_char_3
168874 , xet.reference_char_4
168875 , xet.reference_date_1
168877 , xet.reference_date_3
168878 , xet.reference_date_4
168879 , xet.event_created_by
168880 , xet.budgetary_control_flag
168881 , h1.ENTITY_CODE source_6
168882 , h1.CURRENCY_CODE source_7
168883 , h1.CURRENCY_CONVERSION_DATE source_8
168884 , h1.CURRENCY_CONVERSION_RATE source_9
168885 , h1.CURRENCY_CONVERSION_TYPE source_10
168886 , h1.TRANSACTION_DATE source_12
168887 FROM xla_events_gt xet
168888 , GMF_XLA_EXTRACT_HEADERS h1
168889 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
168890 and xet.event_type_code = C_EVENT_TYPE_CODE
168891 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
168892
168893 ORDER BY event_id
168894 ;
168895
168896
168897 --
168898 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
168899 IS
168900 SELECT /*+ leading(xet) cardinality(xet,1) */
168901 -- Event Type Code: LOG_RET_TO_RECEIVING
168902 -- Event Class Code: DELIVER
168903 xet.entity_id
168904 ,xet.legal_entity_id
168905 ,xet.entity_code
168906 ,xet.transaction_number
168907 ,xet.event_id
168908 ,xet.event_class_code
168909 ,xet.event_type_code
168910 ,xet.event_number
168911 ,xet.event_date
168912 ,xet.transaction_date
168913 ,xet.reference_num_1
168914 ,xet.reference_num_2
168915 ,xet.reference_num_3
168916 ,xet.reference_num_4
168917 ,xet.reference_char_1
168918 ,xet.reference_char_2
168919 ,xet.reference_char_3
168920 ,xet.reference_char_4
168921 ,xet.reference_date_1
168922 ,xet.reference_date_2
168923 ,xet.reference_date_3
168924 ,xet.reference_date_4
168925 ,xet.event_created_by
168926 ,xet.budgetary_control_flag , l2.LINE_NUMBER
168927 , l2.TRANSACTION_ACCOUNT_ID source_1
168928 , l2.JOURNAL_LINE_TYPE source_2
168929 , l2.ENTERED_AMOUNT source_3
168930 , l2.LINE_ID source_5
168931 , l2.ACCOUNTED_AMOUNT source_11
168932 FROM xla_events_gt xet
168933 , GMF_XLA_EXTRACT_LINES l2
168934 WHERE xet.event_id between x_first_event_id and x_last_event_id
168935 and xet.event_date between p_pad_start_date and p_pad_end_date
168936 and xet.event_type_code = C_EVENT_TYPE_CODE
168937 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
168938 ;
168939
168940 --
168941 BEGIN
168942 IF g_log_enabled THEN
168943 l_log_module := C_DEFAULT_MODULE||'.EventType_288';
168944 END IF;
168945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168946 trace
168947 (p_msg => 'BEGIN of EventType_288'
168948 ,p_level => C_LEVEL_PROCEDURE
168949 ,p_module => l_log_module);
168950 END IF;
168951
168952 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168953 trace
168954 (p_msg => 'p_application_id = '||p_application_id||
168955 ' - p_base_ledger_id = '||p_base_ledger_id||
168956 ' - p_target_ledger_id = '||p_target_ledger_id||
168957 ' - p_language = '||p_language||
168958 ' - p_currency_code = '||p_currency_code||
168959 ' - p_sla_ledger_id = '||p_sla_ledger_id
168960 ,p_level => C_LEVEL_STATEMENT
168961 ,p_module => l_log_module);
168962 END IF;
168963 --
168964 -- initialze arrays
168965 --
168966 g_array_event.DELETE;
168967 l_rec_array_event := l_null_rec_array_event;
168968 --
168969 --------------------------------------
168970 -- 4262811 Initialze MPA Line Number
168971 --------------------------------------
168972 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
168973
168974 --
168975
168976 --
168977 OPEN header_cur;
168978 --
168979 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168980 trace
168981 (p_msg => 'SQL - FETCH header_cur'
168982 ,p_level => C_LEVEL_STATEMENT
168983 ,p_module => l_log_module);
168984 END IF;
168985 --
168986 LOOP
168987 FETCH header_cur BULK COLLECT INTO
168988 l_array_entity_id
168989 , l_array_legal_entity_id
168990 , l_array_entity_code
168991 , l_array_transaction_num
168992 , l_array_event_id
168993 , l_array_class_code
168994 , l_array_event_type
168995 , l_array_event_number
168996 , l_array_event_date
168997 , l_array_transaction_date
168998 , l_array_reference_num_1
168999 , l_array_reference_num_2
169000 , l_array_reference_num_3
169001 , l_array_reference_num_4
169002 , l_array_reference_char_1
169003 , l_array_reference_char_2
169004 , l_array_reference_char_3
169005 , l_array_reference_char_4
169006 , l_array_reference_date_1
169007 , l_array_reference_date_2
169008 , l_array_reference_date_3
169009 , l_array_reference_date_4
169010 , l_array_event_created_by
169011 , l_array_budgetary_control_flag
169012 , l_array_source_6
169013 , l_array_source_7
169014 , l_array_source_8
169015 , l_array_source_9
169016 , l_array_source_10
169017 , l_array_source_12
169018 LIMIT l_rows;
169019 --
169020 IF (C_LEVEL_EVENT >= g_log_level) THEN
169021 trace
169022 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
169023 ,p_level => C_LEVEL_EVENT
169027 EXIT WHEN l_array_entity_id.COUNT = 0;
169024 ,p_module => l_log_module);
169025 END IF;
169026 --
169028
169029 -- initialize arrays
169030 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
169031 XLA_AE_LINES_PKG.g_rec_lines := NULL;
169032
169033 --
169034 -- Bug 4458708
169035 --
169036 XLA_AE_LINES_PKG.g_LineNumber := 0;
169037
169038
169039 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
169040 g_last_hdr_idx := l_array_event_id.LAST;
169041 --
169042 -- loop for the headers. Each iteration is for each header extract row
169043 -- fetched in header cursor
169044 --
169045 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
169046
169047 --
169048 -- set event info as cache for other routines to refer event attributes
169049 --
169050 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169051 (p_application_id => p_application_id
169052 ,p_primary_ledger_id => p_primary_ledger_id
169053 ,p_base_ledger_id => p_base_ledger_id
169054 ,p_target_ledger_id => p_target_ledger_id
169055 ,p_entity_id => l_array_entity_id(hdr_idx)
169056 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
169057 ,p_entity_code => l_array_entity_code(hdr_idx)
169058 ,p_transaction_num => l_array_transaction_num(hdr_idx)
169059 ,p_event_id => l_array_event_id(hdr_idx)
169060 ,p_event_class_code => l_array_class_code(hdr_idx)
169061 ,p_event_type_code => l_array_event_type(hdr_idx)
169062 ,p_event_number => l_array_event_number(hdr_idx)
169063 ,p_event_date => l_array_event_date(hdr_idx)
169064 ,p_transaction_date => l_array_transaction_date(hdr_idx)
169065 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
169066 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
169067 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
169068 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
169069 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
169070 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
169071 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
169072 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
169073 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
169074 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
169075 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
169076 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
169077 ,p_event_created_by => l_array_event_created_by(hdr_idx)
169078 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
169079
169080 --
169081 -- set the status of entry to C_VALID (0)
169082 --
169083 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169084
169085 --
169086 -- initialize a row for ae header
169087 --
169088 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
169089
169090 l_event_id := l_array_event_id(hdr_idx);
169091
169092 --
169093 -- storing the hdr_idx for event. May be used by line cursor.
169094 --
169095 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
169096
169097 --
169098 -- store sources from header extract. This can be improved to
169099 -- store only those sources from header extract that may be used in lines
169100 --
169101
169102 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
169103 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
169104 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
169105 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
169106 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
169107 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
169108
169109 --
169110 -- initilaize the status of ae headers for diffrent balance types
169111 -- the status is initialised to C_NOT_CREATED (2)
169112 --
169113 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169114 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169115 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169116
169117 --
169118 -- call api to validate and store accounting attributes for header
169119 --
169120
169121 ------------------------------------------------------------
169122 -- Accrual Reversal : to get date for Standard Source (NONE)
169123 ------------------------------------------------------------
169124 l_acc_rev_gl_date_source := NULL;
169125
169126 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
169127 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
169128
169129
169130 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
169131
169132 XLA_AE_HEADER_PKG.SetJeCategoryName;
169133
169134 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
169135 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
169136 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
169140
169137 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
169138 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
169139
169141 -- No header level analytical criteria
169142
169143 --
169144 --accounting attribute enhancement, bug 3612931
169145 --
169146 l_trx_reversal_source := SUBSTR(NULL, 1,30);
169147
169148 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
169149 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
169150
169151 xla_accounting_err_pkg.build_message
169152 (p_appli_s_name => 'XLA'
169153 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
169154 ,p_token_1 => 'ACCT_ATTR_NAME'
169155 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
169156 ,p_token_2 => 'PRODUCT_NAME'
169157 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169158 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169159 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
169160 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169161
169162 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
169163 --
169164 -- following sets the accounting attributes needed to reverse
169165 -- accounting for a distributeion
169166 --
169167 xla_ae_lines_pkg.SetTrxReversalAttrs
169168 (p_event_id => l_event_id
169169 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
169170 ,p_trx_reversal_source => l_trx_reversal_source);
169171
169172 END IF;
169173
169174
169175 ----------------------------------------------------------------
169176 -- 4262811 - update the header statuses to invalid in need be
169177 ----------------------------------------------------------------
169178 --
169179 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
169180
169181
169182 -----------------------------------------------
169183 -- No accrual reversal for the event class/type
169184 -----------------------------------------------
169185 ----------------------------------------------------------------
169186
169187 --
169188 -- this ends the header loop iteration for one bulk fetch
169189 --
169190 END LOOP;
169191
169192 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
169193 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
169194
169195 --
169196 -- insert dummy rows into lines gt table that were created due to
169197 -- transaction reversals
169198 --
169199 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
169200 l_result := XLA_AE_LINES_PKG.InsertLines;
169201 END IF;
169202
169203 --
169204 -- reset the temp_line_num for each set of events fetched from header
169205 -- cursor rather than doing it for each new event in line cursor
169206 -- Bug 3939231
169207 --
169208 xla_ae_lines_pkg.g_temp_line_num := 0;
169209
169210
169211
169212 --
169213 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
169214 --
169215 --
169216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169217
169218 trace
169219 (p_msg => 'SQL - FETCH line_cur'
169220 ,p_level => C_LEVEL_STATEMENT
169221 ,p_module => l_log_module);
169222
169223 END IF;
169224 --
169225 --
169226 LOOP
169227 --
169228 FETCH line_cur BULK COLLECT INTO
169229 l_array_entity_id
169230 , l_array_legal_entity_id
169231 , l_array_entity_code
169232 , l_array_transaction_num
169233 , l_array_event_id
169234 , l_array_class_code
169235 , l_array_event_type
169236 , l_array_event_number
169237 , l_array_event_date
169238 , l_array_transaction_date
169239 , l_array_reference_num_1
169240 , l_array_reference_num_2
169241 , l_array_reference_num_3
169242 , l_array_reference_num_4
169243 , l_array_reference_char_1
169244 , l_array_reference_char_2
169245 , l_array_reference_char_3
169246 , l_array_reference_char_4
169247 , l_array_reference_date_1
169248 , l_array_reference_date_2
169249 , l_array_reference_date_3
169250 , l_array_reference_date_4
169251 , l_array_event_created_by
169252 , l_array_budgetary_control_flag
169253 , l_array_extract_line_num
169254 , l_array_source_1
169255 , l_array_source_2
169256 , l_array_source_3
169257 , l_array_source_5
169258 , l_array_source_11
169259 LIMIT l_rows;
169260
169261 --
169262 IF (C_LEVEL_EVENT >= g_log_level) THEN
169263 trace
169264 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
169265 ,p_level => C_LEVEL_EVENT
169266 ,p_module => l_log_module);
169267 END IF;
169268 --
169269 EXIT WHEN l_array_entity_id.count = 0;
169270
169271 XLA_AE_LINES_PKG.g_rec_lines := null;
169272
169273 --
169274 -- Bug 4458708
169275 --
169276 XLA_AE_LINES_PKG.g_LineNumber := 0;
169277 --
169278 --
169279
169283 --
169280 FOR Idx IN 1..l_array_event_id.count LOOP
169281 --
169282 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
169284 l_event_id := l_array_event_id(idx); -- 5648433
169285
169286 --
169287 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169288 --
169289
169290 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
169291 (g_array_event(l_event_id).array_value_num('header_index'))
169292 ,'N'
169293 ) <> 'Y'
169294 THEN
169295 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169296 trace
169297 (p_msg => 'Trancaction revesal option is not Y '
169298 ,p_level => C_LEVEL_STATEMENT
169299 ,p_module => l_log_module);
169300 END IF;
169301
169302 --
169303 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
169304 --
169305 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169306 --
169307 -- set event info as cache for other routines to refer event attributes
169308 --
169309
169310 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
169311 l_previous_event_id := l_event_id;
169312
169313 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169314 (p_application_id => p_application_id
169315 ,p_primary_ledger_id => p_primary_ledger_id
169316 ,p_base_ledger_id => p_base_ledger_id
169317 ,p_target_ledger_id => p_target_ledger_id
169318 ,p_entity_id => l_array_entity_id(Idx)
169319 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
169320 ,p_entity_code => l_array_entity_code(Idx)
169321 ,p_transaction_num => l_array_transaction_num(Idx)
169322 ,p_event_id => l_array_event_id(Idx)
169323 ,p_event_class_code => l_array_class_code(Idx)
169324 ,p_event_type_code => l_array_event_type(Idx)
169325 ,p_event_number => l_array_event_number(Idx)
169326 ,p_event_date => l_array_event_date(Idx)
169327 ,p_transaction_date => l_array_transaction_date(Idx)
169328 ,p_reference_num_1 => l_array_reference_num_1(Idx)
169329 ,p_reference_num_2 => l_array_reference_num_2(Idx)
169330 ,p_reference_num_3 => l_array_reference_num_3(Idx)
169331 ,p_reference_num_4 => l_array_reference_num_4(Idx)
169332 ,p_reference_char_1 => l_array_reference_char_1(Idx)
169333 ,p_reference_char_2 => l_array_reference_char_2(Idx)
169334 ,p_reference_char_3 => l_array_reference_char_3(Idx)
169335 ,p_reference_char_4 => l_array_reference_char_4(Idx)
169336 ,p_reference_date_1 => l_array_reference_date_1(Idx)
169337 ,p_reference_date_2 => l_array_reference_date_2(Idx)
169338 ,p_reference_date_3 => l_array_reference_date_3(Idx)
169339 ,p_reference_date_4 => l_array_reference_date_4(Idx)
169340 ,p_event_created_by => l_array_event_created_by(Idx)
169341 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
169342 --
169343 END IF;
169344
169345
169346
169347 --
169348 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
169349
169350 l_acct_reversal_source := SUBSTR(NULL, 1,30);
169351
169352 IF l_continue_with_lines THEN
169353 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
169354 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
169355
169356 xla_accounting_err_pkg.build_message
169357 (p_appli_s_name => 'XLA'
169358 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
169359 ,p_token_1 => 'LINE_NUMBER'
169360 ,p_value_1 => l_array_extract_line_num(Idx)
169361 ,p_token_2 => 'PRODUCT_NAME'
169362 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169363 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169364 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
169365 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169366
169367 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
169368 --
169369 -- following sets the accounting attributes needed to reverse
169370 -- accounting for a distributeion
169371 --
169372
169373 --
169374 -- 5217187
169375 --
169376 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
169377 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
169378 g_array_event(l_event_id).array_value_num('header_index'));
169379 --
169380 --
169381
169382 -- No reversal code generated
169383
169384 xla_ae_lines_pkg.SetAcctReversalAttrs
169385 (p_event_id => l_event_id
169386 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
169387 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169388 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
169389 END IF;
169390
169391 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
169392 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
169393
169394 --
169395 AcctLineType_66 (
169399 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169396 p_application_id => p_application_id
169397 ,p_event_id => l_event_id
169398 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169400 ,p_actual_flag => l_actual_flag
169401 ,p_balance_type_code => l_balance_type_code
169402 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169403
169404 , p_source_1 => l_array_source_1(Idx)
169405 , p_source_2 => l_array_source_2(Idx)
169406 , p_source_3 => l_array_source_3(Idx)
169407 , p_source_5 => l_array_source_5(Idx)
169408 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
169409 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
169410 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
169411 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
169412 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
169413 , p_source_11 => l_array_source_11(Idx)
169414 );
169415 If(l_balance_type_code = 'A') THEN
169416 l_actual_gain_loss_ref := l_gain_or_loss_ref;
169417 END IF;
169418
169419 --
169420
169421
169422 --
169423 AcctLineType_84 (
169424 p_application_id => p_application_id
169425 ,p_event_id => l_event_id
169426 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169427 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169428 ,p_actual_flag => l_actual_flag
169429 ,p_balance_type_code => l_balance_type_code
169430 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169431
169432 , p_source_1 => l_array_source_1(Idx)
169433 , p_source_2 => l_array_source_2(Idx)
169434 , p_source_3 => l_array_source_3(Idx)
169435 , p_source_5 => l_array_source_5(Idx)
169436 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
169437 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
169438 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
169439 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
169440 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
169441 , p_source_11 => l_array_source_11(Idx)
169442 );
169443 If(l_balance_type_code = 'A') THEN
169444 l_actual_gain_loss_ref := l_gain_or_loss_ref;
169445 END IF;
169446
169447 --
169448
169449
169450 --
169451 AcctLineType_135 (
169452 p_application_id => p_application_id
169453 ,p_event_id => l_event_id
169454 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169455 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169456 ,p_actual_flag => l_actual_flag
169457 ,p_balance_type_code => l_balance_type_code
169458 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169459
169460 , p_source_1 => l_array_source_1(Idx)
169461 , p_source_2 => l_array_source_2(Idx)
169462 , p_source_3 => l_array_source_3(Idx)
169463 , p_source_5 => l_array_source_5(Idx)
169464 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
169465 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
169466 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
169467 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
169468 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
169469 , p_source_11 => l_array_source_11(Idx)
169470 );
169471 If(l_balance_type_code = 'A') THEN
169472 l_actual_gain_loss_ref := l_gain_or_loss_ref;
169473 END IF;
169474
169475 --
169476
169477 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
169478 -- or secondary ledger that has different currency with primary
169479 -- or alc that is calculated by sla
169480 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
169481 (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'))
169482
169483 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
169484 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
169485 AND (l_actual_flag = 'A')) THEN
169486 XLA_AE_LINES_PKG.CreateGainOrLossLines(
169487 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
169488 ,p_application_id => p_application_id
169489 ,p_amb_context_code => 'DEFAULT'
169490 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
169491 ,p_event_class_code => C_EVENT_CLASS_CODE
169492 ,p_event_type_code => C_EVENT_TYPE_CODE
169493
169494 ,p_gain_ccid => -1
169495 ,p_loss_ccid => -1
169496
169497 ,p_actual_flag => l_actual_flag
169498 ,p_enc_flag => null
169499 ,p_actual_g_l_ref => l_actual_gain_loss_ref
169500 ,p_enc_g_l_ref => null
169501 );
169502 END IF;
169503 END IF;
169504 END IF;
169505
169506 ELSE
169507 --
169508 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169509 --
169510 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169511 trace
169512 (p_msg => 'Trancaction revesal option is Y'
169513 ,p_level => C_LEVEL_STATEMENT
169514 ,p_module => l_log_module);
169515 END IF;
169516 END IF;
169517
169518 END LOOP;
169519 l_result := XLA_AE_LINES_PKG.InsertLines ;
169520 end loop;
169521 close line_cur;
169522
169526 --
169523
169524 --
169525 -- insert headers into xla_ae_headers_gt table
169527 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
169528
169529 -- insert into errors table here.
169530
169531 END LOOP;
169532
169533 --
169534 -- 4865292
169535 --
169536 -- Compare g_hdr_extract_count with event count in
169537 -- CreateHeadersAndLines.
169538 --
169539 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
169540
169541 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169542 trace (p_msg => '# rows extracted from header extract objects '
169543 || ' (running total): '
169544 || g_hdr_extract_count
169545 ,p_level => C_LEVEL_STATEMENT
169546 ,p_module => l_log_module);
169547 END IF;
169548
169549 CLOSE header_cur;
169550 --
169551
169552 --
169553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169554 trace
169555 (p_msg => 'END of EventType_288'
169556 ,p_level => C_LEVEL_PROCEDURE
169557 ,p_module => l_log_module);
169558 END IF;
169559 --
169560 RETURN l_result;
169561 EXCEPTION
169562 WHEN xla_exceptions_pkg.application_exception THEN
169563
169564 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
169565
169566
169567 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
169568
169569 RAISE;
169570
169571 WHEN NO_DATA_FOUND THEN
169572
169573 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
169574 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
169575
169576 FOR header_record IN header_cur
169577 LOOP
169578 l_array_header_events(header_record.event_id) := header_record.event_id;
169579 END LOOP;
169580
169581 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
169582 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
169583
169584 fnd_file.put_line(fnd_file.LOG, ' ');
169585 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
169586 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
169587 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
169588
169589 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
169590 LOOP
169591 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
169592 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
169593 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
169594 END IF;
169595 END LOOP;
169596
169597 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
169598 fnd_file.put_line(fnd_file.LOG, ' ');
169599
169600
169601 xla_exceptions_pkg.raise_message
169602 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_288');
169603
169604
169605 WHEN OTHERS THEN
169606 xla_exceptions_pkg.raise_message
169607 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_288');
169608 END EventType_288;
169609 --
169610
169611 ---------------------------------------
169612 --
169613 -- PRIVATE PROCEDURE
169614 -- insert_sources_289
169615 --
169616 ----------------------------------------
169617 --
169618 PROCEDURE insert_sources_289(
169619 p_target_ledger_id IN NUMBER
169620 , p_language IN VARCHAR2
169621 , p_sla_ledger_id IN NUMBER
169622 , p_pad_start_date IN DATE
169623 , p_pad_end_date IN DATE
169624 )
169625 IS
169626
169627 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_RET_TO_VENDOR';
169628 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
169629 p_apps_owner VARCHAR2(30);
169630 l_log_module VARCHAR2(240);
169631 BEGIN
169632 IF g_log_enabled THEN
169633 l_log_module := C_DEFAULT_MODULE||'.insert_sources_289';
169634 END IF;
169635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169636
169637 trace
169638 (p_msg => 'BEGIN of insert_sources_289'
169639 ,p_level => C_LEVEL_PROCEDURE
169640 ,p_module => l_log_module);
169641
169642 END IF;
169643
169644 -- select APPS owner
169645 SELECT oracle_username
169646 INTO p_apps_owner
169647 FROM fnd_oracle_userid
169648 WHERE read_only_flag = 'U'
169649 ;
169650
169651 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169652 trace
169653 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
169654 ' - p_language = '||p_language||
169655 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
169656 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
169657 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
169658 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
169659 ,p_level => C_LEVEL_STATEMENT
169660 ,p_module => l_log_module);
169661 END IF;
169662
169663
169664 --
169665 INSERT INTO xla_diag_sources --hdr1
169666 (
169667 event_id
169668 , ledger_id
169669 , sla_ledger_id
169670 , description_language
169674 , source_application_id
169671 , object_name
169672 , object_type_code
169673 , line_number
169675 , source_type_code
169676 , source_code
169677 , source_value
169678 , source_meaning
169679 , created_by
169680 , creation_date
169681 , last_update_date
169682 , last_updated_by
169683 , last_update_login
169684 , program_update_date
169685 , program_application_id
169686 , program_id
169687 , request_id
169688 )
169689 SELECT
169690 event_id
169691 , p_target_ledger_id
169692 , p_sla_ledger_id
169693 , p_language
169694 , object_name
169695 , object_type_code
169696 , line_number
169697 , source_application_id
169698 , source_type_code
169699 , source_code
169700 , SUBSTR(source_value ,1,1996)
169701 , SUBSTR(source_meaning,1,200)
169702 , xla_environment_pkg.g_Usr_Id
169703 , TRUNC(SYSDATE)
169704 , TRUNC(SYSDATE)
169705 , xla_environment_pkg.g_Usr_Id
169706 , xla_environment_pkg.g_Login_Id
169707 , TRUNC(SYSDATE)
169708 , xla_environment_pkg.g_Prog_Appl_Id
169709 , xla_environment_pkg.g_Prog_Id
169710 , xla_environment_pkg.g_Req_Id
169711 FROM (
169712 SELECT xet.event_id event_id
169713 , 0 line_number
169714 , CASE r
169715 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
169716 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
169717 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
169718 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
169719 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
169720 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
169721
169722 ELSE null
169723 END object_name
169724 , CASE r
169725 WHEN 1 THEN 'HEADER'
169726 WHEN 2 THEN 'HEADER'
169727 WHEN 3 THEN 'HEADER'
169728 WHEN 4 THEN 'HEADER'
169729 WHEN 5 THEN 'HEADER'
169730 WHEN 6 THEN 'HEADER'
169731
169732 ELSE null
169733 END object_type_code
169734 , CASE r
169735 WHEN 1 THEN '555'
169736 WHEN 2 THEN '555'
169737 WHEN 3 THEN '555'
169738 WHEN 4 THEN '555'
169739 WHEN 5 THEN '555'
169740 WHEN 6 THEN '555'
169741
169742 ELSE null
169743 END source_application_id
169744 , 'S' source_type_code
169745 , CASE r
169746 WHEN 1 THEN 'ENTITY_CODE'
169747 WHEN 2 THEN 'CURRENCY_CODE'
169748 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
169749 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
169750 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
169751 WHEN 6 THEN 'TRANSACTION_DATE'
169752
169753 ELSE null
169754 END source_code
169755 , CASE r
169756 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
169757 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
169758 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
169759 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
169760 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
169761 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
169762
169763 ELSE null
169764 END source_value
169765 , CASE r
169766 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
169767 1010186
169768 ,TO_CHAR(h1.CURRENCY_CODE)
169769 ,'CURRENCY_CODE'
169770 ,'S'
169771 ,555)
169772
169773 ELSE null
169774 END source_meaning
169775 FROM xla_events_gt xet
169776 , GMF_XLA_EXTRACT_HEADERS h1
169777 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
169778 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169779 AND xet.event_type_code = C_EVENT_TYPE_CODE
169780 AND h1.event_id = xet.event_id
169781
169782 )
169783 ;
169784 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169785
169786 trace
169787 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
169788 ,p_level => C_LEVEL_STATEMENT
169789 ,p_module => l_log_module);
169790
169791 END IF;
169792 --
169793
169794
169795
169796 --
169797 INSERT INTO xla_diag_sources --line1
169798 (
169799 event_id
169800 , ledger_id
169801 , sla_ledger_id
169802 , description_language
169803 , object_name
169804 , object_type_code
169805 , line_number
169806 , source_application_id
169807 , source_type_code
169808 , source_code
169809 , source_value
169810 , source_meaning
169811 , created_by
169812 , creation_date
169816 , program_update_date
169813 , last_update_date
169814 , last_updated_by
169815 , last_update_login
169817 , program_application_id
169818 , program_id
169819 , request_id
169820 )
169821 SELECT event_id
169822 , p_target_ledger_id
169823 , p_sla_ledger_id
169824 , p_language
169825 , object_name
169826 , object_type_code
169827 , line_number
169828 , source_application_id
169829 , source_type_code
169830 , source_code
169831 , SUBSTR(source_value,1,1996)
169832 , SUBSTR(source_meaning,1,200)
169833 , xla_environment_pkg.g_Usr_Id
169834 , TRUNC(SYSDATE)
169835 , TRUNC(SYSDATE)
169836 , xla_environment_pkg.g_Usr_Id
169837 , xla_environment_pkg.g_Login_Id
169838 , TRUNC(SYSDATE)
169839 , xla_environment_pkg.g_Prog_Appl_Id
169840 , xla_environment_pkg.g_Prog_Id
169841 , xla_environment_pkg.g_Req_Id
169842 FROM (
169843 SELECT xet.event_id event_id
169844 , l2.line_number line_number
169845 , CASE r
169846 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
169847 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
169848 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
169849 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
169850 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
169851
169852 ELSE null
169853 END object_name
169854 , CASE r
169855 WHEN 1 THEN 'LINE'
169856 WHEN 2 THEN 'LINE'
169857 WHEN 3 THEN 'LINE'
169858 WHEN 4 THEN 'LINE'
169859 WHEN 5 THEN 'LINE'
169860
169861 ELSE null
169862 END object_type_code
169863 , CASE r
169864 WHEN 1 THEN '555'
169865 WHEN 2 THEN '555'
169866 WHEN 3 THEN '555'
169867 WHEN 4 THEN '555'
169868 WHEN 5 THEN '555'
169869
169870 ELSE null
169871 END source_application_id
169872 , 'S' source_type_code
169873 , CASE r
169874 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
169875 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
169876 WHEN 3 THEN 'ENTERED_AMOUNT'
169877 WHEN 4 THEN 'LINE_ID'
169878 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
169879
169880 ELSE null
169881 END source_code
169882 , CASE r
169883 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
169884 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
169885 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
169886 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
169887 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
169888
169889 ELSE null
169890 END source_value
169891 , null source_meaning
169892 FROM xla_events_gt xet
169893 , GMF_XLA_EXTRACT_LINES l2
169894 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
169895 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169896 AND xet.event_type_code = C_EVENT_TYPE_CODE
169897 AND l2.event_id = xet.event_id
169898
169899 )
169900 ;
169901 --
169902 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169903
169904 trace
169905 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
169906 ,p_level => C_LEVEL_STATEMENT
169907 ,p_module => l_log_module);
169908
169909 END IF;
169910
169911
169912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169913 trace
169914 (p_msg => 'END of insert_sources_289'
169915 ,p_level => C_LEVEL_PROCEDURE
169916 ,p_module => l_log_module);
169917 END IF;
169918 EXCEPTION
169919 WHEN xla_exceptions_pkg.application_exception THEN
169920 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169921 trace
169922 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169923 ,p_level => C_LEVEL_EXCEPTION
169924 ,p_module => l_log_module);
169925 END IF;
169926 RAISE;
169927 WHEN OTHERS THEN
169928 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169929 trace
169930 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169931 ,p_level => C_LEVEL_EXCEPTION
169932 ,p_module => l_log_module);
169933 END IF;
169934 xla_exceptions_pkg.raise_message
169935 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_289');
169936 END insert_sources_289;
169937 --
169938
169939 ---------------------------------------
169940 --
169941 -- PRIVATE FUNCTION
169942 -- EventType_289
169943 --
169944 ----------------------------------------
169945 --
169946 FUNCTION EventType_289
169947 (p_application_id IN NUMBER
169948 ,p_base_ledger_id IN NUMBER
169949 ,p_target_ledger_id IN NUMBER
169953 ,p_pad_start_date IN DATE
169950 ,p_language IN VARCHAR2
169951 ,p_currency_code IN VARCHAR2
169952 ,p_sla_ledger_id IN NUMBER
169954 ,p_pad_end_date IN DATE
169955 ,p_primary_ledger_id IN NUMBER)
169956 RETURN BOOLEAN IS
169957 --
169958 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_RET_TO_VENDOR';
169959 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
169960
169961 l_calculate_acctd_flag VARCHAR2(1) :='N';
169962 l_calculate_g_l_flag VARCHAR2(1) :='N';
169963 --
169964 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169965 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169966 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169967 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169968 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169969 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169970 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169971 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169972 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169973 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169974 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169975 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169976 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169977 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169978 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169979 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169980 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169981 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169982 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169983 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169984 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169985 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169986 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
169987 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169988 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
169989 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
169990
169991 l_event_id NUMBER;
169992 l_previous_event_id NUMBER;
169993 l_first_event_id NUMBER;
169994 l_last_event_id NUMBER;
169995
169996 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
169997 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
169998 --
169999 --
170000 l_result BOOLEAN := TRUE;
170001 l_rows NUMBER := 1000;
170002 l_event_type_name VARCHAR2(80) := 'Logical Return to Vendor';
170003 l_event_class_name VARCHAR2(80) := 'Receiving';
170004 l_description VARCHAR2(4000);
170005 l_transaction_reversal NUMBER;
170006 l_ae_header_id NUMBER;
170007 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
170008 l_log_module VARCHAR2(240);
170009 --
170010 l_acct_reversal_source VARCHAR2(30);
170011 l_trx_reversal_source VARCHAR2(30);
170012
170013 l_continue_with_lines BOOLEAN := TRUE;
170014 --
170015 l_acc_rev_gl_date_source DATE; -- 4262811
170016 --
170017 type t_array_event_id is table of number index by binary_integer;
170018
170019 l_rec_array_event t_rec_array_event;
170020 l_null_rec_array_event t_rec_array_event;
170021 l_array_ae_header_id xla_number_array_type;
170022 l_actual_flag VARCHAR2(1) := NULL;
170023 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
170024 l_balance_type_code VARCHAR2(1) :=NULL;
170025 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
170026
170027 --
170028 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
170029 --
170030
170031 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
170032 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
170033 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
170034 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
170035 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
170036 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
170037
170038 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
170039 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
170040 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170041 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
170045 l_array_source_7 t_array_source_7;
170042 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170043
170044 l_array_source_6 t_array_source_6;
170046 l_array_source_8 t_array_source_8;
170047 l_array_source_9 t_array_source_9;
170048 l_array_source_10 t_array_source_10;
170049 l_array_source_12 t_array_source_12;
170050
170051 l_array_source_1 t_array_source_1;
170052 l_array_source_2 t_array_source_2;
170053 l_array_source_3 t_array_source_3;
170054 l_array_source_5 t_array_source_5;
170055 l_array_source_11 t_array_source_11;
170056
170057 --
170058 CURSOR header_cur
170059 IS
170060 SELECT /*+ leading(xet) cardinality(xet,1) */
170061 -- Event Type Code: LOG_RET_TO_VENDOR
170062 -- Event Class Code: RECEIVE
170063 xet.entity_id
170064 , xet.legal_entity_id
170065 , xet.entity_code
170066 , xet.transaction_number
170067 , xet.event_id
170068 , xet.event_class_code
170069 , xet.event_type_code
170070 , xet.event_number
170071 , xet.event_date
170072 , xet.transaction_date
170073 , xet.reference_num_1
170074 , xet.reference_num_2
170075 , xet.reference_num_3
170076 , xet.reference_num_4
170077 , xet.reference_char_1
170078 , xet.reference_char_2
170079 , xet.reference_char_3
170080 , xet.reference_char_4
170081 , xet.reference_date_1
170082 , xet.reference_date_2
170083 , xet.reference_date_3
170084 , xet.reference_date_4
170085 , xet.event_created_by
170086 , xet.budgetary_control_flag
170087 , h1.ENTITY_CODE source_6
170088 , h1.CURRENCY_CODE source_7
170089 , h1.CURRENCY_CONVERSION_DATE source_8
170090 , h1.CURRENCY_CONVERSION_RATE source_9
170091 , h1.CURRENCY_CONVERSION_TYPE source_10
170092 , h1.TRANSACTION_DATE source_12
170093 FROM xla_events_gt xet
170094 , GMF_XLA_EXTRACT_HEADERS h1
170095 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
170096 and xet.event_type_code = C_EVENT_TYPE_CODE
170097 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
170098
170099 ORDER BY event_id
170100 ;
170101
170102
170103 --
170104 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
170105 IS
170106 SELECT /*+ leading(xet) cardinality(xet,1) */
170107 -- Event Type Code: LOG_RET_TO_VENDOR
170108 -- Event Class Code: RECEIVE
170109 xet.entity_id
170110 ,xet.legal_entity_id
170111 ,xet.entity_code
170112 ,xet.transaction_number
170113 ,xet.event_id
170114 ,xet.event_class_code
170115 ,xet.event_type_code
170116 ,xet.event_number
170117 ,xet.event_date
170118 ,xet.transaction_date
170119 ,xet.reference_num_1
170120 ,xet.reference_num_2
170121 ,xet.reference_num_3
170122 ,xet.reference_num_4
170123 ,xet.reference_char_1
170124 ,xet.reference_char_2
170125 ,xet.reference_char_3
170126 ,xet.reference_char_4
170127 ,xet.reference_date_1
170128 ,xet.reference_date_2
170129 ,xet.reference_date_3
170130 ,xet.reference_date_4
170131 ,xet.event_created_by
170132 ,xet.budgetary_control_flag , l2.LINE_NUMBER
170133 , l2.TRANSACTION_ACCOUNT_ID source_1
170134 , l2.JOURNAL_LINE_TYPE source_2
170135 , l2.ENTERED_AMOUNT source_3
170136 , l2.LINE_ID source_5
170137 , l2.ACCOUNTED_AMOUNT source_11
170138 FROM xla_events_gt xet
170139 , GMF_XLA_EXTRACT_LINES l2
170140 WHERE xet.event_id between x_first_event_id and x_last_event_id
170141 and xet.event_date between p_pad_start_date and p_pad_end_date
170142 and xet.event_type_code = C_EVENT_TYPE_CODE
170143 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
170144 ;
170145
170146 --
170147 BEGIN
170148 IF g_log_enabled THEN
170149 l_log_module := C_DEFAULT_MODULE||'.EventType_289';
170150 END IF;
170151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170152 trace
170153 (p_msg => 'BEGIN of EventType_289'
170154 ,p_level => C_LEVEL_PROCEDURE
170155 ,p_module => l_log_module);
170156 END IF;
170157
170158 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170159 trace
170160 (p_msg => 'p_application_id = '||p_application_id||
170161 ' - p_base_ledger_id = '||p_base_ledger_id||
170162 ' - p_target_ledger_id = '||p_target_ledger_id||
170163 ' - p_language = '||p_language||
170164 ' - p_currency_code = '||p_currency_code||
170165 ' - p_sla_ledger_id = '||p_sla_ledger_id
170166 ,p_level => C_LEVEL_STATEMENT
170167 ,p_module => l_log_module);
170168 END IF;
170169 --
170170 -- initialze arrays
170171 --
170172 g_array_event.DELETE;
170173 l_rec_array_event := l_null_rec_array_event;
170174 --
170175 --------------------------------------
170176 -- 4262811 Initialze MPA Line Number
170177 --------------------------------------
170178 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
170179
170180 --
170181
170182 --
170183 OPEN header_cur;
170184 --
170185 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170186 trace
170187 (p_msg => 'SQL - FETCH header_cur'
170188 ,p_level => C_LEVEL_STATEMENT
170189 ,p_module => l_log_module);
170190 END IF;
170191 --
170192 LOOP
170196 , l_array_entity_code
170193 FETCH header_cur BULK COLLECT INTO
170194 l_array_entity_id
170195 , l_array_legal_entity_id
170197 , l_array_transaction_num
170198 , l_array_event_id
170199 , l_array_class_code
170200 , l_array_event_type
170201 , l_array_event_number
170202 , l_array_event_date
170203 , l_array_transaction_date
170204 , l_array_reference_num_1
170205 , l_array_reference_num_2
170206 , l_array_reference_num_3
170207 , l_array_reference_num_4
170208 , l_array_reference_char_1
170209 , l_array_reference_char_2
170210 , l_array_reference_char_3
170211 , l_array_reference_char_4
170212 , l_array_reference_date_1
170213 , l_array_reference_date_2
170214 , l_array_reference_date_3
170215 , l_array_reference_date_4
170216 , l_array_event_created_by
170217 , l_array_budgetary_control_flag
170218 , l_array_source_6
170219 , l_array_source_7
170220 , l_array_source_8
170221 , l_array_source_9
170222 , l_array_source_10
170223 , l_array_source_12
170224 LIMIT l_rows;
170225 --
170226 IF (C_LEVEL_EVENT >= g_log_level) THEN
170227 trace
170228 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
170229 ,p_level => C_LEVEL_EVENT
170230 ,p_module => l_log_module);
170231 END IF;
170232 --
170233 EXIT WHEN l_array_entity_id.COUNT = 0;
170234
170235 -- initialize arrays
170236 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
170237 XLA_AE_LINES_PKG.g_rec_lines := NULL;
170238
170239 --
170240 -- Bug 4458708
170241 --
170242 XLA_AE_LINES_PKG.g_LineNumber := 0;
170243
170244
170245 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
170246 g_last_hdr_idx := l_array_event_id.LAST;
170247 --
170248 -- loop for the headers. Each iteration is for each header extract row
170249 -- fetched in header cursor
170250 --
170251 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
170252
170253 --
170254 -- set event info as cache for other routines to refer event attributes
170255 --
170256 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170257 (p_application_id => p_application_id
170258 ,p_primary_ledger_id => p_primary_ledger_id
170259 ,p_base_ledger_id => p_base_ledger_id
170260 ,p_target_ledger_id => p_target_ledger_id
170261 ,p_entity_id => l_array_entity_id(hdr_idx)
170262 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
170263 ,p_entity_code => l_array_entity_code(hdr_idx)
170264 ,p_transaction_num => l_array_transaction_num(hdr_idx)
170265 ,p_event_id => l_array_event_id(hdr_idx)
170266 ,p_event_class_code => l_array_class_code(hdr_idx)
170267 ,p_event_type_code => l_array_event_type(hdr_idx)
170268 ,p_event_number => l_array_event_number(hdr_idx)
170269 ,p_event_date => l_array_event_date(hdr_idx)
170270 ,p_transaction_date => l_array_transaction_date(hdr_idx)
170271 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
170272 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
170273 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
170274 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
170275 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
170276 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
170277 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
170278 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
170279 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
170280 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
170281 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
170282 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
170283 ,p_event_created_by => l_array_event_created_by(hdr_idx)
170284 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
170285
170286 --
170287 -- set the status of entry to C_VALID (0)
170288 --
170289 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170290
170291 --
170292 -- initialize a row for ae header
170293 --
170294 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
170295
170296 l_event_id := l_array_event_id(hdr_idx);
170297
170298 --
170299 -- storing the hdr_idx for event. May be used by line cursor.
170300 --
170301 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
170302
170303 --
170304 -- store sources from header extract. This can be improved to
170305 -- store only those sources from header extract that may be used in lines
170306 --
170307
170308 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
170309 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
170310 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
170311 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
170312 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
170313 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
170314
170315 --
170316 -- initilaize the status of ae headers for diffrent balance types
170320 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170317 -- the status is initialised to C_NOT_CREATED (2)
170318 --
170319 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170321 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170322
170323 --
170324 -- call api to validate and store accounting attributes for header
170325 --
170326
170327 ------------------------------------------------------------
170328 -- Accrual Reversal : to get date for Standard Source (NONE)
170329 ------------------------------------------------------------
170330 l_acc_rev_gl_date_source := NULL;
170331
170332 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
170333 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
170334
170335
170336 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
170337
170338 XLA_AE_HEADER_PKG.SetJeCategoryName;
170339
170340 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
170341 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
170342 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
170343 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
170344 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
170345
170346
170347 -- No header level analytical criteria
170348
170349 --
170350 --accounting attribute enhancement, bug 3612931
170351 --
170352 l_trx_reversal_source := SUBSTR(NULL, 1,30);
170353
170354 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
170355 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
170356
170357 xla_accounting_err_pkg.build_message
170358 (p_appli_s_name => 'XLA'
170359 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
170360 ,p_token_1 => 'ACCT_ATTR_NAME'
170361 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
170362 ,p_token_2 => 'PRODUCT_NAME'
170363 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
170364 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
170365 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
170366 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
170367
170368 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
170369 --
170370 -- following sets the accounting attributes needed to reverse
170371 -- accounting for a distributeion
170372 --
170373 xla_ae_lines_pkg.SetTrxReversalAttrs
170374 (p_event_id => l_event_id
170375 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
170376 ,p_trx_reversal_source => l_trx_reversal_source);
170377
170378 END IF;
170379
170380
170381 ----------------------------------------------------------------
170382 -- 4262811 - update the header statuses to invalid in need be
170383 ----------------------------------------------------------------
170384 --
170385 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
170386
170387
170388 -----------------------------------------------
170389 -- No accrual reversal for the event class/type
170390 -----------------------------------------------
170391 ----------------------------------------------------------------
170392
170393 --
170394 -- this ends the header loop iteration for one bulk fetch
170395 --
170396 END LOOP;
170397
170398 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
170399 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
170400
170401 --
170402 -- insert dummy rows into lines gt table that were created due to
170403 -- transaction reversals
170404 --
170405 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
170406 l_result := XLA_AE_LINES_PKG.InsertLines;
170407 END IF;
170408
170409 --
170410 -- reset the temp_line_num for each set of events fetched from header
170411 -- cursor rather than doing it for each new event in line cursor
170412 -- Bug 3939231
170413 --
170414 xla_ae_lines_pkg.g_temp_line_num := 0;
170415
170416
170417
170418 --
170419 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
170420 --
170421 --
170422 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170423
170424 trace
170425 (p_msg => 'SQL - FETCH line_cur'
170426 ,p_level => C_LEVEL_STATEMENT
170427 ,p_module => l_log_module);
170428
170429 END IF;
170430 --
170431 --
170432 LOOP
170433 --
170434 FETCH line_cur BULK COLLECT INTO
170435 l_array_entity_id
170436 , l_array_legal_entity_id
170437 , l_array_entity_code
170438 , l_array_transaction_num
170439 , l_array_event_id
170440 , l_array_class_code
170441 , l_array_event_type
170442 , l_array_event_number
170443 , l_array_event_date
170444 , l_array_transaction_date
170445 , l_array_reference_num_1
170446 , l_array_reference_num_2
170447 , l_array_reference_num_3
170451 , l_array_reference_char_3
170448 , l_array_reference_num_4
170449 , l_array_reference_char_1
170450 , l_array_reference_char_2
170452 , l_array_reference_char_4
170453 , l_array_reference_date_1
170454 , l_array_reference_date_2
170455 , l_array_reference_date_3
170456 , l_array_reference_date_4
170457 , l_array_event_created_by
170458 , l_array_budgetary_control_flag
170459 , l_array_extract_line_num
170460 , l_array_source_1
170461 , l_array_source_2
170462 , l_array_source_3
170463 , l_array_source_5
170464 , l_array_source_11
170465 LIMIT l_rows;
170466
170467 --
170468 IF (C_LEVEL_EVENT >= g_log_level) THEN
170469 trace
170470 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
170471 ,p_level => C_LEVEL_EVENT
170472 ,p_module => l_log_module);
170473 END IF;
170474 --
170475 EXIT WHEN l_array_entity_id.count = 0;
170476
170477 XLA_AE_LINES_PKG.g_rec_lines := null;
170478
170479 --
170480 -- Bug 4458708
170481 --
170482 XLA_AE_LINES_PKG.g_LineNumber := 0;
170483 --
170484 --
170485
170486 FOR Idx IN 1..l_array_event_id.count LOOP
170487 --
170488 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
170489 --
170490 l_event_id := l_array_event_id(idx); -- 5648433
170491
170492 --
170493 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170494 --
170495
170496 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
170497 (g_array_event(l_event_id).array_value_num('header_index'))
170498 ,'N'
170499 ) <> 'Y'
170500 THEN
170501 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170502 trace
170503 (p_msg => 'Trancaction revesal option is not Y '
170504 ,p_level => C_LEVEL_STATEMENT
170505 ,p_module => l_log_module);
170506 END IF;
170507
170508 --
170509 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
170510 --
170511 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170512 --
170513 -- set event info as cache for other routines to refer event attributes
170514 --
170515
170516 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
170517 l_previous_event_id := l_event_id;
170518
170519 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170520 (p_application_id => p_application_id
170521 ,p_primary_ledger_id => p_primary_ledger_id
170522 ,p_base_ledger_id => p_base_ledger_id
170523 ,p_target_ledger_id => p_target_ledger_id
170524 ,p_entity_id => l_array_entity_id(Idx)
170525 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
170526 ,p_entity_code => l_array_entity_code(Idx)
170527 ,p_transaction_num => l_array_transaction_num(Idx)
170528 ,p_event_id => l_array_event_id(Idx)
170529 ,p_event_class_code => l_array_class_code(Idx)
170530 ,p_event_type_code => l_array_event_type(Idx)
170531 ,p_event_number => l_array_event_number(Idx)
170532 ,p_event_date => l_array_event_date(Idx)
170533 ,p_transaction_date => l_array_transaction_date(Idx)
170534 ,p_reference_num_1 => l_array_reference_num_1(Idx)
170535 ,p_reference_num_2 => l_array_reference_num_2(Idx)
170536 ,p_reference_num_3 => l_array_reference_num_3(Idx)
170537 ,p_reference_num_4 => l_array_reference_num_4(Idx)
170538 ,p_reference_char_1 => l_array_reference_char_1(Idx)
170539 ,p_reference_char_2 => l_array_reference_char_2(Idx)
170540 ,p_reference_char_3 => l_array_reference_char_3(Idx)
170541 ,p_reference_char_4 => l_array_reference_char_4(Idx)
170542 ,p_reference_date_1 => l_array_reference_date_1(Idx)
170543 ,p_reference_date_2 => l_array_reference_date_2(Idx)
170544 ,p_reference_date_3 => l_array_reference_date_3(Idx)
170545 ,p_reference_date_4 => l_array_reference_date_4(Idx)
170546 ,p_event_created_by => l_array_event_created_by(Idx)
170547 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
170548 --
170549 END IF;
170550
170551
170552
170553 --
170554 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
170555
170556 l_acct_reversal_source := SUBSTR(NULL, 1,30);
170557
170558 IF l_continue_with_lines THEN
170559 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
170560 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
170561
170562 xla_accounting_err_pkg.build_message
170563 (p_appli_s_name => 'XLA'
170564 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
170565 ,p_token_1 => 'LINE_NUMBER'
170566 ,p_value_1 => l_array_extract_line_num(Idx)
170567 ,p_token_2 => 'PRODUCT_NAME'
170568 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
170569 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
170570 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
170574 --
170571 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
170572
170573 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
170575 -- following sets the accounting attributes needed to reverse
170576 -- accounting for a distributeion
170577 --
170578
170579 --
170580 -- 5217187
170581 --
170582 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
170583 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
170584 g_array_event(l_event_id).array_value_num('header_index'));
170585 --
170586 --
170587
170588 -- No reversal code generated
170589
170590 xla_ae_lines_pkg.SetAcctReversalAttrs
170591 (p_event_id => l_event_id
170592 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
170593 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170594 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
170595 END IF;
170596
170597 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
170598 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
170599
170600 --
170601 AcctLineType_54 (
170602 p_application_id => p_application_id
170603 ,p_event_id => l_event_id
170604 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170605 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170606 ,p_actual_flag => l_actual_flag
170607 ,p_balance_type_code => l_balance_type_code
170608 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170609
170610 , p_source_1 => l_array_source_1(Idx)
170611 , p_source_2 => l_array_source_2(Idx)
170612 , p_source_3 => l_array_source_3(Idx)
170613 , p_source_5 => l_array_source_5(Idx)
170614 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
170615 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
170616 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
170617 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
170618 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
170619 , p_source_11 => l_array_source_11(Idx)
170620 );
170621 If(l_balance_type_code = 'A') THEN
170622 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170623 END IF;
170624
170625 --
170626
170627
170628 --
170629 AcctLineType_65 (
170630 p_application_id => p_application_id
170631 ,p_event_id => l_event_id
170632 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170633 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170634 ,p_actual_flag => l_actual_flag
170635 ,p_balance_type_code => l_balance_type_code
170636 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170637
170638 , p_source_1 => l_array_source_1(Idx)
170639 , p_source_2 => l_array_source_2(Idx)
170640 , p_source_3 => l_array_source_3(Idx)
170641 , p_source_5 => l_array_source_5(Idx)
170642 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
170643 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
170644 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
170645 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
170646 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
170647 , p_source_11 => l_array_source_11(Idx)
170648 );
170649 If(l_balance_type_code = 'A') THEN
170650 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170651 END IF;
170652
170653 --
170654
170655 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
170656 -- or secondary ledger that has different currency with primary
170657 -- or alc that is calculated by sla
170658 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
170659 (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'))
170660
170661 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
170662 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
170663 AND (l_actual_flag = 'A')) THEN
170664 XLA_AE_LINES_PKG.CreateGainOrLossLines(
170665 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
170666 ,p_application_id => p_application_id
170667 ,p_amb_context_code => 'DEFAULT'
170668 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
170669 ,p_event_class_code => C_EVENT_CLASS_CODE
170670 ,p_event_type_code => C_EVENT_TYPE_CODE
170671
170672 ,p_gain_ccid => -1
170673 ,p_loss_ccid => -1
170674
170675 ,p_actual_flag => l_actual_flag
170676 ,p_enc_flag => null
170677 ,p_actual_g_l_ref => l_actual_gain_loss_ref
170678 ,p_enc_g_l_ref => null
170679 );
170680 END IF;
170681 END IF;
170682 END IF;
170683
170684 ELSE
170685 --
170686 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170687 --
170688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170689 trace
170690 (p_msg => 'Trancaction revesal option is Y'
170691 ,p_level => C_LEVEL_STATEMENT
170692 ,p_module => l_log_module);
170693 END IF;
170694 END IF;
170695
170699 close line_cur;
170696 END LOOP;
170697 l_result := XLA_AE_LINES_PKG.InsertLines ;
170698 end loop;
170700
170701
170702 --
170703 -- insert headers into xla_ae_headers_gt table
170704 --
170705 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
170706
170707 -- insert into errors table here.
170708
170709 END LOOP;
170710
170711 --
170712 -- 4865292
170713 --
170714 -- Compare g_hdr_extract_count with event count in
170715 -- CreateHeadersAndLines.
170716 --
170717 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
170718
170719 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170720 trace (p_msg => '# rows extracted from header extract objects '
170721 || ' (running total): '
170722 || g_hdr_extract_count
170723 ,p_level => C_LEVEL_STATEMENT
170724 ,p_module => l_log_module);
170725 END IF;
170726
170727 CLOSE header_cur;
170728 --
170729
170730 --
170731 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170732 trace
170733 (p_msg => 'END of EventType_289'
170734 ,p_level => C_LEVEL_PROCEDURE
170735 ,p_module => l_log_module);
170736 END IF;
170737 --
170738 RETURN l_result;
170739 EXCEPTION
170740 WHEN xla_exceptions_pkg.application_exception THEN
170741
170742 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170743
170744
170745 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
170746
170747 RAISE;
170748
170749 WHEN NO_DATA_FOUND THEN
170750
170751 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170752 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
170753
170754 FOR header_record IN header_cur
170755 LOOP
170756 l_array_header_events(header_record.event_id) := header_record.event_id;
170757 END LOOP;
170758
170759 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
170760 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
170761
170762 fnd_file.put_line(fnd_file.LOG, ' ');
170763 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170764 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
170765 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
170766
170767 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
170768 LOOP
170769 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
170770 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
170771 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
170772 END IF;
170773 END LOOP;
170774
170775 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170776 fnd_file.put_line(fnd_file.LOG, ' ');
170777
170778
170779 xla_exceptions_pkg.raise_message
170780 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_289');
170781
170782
170783 WHEN OTHERS THEN
170784 xla_exceptions_pkg.raise_message
170785 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_289');
170786 END EventType_289;
170787 --
170788
170789 ---------------------------------------
170790 --
170791 -- PRIVATE PROCEDURE
170792 -- insert_sources_290
170793 --
170794 ----------------------------------------
170795 --
170796 PROCEDURE insert_sources_290(
170797 p_target_ledger_id IN NUMBER
170798 , p_language IN VARCHAR2
170799 , p_sla_ledger_id IN NUMBER
170800 , p_pad_start_date IN DATE
170801 , p_pad_end_date IN DATE
170802 )
170803 IS
170804
170805 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_SO_ISSUE';
170806 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SHIPPING';
170807 p_apps_owner VARCHAR2(30);
170808 l_log_module VARCHAR2(240);
170809 BEGIN
170810 IF g_log_enabled THEN
170811 l_log_module := C_DEFAULT_MODULE||'.insert_sources_290';
170812 END IF;
170813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170814
170815 trace
170816 (p_msg => 'BEGIN of insert_sources_290'
170817 ,p_level => C_LEVEL_PROCEDURE
170818 ,p_module => l_log_module);
170819
170820 END IF;
170821
170822 -- select APPS owner
170823 SELECT oracle_username
170824 INTO p_apps_owner
170825 FROM fnd_oracle_userid
170826 WHERE read_only_flag = 'U'
170827 ;
170828
170829 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170830 trace
170831 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
170832 ' - p_language = '||p_language||
170833 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
170834 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
170835 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
170836 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
170837 ,p_level => C_LEVEL_STATEMENT
170838 ,p_module => l_log_module);
170839 END IF;
170840
170841
170842 --
170843 INSERT INTO xla_diag_sources --hdr1
170844 (
170848 , description_language
170845 event_id
170846 , ledger_id
170847 , sla_ledger_id
170849 , object_name
170850 , object_type_code
170851 , line_number
170852 , source_application_id
170853 , source_type_code
170854 , source_code
170855 , source_value
170856 , source_meaning
170857 , created_by
170858 , creation_date
170859 , last_update_date
170860 , last_updated_by
170861 , last_update_login
170862 , program_update_date
170863 , program_application_id
170864 , program_id
170865 , request_id
170866 )
170867 SELECT
170868 event_id
170869 , p_target_ledger_id
170870 , p_sla_ledger_id
170871 , p_language
170872 , object_name
170873 , object_type_code
170874 , line_number
170875 , source_application_id
170876 , source_type_code
170877 , source_code
170878 , SUBSTR(source_value ,1,1996)
170879 , SUBSTR(source_meaning,1,200)
170880 , xla_environment_pkg.g_Usr_Id
170881 , TRUNC(SYSDATE)
170882 , TRUNC(SYSDATE)
170883 , xla_environment_pkg.g_Usr_Id
170884 , xla_environment_pkg.g_Login_Id
170885 , TRUNC(SYSDATE)
170886 , xla_environment_pkg.g_Prog_Appl_Id
170887 , xla_environment_pkg.g_Prog_Id
170888 , xla_environment_pkg.g_Req_Id
170889 FROM (
170890 SELECT xet.event_id event_id
170891 , 0 line_number
170892 , CASE r
170893 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
170894 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
170895 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
170896 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
170897 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
170898 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
170899
170900 ELSE null
170901 END object_name
170902 , CASE r
170903 WHEN 1 THEN 'HEADER'
170904 WHEN 2 THEN 'HEADER'
170905 WHEN 3 THEN 'HEADER'
170906 WHEN 4 THEN 'HEADER'
170907 WHEN 5 THEN 'HEADER'
170908 WHEN 6 THEN 'HEADER'
170909
170910 ELSE null
170911 END object_type_code
170912 , CASE r
170913 WHEN 1 THEN '555'
170914 WHEN 2 THEN '555'
170915 WHEN 3 THEN '555'
170916 WHEN 4 THEN '555'
170917 WHEN 5 THEN '555'
170918 WHEN 6 THEN '555'
170919
170920 ELSE null
170921 END source_application_id
170922 , 'S' source_type_code
170923 , CASE r
170924 WHEN 1 THEN 'ENTITY_CODE'
170925 WHEN 2 THEN 'CURRENCY_CODE'
170926 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
170927 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
170928 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
170929 WHEN 6 THEN 'TRANSACTION_DATE'
170930
170931 ELSE null
170932 END source_code
170933 , CASE r
170934 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
170935 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
170936 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
170937 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
170938 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
170939 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
170940
170941 ELSE null
170942 END source_value
170943 , CASE r
170944 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
170945 1010186
170946 ,TO_CHAR(h1.CURRENCY_CODE)
170947 ,'CURRENCY_CODE'
170948 ,'S'
170949 ,555)
170950
170951 ELSE null
170952 END source_meaning
170953 FROM xla_events_gt xet
170954 , GMF_XLA_EXTRACT_HEADERS h1
170955 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
170956 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
170957 AND xet.event_type_code = C_EVENT_TYPE_CODE
170958 AND h1.event_id = xet.event_id
170959
170960 )
170961 ;
170962 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170963
170964 trace
170965 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
170966 ,p_level => C_LEVEL_STATEMENT
170967 ,p_module => l_log_module);
170968
170969 END IF;
170970 --
170971
170972
170973
170974 --
170975 INSERT INTO xla_diag_sources --line1
170976 (
170977 event_id
170978 , ledger_id
170979 , sla_ledger_id
170980 , description_language
170981 , object_name
170982 , object_type_code
170983 , line_number
170984 , source_application_id
170985 , source_type_code
170989 , created_by
170986 , source_code
170987 , source_value
170988 , source_meaning
170990 , creation_date
170991 , last_update_date
170992 , last_updated_by
170993 , last_update_login
170994 , program_update_date
170995 , program_application_id
170996 , program_id
170997 , request_id
170998 )
170999 SELECT event_id
171000 , p_target_ledger_id
171001 , p_sla_ledger_id
171002 , p_language
171003 , object_name
171004 , object_type_code
171005 , line_number
171006 , source_application_id
171007 , source_type_code
171008 , source_code
171009 , SUBSTR(source_value,1,1996)
171010 , SUBSTR(source_meaning,1,200)
171011 , xla_environment_pkg.g_Usr_Id
171012 , TRUNC(SYSDATE)
171013 , TRUNC(SYSDATE)
171014 , xla_environment_pkg.g_Usr_Id
171015 , xla_environment_pkg.g_Login_Id
171016 , TRUNC(SYSDATE)
171017 , xla_environment_pkg.g_Prog_Appl_Id
171018 , xla_environment_pkg.g_Prog_Id
171019 , xla_environment_pkg.g_Req_Id
171020 FROM (
171021 SELECT xet.event_id event_id
171022 , l2.line_number line_number
171023 , CASE r
171024 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
171025 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
171026 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
171027 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
171028 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
171029
171030 ELSE null
171031 END object_name
171032 , CASE r
171033 WHEN 1 THEN 'LINE'
171034 WHEN 2 THEN 'LINE'
171035 WHEN 3 THEN 'LINE'
171036 WHEN 4 THEN 'LINE'
171037 WHEN 5 THEN 'LINE'
171038
171039 ELSE null
171040 END object_type_code
171041 , CASE r
171042 WHEN 1 THEN '555'
171043 WHEN 2 THEN '555'
171044 WHEN 3 THEN '555'
171045 WHEN 4 THEN '555'
171046 WHEN 5 THEN '555'
171047
171048 ELSE null
171049 END source_application_id
171050 , 'S' source_type_code
171051 , CASE r
171052 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
171053 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
171054 WHEN 3 THEN 'ENTERED_AMOUNT'
171055 WHEN 4 THEN 'LINE_ID'
171056 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
171057
171058 ELSE null
171059 END source_code
171060 , CASE r
171061 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
171062 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
171063 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
171064 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
171065 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
171066
171067 ELSE null
171068 END source_value
171069 , null source_meaning
171070 FROM xla_events_gt xet
171071 , GMF_XLA_EXTRACT_LINES l2
171072 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
171073 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171074 AND xet.event_type_code = C_EVENT_TYPE_CODE
171075 AND l2.event_id = xet.event_id
171076
171077 )
171078 ;
171079 --
171080 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171081
171082 trace
171083 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
171084 ,p_level => C_LEVEL_STATEMENT
171085 ,p_module => l_log_module);
171086
171087 END IF;
171088
171089
171090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171091 trace
171092 (p_msg => 'END of insert_sources_290'
171093 ,p_level => C_LEVEL_PROCEDURE
171094 ,p_module => l_log_module);
171095 END IF;
171096 EXCEPTION
171097 WHEN xla_exceptions_pkg.application_exception THEN
171098 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171099 trace
171100 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171101 ,p_level => C_LEVEL_EXCEPTION
171102 ,p_module => l_log_module);
171103 END IF;
171104 RAISE;
171105 WHEN OTHERS THEN
171106 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171107 trace
171108 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171109 ,p_level => C_LEVEL_EXCEPTION
171110 ,p_module => l_log_module);
171111 END IF;
171112 xla_exceptions_pkg.raise_message
171113 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_290');
171114 END insert_sources_290;
171115 --
171116
171117 ---------------------------------------
171118 --
171119 -- PRIVATE FUNCTION
171120 -- EventType_290
171121 --
171122 ----------------------------------------
171123 --
171124 FUNCTION EventType_290
171128 ,p_language IN VARCHAR2
171125 (p_application_id IN NUMBER
171126 ,p_base_ledger_id IN NUMBER
171127 ,p_target_ledger_id IN NUMBER
171129 ,p_currency_code IN VARCHAR2
171130 ,p_sla_ledger_id IN NUMBER
171131 ,p_pad_start_date IN DATE
171132 ,p_pad_end_date IN DATE
171133 ,p_primary_ledger_id IN NUMBER)
171134 RETURN BOOLEAN IS
171135 --
171136 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_SO_ISSUE';
171137 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SHIPPING';
171138
171139 l_calculate_acctd_flag VARCHAR2(1) :='N';
171140 l_calculate_g_l_flag VARCHAR2(1) :='N';
171141 --
171142 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171143 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171144 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171145 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171146 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171147 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171148 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171149 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171150 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171151 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171152 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171153 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171154 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171155 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171156 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171157 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171158 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171159 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171160 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171161 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171162 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171163 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171164 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
171165 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171166 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
171167 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
171168
171169 l_event_id NUMBER;
171170 l_previous_event_id NUMBER;
171171 l_first_event_id NUMBER;
171172 l_last_event_id NUMBER;
171173
171174 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
171175 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
171176 --
171177 --
171178 l_result BOOLEAN := TRUE;
171179 l_rows NUMBER := 1000;
171180 l_event_type_name VARCHAR2(80) := 'Logical Sales Order Issue';
171181 l_event_class_name VARCHAR2(80) := 'Shipments';
171182 l_description VARCHAR2(4000);
171183 l_transaction_reversal NUMBER;
171184 l_ae_header_id NUMBER;
171185 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
171186 l_log_module VARCHAR2(240);
171187 --
171188 l_acct_reversal_source VARCHAR2(30);
171189 l_trx_reversal_source VARCHAR2(30);
171190
171191 l_continue_with_lines BOOLEAN := TRUE;
171192 --
171193 l_acc_rev_gl_date_source DATE; -- 4262811
171194 --
171195 type t_array_event_id is table of number index by binary_integer;
171196
171197 l_rec_array_event t_rec_array_event;
171198 l_null_rec_array_event t_rec_array_event;
171199 l_array_ae_header_id xla_number_array_type;
171200 l_actual_flag VARCHAR2(1) := NULL;
171201 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
171202 l_balance_type_code VARCHAR2(1) :=NULL;
171203 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
171204
171205 --
171206 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
171207 --
171208
171209 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
171210 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
171211 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
171212 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
171213 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171214 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
171215
171216 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
171217 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
171221
171218 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171219 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
171220 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171222 l_array_source_6 t_array_source_6;
171223 l_array_source_7 t_array_source_7;
171224 l_array_source_8 t_array_source_8;
171225 l_array_source_9 t_array_source_9;
171226 l_array_source_10 t_array_source_10;
171227 l_array_source_12 t_array_source_12;
171228
171229 l_array_source_1 t_array_source_1;
171230 l_array_source_2 t_array_source_2;
171231 l_array_source_3 t_array_source_3;
171232 l_array_source_5 t_array_source_5;
171233 l_array_source_11 t_array_source_11;
171234
171235 --
171236 CURSOR header_cur
171237 IS
171238 SELECT /*+ leading(xet) cardinality(xet,1) */
171239 -- Event Type Code: LOG_SO_ISSUE
171240 -- Event Class Code: SHIPPING
171241 xet.entity_id
171242 , xet.legal_entity_id
171243 , xet.entity_code
171244 , xet.transaction_number
171245 , xet.event_id
171246 , xet.event_class_code
171247 , xet.event_type_code
171248 , xet.event_number
171249 , xet.event_date
171250 , xet.transaction_date
171251 , xet.reference_num_1
171252 , xet.reference_num_2
171253 , xet.reference_num_3
171254 , xet.reference_num_4
171255 , xet.reference_char_1
171256 , xet.reference_char_2
171257 , xet.reference_char_3
171258 , xet.reference_char_4
171259 , xet.reference_date_1
171260 , xet.reference_date_2
171261 , xet.reference_date_3
171262 , xet.reference_date_4
171263 , xet.event_created_by
171264 , xet.budgetary_control_flag
171265 , h1.ENTITY_CODE source_6
171266 , h1.CURRENCY_CODE source_7
171267 , h1.CURRENCY_CONVERSION_DATE source_8
171268 , h1.CURRENCY_CONVERSION_RATE source_9
171269 , h1.CURRENCY_CONVERSION_TYPE source_10
171270 , h1.TRANSACTION_DATE source_12
171271 FROM xla_events_gt xet
171272 , GMF_XLA_EXTRACT_HEADERS h1
171273 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
171274 and xet.event_type_code = C_EVENT_TYPE_CODE
171275 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
171276
171277 ORDER BY event_id
171278 ;
171279
171280
171281 --
171282 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
171283 IS
171284 SELECT /*+ leading(xet) cardinality(xet,1) */
171285 -- Event Type Code: LOG_SO_ISSUE
171286 -- Event Class Code: SHIPPING
171287 xet.entity_id
171288 ,xet.legal_entity_id
171289 ,xet.entity_code
171290 ,xet.transaction_number
171291 ,xet.event_id
171292 ,xet.event_class_code
171293 ,xet.event_type_code
171294 ,xet.event_number
171295 ,xet.event_date
171296 ,xet.transaction_date
171297 ,xet.reference_num_1
171298 ,xet.reference_num_2
171299 ,xet.reference_num_3
171300 ,xet.reference_num_4
171301 ,xet.reference_char_1
171302 ,xet.reference_char_2
171303 ,xet.reference_char_3
171304 ,xet.reference_char_4
171305 ,xet.reference_date_1
171306 ,xet.reference_date_2
171307 ,xet.reference_date_3
171308 ,xet.reference_date_4
171309 ,xet.event_created_by
171310 ,xet.budgetary_control_flag , l2.LINE_NUMBER
171311 , l2.TRANSACTION_ACCOUNT_ID source_1
171312 , l2.JOURNAL_LINE_TYPE source_2
171313 , l2.ENTERED_AMOUNT source_3
171314 , l2.LINE_ID source_5
171315 , l2.ACCOUNTED_AMOUNT source_11
171316 FROM xla_events_gt xet
171317 , GMF_XLA_EXTRACT_LINES l2
171318 WHERE xet.event_id between x_first_event_id and x_last_event_id
171319 and xet.event_date between p_pad_start_date and p_pad_end_date
171320 and xet.event_type_code = C_EVENT_TYPE_CODE
171321 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
171322 ;
171323
171324 --
171325 BEGIN
171326 IF g_log_enabled THEN
171327 l_log_module := C_DEFAULT_MODULE||'.EventType_290';
171328 END IF;
171329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171330 trace
171331 (p_msg => 'BEGIN of EventType_290'
171332 ,p_level => C_LEVEL_PROCEDURE
171333 ,p_module => l_log_module);
171334 END IF;
171335
171336 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171337 trace
171338 (p_msg => 'p_application_id = '||p_application_id||
171339 ' - p_base_ledger_id = '||p_base_ledger_id||
171340 ' - p_target_ledger_id = '||p_target_ledger_id||
171341 ' - p_language = '||p_language||
171342 ' - p_currency_code = '||p_currency_code||
171343 ' - p_sla_ledger_id = '||p_sla_ledger_id
171344 ,p_level => C_LEVEL_STATEMENT
171345 ,p_module => l_log_module);
171346 END IF;
171347 --
171348 -- initialze arrays
171349 --
171350 g_array_event.DELETE;
171351 l_rec_array_event := l_null_rec_array_event;
171352 --
171353 --------------------------------------
171354 -- 4262811 Initialze MPA Line Number
171355 --------------------------------------
171356 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
171357
171358 --
171359
171360 --
171361 OPEN header_cur;
171362 --
171363 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171364 trace
171368 END IF;
171365 (p_msg => 'SQL - FETCH header_cur'
171366 ,p_level => C_LEVEL_STATEMENT
171367 ,p_module => l_log_module);
171369 --
171370 LOOP
171371 FETCH header_cur BULK COLLECT INTO
171372 l_array_entity_id
171373 , l_array_legal_entity_id
171374 , l_array_entity_code
171375 , l_array_transaction_num
171376 , l_array_event_id
171377 , l_array_class_code
171378 , l_array_event_type
171379 , l_array_event_number
171380 , l_array_event_date
171381 , l_array_transaction_date
171382 , l_array_reference_num_1
171383 , l_array_reference_num_2
171384 , l_array_reference_num_3
171385 , l_array_reference_num_4
171386 , l_array_reference_char_1
171387 , l_array_reference_char_2
171388 , l_array_reference_char_3
171389 , l_array_reference_char_4
171390 , l_array_reference_date_1
171391 , l_array_reference_date_2
171392 , l_array_reference_date_3
171393 , l_array_reference_date_4
171394 , l_array_event_created_by
171395 , l_array_budgetary_control_flag
171396 , l_array_source_6
171397 , l_array_source_7
171398 , l_array_source_8
171399 , l_array_source_9
171400 , l_array_source_10
171401 , l_array_source_12
171402 LIMIT l_rows;
171403 --
171404 IF (C_LEVEL_EVENT >= g_log_level) THEN
171405 trace
171406 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
171407 ,p_level => C_LEVEL_EVENT
171408 ,p_module => l_log_module);
171409 END IF;
171410 --
171411 EXIT WHEN l_array_entity_id.COUNT = 0;
171412
171413 -- initialize arrays
171414 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
171415 XLA_AE_LINES_PKG.g_rec_lines := NULL;
171416
171417 --
171418 -- Bug 4458708
171419 --
171420 XLA_AE_LINES_PKG.g_LineNumber := 0;
171421
171422
171423 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
171424 g_last_hdr_idx := l_array_event_id.LAST;
171425 --
171426 -- loop for the headers. Each iteration is for each header extract row
171427 -- fetched in header cursor
171428 --
171429 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
171430
171431 --
171432 -- set event info as cache for other routines to refer event attributes
171433 --
171434 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
171435 (p_application_id => p_application_id
171436 ,p_primary_ledger_id => p_primary_ledger_id
171437 ,p_base_ledger_id => p_base_ledger_id
171438 ,p_target_ledger_id => p_target_ledger_id
171439 ,p_entity_id => l_array_entity_id(hdr_idx)
171440 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
171441 ,p_entity_code => l_array_entity_code(hdr_idx)
171442 ,p_transaction_num => l_array_transaction_num(hdr_idx)
171443 ,p_event_id => l_array_event_id(hdr_idx)
171444 ,p_event_class_code => l_array_class_code(hdr_idx)
171445 ,p_event_type_code => l_array_event_type(hdr_idx)
171446 ,p_event_number => l_array_event_number(hdr_idx)
171447 ,p_event_date => l_array_event_date(hdr_idx)
171448 ,p_transaction_date => l_array_transaction_date(hdr_idx)
171449 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
171450 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
171451 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
171452 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
171453 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
171454 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
171455 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
171456 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
171457 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
171458 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
171459 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
171460 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
171461 ,p_event_created_by => l_array_event_created_by(hdr_idx)
171462 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
171463
171464 --
171465 -- set the status of entry to C_VALID (0)
171466 --
171467 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
171468
171469 --
171470 -- initialize a row for ae header
171471 --
171472 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
171473
171474 l_event_id := l_array_event_id(hdr_idx);
171475
171476 --
171477 -- storing the hdr_idx for event. May be used by line cursor.
171478 --
171479 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
171480
171481 --
171482 -- store sources from header extract. This can be improved to
171483 -- store only those sources from header extract that may be used in lines
171484 --
171485
171486 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
171487 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
171488 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
171489 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
171490 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
171494 -- initilaize the status of ae headers for diffrent balance types
171491 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
171492
171493 --
171495 -- the status is initialised to C_NOT_CREATED (2)
171496 --
171497 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171498 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171499 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171500
171501 --
171502 -- call api to validate and store accounting attributes for header
171503 --
171504
171505 ------------------------------------------------------------
171506 -- Accrual Reversal : to get date for Standard Source (NONE)
171507 ------------------------------------------------------------
171508 l_acc_rev_gl_date_source := NULL;
171509
171510 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
171511 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
171512
171513
171514 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
171515
171516 XLA_AE_HEADER_PKG.SetJeCategoryName;
171517
171518 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
171519 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
171520 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
171521 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
171522 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
171523
171524
171525 -- No header level analytical criteria
171526
171527 --
171528 --accounting attribute enhancement, bug 3612931
171529 --
171530 l_trx_reversal_source := SUBSTR(NULL, 1,30);
171531
171532 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
171533 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
171534
171535 xla_accounting_err_pkg.build_message
171536 (p_appli_s_name => 'XLA'
171537 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
171538 ,p_token_1 => 'ACCT_ATTR_NAME'
171539 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
171540 ,p_token_2 => 'PRODUCT_NAME'
171541 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171542 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171543 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
171544 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171545
171546 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
171547 --
171548 -- following sets the accounting attributes needed to reverse
171549 -- accounting for a distributeion
171550 --
171551 xla_ae_lines_pkg.SetTrxReversalAttrs
171552 (p_event_id => l_event_id
171553 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
171554 ,p_trx_reversal_source => l_trx_reversal_source);
171555
171556 END IF;
171557
171558
171559 ----------------------------------------------------------------
171560 -- 4262811 - update the header statuses to invalid in need be
171561 ----------------------------------------------------------------
171562 --
171563 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
171564
171565
171566 -----------------------------------------------
171567 -- No accrual reversal for the event class/type
171568 -----------------------------------------------
171569 ----------------------------------------------------------------
171570
171571 --
171572 -- this ends the header loop iteration for one bulk fetch
171573 --
171574 END LOOP;
171575
171576 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
171577 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
171578
171579 --
171580 -- insert dummy rows into lines gt table that were created due to
171581 -- transaction reversals
171582 --
171583 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
171584 l_result := XLA_AE_LINES_PKG.InsertLines;
171585 END IF;
171586
171587 --
171588 -- reset the temp_line_num for each set of events fetched from header
171589 -- cursor rather than doing it for each new event in line cursor
171590 -- Bug 3939231
171591 --
171592 xla_ae_lines_pkg.g_temp_line_num := 0;
171593
171594
171595
171596 --
171597 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
171598 --
171599 --
171600 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171601
171602 trace
171603 (p_msg => 'SQL - FETCH line_cur'
171604 ,p_level => C_LEVEL_STATEMENT
171605 ,p_module => l_log_module);
171606
171607 END IF;
171608 --
171609 --
171610 LOOP
171611 --
171612 FETCH line_cur BULK COLLECT INTO
171613 l_array_entity_id
171614 , l_array_legal_entity_id
171615 , l_array_entity_code
171616 , l_array_transaction_num
171617 , l_array_event_id
171618 , l_array_class_code
171619 , l_array_event_type
171620 , l_array_event_number
171624 , l_array_reference_num_2
171621 , l_array_event_date
171622 , l_array_transaction_date
171623 , l_array_reference_num_1
171625 , l_array_reference_num_3
171626 , l_array_reference_num_4
171627 , l_array_reference_char_1
171628 , l_array_reference_char_2
171629 , l_array_reference_char_3
171630 , l_array_reference_char_4
171631 , l_array_reference_date_1
171632 , l_array_reference_date_2
171633 , l_array_reference_date_3
171634 , l_array_reference_date_4
171635 , l_array_event_created_by
171636 , l_array_budgetary_control_flag
171637 , l_array_extract_line_num
171638 , l_array_source_1
171639 , l_array_source_2
171640 , l_array_source_3
171641 , l_array_source_5
171642 , l_array_source_11
171643 LIMIT l_rows;
171644
171645 --
171646 IF (C_LEVEL_EVENT >= g_log_level) THEN
171647 trace
171648 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
171649 ,p_level => C_LEVEL_EVENT
171650 ,p_module => l_log_module);
171651 END IF;
171652 --
171653 EXIT WHEN l_array_entity_id.count = 0;
171654
171655 XLA_AE_LINES_PKG.g_rec_lines := null;
171656
171657 --
171658 -- Bug 4458708
171659 --
171660 XLA_AE_LINES_PKG.g_LineNumber := 0;
171661 --
171662 --
171663
171664 FOR Idx IN 1..l_array_event_id.count LOOP
171665 --
171666 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
171667 --
171668 l_event_id := l_array_event_id(idx); -- 5648433
171669
171670 --
171671 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
171672 --
171673
171674 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
171675 (g_array_event(l_event_id).array_value_num('header_index'))
171676 ,'N'
171677 ) <> 'Y'
171678 THEN
171679 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171680 trace
171681 (p_msg => 'Trancaction revesal option is not Y '
171682 ,p_level => C_LEVEL_STATEMENT
171683 ,p_module => l_log_module);
171684 END IF;
171685
171686 --
171687 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
171688 --
171689 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
171690 --
171691 -- set event info as cache for other routines to refer event attributes
171692 --
171693
171694 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
171695 l_previous_event_id := l_event_id;
171696
171697 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
171698 (p_application_id => p_application_id
171699 ,p_primary_ledger_id => p_primary_ledger_id
171700 ,p_base_ledger_id => p_base_ledger_id
171701 ,p_target_ledger_id => p_target_ledger_id
171702 ,p_entity_id => l_array_entity_id(Idx)
171703 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
171704 ,p_entity_code => l_array_entity_code(Idx)
171705 ,p_transaction_num => l_array_transaction_num(Idx)
171706 ,p_event_id => l_array_event_id(Idx)
171707 ,p_event_class_code => l_array_class_code(Idx)
171708 ,p_event_type_code => l_array_event_type(Idx)
171709 ,p_event_number => l_array_event_number(Idx)
171710 ,p_event_date => l_array_event_date(Idx)
171711 ,p_transaction_date => l_array_transaction_date(Idx)
171712 ,p_reference_num_1 => l_array_reference_num_1(Idx)
171713 ,p_reference_num_2 => l_array_reference_num_2(Idx)
171714 ,p_reference_num_3 => l_array_reference_num_3(Idx)
171715 ,p_reference_num_4 => l_array_reference_num_4(Idx)
171716 ,p_reference_char_1 => l_array_reference_char_1(Idx)
171717 ,p_reference_char_2 => l_array_reference_char_2(Idx)
171718 ,p_reference_char_3 => l_array_reference_char_3(Idx)
171719 ,p_reference_char_4 => l_array_reference_char_4(Idx)
171720 ,p_reference_date_1 => l_array_reference_date_1(Idx)
171721 ,p_reference_date_2 => l_array_reference_date_2(Idx)
171722 ,p_reference_date_3 => l_array_reference_date_3(Idx)
171723 ,p_reference_date_4 => l_array_reference_date_4(Idx)
171724 ,p_event_created_by => l_array_event_created_by(Idx)
171725 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
171726 --
171727 END IF;
171728
171729
171730
171731 --
171732 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
171733
171734 l_acct_reversal_source := SUBSTR(NULL, 1,30);
171735
171736 IF l_continue_with_lines THEN
171737 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
171738 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
171739
171740 xla_accounting_err_pkg.build_message
171741 (p_appli_s_name => 'XLA'
171742 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
171743 ,p_token_1 => 'LINE_NUMBER'
171744 ,p_value_1 => l_array_extract_line_num(Idx)
171745 ,p_token_2 => 'PRODUCT_NAME'
171749 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171746 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171747 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171748 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
171750
171751 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
171752 --
171753 -- following sets the accounting attributes needed to reverse
171754 -- accounting for a distributeion
171755 --
171756
171757 --
171758 -- 5217187
171759 --
171760 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
171761 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
171762 g_array_event(l_event_id).array_value_num('header_index'));
171763 --
171764 --
171765
171766 -- No reversal code generated
171767
171768 xla_ae_lines_pkg.SetAcctReversalAttrs
171769 (p_event_id => l_event_id
171770 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
171771 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171772 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
171773 END IF;
171774
171775 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
171776 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
171777
171778 --
171779 AcctLineType_74 (
171780 p_application_id => p_application_id
171781 ,p_event_id => l_event_id
171782 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171783 ,p_calculate_g_l_flag => l_calculate_g_l_flag
171784 ,p_actual_flag => l_actual_flag
171785 ,p_balance_type_code => l_balance_type_code
171786 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171787
171788 , p_source_1 => l_array_source_1(Idx)
171789 , p_source_2 => l_array_source_2(Idx)
171790 , p_source_3 => l_array_source_3(Idx)
171791 , p_source_5 => l_array_source_5(Idx)
171792 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
171793 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
171794 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
171795 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
171796 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
171797 , p_source_11 => l_array_source_11(Idx)
171798 );
171799 If(l_balance_type_code = 'A') THEN
171800 l_actual_gain_loss_ref := l_gain_or_loss_ref;
171801 END IF;
171802
171803 --
171804
171805
171806 --
171807 AcctLineType_79 (
171808 p_application_id => p_application_id
171809 ,p_event_id => l_event_id
171810 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171811 ,p_calculate_g_l_flag => l_calculate_g_l_flag
171812 ,p_actual_flag => l_actual_flag
171813 ,p_balance_type_code => l_balance_type_code
171814 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171815
171816 , p_source_1 => l_array_source_1(Idx)
171817 , p_source_2 => l_array_source_2(Idx)
171818 , p_source_3 => l_array_source_3(Idx)
171819 , p_source_5 => l_array_source_5(Idx)
171820 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
171821 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
171822 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
171823 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
171824 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
171825 , p_source_11 => l_array_source_11(Idx)
171826 );
171827 If(l_balance_type_code = 'A') THEN
171828 l_actual_gain_loss_ref := l_gain_or_loss_ref;
171829 END IF;
171830
171831 --
171832
171833
171834 --
171835 AcctLineType_133 (
171836 p_application_id => p_application_id
171837 ,p_event_id => l_event_id
171838 ,p_calculate_acctd_flag => l_calculate_acctd_flag
171839 ,p_calculate_g_l_flag => l_calculate_g_l_flag
171840 ,p_actual_flag => l_actual_flag
171841 ,p_balance_type_code => l_balance_type_code
171842 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
171843
171844 , p_source_1 => l_array_source_1(Idx)
171845 , p_source_2 => l_array_source_2(Idx)
171846 , p_source_3 => l_array_source_3(Idx)
171847 , p_source_5 => l_array_source_5(Idx)
171848 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
171849 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
171850 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
171851 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
171852 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
171853 , p_source_11 => l_array_source_11(Idx)
171854 );
171855 If(l_balance_type_code = 'A') THEN
171856 l_actual_gain_loss_ref := l_gain_or_loss_ref;
171857 END IF;
171858
171859 --
171860
171861 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
171862 -- or secondary ledger that has different currency with primary
171863 -- or alc that is calculated by sla
171864 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
171865 (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'))
171866
171867 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
171871 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
171868 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
171869 AND (l_actual_flag = 'A')) THEN
171870 XLA_AE_LINES_PKG.CreateGainOrLossLines(
171872 ,p_application_id => p_application_id
171873 ,p_amb_context_code => 'DEFAULT'
171874 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
171875 ,p_event_class_code => C_EVENT_CLASS_CODE
171876 ,p_event_type_code => C_EVENT_TYPE_CODE
171877
171878 ,p_gain_ccid => -1
171879 ,p_loss_ccid => -1
171880
171881 ,p_actual_flag => l_actual_flag
171882 ,p_enc_flag => null
171883 ,p_actual_g_l_ref => l_actual_gain_loss_ref
171884 ,p_enc_g_l_ref => null
171885 );
171886 END IF;
171887 END IF;
171888 END IF;
171889
171890 ELSE
171891 --
171892 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
171893 --
171894 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171895 trace
171896 (p_msg => 'Trancaction revesal option is Y'
171897 ,p_level => C_LEVEL_STATEMENT
171898 ,p_module => l_log_module);
171899 END IF;
171900 END IF;
171901
171902 END LOOP;
171903 l_result := XLA_AE_LINES_PKG.InsertLines ;
171904 end loop;
171905 close line_cur;
171906
171907
171908 --
171909 -- insert headers into xla_ae_headers_gt table
171910 --
171911 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
171912
171913 -- insert into errors table here.
171914
171915 END LOOP;
171916
171917 --
171918 -- 4865292
171919 --
171920 -- Compare g_hdr_extract_count with event count in
171921 -- CreateHeadersAndLines.
171922 --
171923 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
171924
171925 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171926 trace (p_msg => '# rows extracted from header extract objects '
171927 || ' (running total): '
171928 || g_hdr_extract_count
171929 ,p_level => C_LEVEL_STATEMENT
171930 ,p_module => l_log_module);
171931 END IF;
171932
171933 CLOSE header_cur;
171934 --
171935
171936 --
171937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171938 trace
171939 (p_msg => 'END of EventType_290'
171940 ,p_level => C_LEVEL_PROCEDURE
171941 ,p_module => l_log_module);
171942 END IF;
171943 --
171944 RETURN l_result;
171945 EXCEPTION
171946 WHEN xla_exceptions_pkg.application_exception THEN
171947
171948 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
171949
171950
171951 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
171952
171953 RAISE;
171954
171955 WHEN NO_DATA_FOUND THEN
171956
171957 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
171958 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
171959
171960 FOR header_record IN header_cur
171961 LOOP
171962 l_array_header_events(header_record.event_id) := header_record.event_id;
171963 END LOOP;
171964
171965 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
171966 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
171967
171968 fnd_file.put_line(fnd_file.LOG, ' ');
171969 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
171970 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
171971 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
171972
171973 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
171974 LOOP
171975 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
171976 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
171977 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
171978 END IF;
171979 END LOOP;
171980
171981 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
171982 fnd_file.put_line(fnd_file.LOG, ' ');
171983
171984
171985 xla_exceptions_pkg.raise_message
171986 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_290');
171987
171988
171989 WHEN OTHERS THEN
171990 xla_exceptions_pkg.raise_message
171991 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_290');
171992 END EventType_290;
171993 --
171994
171995 ---------------------------------------
171996 --
171997 -- PRIVATE PROCEDURE
171998 -- insert_sources_291
171999 --
172000 ----------------------------------------
172001 --
172002 PROCEDURE insert_sources_291(
172003 p_target_ledger_id IN NUMBER
172004 , p_language IN VARCHAR2
172005 , p_sla_ledger_id IN NUMBER
172006 , p_pad_start_date IN DATE
172007 , p_pad_end_date IN DATE
172008 )
172009 IS
172010
172011 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOTCOSTADJ';
172012 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOTCOSTADJ';
172016 IF g_log_enabled THEN
172013 p_apps_owner VARCHAR2(30);
172014 l_log_module VARCHAR2(240);
172015 BEGIN
172017 l_log_module := C_DEFAULT_MODULE||'.insert_sources_291';
172018 END IF;
172019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172020
172021 trace
172022 (p_msg => 'BEGIN of insert_sources_291'
172023 ,p_level => C_LEVEL_PROCEDURE
172024 ,p_module => l_log_module);
172025
172026 END IF;
172027
172028 -- select APPS owner
172029 SELECT oracle_username
172030 INTO p_apps_owner
172031 FROM fnd_oracle_userid
172032 WHERE read_only_flag = 'U'
172033 ;
172034
172035 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172036 trace
172037 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
172038 ' - p_language = '||p_language||
172039 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
172040 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
172041 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
172042 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
172043 ,p_level => C_LEVEL_STATEMENT
172044 ,p_module => l_log_module);
172045 END IF;
172046
172047
172048 --
172049 INSERT INTO xla_diag_sources --hdr1
172050 (
172051 event_id
172052 , ledger_id
172053 , sla_ledger_id
172054 , description_language
172055 , object_name
172056 , object_type_code
172057 , line_number
172058 , source_application_id
172059 , source_type_code
172060 , source_code
172061 , source_value
172062 , source_meaning
172063 , created_by
172064 , creation_date
172065 , last_update_date
172066 , last_updated_by
172067 , last_update_login
172068 , program_update_date
172069 , program_application_id
172070 , program_id
172071 , request_id
172072 )
172073 SELECT
172074 event_id
172075 , p_target_ledger_id
172076 , p_sla_ledger_id
172077 , p_language
172078 , object_name
172079 , object_type_code
172080 , line_number
172081 , source_application_id
172082 , source_type_code
172083 , source_code
172084 , SUBSTR(source_value ,1,1996)
172085 , SUBSTR(source_meaning,1,200)
172086 , xla_environment_pkg.g_Usr_Id
172087 , TRUNC(SYSDATE)
172088 , TRUNC(SYSDATE)
172089 , xla_environment_pkg.g_Usr_Id
172090 , xla_environment_pkg.g_Login_Id
172091 , TRUNC(SYSDATE)
172092 , xla_environment_pkg.g_Prog_Appl_Id
172093 , xla_environment_pkg.g_Prog_Id
172094 , xla_environment_pkg.g_Req_Id
172095 FROM (
172096 SELECT xet.event_id event_id
172097 , 0 line_number
172098 , CASE r
172099 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
172100 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
172101 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
172102 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
172103 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
172104 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
172105
172106 ELSE null
172107 END object_name
172108 , CASE r
172109 WHEN 1 THEN 'HEADER'
172110 WHEN 2 THEN 'HEADER'
172111 WHEN 3 THEN 'HEADER'
172112 WHEN 4 THEN 'HEADER'
172113 WHEN 5 THEN 'HEADER'
172114 WHEN 6 THEN 'HEADER'
172115
172116 ELSE null
172117 END object_type_code
172118 , CASE r
172119 WHEN 1 THEN '555'
172120 WHEN 2 THEN '555'
172121 WHEN 3 THEN '555'
172122 WHEN 4 THEN '555'
172123 WHEN 5 THEN '555'
172124 WHEN 6 THEN '555'
172125
172126 ELSE null
172127 END source_application_id
172128 , 'S' source_type_code
172129 , CASE r
172130 WHEN 1 THEN 'ENTITY_CODE'
172131 WHEN 2 THEN 'CURRENCY_CODE'
172132 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
172133 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
172134 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
172135 WHEN 6 THEN 'TRANSACTION_DATE'
172136
172137 ELSE null
172138 END source_code
172139 , CASE r
172140 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
172141 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
172142 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
172143 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
172144 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
172145 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
172146
172147 ELSE null
172148 END source_value
172149 , CASE r
172150 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
172151 1010186
172155 ,555)
172152 ,TO_CHAR(h1.CURRENCY_CODE)
172153 ,'CURRENCY_CODE'
172154 ,'S'
172156
172157 ELSE null
172158 END source_meaning
172159 FROM xla_events_gt xet
172160 , GMF_XLA_EXTRACT_HEADERS h1
172161 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
172162 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172163 AND xet.event_type_code = C_EVENT_TYPE_CODE
172164 AND h1.event_id = xet.event_id
172165
172166 )
172167 ;
172168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172169
172170 trace
172171 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
172172 ,p_level => C_LEVEL_STATEMENT
172173 ,p_module => l_log_module);
172174
172175 END IF;
172176 --
172177
172178
172179
172180 --
172181 INSERT INTO xla_diag_sources --line1
172182 (
172183 event_id
172184 , ledger_id
172185 , sla_ledger_id
172186 , description_language
172187 , object_name
172188 , object_type_code
172189 , line_number
172190 , source_application_id
172191 , source_type_code
172192 , source_code
172193 , source_value
172194 , source_meaning
172195 , created_by
172196 , creation_date
172197 , last_update_date
172198 , last_updated_by
172199 , last_update_login
172200 , program_update_date
172201 , program_application_id
172202 , program_id
172203 , request_id
172204 )
172205 SELECT event_id
172206 , p_target_ledger_id
172207 , p_sla_ledger_id
172208 , p_language
172209 , object_name
172210 , object_type_code
172211 , line_number
172212 , source_application_id
172213 , source_type_code
172214 , source_code
172215 , SUBSTR(source_value,1,1996)
172216 , SUBSTR(source_meaning,1,200)
172217 , xla_environment_pkg.g_Usr_Id
172218 , TRUNC(SYSDATE)
172219 , TRUNC(SYSDATE)
172220 , xla_environment_pkg.g_Usr_Id
172221 , xla_environment_pkg.g_Login_Id
172222 , TRUNC(SYSDATE)
172223 , xla_environment_pkg.g_Prog_Appl_Id
172224 , xla_environment_pkg.g_Prog_Id
172225 , xla_environment_pkg.g_Req_Id
172226 FROM (
172227 SELECT xet.event_id event_id
172228 , l2.line_number line_number
172229 , CASE r
172230 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
172231 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
172232 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
172233 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
172234 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
172235
172236 ELSE null
172237 END object_name
172238 , CASE r
172239 WHEN 1 THEN 'LINE'
172240 WHEN 2 THEN 'LINE'
172241 WHEN 3 THEN 'LINE'
172242 WHEN 4 THEN 'LINE'
172243 WHEN 5 THEN 'LINE'
172244
172245 ELSE null
172246 END object_type_code
172247 , CASE r
172248 WHEN 1 THEN '555'
172249 WHEN 2 THEN '555'
172250 WHEN 3 THEN '555'
172251 WHEN 4 THEN '555'
172252 WHEN 5 THEN '555'
172253
172254 ELSE null
172255 END source_application_id
172256 , 'S' source_type_code
172257 , CASE r
172258 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
172259 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
172260 WHEN 3 THEN 'ENTERED_AMOUNT'
172261 WHEN 4 THEN 'LINE_ID'
172262 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
172263
172264 ELSE null
172265 END source_code
172266 , CASE r
172267 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
172268 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
172269 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
172270 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
172271 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
172272
172273 ELSE null
172274 END source_value
172275 , null source_meaning
172276 FROM xla_events_gt xet
172277 , GMF_XLA_EXTRACT_LINES l2
172278 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
172279 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172280 AND xet.event_type_code = C_EVENT_TYPE_CODE
172281 AND l2.event_id = xet.event_id
172282
172283 )
172284 ;
172285 --
172286 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172287
172288 trace
172289 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
172290 ,p_level => C_LEVEL_STATEMENT
172291 ,p_module => l_log_module);
172292
172293 END IF;
172294
172298 (p_msg => 'END of insert_sources_291'
172295
172296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172297 trace
172299 ,p_level => C_LEVEL_PROCEDURE
172300 ,p_module => l_log_module);
172301 END IF;
172302 EXCEPTION
172303 WHEN xla_exceptions_pkg.application_exception THEN
172304 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
172305 trace
172306 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
172307 ,p_level => C_LEVEL_EXCEPTION
172308 ,p_module => l_log_module);
172309 END IF;
172310 RAISE;
172311 WHEN OTHERS THEN
172312 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
172313 trace
172314 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
172315 ,p_level => C_LEVEL_EXCEPTION
172316 ,p_module => l_log_module);
172317 END IF;
172318 xla_exceptions_pkg.raise_message
172319 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_291');
172320 END insert_sources_291;
172321 --
172322
172323 ---------------------------------------
172324 --
172325 -- PRIVATE FUNCTION
172326 -- EventType_291
172327 --
172328 ----------------------------------------
172329 --
172330 FUNCTION EventType_291
172331 (p_application_id IN NUMBER
172332 ,p_base_ledger_id IN NUMBER
172333 ,p_target_ledger_id IN NUMBER
172334 ,p_language IN VARCHAR2
172335 ,p_currency_code IN VARCHAR2
172336 ,p_sla_ledger_id IN NUMBER
172337 ,p_pad_start_date IN DATE
172338 ,p_pad_end_date IN DATE
172339 ,p_primary_ledger_id IN NUMBER)
172340 RETURN BOOLEAN IS
172341 --
172342 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOTCOSTADJ';
172343 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOTCOSTADJ';
172344
172345 l_calculate_acctd_flag VARCHAR2(1) :='N';
172346 l_calculate_g_l_flag VARCHAR2(1) :='N';
172347 --
172348 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172349 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172350 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172351 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172352 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172353 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172354 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172355 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172356 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172357 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172358 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172359 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172360 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172361 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172362 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172363 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172364 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172365 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172366 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172367 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172368 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172369 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172370 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
172371 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172372 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
172373 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
172374
172375 l_event_id NUMBER;
172376 l_previous_event_id NUMBER;
172377 l_first_event_id NUMBER;
172378 l_last_event_id NUMBER;
172379
172380 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
172381 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
172382 --
172383 --
172384 l_result BOOLEAN := TRUE;
172385 l_rows NUMBER := 1000;
172386 l_event_type_name VARCHAR2(80) := 'Lot Cost Adjustment';
172387 l_event_class_name VARCHAR2(80) := 'Lot Cost Adjustment';
172388 l_description VARCHAR2(4000);
172389 l_transaction_reversal NUMBER;
172390 l_ae_header_id NUMBER;
172391 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
172392 l_log_module VARCHAR2(240);
172393 --
172394 l_acct_reversal_source VARCHAR2(30);
172395 l_trx_reversal_source VARCHAR2(30);
172396
172397 l_continue_with_lines BOOLEAN := TRUE;
172398 --
172399 l_acc_rev_gl_date_source DATE; -- 4262811
172400 --
172401 type t_array_event_id is table of number index by binary_integer;
172402
172403 l_rec_array_event t_rec_array_event;
172404 l_null_rec_array_event t_rec_array_event;
172408 l_balance_type_code VARCHAR2(1) :=NULL;
172405 l_array_ae_header_id xla_number_array_type;
172406 l_actual_flag VARCHAR2(1) := NULL;
172407 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
172409 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
172410
172411 --
172412 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
172413 --
172414
172415 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
172416 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
172417 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
172418 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
172419 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
172420 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
172421
172422 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
172423 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
172424 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172425 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
172426 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172427
172428 l_array_source_6 t_array_source_6;
172429 l_array_source_7 t_array_source_7;
172430 l_array_source_8 t_array_source_8;
172431 l_array_source_9 t_array_source_9;
172432 l_array_source_10 t_array_source_10;
172433 l_array_source_12 t_array_source_12;
172434
172435 l_array_source_1 t_array_source_1;
172436 l_array_source_2 t_array_source_2;
172437 l_array_source_3 t_array_source_3;
172438 l_array_source_5 t_array_source_5;
172439 l_array_source_11 t_array_source_11;
172440
172441 --
172442 CURSOR header_cur
172443 IS
172444 SELECT /*+ leading(xet) cardinality(xet,1) */
172445 -- Event Type Code: LOTCOSTADJ
172446 -- Event Class Code: LOTCOSTADJ
172447 xet.entity_id
172448 , xet.legal_entity_id
172449 , xet.entity_code
172450 , xet.transaction_number
172451 , xet.event_id
172452 , xet.event_class_code
172453 , xet.event_type_code
172454 , xet.event_number
172455 , xet.event_date
172456 , xet.transaction_date
172457 , xet.reference_num_1
172458 , xet.reference_num_2
172459 , xet.reference_num_3
172460 , xet.reference_num_4
172461 , xet.reference_char_1
172462 , xet.reference_char_2
172463 , xet.reference_char_3
172464 , xet.reference_char_4
172465 , xet.reference_date_1
172466 , xet.reference_date_2
172467 , xet.reference_date_3
172468 , xet.reference_date_4
172469 , xet.event_created_by
172470 , xet.budgetary_control_flag
172471 , h1.ENTITY_CODE source_6
172472 , h1.CURRENCY_CODE source_7
172473 , h1.CURRENCY_CONVERSION_DATE source_8
172474 , h1.CURRENCY_CONVERSION_RATE source_9
172475 , h1.CURRENCY_CONVERSION_TYPE source_10
172476 , h1.TRANSACTION_DATE source_12
172477 FROM xla_events_gt xet
172478 , GMF_XLA_EXTRACT_HEADERS h1
172479 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
172480 and xet.event_type_code = C_EVENT_TYPE_CODE
172481 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
172482
172483 ORDER BY event_id
172484 ;
172485
172486
172487 --
172488 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
172489 IS
172490 SELECT /*+ leading(xet) cardinality(xet,1) */
172491 -- Event Type Code: LOTCOSTADJ
172492 -- Event Class Code: LOTCOSTADJ
172493 xet.entity_id
172494 ,xet.legal_entity_id
172495 ,xet.entity_code
172496 ,xet.transaction_number
172497 ,xet.event_id
172498 ,xet.event_class_code
172499 ,xet.event_type_code
172500 ,xet.event_number
172501 ,xet.event_date
172502 ,xet.transaction_date
172503 ,xet.reference_num_1
172504 ,xet.reference_num_2
172505 ,xet.reference_num_3
172506 ,xet.reference_num_4
172507 ,xet.reference_char_1
172508 ,xet.reference_char_2
172509 ,xet.reference_char_3
172510 ,xet.reference_char_4
172511 ,xet.reference_date_1
172512 ,xet.reference_date_2
172513 ,xet.reference_date_3
172514 ,xet.reference_date_4
172515 ,xet.event_created_by
172516 ,xet.budgetary_control_flag , l2.LINE_NUMBER
172517 , l2.TRANSACTION_ACCOUNT_ID source_1
172518 , l2.JOURNAL_LINE_TYPE source_2
172519 , l2.ENTERED_AMOUNT source_3
172520 , l2.LINE_ID source_5
172521 , l2.ACCOUNTED_AMOUNT source_11
172522 FROM xla_events_gt xet
172523 , GMF_XLA_EXTRACT_LINES l2
172524 WHERE xet.event_id between x_first_event_id and x_last_event_id
172525 and xet.event_date between p_pad_start_date and p_pad_end_date
172526 and xet.event_type_code = C_EVENT_TYPE_CODE
172527 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
172528 ;
172529
172530 --
172531 BEGIN
172532 IF g_log_enabled THEN
172533 l_log_module := C_DEFAULT_MODULE||'.EventType_291';
172534 END IF;
172535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172539 ,p_module => l_log_module);
172536 trace
172537 (p_msg => 'BEGIN of EventType_291'
172538 ,p_level => C_LEVEL_PROCEDURE
172540 END IF;
172541
172542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172543 trace
172544 (p_msg => 'p_application_id = '||p_application_id||
172545 ' - p_base_ledger_id = '||p_base_ledger_id||
172546 ' - p_target_ledger_id = '||p_target_ledger_id||
172547 ' - p_language = '||p_language||
172548 ' - p_currency_code = '||p_currency_code||
172549 ' - p_sla_ledger_id = '||p_sla_ledger_id
172550 ,p_level => C_LEVEL_STATEMENT
172551 ,p_module => l_log_module);
172552 END IF;
172553 --
172554 -- initialze arrays
172555 --
172556 g_array_event.DELETE;
172557 l_rec_array_event := l_null_rec_array_event;
172558 --
172559 --------------------------------------
172560 -- 4262811 Initialze MPA Line Number
172561 --------------------------------------
172562 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
172563
172564 --
172565
172566 --
172567 OPEN header_cur;
172568 --
172569 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172570 trace
172571 (p_msg => 'SQL - FETCH header_cur'
172572 ,p_level => C_LEVEL_STATEMENT
172573 ,p_module => l_log_module);
172574 END IF;
172575 --
172576 LOOP
172577 FETCH header_cur BULK COLLECT INTO
172578 l_array_entity_id
172579 , l_array_legal_entity_id
172580 , l_array_entity_code
172581 , l_array_transaction_num
172582 , l_array_event_id
172583 , l_array_class_code
172584 , l_array_event_type
172585 , l_array_event_number
172586 , l_array_event_date
172587 , l_array_transaction_date
172588 , l_array_reference_num_1
172589 , l_array_reference_num_2
172590 , l_array_reference_num_3
172591 , l_array_reference_num_4
172592 , l_array_reference_char_1
172593 , l_array_reference_char_2
172594 , l_array_reference_char_3
172595 , l_array_reference_char_4
172596 , l_array_reference_date_1
172597 , l_array_reference_date_2
172598 , l_array_reference_date_3
172599 , l_array_reference_date_4
172600 , l_array_event_created_by
172601 , l_array_budgetary_control_flag
172602 , l_array_source_6
172603 , l_array_source_7
172604 , l_array_source_8
172605 , l_array_source_9
172606 , l_array_source_10
172607 , l_array_source_12
172608 LIMIT l_rows;
172609 --
172610 IF (C_LEVEL_EVENT >= g_log_level) THEN
172611 trace
172612 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
172613 ,p_level => C_LEVEL_EVENT
172614 ,p_module => l_log_module);
172615 END IF;
172616 --
172617 EXIT WHEN l_array_entity_id.COUNT = 0;
172618
172619 -- initialize arrays
172620 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
172621 XLA_AE_LINES_PKG.g_rec_lines := NULL;
172622
172623 --
172624 -- Bug 4458708
172625 --
172626 XLA_AE_LINES_PKG.g_LineNumber := 0;
172627
172628
172629 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
172630 g_last_hdr_idx := l_array_event_id.LAST;
172631 --
172632 -- loop for the headers. Each iteration is for each header extract row
172633 -- fetched in header cursor
172634 --
172635 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
172636
172637 --
172638 -- set event info as cache for other routines to refer event attributes
172639 --
172640 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172641 (p_application_id => p_application_id
172642 ,p_primary_ledger_id => p_primary_ledger_id
172643 ,p_base_ledger_id => p_base_ledger_id
172644 ,p_target_ledger_id => p_target_ledger_id
172645 ,p_entity_id => l_array_entity_id(hdr_idx)
172646 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
172647 ,p_entity_code => l_array_entity_code(hdr_idx)
172648 ,p_transaction_num => l_array_transaction_num(hdr_idx)
172649 ,p_event_id => l_array_event_id(hdr_idx)
172650 ,p_event_class_code => l_array_class_code(hdr_idx)
172651 ,p_event_type_code => l_array_event_type(hdr_idx)
172652 ,p_event_number => l_array_event_number(hdr_idx)
172653 ,p_event_date => l_array_event_date(hdr_idx)
172654 ,p_transaction_date => l_array_transaction_date(hdr_idx)
172655 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
172656 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
172657 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
172658 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
172659 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
172660 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
172661 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
172662 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
172663 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
172664 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
172665 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
172666 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
172670 --
172667 ,p_event_created_by => l_array_event_created_by(hdr_idx)
172668 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
172669
172671 -- set the status of entry to C_VALID (0)
172672 --
172673 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172674
172675 --
172676 -- initialize a row for ae header
172677 --
172678 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
172679
172680 l_event_id := l_array_event_id(hdr_idx);
172681
172682 --
172683 -- storing the hdr_idx for event. May be used by line cursor.
172684 --
172685 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
172686
172687 --
172688 -- store sources from header extract. This can be improved to
172689 -- store only those sources from header extract that may be used in lines
172690 --
172691
172692 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
172693 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
172694 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
172695 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
172696 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
172697 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
172698
172699 --
172700 -- initilaize the status of ae headers for diffrent balance types
172701 -- the status is initialised to C_NOT_CREATED (2)
172702 --
172703 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172704 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172705 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
172706
172707 --
172708 -- call api to validate and store accounting attributes for header
172709 --
172710
172711 ------------------------------------------------------------
172712 -- Accrual Reversal : to get date for Standard Source (NONE)
172713 ------------------------------------------------------------
172714 l_acc_rev_gl_date_source := NULL;
172715
172716 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
172717 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
172718
172719
172720 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
172721
172722 XLA_AE_HEADER_PKG.SetJeCategoryName;
172723
172724 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
172725 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
172726 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
172727 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
172728 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
172729
172730
172731 -- No header level analytical criteria
172732
172733 --
172734 --accounting attribute enhancement, bug 3612931
172735 --
172736 l_trx_reversal_source := SUBSTR(NULL, 1,30);
172737
172738 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
172739 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
172740
172741 xla_accounting_err_pkg.build_message
172742 (p_appli_s_name => 'XLA'
172743 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
172744 ,p_token_1 => 'ACCT_ATTR_NAME'
172745 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
172746 ,p_token_2 => 'PRODUCT_NAME'
172747 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172748 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172749 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
172750 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172751
172752 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
172753 --
172754 -- following sets the accounting attributes needed to reverse
172755 -- accounting for a distributeion
172756 --
172757 xla_ae_lines_pkg.SetTrxReversalAttrs
172758 (p_event_id => l_event_id
172759 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
172760 ,p_trx_reversal_source => l_trx_reversal_source);
172761
172762 END IF;
172763
172764
172765 ----------------------------------------------------------------
172766 -- 4262811 - update the header statuses to invalid in need be
172767 ----------------------------------------------------------------
172768 --
172769 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
172770
172771
172772 -----------------------------------------------
172773 -- No accrual reversal for the event class/type
172774 -----------------------------------------------
172775 ----------------------------------------------------------------
172776
172777 --
172778 -- this ends the header loop iteration for one bulk fetch
172779 --
172780 END LOOP;
172781
172782 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
172783 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
172784
172785 --
172789 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
172786 -- insert dummy rows into lines gt table that were created due to
172787 -- transaction reversals
172788 --
172790 l_result := XLA_AE_LINES_PKG.InsertLines;
172791 END IF;
172792
172793 --
172794 -- reset the temp_line_num for each set of events fetched from header
172795 -- cursor rather than doing it for each new event in line cursor
172796 -- Bug 3939231
172797 --
172798 xla_ae_lines_pkg.g_temp_line_num := 0;
172799
172800
172801
172802 --
172803 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
172804 --
172805 --
172806 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172807
172808 trace
172809 (p_msg => 'SQL - FETCH line_cur'
172810 ,p_level => C_LEVEL_STATEMENT
172811 ,p_module => l_log_module);
172812
172813 END IF;
172814 --
172815 --
172816 LOOP
172817 --
172818 FETCH line_cur BULK COLLECT INTO
172819 l_array_entity_id
172820 , l_array_legal_entity_id
172821 , l_array_entity_code
172822 , l_array_transaction_num
172823 , l_array_event_id
172824 , l_array_class_code
172825 , l_array_event_type
172826 , l_array_event_number
172827 , l_array_event_date
172828 , l_array_transaction_date
172829 , l_array_reference_num_1
172830 , l_array_reference_num_2
172831 , l_array_reference_num_3
172832 , l_array_reference_num_4
172833 , l_array_reference_char_1
172834 , l_array_reference_char_2
172835 , l_array_reference_char_3
172836 , l_array_reference_char_4
172837 , l_array_reference_date_1
172838 , l_array_reference_date_2
172839 , l_array_reference_date_3
172840 , l_array_reference_date_4
172841 , l_array_event_created_by
172842 , l_array_budgetary_control_flag
172843 , l_array_extract_line_num
172844 , l_array_source_1
172845 , l_array_source_2
172846 , l_array_source_3
172847 , l_array_source_5
172848 , l_array_source_11
172849 LIMIT l_rows;
172850
172851 --
172852 IF (C_LEVEL_EVENT >= g_log_level) THEN
172853 trace
172854 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
172855 ,p_level => C_LEVEL_EVENT
172856 ,p_module => l_log_module);
172857 END IF;
172858 --
172859 EXIT WHEN l_array_entity_id.count = 0;
172860
172861 XLA_AE_LINES_PKG.g_rec_lines := null;
172862
172863 --
172864 -- Bug 4458708
172865 --
172866 XLA_AE_LINES_PKG.g_LineNumber := 0;
172867 --
172868 --
172869
172870 FOR Idx IN 1..l_array_event_id.count LOOP
172871 --
172872 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
172873 --
172874 l_event_id := l_array_event_id(idx); -- 5648433
172875
172876 --
172877 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172878 --
172879
172880 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
172881 (g_array_event(l_event_id).array_value_num('header_index'))
172882 ,'N'
172883 ) <> 'Y'
172884 THEN
172885 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172886 trace
172887 (p_msg => 'Trancaction revesal option is not Y '
172888 ,p_level => C_LEVEL_STATEMENT
172889 ,p_module => l_log_module);
172890 END IF;
172891
172892 --
172893 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
172894 --
172895 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172896 --
172897 -- set event info as cache for other routines to refer event attributes
172898 --
172899
172900 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
172901 l_previous_event_id := l_event_id;
172902
172903 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172904 (p_application_id => p_application_id
172905 ,p_primary_ledger_id => p_primary_ledger_id
172906 ,p_base_ledger_id => p_base_ledger_id
172907 ,p_target_ledger_id => p_target_ledger_id
172908 ,p_entity_id => l_array_entity_id(Idx)
172909 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
172910 ,p_entity_code => l_array_entity_code(Idx)
172911 ,p_transaction_num => l_array_transaction_num(Idx)
172912 ,p_event_id => l_array_event_id(Idx)
172913 ,p_event_class_code => l_array_class_code(Idx)
172914 ,p_event_type_code => l_array_event_type(Idx)
172915 ,p_event_number => l_array_event_number(Idx)
172916 ,p_event_date => l_array_event_date(Idx)
172917 ,p_transaction_date => l_array_transaction_date(Idx)
172918 ,p_reference_num_1 => l_array_reference_num_1(Idx)
172919 ,p_reference_num_2 => l_array_reference_num_2(Idx)
172920 ,p_reference_num_3 => l_array_reference_num_3(Idx)
172921 ,p_reference_num_4 => l_array_reference_num_4(Idx)
172922 ,p_reference_char_1 => l_array_reference_char_1(Idx)
172923 ,p_reference_char_2 => l_array_reference_char_2(Idx)
172924 ,p_reference_char_3 => l_array_reference_char_3(Idx)
172925 ,p_reference_char_4 => l_array_reference_char_4(Idx)
172929 ,p_reference_date_4 => l_array_reference_date_4(Idx)
172926 ,p_reference_date_1 => l_array_reference_date_1(Idx)
172927 ,p_reference_date_2 => l_array_reference_date_2(Idx)
172928 ,p_reference_date_3 => l_array_reference_date_3(Idx)
172930 ,p_event_created_by => l_array_event_created_by(Idx)
172931 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
172932 --
172933 END IF;
172934
172935
172936
172937 --
172938 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
172939
172940 l_acct_reversal_source := SUBSTR(NULL, 1,30);
172941
172942 IF l_continue_with_lines THEN
172943 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
172944 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
172945
172946 xla_accounting_err_pkg.build_message
172947 (p_appli_s_name => 'XLA'
172948 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
172949 ,p_token_1 => 'LINE_NUMBER'
172950 ,p_value_1 => l_array_extract_line_num(Idx)
172951 ,p_token_2 => 'PRODUCT_NAME'
172952 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172953 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172954 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
172955 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172956
172957 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
172958 --
172959 -- following sets the accounting attributes needed to reverse
172960 -- accounting for a distributeion
172961 --
172962
172963 --
172964 -- 5217187
172965 --
172966 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
172967 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
172968 g_array_event(l_event_id).array_value_num('header_index'));
172969 --
172970 --
172971
172972 -- No reversal code generated
172973
172974 xla_ae_lines_pkg.SetAcctReversalAttrs
172975 (p_event_id => l_event_id
172976 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
172977 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172978 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
172979 END IF;
172980
172981 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
172982 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
172983
172984 --
172985 AcctLineType_163 (
172986 p_application_id => p_application_id
172987 ,p_event_id => l_event_id
172988 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172989 ,p_calculate_g_l_flag => l_calculate_g_l_flag
172990 ,p_actual_flag => l_actual_flag
172991 ,p_balance_type_code => l_balance_type_code
172992 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172993
172994 , p_source_1 => l_array_source_1(Idx)
172995 , p_source_2 => l_array_source_2(Idx)
172996 , p_source_3 => l_array_source_3(Idx)
172997 , p_source_5 => l_array_source_5(Idx)
172998 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
172999 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173000 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
173001 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
173002 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
173003 , p_source_11 => l_array_source_11(Idx)
173004 );
173005 If(l_balance_type_code = 'A') THEN
173006 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173007 END IF;
173008
173009 --
173010
173011
173012 --
173013 AcctLineType_192 (
173014 p_application_id => p_application_id
173015 ,p_event_id => l_event_id
173016 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173017 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173018 ,p_actual_flag => l_actual_flag
173019 ,p_balance_type_code => l_balance_type_code
173020 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173021
173022 , p_source_1 => l_array_source_1(Idx)
173023 , p_source_2 => l_array_source_2(Idx)
173024 , p_source_3 => l_array_source_3(Idx)
173025 , p_source_5 => l_array_source_5(Idx)
173026 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
173027 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173028 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
173029 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
173030 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
173031 , p_source_11 => l_array_source_11(Idx)
173032 );
173033 If(l_balance_type_code = 'A') THEN
173034 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173035 END IF;
173036
173037 --
173038
173039 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
173040 -- or secondary ledger that has different currency with primary
173041 -- or alc that is calculated by sla
173042 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
173043 (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'))
173044
173048 XLA_AE_LINES_PKG.CreateGainOrLossLines(
173045 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
173046 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
173047 AND (l_actual_flag = 'A')) THEN
173049 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
173050 ,p_application_id => p_application_id
173051 ,p_amb_context_code => 'DEFAULT'
173052 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
173053 ,p_event_class_code => C_EVENT_CLASS_CODE
173054 ,p_event_type_code => C_EVENT_TYPE_CODE
173055
173056 ,p_gain_ccid => -1
173057 ,p_loss_ccid => -1
173058
173059 ,p_actual_flag => l_actual_flag
173060 ,p_enc_flag => null
173061 ,p_actual_g_l_ref => l_actual_gain_loss_ref
173062 ,p_enc_g_l_ref => null
173063 );
173064 END IF;
173065 END IF;
173066 END IF;
173067
173068 ELSE
173069 --
173070 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173071 --
173072 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173073 trace
173074 (p_msg => 'Trancaction revesal option is Y'
173075 ,p_level => C_LEVEL_STATEMENT
173076 ,p_module => l_log_module);
173077 END IF;
173078 END IF;
173079
173080 END LOOP;
173081 l_result := XLA_AE_LINES_PKG.InsertLines ;
173082 end loop;
173083 close line_cur;
173084
173085
173086 --
173087 -- insert headers into xla_ae_headers_gt table
173088 --
173089 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
173090
173091 -- insert into errors table here.
173092
173093 END LOOP;
173094
173095 --
173096 -- 4865292
173097 --
173098 -- Compare g_hdr_extract_count with event count in
173099 -- CreateHeadersAndLines.
173100 --
173101 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
173102
173103 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173104 trace (p_msg => '# rows extracted from header extract objects '
173105 || ' (running total): '
173106 || g_hdr_extract_count
173107 ,p_level => C_LEVEL_STATEMENT
173108 ,p_module => l_log_module);
173109 END IF;
173110
173111 CLOSE header_cur;
173112 --
173113
173114 --
173115 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173116 trace
173117 (p_msg => 'END of EventType_291'
173118 ,p_level => C_LEVEL_PROCEDURE
173119 ,p_module => l_log_module);
173120 END IF;
173121 --
173122 RETURN l_result;
173123 EXCEPTION
173124 WHEN xla_exceptions_pkg.application_exception THEN
173125
173126 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
173127
173128
173129 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
173130
173131 RAISE;
173132
173133 WHEN NO_DATA_FOUND THEN
173134
173135 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
173136 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
173137
173138 FOR header_record IN header_cur
173139 LOOP
173140 l_array_header_events(header_record.event_id) := header_record.event_id;
173141 END LOOP;
173142
173143 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
173144 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
173145
173146 fnd_file.put_line(fnd_file.LOG, ' ');
173147 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
173148 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
173149 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
173150
173151 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
173152 LOOP
173153 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
173154 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
173155 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
173156 END IF;
173157 END LOOP;
173158
173159 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
173160 fnd_file.put_line(fnd_file.LOG, ' ');
173161
173162
173163 xla_exceptions_pkg.raise_message
173164 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_291');
173165
173166
173167 WHEN OTHERS THEN
173168 xla_exceptions_pkg.raise_message
173169 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_291');
173170 END EventType_291;
173171 --
173172
173173 ---------------------------------------
173174 --
173175 -- PRIVATE PROCEDURE
173176 -- insert_sources_292
173177 --
173178 ----------------------------------------
173179 --
173180 PROCEDURE insert_sources_292(
173181 p_target_ledger_id IN NUMBER
173182 , p_language IN VARCHAR2
173183 , p_sla_ledger_id IN NUMBER
173184 , p_pad_start_date IN DATE
173185 , p_pad_end_date IN DATE
173186 )
173187 IS
173188
173192 l_log_module VARCHAR2(240);
173189 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'MISC_TXN_ALL';
173190 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'MISC_TXN';
173191 p_apps_owner VARCHAR2(30);
173193 BEGIN
173194 IF g_log_enabled THEN
173195 l_log_module := C_DEFAULT_MODULE||'.insert_sources_292';
173196 END IF;
173197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173198
173199 trace
173200 (p_msg => 'BEGIN of insert_sources_292'
173201 ,p_level => C_LEVEL_PROCEDURE
173202 ,p_module => l_log_module);
173203
173204 END IF;
173205
173206 -- select APPS owner
173207 SELECT oracle_username
173208 INTO p_apps_owner
173209 FROM fnd_oracle_userid
173210 WHERE read_only_flag = 'U'
173211 ;
173212
173213 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173214 trace
173215 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
173216 ' - p_language = '||p_language||
173217 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
173218 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
173219 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
173220 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
173221 ,p_level => C_LEVEL_STATEMENT
173222 ,p_module => l_log_module);
173223 END IF;
173224
173225
173226 --
173227 INSERT INTO xla_diag_sources --hdr2
173228 (
173229 event_id
173230 , ledger_id
173231 , sla_ledger_id
173232 , description_language
173233 , object_name
173234 , object_type_code
173235 , line_number
173236 , source_application_id
173237 , source_type_code
173238 , source_code
173239 , source_value
173240 , source_meaning
173241 , created_by
173242 , creation_date
173243 , last_update_date
173244 , last_updated_by
173245 , last_update_login
173246 , program_update_date
173247 , program_application_id
173248 , program_id
173249 , request_id
173250 )
173251 SELECT
173252 event_id
173253 , p_target_ledger_id
173254 , p_sla_ledger_id
173255 , p_language
173256 , object_name
173257 , object_type_code
173258 , line_number
173259 , source_application_id
173260 , source_type_code
173261 , source_code
173262 , SUBSTR(source_value ,1,1996)
173263 , SUBSTR(source_meaning ,1,200)
173264 , xla_environment_pkg.g_Usr_Id
173265 , TRUNC(SYSDATE)
173266 , TRUNC(SYSDATE)
173267 , xla_environment_pkg.g_Usr_Id
173268 , xla_environment_pkg.g_Login_Id
173269 , TRUNC(SYSDATE)
173270 , xla_environment_pkg.g_Prog_Appl_Id
173271 , xla_environment_pkg.g_Prog_Id
173272 , xla_environment_pkg.g_Req_Id
173273 FROM (
173274 SELECT xet.event_id event_id
173275 , 0 line_number
173276 , CASE r
173277 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
173278 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
173279 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
173280 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
173281 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
173282
173283 ELSE null
173284 END object_name
173285 , CASE r
173286 WHEN 1 THEN 'HEADER'
173287 WHEN 2 THEN 'HEADER'
173288 WHEN 3 THEN 'HEADER'
173289 WHEN 4 THEN 'HEADER'
173290 WHEN 5 THEN 'HEADER'
173291
173292 ELSE null
173293 END object_type_code
173294 , CASE r
173295 WHEN 1 THEN '555'
173296 WHEN 2 THEN '555'
173297 WHEN 3 THEN '555'
173298 WHEN 4 THEN '555'
173299 WHEN 5 THEN '555'
173300
173301 ELSE null
173302 END source_application_id
173303 , 'S' source_type_code
173304 , CASE r
173305 WHEN 1 THEN 'ENTITY_CODE'
173306 WHEN 2 THEN 'CURRENCY_CODE'
173307 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
173308 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
173309 WHEN 5 THEN 'TRANSACTION_DATE'
173310
173311 ELSE null
173312 END source_code
173313 , CASE r
173314 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
173315 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
173316 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
173317 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
173318 WHEN 5 THEN TO_CHAR(h1.TRANSACTION_DATE)
173319
173320 ELSE null
173321 END source_value
173322 , CASE r
173323 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
173324 1010186
173325 ,TO_CHAR(h1.CURRENCY_CODE)
173326 ,'CURRENCY_CODE'
173327 ,'S'
173331 END source_meaning
173328 ,555)
173329
173330 ELSE null
173332 FROM xla_events_gt xet
173333 , GMF_XLA_EXTRACT_HEADERS h1
173334 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
173335 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
173336 AND xet.event_class_code = C_EVENT_CLASS_CODE
173337 AND h1.event_id = xet.event_id
173338
173339 )
173340 ;
173341 --
173342 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173343
173344 trace
173345 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
173346 ,p_level => C_LEVEL_STATEMENT
173347 ,p_module => l_log_module);
173348
173349 END IF;
173350 --
173351
173352
173353
173354 --
173355 INSERT INTO xla_diag_sources --line2
173356 (
173357 event_id
173358 , ledger_id
173359 , sla_ledger_id
173360 , description_language
173361 , object_name
173362 , object_type_code
173363 , line_number
173364 , source_application_id
173365 , source_type_code
173366 , source_code
173367 , source_value
173368 , source_meaning
173369 , created_by
173370 , creation_date
173371 , last_update_date
173372 , last_updated_by
173373 , last_update_login
173374 , program_update_date
173375 , program_application_id
173376 , program_id
173377 , request_id
173378 )
173379 SELECT event_id
173380 , p_target_ledger_id
173381 , p_sla_ledger_id
173382 , p_language
173383 , object_name
173384 , object_type_code
173385 , line_number
173386 , source_application_id
173387 , source_type_code
173388 , source_code
173389 , SUBSTR(source_value,1,1996)
173390 , SUBSTR(source_meaning ,1,200)
173391 , xla_environment_pkg.g_Usr_Id
173392 , TRUNC(SYSDATE)
173393 , TRUNC(SYSDATE)
173394 , xla_environment_pkg.g_Usr_Id
173395 , xla_environment_pkg.g_Login_Id
173396 , TRUNC(SYSDATE)
173397 , xla_environment_pkg.g_Prog_Appl_Id
173398 , xla_environment_pkg.g_Prog_Id
173399 , xla_environment_pkg.g_Req_Id
173400 FROM (
173401 SELECT xet.event_id event_id
173402 , l2.line_number line_number
173403 , CASE r
173404 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
173405 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
173406 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
173407 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
173408 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
173409
173410 ELSE null
173411 END object_name
173412 , CASE r
173413 WHEN 1 THEN 'LINE'
173414 WHEN 2 THEN 'LINE'
173415 WHEN 3 THEN 'LINE'
173416 WHEN 4 THEN 'LINE'
173417 WHEN 5 THEN 'LINE'
173418
173419 ELSE null
173420 END object_type_code
173421 , CASE r
173422 WHEN 1 THEN '555'
173423 WHEN 2 THEN '555'
173424 WHEN 3 THEN '555'
173425 WHEN 4 THEN '555'
173426 WHEN 5 THEN '555'
173427
173428 ELSE null
173429 END source_application_id
173430 , 'S' source_type_code
173431 , CASE r
173432 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
173433 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
173434 WHEN 3 THEN 'ENTERED_AMOUNT'
173435 WHEN 4 THEN 'LINE_ID'
173436 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
173437
173438 ELSE null
173439 END source_code
173440 , CASE r
173441 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
173442 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
173443 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
173444 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
173445 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
173446
173447 ELSE null
173448 END source_value
173449 , null source_meaning
173450 FROM xla_events_gt xet
173451 , GMF_XLA_EXTRACT_LINES l2
173452 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
173453 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
173454 AND xet.event_class_code = C_EVENT_CLASS_CODE
173455 AND l2.event_id = xet.event_id
173456
173457 )
173458 ;
173459 --
173460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173461
173462 trace
173463 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
173464 ,p_level => C_LEVEL_STATEMENT
173465 ,p_module => l_log_module);
173466
173467 END IF;
173468
173469
173470 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173471 trace
173475 END IF;
173472 (p_msg => 'END of insert_sources_292'
173473 ,p_level => C_LEVEL_PROCEDURE
173474 ,p_module => l_log_module);
173476 EXCEPTION
173477 WHEN xla_exceptions_pkg.application_exception THEN
173478 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
173479 trace
173480 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
173481 ,p_level => C_LEVEL_EXCEPTION
173482 ,p_module => l_log_module);
173483 END IF;
173484 RAISE;
173485 WHEN OTHERS THEN
173486 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
173487 trace
173488 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
173489 ,p_level => C_LEVEL_EXCEPTION
173490 ,p_module => l_log_module);
173491 END IF;
173492 xla_exceptions_pkg.raise_message
173493 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_292');
173494 END insert_sources_292;
173495 --
173496
173497 ---------------------------------------
173498 --
173499 -- PRIVATE FUNCTION
173500 -- EventClass_292
173501 --
173502 ----------------------------------------
173503 --
173504 FUNCTION EventClass_292
173505 (p_application_id IN NUMBER
173506 ,p_base_ledger_id IN NUMBER
173507 ,p_target_ledger_id IN NUMBER
173508 ,p_language IN VARCHAR2
173509 ,p_currency_code IN VARCHAR2
173510 ,p_sla_ledger_id IN NUMBER
173511 ,p_pad_start_date IN DATE
173512 ,p_pad_end_date IN DATE
173513 ,p_primary_ledger_id IN NUMBER)
173514 RETURN BOOLEAN IS
173515 --
173516 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'MISC_TXN_ALL';
173517 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'MISC_TXN';
173518
173519 l_calculate_acctd_flag VARCHAR2(1) :='N';
173520 l_calculate_g_l_flag VARCHAR2(1) :='N';
173521 --
173522 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173523 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173524 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173525 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173526 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173527 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173528 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173529 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173530 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173531 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173532 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173533 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173534 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173535 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
173536 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173537 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173538 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173539 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
173540 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173541 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173542 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173543 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
173544 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
173545 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
173546 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
173547 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
173548
173549 l_event_id NUMBER;
173550 l_previous_event_id NUMBER;
173551 l_first_event_id NUMBER;
173552 l_last_event_id NUMBER;
173553
173554 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
173555 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
173556 --
173557 --
173558 l_result BOOLEAN := TRUE;
173559 l_rows NUMBER := 1000;
173560 l_event_type_name VARCHAR2(80) := 'All';
173561 l_event_class_name VARCHAR2(80) := 'Miscellaneous Transactions';
173562 l_description VARCHAR2(4000);
173563 l_transaction_reversal NUMBER;
173564 l_ae_header_id NUMBER;
173565 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
173566 l_log_module VARCHAR2(240);
173567 --
173568 l_acct_reversal_source VARCHAR2(30);
173569 l_trx_reversal_source VARCHAR2(30);
173570
173571 l_continue_with_lines BOOLEAN := TRUE;
173572 --
173573 l_acc_rev_gl_date_source DATE; -- 4262811
173574 --
173575 type t_array_event_id is table of number index by binary_integer;
173576
173577 l_rec_array_event t_rec_array_event;
173578 l_null_rec_array_event t_rec_array_event;
173579 l_array_ae_header_id xla_number_array_type;
173583 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
173580 l_actual_flag VARCHAR2(1) := NULL;
173581 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
173582 l_balance_type_code VARCHAR2(1) :=NULL;
173584
173585 --
173586 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
173587 --
173588
173589 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
173590 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
173591 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
173592 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
173593 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
173594
173595 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
173596 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
173597 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
173598 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
173599 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
173600
173601 l_array_source_6 t_array_source_6;
173602 l_array_source_7 t_array_source_7;
173603 l_array_source_8 t_array_source_8;
173604 l_array_source_9 t_array_source_9;
173605 l_array_source_12 t_array_source_12;
173606
173607 l_array_source_1 t_array_source_1;
173608 l_array_source_2 t_array_source_2;
173609 l_array_source_3 t_array_source_3;
173610 l_array_source_5 t_array_source_5;
173611 l_array_source_11 t_array_source_11;
173612
173613 --
173614 CURSOR header_cur
173615 IS
173616 SELECT /*+ leading(xet) cardinality(xet,1) */
173617 -- Event Class Code: MISC_TXN
173618 xet.entity_id
173619 ,xet.legal_entity_id
173620 ,xet.entity_code
173621 ,xet.transaction_number
173622 ,xet.event_id
173623 ,xet.event_class_code
173624 ,xet.event_type_code
173625 ,xet.event_number
173626 ,xet.event_date
173627 ,xet.transaction_date
173628 ,xet.reference_num_1
173629 ,xet.reference_num_2
173630 ,xet.reference_num_3
173631 ,xet.reference_num_4
173632 ,xet.reference_char_1
173633 ,xet.reference_char_2
173634 ,xet.reference_char_3
173635 ,xet.reference_char_4
173636 ,xet.reference_date_1
173637 ,xet.reference_date_2
173638 ,xet.reference_date_3
173639 ,xet.reference_date_4
173640 ,xet.event_created_by
173641 ,xet.budgetary_control_flag
173642 , h1.ENTITY_CODE source_6
173643 , h1.CURRENCY_CODE source_7
173644 , h1.CURRENCY_CONVERSION_DATE source_8
173645 , h1.CURRENCY_CONVERSION_RATE source_9
173646 , h1.TRANSACTION_DATE source_12
173647 FROM xla_events_gt xet
173648 , GMF_XLA_EXTRACT_HEADERS h1
173649 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
173650 and xet.event_class_code = C_EVENT_CLASS_CODE
173651 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
173652
173653 ORDER BY event_id
173654 ;
173655
173656
173657 --
173658 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
173659 IS
173660 SELECT /*+ leading(xet) cardinality(xet,1) */
173661 -- Event Class Code: MISC_TXN
173662 xet.entity_id
173663 ,xet.legal_entity_id
173664 ,xet.entity_code
173665 ,xet.transaction_number
173666 ,xet.event_id
173667 ,xet.event_class_code
173668 ,xet.event_type_code
173669 ,xet.event_number
173670 ,xet.event_date
173671 ,xet.transaction_date
173672 ,xet.reference_num_1
173673 ,xet.reference_num_2
173674 ,xet.reference_num_3
173675 ,xet.reference_num_4
173676 ,xet.reference_char_1
173677 ,xet.reference_char_2
173678 ,xet.reference_char_3
173679 ,xet.reference_char_4
173680 ,xet.reference_date_1
173681 ,xet.reference_date_2
173682 ,xet.reference_date_3
173683 ,xet.reference_date_4
173684 ,xet.event_created_by
173685 ,xet.budgetary_control_flag
173686 , l2.LINE_NUMBER
173687 , l2.TRANSACTION_ACCOUNT_ID source_1
173688 , l2.JOURNAL_LINE_TYPE source_2
173689 , l2.ENTERED_AMOUNT source_3
173690 , l2.LINE_ID source_5
173691 , l2.ACCOUNTED_AMOUNT source_11
173692 FROM xla_events_gt xet
173693 , GMF_XLA_EXTRACT_LINES l2
173694 WHERE xet.event_id between x_first_event_id and x_last_event_id
173695 and xet.event_date between p_pad_start_date and p_pad_end_date
173696 and xet.event_class_code = C_EVENT_CLASS_CODE
173697 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
173698 ;
173699
173700 --
173701 BEGIN
173702 IF g_log_enabled THEN
173703 l_log_module := C_DEFAULT_MODULE||'.EventClass_292';
173704 END IF;
173705 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173706 trace
173707 (p_msg => 'BEGIN of EventClass_292'
173708 ,p_level => C_LEVEL_PROCEDURE
173709 ,p_module => l_log_module);
173710 END IF;
173711
173712 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173713 trace
173714 (p_msg => 'p_application_id = '||p_application_id||
173718 ' - p_currency_code = '||p_currency_code||
173715 ' - p_base_ledger_id = '||p_base_ledger_id||
173716 ' - p_target_ledger_id = '||p_target_ledger_id||
173717 ' - p_language = '||p_language||
173719 ' - p_sla_ledger_id = '||p_sla_ledger_id
173720 ,p_level => C_LEVEL_STATEMENT
173721 ,p_module => l_log_module);
173722 END IF;
173723 --
173724 -- initialze arrays
173725 --
173726 g_array_event.DELETE;
173727 l_rec_array_event := l_null_rec_array_event;
173728 --
173729 --------------------------------------
173730 -- 4262811 Initialze MPA Line Number
173731 --------------------------------------
173732 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
173733
173734 --
173735
173736 --
173737 OPEN header_cur;
173738 --
173739 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173740 trace
173741 (p_msg => 'SQL - FETCH header_cur'
173742 ,p_level => C_LEVEL_STATEMENT
173743 ,p_module => l_log_module);
173744 END IF;
173745 --
173746 LOOP
173747 FETCH header_cur BULK COLLECT INTO
173748 l_array_entity_id
173749 , l_array_legal_entity_id
173750 , l_array_entity_code
173751 , l_array_transaction_num
173752 , l_array_event_id
173753 , l_array_class_code
173754 , l_array_event_type
173755 , l_array_event_number
173756 , l_array_event_date
173757 , l_array_transaction_date
173758 , l_array_reference_num_1
173759 , l_array_reference_num_2
173760 , l_array_reference_num_3
173761 , l_array_reference_num_4
173762 , l_array_reference_char_1
173763 , l_array_reference_char_2
173764 , l_array_reference_char_3
173765 , l_array_reference_char_4
173766 , l_array_reference_date_1
173767 , l_array_reference_date_2
173768 , l_array_reference_date_3
173769 , l_array_reference_date_4
173770 , l_array_event_created_by
173771 , l_array_budgetary_control_flag
173772 , l_array_source_6
173773 , l_array_source_7
173774 , l_array_source_8
173775 , l_array_source_9
173776 , l_array_source_12
173777 LIMIT l_rows;
173778 --
173779 IF (C_LEVEL_EVENT >= g_log_level) THEN
173780 trace
173781 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
173782 ,p_level => C_LEVEL_EVENT
173783 ,p_module => l_log_module);
173784 END IF;
173785 --
173786 EXIT WHEN l_array_entity_id.COUNT = 0;
173787
173788 -- initialize arrays
173789 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
173790 XLA_AE_LINES_PKG.g_rec_lines := NULL;
173791
173792 --
173793 -- Bug 4458708
173794 --
173795 XLA_AE_LINES_PKG.g_LineNumber := 0;
173796
173797
173798 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
173799 g_last_hdr_idx := l_array_event_id.LAST;
173800 --
173801 -- loop for the headers. Each iteration is for each header extract row
173802 -- fetched in header cursor
173803 --
173804 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
173805
173806 --
173807 -- set event info as cache for other routines to refer event attributes
173808 --
173809 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173810 (p_application_id => p_application_id
173811 ,p_primary_ledger_id => p_primary_ledger_id
173812 ,p_base_ledger_id => p_base_ledger_id
173813 ,p_target_ledger_id => p_target_ledger_id
173814 ,p_entity_id => l_array_entity_id(hdr_idx)
173815 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
173816 ,p_entity_code => l_array_entity_code(hdr_idx)
173817 ,p_transaction_num => l_array_transaction_num(hdr_idx)
173818 ,p_event_id => l_array_event_id(hdr_idx)
173819 ,p_event_class_code => l_array_class_code(hdr_idx)
173820 ,p_event_type_code => l_array_event_type(hdr_idx)
173821 ,p_event_number => l_array_event_number(hdr_idx)
173822 ,p_event_date => l_array_event_date(hdr_idx)
173823 ,p_transaction_date => l_array_transaction_date(hdr_idx)
173824 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
173825 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
173826 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
173827 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
173828 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
173829 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
173830 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
173831 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
173832 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
173833 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
173834 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
173835 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
173836 ,p_event_created_by => l_array_event_created_by(hdr_idx)
173837 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
173838
173839 --
173840 -- set the status of entry to C_VALID (0)
173841 --
173842 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173843
173844 --
173845 -- initialize a row for ae header
173846 --
173850
173847 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
173848
173849 l_event_id := l_array_event_id(hdr_idx);
173851 --
173852 -- storing the hdr_idx for event. May be used by line cursor.
173853 --
173854 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
173855
173856 --
173857 -- store sources from header extract. This can be improved to
173858 -- store only those sources from header extract that may be used in lines
173859 --
173860
173861 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
173862 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
173863 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
173864 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
173865 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
173866
173867 --
173868 -- initilaize the status of ae headers for diffrent balance types
173869 -- the status is initialised to C_NOT_CREATED (2)
173870 --
173871 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173872 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173873 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173874
173875 --
173876 -- call api to validate and store accounting attributes for header
173877 --
173878
173879 ------------------------------------------------------------
173880 -- Accrual Reversal : to get date for Standard Source (NONE)
173881 ------------------------------------------------------------
173882 l_acc_rev_gl_date_source := NULL;
173883
173884 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
173885 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
173886
173887
173888 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
173889
173890 XLA_AE_HEADER_PKG.SetJeCategoryName;
173891
173892 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
173893 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
173894 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
173895 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
173896 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
173897
173898
173899 -- No header level analytical criteria
173900
173901 --
173902 --accounting attribute enhancement, bug 3612931
173903 --
173904 l_trx_reversal_source := SUBSTR(NULL, 1,30);
173905
173906 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
173907 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
173908
173909 xla_accounting_err_pkg.build_message
173910 (p_appli_s_name => 'XLA'
173911 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
173912 ,p_token_1 => 'ACCT_ATTR_NAME'
173913 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
173914 ,p_token_2 => 'PRODUCT_NAME'
173915 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173916 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173917 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
173918 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173919
173920 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
173921 --
173922 -- following sets the accounting attributes needed to reverse
173923 -- accounting for a distributeion
173924 --
173925 xla_ae_lines_pkg.SetTrxReversalAttrs
173926 (p_event_id => l_event_id
173927 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
173928 ,p_trx_reversal_source => l_trx_reversal_source);
173929
173930 END IF;
173931
173932
173933 ----------------------------------------------------------------
173934 -- 4262811 - update the header statuses to invalid in need be
173935 ----------------------------------------------------------------
173936 --
173937 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
173938
173939
173940 -----------------------------------------------
173941 -- No accrual reversal for the event class/type
173942 -----------------------------------------------
173943 ----------------------------------------------------------------
173944
173945 --
173946 -- this ends the header loop iteration for one bulk fetch
173947 --
173948 END LOOP;
173949
173950 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
173951 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
173952
173953 --
173954 -- insert dummy rows into lines gt table that were created due to
173955 -- transaction reversals
173956 --
173957 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
173958 l_result := XLA_AE_LINES_PKG.InsertLines;
173959 END IF;
173960
173961 --
173962 -- reset the temp_line_num for each set of events fetched from header
173963 -- cursor rather than doing it for each new event in line cursor
173964 -- Bug 3939231
173965 --
173966 xla_ae_lines_pkg.g_temp_line_num := 0;
173967
173968
173969
173973 --
173970 --
173971 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
173972 --
173974 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173975
173976 trace
173977 (p_msg => 'SQL - FETCH line_cur'
173978 ,p_level => C_LEVEL_STATEMENT
173979 ,p_module => l_log_module);
173980
173981 END IF;
173982 --
173983 --
173984 LOOP
173985 --
173986 FETCH line_cur BULK COLLECT INTO
173987 l_array_entity_id
173988 , l_array_legal_entity_id
173989 , l_array_entity_code
173990 , l_array_transaction_num
173991 , l_array_event_id
173992 , l_array_class_code
173993 , l_array_event_type
173994 , l_array_event_number
173995 , l_array_event_date
173996 , l_array_transaction_date
173997 , l_array_reference_num_1
173998 , l_array_reference_num_2
173999 , l_array_reference_num_3
174000 , l_array_reference_num_4
174001 , l_array_reference_char_1
174002 , l_array_reference_char_2
174003 , l_array_reference_char_3
174004 , l_array_reference_char_4
174005 , l_array_reference_date_1
174006 , l_array_reference_date_2
174007 , l_array_reference_date_3
174008 , l_array_reference_date_4
174009 , l_array_event_created_by
174010 , l_array_budgetary_control_flag
174011 , l_array_extract_line_num
174012 , l_array_source_1
174013 , l_array_source_2
174014 , l_array_source_3
174015 , l_array_source_5
174016 , l_array_source_11
174017 LIMIT l_rows;
174018
174019 --
174020 IF (C_LEVEL_EVENT >= g_log_level) THEN
174021 trace
174022 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
174023 ,p_level => C_LEVEL_EVENT
174024 ,p_module => l_log_module);
174025 END IF;
174026 --
174027 EXIT WHEN l_array_entity_id.count = 0;
174028
174029 XLA_AE_LINES_PKG.g_rec_lines := null;
174030
174031 --
174032 -- Bug 4458708
174033 --
174034 XLA_AE_LINES_PKG.g_LineNumber := 0;
174035 --
174036 --
174037
174038 FOR Idx IN 1..l_array_event_id.count LOOP
174039 --
174040 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
174041 --
174042 l_event_id := l_array_event_id(idx); -- 5648433
174043
174044 --
174045 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
174046 --
174047
174048 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
174049 (g_array_event(l_event_id).array_value_num('header_index'))
174050 ,'N'
174051 ) <> 'Y'
174052 THEN
174053 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174054 trace
174055 (p_msg => 'Trancaction revesal option is not Y '
174056 ,p_level => C_LEVEL_STATEMENT
174057 ,p_module => l_log_module);
174058 END IF;
174059
174060 --
174061 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
174062 --
174063 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174064 --
174065 -- set event info as cache for other routines to refer event attributes
174066 --
174067
174068 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
174069 l_previous_event_id := l_event_id;
174070
174071 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174072 (p_application_id => p_application_id
174073 ,p_primary_ledger_id => p_primary_ledger_id
174074 ,p_base_ledger_id => p_base_ledger_id
174075 ,p_target_ledger_id => p_target_ledger_id
174076 ,p_entity_id => l_array_entity_id(Idx)
174077 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
174078 ,p_entity_code => l_array_entity_code(Idx)
174079 ,p_transaction_num => l_array_transaction_num(Idx)
174080 ,p_event_id => l_array_event_id(Idx)
174081 ,p_event_class_code => l_array_class_code(Idx)
174082 ,p_event_type_code => l_array_event_type(Idx)
174083 ,p_event_number => l_array_event_number(Idx)
174084 ,p_event_date => l_array_event_date(Idx)
174085 ,p_transaction_date => l_array_transaction_date(Idx)
174086 ,p_reference_num_1 => l_array_reference_num_1(Idx)
174087 ,p_reference_num_2 => l_array_reference_num_2(Idx)
174088 ,p_reference_num_3 => l_array_reference_num_3(Idx)
174089 ,p_reference_num_4 => l_array_reference_num_4(Idx)
174090 ,p_reference_char_1 => l_array_reference_char_1(Idx)
174091 ,p_reference_char_2 => l_array_reference_char_2(Idx)
174092 ,p_reference_char_3 => l_array_reference_char_3(Idx)
174093 ,p_reference_char_4 => l_array_reference_char_4(Idx)
174094 ,p_reference_date_1 => l_array_reference_date_1(Idx)
174095 ,p_reference_date_2 => l_array_reference_date_2(Idx)
174096 ,p_reference_date_3 => l_array_reference_date_3(Idx)
174097 ,p_reference_date_4 => l_array_reference_date_4(Idx)
174098 ,p_event_created_by => l_array_event_created_by(Idx)
174099 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
174100 --
174101 END IF;
174102
174103
174104
174105 --
174109
174106 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
174107
174108 l_acct_reversal_source := SUBSTR(NULL, 1,30);
174110 IF l_continue_with_lines THEN
174111 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
174112 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
174113
174114 xla_accounting_err_pkg.build_message
174115 (p_appli_s_name => 'XLA'
174116 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
174117 ,p_token_1 => 'LINE_NUMBER'
174118 ,p_value_1 => l_array_extract_line_num(Idx)
174119 ,p_token_2 => 'PRODUCT_NAME'
174120 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
174121 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
174122 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
174123 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
174124
174125 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
174126 --
174127 -- following sets the accounting attributes needed to reverse
174128 -- accounting for a distributeion
174129 --
174130
174131 --
174132 -- 5217187
174133 --
174134 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
174135 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
174136 g_array_event(l_event_id).array_value_num('header_index'));
174137 --
174138 --
174139
174140 -- No reversal code generated
174141
174142 xla_ae_lines_pkg.SetAcctReversalAttrs
174143 (p_event_id => l_event_id
174144 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
174145 ,p_calculate_acctd_flag => l_calculate_acctd_flag
174146 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
174147 END IF;
174148
174149 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
174150 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
174151
174152 --
174153 AcctLineType_160 (
174154 p_application_id => p_application_id
174155 ,p_event_id => l_event_id
174156 ,p_calculate_acctd_flag => l_calculate_acctd_flag
174157 ,p_calculate_g_l_flag => l_calculate_g_l_flag
174158 ,p_actual_flag => l_actual_flag
174159 ,p_balance_type_code => l_balance_type_code
174160 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174161
174162 , p_source_1 => l_array_source_1(Idx)
174163 , p_source_2 => l_array_source_2(Idx)
174164 , p_source_3 => l_array_source_3(Idx)
174165 , p_source_5 => l_array_source_5(Idx)
174166 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
174167 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
174168 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
174169 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
174170 , p_source_11 => l_array_source_11(Idx)
174171 );
174172 If(l_balance_type_code = 'A') THEN
174173 l_actual_gain_loss_ref := l_gain_or_loss_ref;
174174 END IF;
174175
174176 --
174177
174178
174179 --
174180 AcctLineType_213 (
174181 p_application_id => p_application_id
174182 ,p_event_id => l_event_id
174183 ,p_calculate_acctd_flag => l_calculate_acctd_flag
174184 ,p_calculate_g_l_flag => l_calculate_g_l_flag
174185 ,p_actual_flag => l_actual_flag
174186 ,p_balance_type_code => l_balance_type_code
174187 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174188
174189 , p_source_1 => l_array_source_1(Idx)
174190 , p_source_2 => l_array_source_2(Idx)
174191 , p_source_3 => l_array_source_3(Idx)
174192 , p_source_5 => l_array_source_5(Idx)
174193 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
174194 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
174195 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
174196 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
174197 , p_source_11 => l_array_source_11(Idx)
174198 );
174199 If(l_balance_type_code = 'A') THEN
174200 l_actual_gain_loss_ref := l_gain_or_loss_ref;
174201 END IF;
174202
174203 --
174204
174205 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
174206 -- or secondary ledger that has different currency with primary
174207 -- or alc that is calculated by sla
174208 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
174209 (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'))
174210
174211 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
174212 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
174213 AND (l_actual_flag = 'A')) THEN
174214 XLA_AE_LINES_PKG.CreateGainOrLossLines(
174215 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
174216 ,p_application_id => p_application_id
174217 ,p_amb_context_code => 'DEFAULT'
174218 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
174219 ,p_event_class_code => C_EVENT_CLASS_CODE
174220 ,p_event_type_code => C_EVENT_TYPE_CODE
174221
174225 ,p_actual_flag => l_actual_flag
174222 ,p_gain_ccid => -1
174223 ,p_loss_ccid => -1
174224
174226 ,p_enc_flag => null
174227 ,p_actual_g_l_ref => l_actual_gain_loss_ref
174228 ,p_enc_g_l_ref => null
174229 );
174230 END IF;
174231 END IF;
174232 END IF;
174233
174234 ELSE
174235 --
174236 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
174237 --
174238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174239 trace
174240 (p_msg => 'Trancaction revesal option is Y'
174241 ,p_level => C_LEVEL_STATEMENT
174242 ,p_module => l_log_module);
174243 END IF;
174244 END IF;
174245
174246 END LOOP;
174247 l_result := XLA_AE_LINES_PKG.InsertLines ;
174248 end loop;
174249 close line_cur;
174250
174251
174252 --
174253 -- insert headers into xla_ae_headers_gt table
174254 --
174255 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
174256
174257 -- insert into errors table here.
174258
174259 END LOOP;
174260
174261 --
174262 -- 4865292
174263 --
174264 -- Compare g_hdr_extract_count with event count in
174265 -- CreateHeadersAndLines.
174266 --
174267 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
174268
174269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174270 trace (p_msg => '# rows extracted from header extract objects '
174271 || ' (running total): '
174272 || g_hdr_extract_count
174273 ,p_level => C_LEVEL_STATEMENT
174274 ,p_module => l_log_module);
174275 END IF;
174276
174277 CLOSE header_cur;
174278 --
174279
174280 --
174281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174282 trace
174283 (p_msg => 'END of EventClass_292'
174284 ,p_level => C_LEVEL_PROCEDURE
174285 ,p_module => l_log_module);
174286 END IF;
174287 --
174288 RETURN l_result;
174289 EXCEPTION
174290 WHEN xla_exceptions_pkg.application_exception THEN
174291
174292 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
174293
174294
174295 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
174296
174297 RAISE;
174298
174299 WHEN NO_DATA_FOUND THEN
174300
174301 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
174302 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
174303
174304 FOR header_record IN header_cur
174305 LOOP
174306 l_array_header_events(header_record.event_id) := header_record.event_id;
174307 END LOOP;
174308
174309 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
174310 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
174311
174312 fnd_file.put_line(fnd_file.LOG, ' ');
174313 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
174314 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
174315 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
174316
174317 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
174318 LOOP
174319 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
174320 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
174321 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
174322 END IF;
174323 END LOOP;
174324
174325 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
174326 fnd_file.put_line(fnd_file.LOG, ' ');
174327
174328
174329 xla_exceptions_pkg.raise_message
174330 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_292');
174331
174332
174333 WHEN OTHERS THEN
174334 xla_exceptions_pkg.raise_message
174335 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_292');
174336 END EventClass_292;
174337 --
174338
174339 ---------------------------------------
174340 --
174341 -- PRIVATE PROCEDURE
174342 -- insert_sources_293
174343 --
174344 ----------------------------------------
174345 --
174346 PROCEDURE insert_sources_293(
174347 p_target_ledger_id IN NUMBER
174348 , p_language IN VARCHAR2
174349 , p_sla_ledger_id IN NUMBER
174350 , p_pad_start_date IN DATE
174351 , p_pad_end_date IN DATE
174352 )
174353 IS
174354
174355 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PO_RECEIPT';
174356 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
174357 p_apps_owner VARCHAR2(30);
174358 l_log_module VARCHAR2(240);
174359 BEGIN
174360 IF g_log_enabled THEN
174361 l_log_module := C_DEFAULT_MODULE||'.insert_sources_293';
174362 END IF;
174363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174364
174365 trace
174366 (p_msg => 'BEGIN of insert_sources_293'
174367 ,p_level => C_LEVEL_PROCEDURE
174368 ,p_module => l_log_module);
174369
174370 END IF;
174371
174372 -- select APPS owner
174376 WHERE read_only_flag = 'U'
174373 SELECT oracle_username
174374 INTO p_apps_owner
174375 FROM fnd_oracle_userid
174377 ;
174378
174379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174380 trace
174381 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
174382 ' - p_language = '||p_language||
174383 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
174384 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
174385 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
174386 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
174387 ,p_level => C_LEVEL_STATEMENT
174388 ,p_module => l_log_module);
174389 END IF;
174390
174391
174392 --
174393 INSERT INTO xla_diag_sources --hdr1
174394 (
174395 event_id
174396 , ledger_id
174397 , sla_ledger_id
174398 , description_language
174399 , object_name
174400 , object_type_code
174401 , line_number
174402 , source_application_id
174403 , source_type_code
174404 , source_code
174405 , source_value
174406 , source_meaning
174407 , created_by
174408 , creation_date
174409 , last_update_date
174410 , last_updated_by
174411 , last_update_login
174412 , program_update_date
174413 , program_application_id
174414 , program_id
174415 , request_id
174416 )
174417 SELECT
174418 event_id
174419 , p_target_ledger_id
174420 , p_sla_ledger_id
174421 , p_language
174422 , object_name
174423 , object_type_code
174424 , line_number
174425 , source_application_id
174426 , source_type_code
174427 , source_code
174428 , SUBSTR(source_value ,1,1996)
174429 , SUBSTR(source_meaning,1,200)
174430 , xla_environment_pkg.g_Usr_Id
174431 , TRUNC(SYSDATE)
174432 , TRUNC(SYSDATE)
174433 , xla_environment_pkg.g_Usr_Id
174434 , xla_environment_pkg.g_Login_Id
174435 , TRUNC(SYSDATE)
174436 , xla_environment_pkg.g_Prog_Appl_Id
174437 , xla_environment_pkg.g_Prog_Id
174438 , xla_environment_pkg.g_Req_Id
174439 FROM (
174440 SELECT xet.event_id event_id
174441 , 0 line_number
174442 , CASE r
174443 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
174444 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
174445 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
174446 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
174447 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
174448 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
174449
174450 ELSE null
174451 END object_name
174452 , CASE r
174453 WHEN 1 THEN 'HEADER'
174454 WHEN 2 THEN 'HEADER'
174455 WHEN 3 THEN 'HEADER'
174456 WHEN 4 THEN 'HEADER'
174457 WHEN 5 THEN 'HEADER'
174458 WHEN 6 THEN 'HEADER'
174459
174460 ELSE null
174461 END object_type_code
174462 , CASE r
174463 WHEN 1 THEN '555'
174464 WHEN 2 THEN '555'
174465 WHEN 3 THEN '555'
174466 WHEN 4 THEN '555'
174467 WHEN 5 THEN '555'
174468 WHEN 6 THEN '555'
174469
174470 ELSE null
174471 END source_application_id
174472 , 'S' source_type_code
174473 , CASE r
174474 WHEN 1 THEN 'ENTITY_CODE'
174475 WHEN 2 THEN 'CURRENCY_CODE'
174476 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
174477 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
174478 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
174479 WHEN 6 THEN 'TRANSACTION_DATE'
174480
174481 ELSE null
174482 END source_code
174483 , CASE r
174484 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
174485 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
174486 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
174487 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
174488 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
174489 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
174490
174491 ELSE null
174492 END source_value
174493 , CASE r
174494 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
174495 1010186
174496 ,TO_CHAR(h1.CURRENCY_CODE)
174497 ,'CURRENCY_CODE'
174498 ,'S'
174499 ,555)
174500
174501 ELSE null
174502 END source_meaning
174503 FROM xla_events_gt xet
174504 , GMF_XLA_EXTRACT_HEADERS h1
174505 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
174506 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174507 AND xet.event_type_code = C_EVENT_TYPE_CODE
174508 AND h1.event_id = xet.event_id
174512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174509
174510 )
174511 ;
174513
174514 trace
174515 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
174516 ,p_level => C_LEVEL_STATEMENT
174517 ,p_module => l_log_module);
174518
174519 END IF;
174520 --
174521
174522
174523
174524 --
174525 INSERT INTO xla_diag_sources --line1
174526 (
174527 event_id
174528 , ledger_id
174529 , sla_ledger_id
174530 , description_language
174531 , object_name
174532 , object_type_code
174533 , line_number
174534 , source_application_id
174535 , source_type_code
174536 , source_code
174537 , source_value
174538 , source_meaning
174539 , created_by
174540 , creation_date
174541 , last_update_date
174542 , last_updated_by
174543 , last_update_login
174544 , program_update_date
174545 , program_application_id
174546 , program_id
174547 , request_id
174548 )
174549 SELECT event_id
174550 , p_target_ledger_id
174551 , p_sla_ledger_id
174552 , p_language
174553 , object_name
174554 , object_type_code
174555 , line_number
174556 , source_application_id
174557 , source_type_code
174558 , source_code
174559 , SUBSTR(source_value,1,1996)
174560 , SUBSTR(source_meaning,1,200)
174561 , xla_environment_pkg.g_Usr_Id
174562 , TRUNC(SYSDATE)
174563 , TRUNC(SYSDATE)
174564 , xla_environment_pkg.g_Usr_Id
174565 , xla_environment_pkg.g_Login_Id
174566 , TRUNC(SYSDATE)
174567 , xla_environment_pkg.g_Prog_Appl_Id
174568 , xla_environment_pkg.g_Prog_Id
174569 , xla_environment_pkg.g_Req_Id
174570 FROM (
174571 SELECT xet.event_id event_id
174572 , l2.line_number line_number
174573 , CASE r
174574 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
174575 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
174576 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
174580 ELSE null
174577 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
174578 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
174579
174581 END object_name
174582 , CASE r
174583 WHEN 1 THEN 'LINE'
174584 WHEN 2 THEN 'LINE'
174585 WHEN 3 THEN 'LINE'
174586 WHEN 4 THEN 'LINE'
174587 WHEN 5 THEN 'LINE'
174588
174589 ELSE null
174590 END object_type_code
174591 , CASE r
174592 WHEN 1 THEN '555'
174593 WHEN 2 THEN '555'
174594 WHEN 3 THEN '555'
174595 WHEN 4 THEN '555'
174596 WHEN 5 THEN '555'
174597
174598 ELSE null
174599 END source_application_id
174600 , 'S' source_type_code
174601 , CASE r
174602 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
174603 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
174604 WHEN 3 THEN 'ENTERED_AMOUNT'
174605 WHEN 4 THEN 'LINE_ID'
174606 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
174607
174608 ELSE null
174609 END source_code
174610 , CASE r
174611 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
174612 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
174613 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
174614 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
174615 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
174616
174617 ELSE null
174618 END source_value
174619 , null source_meaning
174620 FROM xla_events_gt xet
174621 , GMF_XLA_EXTRACT_LINES l2
174622 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
174623 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174624 AND xet.event_type_code = C_EVENT_TYPE_CODE
174625 AND l2.event_id = xet.event_id
174626
174627 )
174628 ;
174629 --
174630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174631
174632 trace
174633 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
174634 ,p_level => C_LEVEL_STATEMENT
174635 ,p_module => l_log_module);
174636
174637 END IF;
174638
174639
174640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174641 trace
174642 (p_msg => 'END of insert_sources_293'
174643 ,p_level => C_LEVEL_PROCEDURE
174644 ,p_module => l_log_module);
174645 END IF;
174646 EXCEPTION
174647 WHEN xla_exceptions_pkg.application_exception THEN
174648 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174649 trace
174650 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174651 ,p_level => C_LEVEL_EXCEPTION
174652 ,p_module => l_log_module);
174653 END IF;
174654 RAISE;
174655 WHEN OTHERS THEN
174656 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174657 trace
174658 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174659 ,p_level => C_LEVEL_EXCEPTION
174660 ,p_module => l_log_module);
174661 END IF;
174662 xla_exceptions_pkg.raise_message
174663 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_293');
174664 END insert_sources_293;
174665 --
174666
174667 ---------------------------------------
174668 --
174669 -- PRIVATE FUNCTION
174670 -- EventType_293
174671 --
174672 ----------------------------------------
174673 --
174674 FUNCTION EventType_293
174675 (p_application_id IN NUMBER
174676 ,p_base_ledger_id IN NUMBER
174677 ,p_target_ledger_id IN NUMBER
174678 ,p_language IN VARCHAR2
174679 ,p_currency_code IN VARCHAR2
174680 ,p_sla_ledger_id IN NUMBER
174681 ,p_pad_start_date IN DATE
174682 ,p_pad_end_date IN DATE
174683 ,p_primary_ledger_id IN NUMBER)
174684 RETURN BOOLEAN IS
174685 --
174686 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PO_RECEIPT';
174687 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
174688
174689 l_calculate_acctd_flag VARCHAR2(1) :='N';
174690 l_calculate_g_l_flag VARCHAR2(1) :='N';
174691 --
174692 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174693 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174694 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174695 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174696 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174697 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174698 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174699 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174700 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174701 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174702 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174703 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174704 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174708 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174705 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174706 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174707 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174709 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174710 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174711 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174712 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174713 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174714 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
174715 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174716 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
174717 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
174718
174719 l_event_id NUMBER;
174720 l_previous_event_id NUMBER;
174721 l_first_event_id NUMBER;
174722 l_last_event_id NUMBER;
174723
174724 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
174725 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
174726 --
174727 --
174728 l_result BOOLEAN := TRUE;
174729 l_rows NUMBER := 1000;
174730 l_event_type_name VARCHAR2(80) := 'PO Receipt';
174731 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
174732 l_description VARCHAR2(4000);
174733 l_transaction_reversal NUMBER;
174734 l_ae_header_id NUMBER;
174735 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
174736 l_log_module VARCHAR2(240);
174737 --
174738 l_acct_reversal_source VARCHAR2(30);
174739 l_trx_reversal_source VARCHAR2(30);
174740
174741 l_continue_with_lines BOOLEAN := TRUE;
174742 --
174743 l_acc_rev_gl_date_source DATE; -- 4262811
174744 --
174745 type t_array_event_id is table of number index by binary_integer;
174746
174747 l_rec_array_event t_rec_array_event;
174748 l_null_rec_array_event t_rec_array_event;
174749 l_array_ae_header_id xla_number_array_type;
174750 l_actual_flag VARCHAR2(1) := NULL;
174751 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
174752 l_balance_type_code VARCHAR2(1) :=NULL;
174753 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
174754
174755 --
174756 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
174757 --
174758
174759 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
174760 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
174761 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
174762 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
174763 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174764 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
174765
174766 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
174767 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
174768 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174769 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
174770 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174771
174772 l_array_source_6 t_array_source_6;
174773 l_array_source_7 t_array_source_7;
174774 l_array_source_8 t_array_source_8;
174775 l_array_source_9 t_array_source_9;
174776 l_array_source_10 t_array_source_10;
174777 l_array_source_12 t_array_source_12;
174778
174779 l_array_source_1 t_array_source_1;
174780 l_array_source_2 t_array_source_2;
174781 l_array_source_3 t_array_source_3;
174782 l_array_source_5 t_array_source_5;
174783 l_array_source_11 t_array_source_11;
174784
174785 --
174786 CURSOR header_cur
174787 IS
174788 SELECT /*+ leading(xet) cardinality(xet,1) */
174789 -- Event Type Code: PO_RECEIPT
174790 -- Event Class Code: DELIVER
174791 xet.entity_id
174792 , xet.legal_entity_id
174793 , xet.entity_code
174794 , xet.transaction_number
174795 , xet.event_id
174796 , xet.event_class_code
174797 , xet.event_type_code
174798 , xet.event_number
174799 , xet.event_date
174800 , xet.transaction_date
174801 , xet.reference_num_1
174802 , xet.reference_num_2
174803 , xet.reference_num_3
174804 , xet.reference_num_4
174805 , xet.reference_char_1
174806 , xet.reference_char_2
174807 , xet.reference_char_3
174808 , xet.reference_char_4
174809 , xet.reference_date_1
174810 , xet.reference_date_2
174811 , xet.reference_date_3
174812 , xet.reference_date_4
174813 , xet.event_created_by
174814 , xet.budgetary_control_flag
174815 , h1.ENTITY_CODE source_6
174816 , h1.CURRENCY_CODE source_7
174817 , h1.CURRENCY_CONVERSION_DATE source_8
174818 , h1.CURRENCY_CONVERSION_RATE source_9
174819 , h1.CURRENCY_CONVERSION_TYPE source_10
174820 , h1.TRANSACTION_DATE source_12
174821 FROM xla_events_gt xet
174822 , GMF_XLA_EXTRACT_HEADERS h1
174826
174823 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
174824 and xet.event_type_code = C_EVENT_TYPE_CODE
174825 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
174827 ORDER BY event_id
174828 ;
174829
174830
174831 --
174832 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
174833 IS
174834 SELECT /*+ leading(xet) cardinality(xet,1) */
174835 -- Event Type Code: PO_RECEIPT
174836 -- Event Class Code: DELIVER
174837 xet.entity_id
174838 ,xet.legal_entity_id
174839 ,xet.entity_code
174840 ,xet.transaction_number
174841 ,xet.event_id
174842 ,xet.event_class_code
174843 ,xet.event_type_code
174844 ,xet.event_number
174845 ,xet.event_date
174846 ,xet.transaction_date
174847 ,xet.reference_num_1
174848 ,xet.reference_num_2
174849 ,xet.reference_num_3
174850 ,xet.reference_num_4
174851 ,xet.reference_char_1
174852 ,xet.reference_char_2
174853 ,xet.reference_char_3
174854 ,xet.reference_char_4
174855 ,xet.reference_date_1
174856 ,xet.reference_date_2
174857 ,xet.reference_date_3
174858 ,xet.reference_date_4
174859 ,xet.event_created_by
174860 ,xet.budgetary_control_flag , l2.LINE_NUMBER
174861 , l2.TRANSACTION_ACCOUNT_ID source_1
174862 , l2.JOURNAL_LINE_TYPE source_2
174863 , l2.ENTERED_AMOUNT source_3
174864 , l2.LINE_ID source_5
174865 , l2.ACCOUNTED_AMOUNT source_11
174866 FROM xla_events_gt xet
174867 , GMF_XLA_EXTRACT_LINES l2
174868 WHERE xet.event_id between x_first_event_id and x_last_event_id
174869 and xet.event_date between p_pad_start_date and p_pad_end_date
174870 and xet.event_type_code = C_EVENT_TYPE_CODE
174871 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
174872 ;
174873
174874 --
174875 BEGIN
174876 IF g_log_enabled THEN
174877 l_log_module := C_DEFAULT_MODULE||'.EventType_293';
174878 END IF;
174879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174880 trace
174881 (p_msg => 'BEGIN of EventType_293'
174882 ,p_level => C_LEVEL_PROCEDURE
174883 ,p_module => l_log_module);
174884 END IF;
174885
174886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174887 trace
174888 (p_msg => 'p_application_id = '||p_application_id||
174889 ' - p_base_ledger_id = '||p_base_ledger_id||
174890 ' - p_target_ledger_id = '||p_target_ledger_id||
174891 ' - p_language = '||p_language||
174892 ' - p_currency_code = '||p_currency_code||
174893 ' - p_sla_ledger_id = '||p_sla_ledger_id
174894 ,p_level => C_LEVEL_STATEMENT
174895 ,p_module => l_log_module);
174896 END IF;
174897 --
174898 -- initialze arrays
174899 --
174900 g_array_event.DELETE;
174901 l_rec_array_event := l_null_rec_array_event;
174902 --
174903 --------------------------------------
174904 -- 4262811 Initialze MPA Line Number
174905 --------------------------------------
174906 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
174907
174908 --
174909
174910 --
174911 OPEN header_cur;
174912 --
174913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174914 trace
174915 (p_msg => 'SQL - FETCH header_cur'
174916 ,p_level => C_LEVEL_STATEMENT
174917 ,p_module => l_log_module);
174918 END IF;
174919 --
174920 LOOP
174921 FETCH header_cur BULK COLLECT INTO
174922 l_array_entity_id
174923 , l_array_legal_entity_id
174924 , l_array_entity_code
174925 , l_array_transaction_num
174926 , l_array_event_id
174927 , l_array_class_code
174928 , l_array_event_type
174929 , l_array_event_number
174930 , l_array_event_date
174931 , l_array_transaction_date
174932 , l_array_reference_num_1
174933 , l_array_reference_num_2
174934 , l_array_reference_num_3
174935 , l_array_reference_num_4
174936 , l_array_reference_char_1
174937 , l_array_reference_char_2
174938 , l_array_reference_char_3
174939 , l_array_reference_char_4
174940 , l_array_reference_date_1
174941 , l_array_reference_date_2
174942 , l_array_reference_date_3
174943 , l_array_reference_date_4
174944 , l_array_event_created_by
174945 , l_array_budgetary_control_flag
174946 , l_array_source_6
174947 , l_array_source_7
174948 , l_array_source_8
174949 , l_array_source_9
174950 , l_array_source_10
174951 , l_array_source_12
174952 LIMIT l_rows;
174953 --
174954 IF (C_LEVEL_EVENT >= g_log_level) THEN
174955 trace
174956 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
174957 ,p_level => C_LEVEL_EVENT
174958 ,p_module => l_log_module);
174959 END IF;
174960 --
174961 EXIT WHEN l_array_entity_id.COUNT = 0;
174962
174963 -- initialize arrays
174964 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
174965 XLA_AE_LINES_PKG.g_rec_lines := NULL;
174966
174967 --
174968 -- Bug 4458708
174969 --
174970 XLA_AE_LINES_PKG.g_LineNumber := 0;
174971
174972
174973 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
174974 g_last_hdr_idx := l_array_event_id.LAST;
174975 --
174976 -- loop for the headers. Each iteration is for each header extract row
174977 -- fetched in header cursor
174978 --
174979 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
174980
174981 --
174982 -- set event info as cache for other routines to refer event attributes
174983 --
174984 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174985 (p_application_id => p_application_id
174989 ,p_entity_id => l_array_entity_id(hdr_idx)
174986 ,p_primary_ledger_id => p_primary_ledger_id
174987 ,p_base_ledger_id => p_base_ledger_id
174988 ,p_target_ledger_id => p_target_ledger_id
174990 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
174991 ,p_entity_code => l_array_entity_code(hdr_idx)
174992 ,p_transaction_num => l_array_transaction_num(hdr_idx)
174993 ,p_event_id => l_array_event_id(hdr_idx)
174994 ,p_event_class_code => l_array_class_code(hdr_idx)
174995 ,p_event_type_code => l_array_event_type(hdr_idx)
174996 ,p_event_number => l_array_event_number(hdr_idx)
174997 ,p_event_date => l_array_event_date(hdr_idx)
174998 ,p_transaction_date => l_array_transaction_date(hdr_idx)
174999 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
175000 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
175001 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
175002 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
175003 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
175004 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
175005 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
175006 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
175007 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
175008 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
175009 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
175010 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
175011 ,p_event_created_by => l_array_event_created_by(hdr_idx)
175012 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
175013
175014 --
175015 -- set the status of entry to C_VALID (0)
175016 --
175017 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
175018
175019 --
175020 -- initialize a row for ae header
175021 --
175022 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
175023
175024 l_event_id := l_array_event_id(hdr_idx);
175025
175026 --
175027 -- storing the hdr_idx for event. May be used by line cursor.
175028 --
175029 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
175030
175031 --
175032 -- store sources from header extract. This can be improved to
175033 -- store only those sources from header extract that may be used in lines
175034 --
175035
175036 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
175037 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
175038 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
175039 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
175040 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
175041 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
175042
175043 --
175044 -- initilaize the status of ae headers for diffrent balance types
175045 -- the status is initialised to C_NOT_CREATED (2)
175046 --
175047 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175048 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175049 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175050
175051 --
175052 -- call api to validate and store accounting attributes for header
175053 --
175054
175055 ------------------------------------------------------------
175056 -- Accrual Reversal : to get date for Standard Source (NONE)
175057 ------------------------------------------------------------
175058 l_acc_rev_gl_date_source := NULL;
175059
175060 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
175061 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
175062
175063
175064 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
175065
175066 XLA_AE_HEADER_PKG.SetJeCategoryName;
175067
175068 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
175069 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
175070 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
175071 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
175072 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
175073
175074
175075 -- No header level analytical criteria
175076
175077 --
175078 --accounting attribute enhancement, bug 3612931
175079 --
175080 l_trx_reversal_source := SUBSTR(NULL, 1,30);
175081
175082 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
175083 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
175084
175085 xla_accounting_err_pkg.build_message
175086 (p_appli_s_name => 'XLA'
175087 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
175088 ,p_token_1 => 'ACCT_ATTR_NAME'
175089 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
175090 ,p_token_2 => 'PRODUCT_NAME'
175091 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
175092 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
175093 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
175094 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
175095
175096 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
175097 --
175098 -- following sets the accounting attributes needed to reverse
175099 -- accounting for a distributeion
175100 --
175104 ,p_trx_reversal_source => l_trx_reversal_source);
175101 xla_ae_lines_pkg.SetTrxReversalAttrs
175102 (p_event_id => l_event_id
175103 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
175105
175106 END IF;
175107
175108
175109 ----------------------------------------------------------------
175110 -- 4262811 - update the header statuses to invalid in need be
175111 ----------------------------------------------------------------
175112 --
175113 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
175114
175115
175116 -----------------------------------------------
175117 -- No accrual reversal for the event class/type
175118 -----------------------------------------------
175119 ----------------------------------------------------------------
175120
175121 --
175122 -- this ends the header loop iteration for one bulk fetch
175123 --
175124 END LOOP;
175125
175126 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
175127 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
175128
175129 --
175130 -- insert dummy rows into lines gt table that were created due to
175131 -- transaction reversals
175132 --
175133 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
175134 l_result := XLA_AE_LINES_PKG.InsertLines;
175135 END IF;
175136
175137 --
175138 -- reset the temp_line_num for each set of events fetched from header
175139 -- cursor rather than doing it for each new event in line cursor
175140 -- Bug 3939231
175141 --
175142 xla_ae_lines_pkg.g_temp_line_num := 0;
175143
175144
175145
175146 --
175147 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
175148 --
175149 --
175150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175151
175152 trace
175153 (p_msg => 'SQL - FETCH line_cur'
175154 ,p_level => C_LEVEL_STATEMENT
175155 ,p_module => l_log_module);
175156
175157 END IF;
175158 --
175159 --
175160 LOOP
175161 --
175162 FETCH line_cur BULK COLLECT INTO
175163 l_array_entity_id
175164 , l_array_legal_entity_id
175165 , l_array_entity_code
175166 , l_array_transaction_num
175167 , l_array_event_id
175168 , l_array_class_code
175169 , l_array_event_type
175170 , l_array_event_number
175171 , l_array_event_date
175172 , l_array_transaction_date
175173 , l_array_reference_num_1
175174 , l_array_reference_num_2
175175 , l_array_reference_num_3
175176 , l_array_reference_num_4
175177 , l_array_reference_char_1
175178 , l_array_reference_char_2
175179 , l_array_reference_char_3
175180 , l_array_reference_char_4
175181 , l_array_reference_date_1
175182 , l_array_reference_date_2
175183 , l_array_reference_date_3
175184 , l_array_reference_date_4
175185 , l_array_event_created_by
175186 , l_array_budgetary_control_flag
175187 , l_array_extract_line_num
175188 , l_array_source_1
175189 , l_array_source_2
175190 , l_array_source_3
175191 , l_array_source_5
175192 , l_array_source_11
175193 LIMIT l_rows;
175194
175195 --
175196 IF (C_LEVEL_EVENT >= g_log_level) THEN
175197 trace
175198 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
175199 ,p_level => C_LEVEL_EVENT
175200 ,p_module => l_log_module);
175201 END IF;
175202 --
175203 EXIT WHEN l_array_entity_id.count = 0;
175204
175205 XLA_AE_LINES_PKG.g_rec_lines := null;
175206
175207 --
175208 -- Bug 4458708
175209 --
175210 XLA_AE_LINES_PKG.g_LineNumber := 0;
175211 --
175212 --
175213
175214 FOR Idx IN 1..l_array_event_id.count LOOP
175215 --
175216 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
175217 --
175218 l_event_id := l_array_event_id(idx); -- 5648433
175219
175220 --
175221 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
175222 --
175223
175224 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
175225 (g_array_event(l_event_id).array_value_num('header_index'))
175226 ,'N'
175227 ) <> 'Y'
175228 THEN
175229 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175230 trace
175231 (p_msg => 'Trancaction revesal option is not Y '
175232 ,p_level => C_LEVEL_STATEMENT
175233 ,p_module => l_log_module);
175234 END IF;
175235
175236 --
175237 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
175238 --
175239 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
175240 --
175241 -- set event info as cache for other routines to refer event attributes
175242 --
175243
175244 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
175245 l_previous_event_id := l_event_id;
175246
175247 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
175248 (p_application_id => p_application_id
175249 ,p_primary_ledger_id => p_primary_ledger_id
175250 ,p_base_ledger_id => p_base_ledger_id
175251 ,p_target_ledger_id => p_target_ledger_id
175252 ,p_entity_id => l_array_entity_id(Idx)
175253 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
175254 ,p_entity_code => l_array_entity_code(Idx)
175255 ,p_transaction_num => l_array_transaction_num(Idx)
175256 ,p_event_id => l_array_event_id(Idx)
175257 ,p_event_class_code => l_array_class_code(Idx)
175261 ,p_transaction_date => l_array_transaction_date(Idx)
175258 ,p_event_type_code => l_array_event_type(Idx)
175259 ,p_event_number => l_array_event_number(Idx)
175260 ,p_event_date => l_array_event_date(Idx)
175262 ,p_reference_num_1 => l_array_reference_num_1(Idx)
175263 ,p_reference_num_2 => l_array_reference_num_2(Idx)
175264 ,p_reference_num_3 => l_array_reference_num_3(Idx)
175265 ,p_reference_num_4 => l_array_reference_num_4(Idx)
175266 ,p_reference_char_1 => l_array_reference_char_1(Idx)
175267 ,p_reference_char_2 => l_array_reference_char_2(Idx)
175268 ,p_reference_char_3 => l_array_reference_char_3(Idx)
175269 ,p_reference_char_4 => l_array_reference_char_4(Idx)
175270 ,p_reference_date_1 => l_array_reference_date_1(Idx)
175271 ,p_reference_date_2 => l_array_reference_date_2(Idx)
175272 ,p_reference_date_3 => l_array_reference_date_3(Idx)
175273 ,p_reference_date_4 => l_array_reference_date_4(Idx)
175274 ,p_event_created_by => l_array_event_created_by(Idx)
175275 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
175276 --
175277 END IF;
175278
175279
175280
175281 --
175282 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
175283
175284 l_acct_reversal_source := SUBSTR(NULL, 1,30);
175285
175286 IF l_continue_with_lines THEN
175287 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
175288 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
175289
175290 xla_accounting_err_pkg.build_message
175291 (p_appli_s_name => 'XLA'
175292 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
175293 ,p_token_1 => 'LINE_NUMBER'
175294 ,p_value_1 => l_array_extract_line_num(Idx)
175295 ,p_token_2 => 'PRODUCT_NAME'
175296 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
175297 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
175298 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
175299 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
175300
175301 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
175302 --
175303 -- following sets the accounting attributes needed to reverse
175304 -- accounting for a distributeion
175305 --
175306
175307 --
175308 -- 5217187
175309 --
175310 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
175311 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
175312 g_array_event(l_event_id).array_value_num('header_index'));
175313 --
175314 --
175315
175316 -- No reversal code generated
175317
175318 xla_ae_lines_pkg.SetAcctReversalAttrs
175319 (p_event_id => l_event_id
175320 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
175321 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175322 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
175323 END IF;
175324
175325 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
175326 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
175327
175328 --
175329 AcctLineType_43 (
175330 p_application_id => p_application_id
175331 ,p_event_id => l_event_id
175332 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175333 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175334 ,p_actual_flag => l_actual_flag
175335 ,p_balance_type_code => l_balance_type_code
175336 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175337
175338 , p_source_1 => l_array_source_1(Idx)
175339 , p_source_2 => l_array_source_2(Idx)
175340 , p_source_3 => l_array_source_3(Idx)
175341 , p_source_5 => l_array_source_5(Idx)
175342 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175343 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175344 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175345 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175346 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175347 , p_source_11 => l_array_source_11(Idx)
175348 );
175349 If(l_balance_type_code = 'A') THEN
175350 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175351 END IF;
175352
175353 --
175354
175355
175356 --
175357 AcctLineType_58 (
175358 p_application_id => p_application_id
175359 ,p_event_id => l_event_id
175360 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175364 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175361 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175362 ,p_actual_flag => l_actual_flag
175363 ,p_balance_type_code => l_balance_type_code
175365
175366 , p_source_1 => l_array_source_1(Idx)
175367 , p_source_2 => l_array_source_2(Idx)
175368 , p_source_3 => l_array_source_3(Idx)
175369 , p_source_5 => l_array_source_5(Idx)
175370 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175371 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175372 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175373 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175374 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175375 , p_source_11 => l_array_source_11(Idx)
175376 );
175377 If(l_balance_type_code = 'A') THEN
175378 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175379 END IF;
175380
175381 --
175382
175383
175384 --
175385 AcctLineType_104 (
175386 p_application_id => p_application_id
175387 ,p_event_id => l_event_id
175388 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175389 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175390 ,p_actual_flag => l_actual_flag
175391 ,p_balance_type_code => l_balance_type_code
175392 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175393
175394 , p_source_1 => l_array_source_1(Idx)
175395 , p_source_2 => l_array_source_2(Idx)
175396 , p_source_3 => l_array_source_3(Idx)
175397 , p_source_5 => l_array_source_5(Idx)
175398 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175399 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175400 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175401 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175402 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175403 , p_source_11 => l_array_source_11(Idx)
175404 );
175405 If(l_balance_type_code = 'A') THEN
175406 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175407 END IF;
175408
175409 --
175410
175411
175412 --
175413 AcctLineType_138 (
175414 p_application_id => p_application_id
175415 ,p_event_id => l_event_id
175416 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175417 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175418 ,p_actual_flag => l_actual_flag
175419 ,p_balance_type_code => l_balance_type_code
175420 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175421
175422 , p_source_1 => l_array_source_1(Idx)
175423 , p_source_2 => l_array_source_2(Idx)
175424 , p_source_3 => l_array_source_3(Idx)
175425 , p_source_5 => l_array_source_5(Idx)
175426 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175427 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175428 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175429 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175430 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175431 , p_source_11 => l_array_source_11(Idx)
175432 );
175433 If(l_balance_type_code = 'A') THEN
175434 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175435 END IF;
175436
175437 --
175438
175439
175440 --
175441 AcctLineType_205 (
175442 p_application_id => p_application_id
175443 ,p_event_id => l_event_id
175444 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175445 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175446 ,p_actual_flag => l_actual_flag
175447 ,p_balance_type_code => l_balance_type_code
175448 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175449
175450 , p_source_1 => l_array_source_1(Idx)
175451 , p_source_2 => l_array_source_2(Idx)
175452 , p_source_3 => l_array_source_3(Idx)
175453 , p_source_5 => l_array_source_5(Idx)
175454 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175455 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175456 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175457 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175458 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175459 , p_source_11 => l_array_source_11(Idx)
175460 );
175461 If(l_balance_type_code = 'A') THEN
175462 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175463 END IF;
175464
175465 --
175466
175467
175468 --
175469 AcctLineType_228 (
175470 p_application_id => p_application_id
175471 ,p_event_id => l_event_id
175472 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175473 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175474 ,p_actual_flag => l_actual_flag
175475 ,p_balance_type_code => l_balance_type_code
175476 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175477
175478 , p_source_1 => l_array_source_1(Idx)
175479 , p_source_2 => l_array_source_2(Idx)
175480 , p_source_3 => l_array_source_3(Idx)
175481 , p_source_5 => l_array_source_5(Idx)
175482 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
175483 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
175484 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
175485 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
175486 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
175487 , p_source_11 => l_array_source_11(Idx)
175488 );
175489 If(l_balance_type_code = 'A') THEN
175490 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175491 END IF;
175492
175493 --
175494
175495 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
175496 -- or secondary ledger that has different currency with primary
175497 -- or alc that is calculated by sla
175498 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
175502 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
175499 (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'))
175500
175501 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
175503 AND (l_actual_flag = 'A')) THEN
175504 XLA_AE_LINES_PKG.CreateGainOrLossLines(
175505 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
175506 ,p_application_id => p_application_id
175507 ,p_amb_context_code => 'DEFAULT'
175508 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
175509 ,p_event_class_code => C_EVENT_CLASS_CODE
175510 ,p_event_type_code => C_EVENT_TYPE_CODE
175511
175512 ,p_gain_ccid => -1
175513 ,p_loss_ccid => -1
175514
175515 ,p_actual_flag => l_actual_flag
175516 ,p_enc_flag => null
175517 ,p_actual_g_l_ref => l_actual_gain_loss_ref
175518 ,p_enc_g_l_ref => null
175519 );
175520 END IF;
175521 END IF;
175522 END IF;
175523
175524 ELSE
175525 --
175526 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
175527 --
175528 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175529 trace
175530 (p_msg => 'Trancaction revesal option is Y'
175531 ,p_level => C_LEVEL_STATEMENT
175532 ,p_module => l_log_module);
175533 END IF;
175534 END IF;
175535
175536 END LOOP;
175537 l_result := XLA_AE_LINES_PKG.InsertLines ;
175538 end loop;
175539 close line_cur;
175540
175541
175542 --
175543 -- insert headers into xla_ae_headers_gt table
175544 --
175545 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
175546
175547 -- insert into errors table here.
175548
175549 END LOOP;
175550
175551 --
175552 -- 4865292
175553 --
175554 -- Compare g_hdr_extract_count with event count in
175555 -- CreateHeadersAndLines.
175556 --
175557 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
175558
175559 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175560 trace (p_msg => '# rows extracted from header extract objects '
175561 || ' (running total): '
175562 || g_hdr_extract_count
175563 ,p_level => C_LEVEL_STATEMENT
175564 ,p_module => l_log_module);
175565 END IF;
175566
175567 CLOSE header_cur;
175568 --
175569
175570 --
175571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175572 trace
175573 (p_msg => 'END of EventType_293'
175574 ,p_level => C_LEVEL_PROCEDURE
175575 ,p_module => l_log_module);
175576 END IF;
175577 --
175578 RETURN l_result;
175579 EXCEPTION
175580 WHEN xla_exceptions_pkg.application_exception THEN
175581
175582 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175583
175584
175585 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
175586
175587 RAISE;
175588
175589 WHEN NO_DATA_FOUND THEN
175590
175591 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175592 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
175593
175594 FOR header_record IN header_cur
175595 LOOP
175596 l_array_header_events(header_record.event_id) := header_record.event_id;
175597 END LOOP;
175598
175599 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
175600 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
175601
175602 fnd_file.put_line(fnd_file.LOG, ' ');
175603 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175604 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
175605 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
175606
175607 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
175608 LOOP
175609 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
175610 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
175611 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
175612 END IF;
175613 END LOOP;
175614
175615 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175616 fnd_file.put_line(fnd_file.LOG, ' ');
175617
175618
175619 xla_exceptions_pkg.raise_message
175620 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_293');
175621
175622
175623 WHEN OTHERS THEN
175624 xla_exceptions_pkg.raise_message
175625 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_293');
175626 END EventType_293;
175627 --
175628
175629 ---------------------------------------
175630 --
175631 -- PRIVATE PROCEDURE
175632 -- insert_sources_294
175633 --
175634 ----------------------------------------
175635 --
175636 PROCEDURE insert_sources_294(
175637 p_target_ledger_id IN NUMBER
175638 , p_language IN VARCHAR2
175639 , p_sla_ledger_id IN NUMBER
175640 , p_pad_start_date IN DATE
175641 , p_pad_end_date IN DATE
175642 )
175643 IS
175644
175645 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PO_RECEIPT_ADJ';
175646 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
175647 p_apps_owner VARCHAR2(30);
175648 l_log_module VARCHAR2(240);
175649 BEGIN
175653 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175650 IF g_log_enabled THEN
175651 l_log_module := C_DEFAULT_MODULE||'.insert_sources_294';
175652 END IF;
175654
175655 trace
175656 (p_msg => 'BEGIN of insert_sources_294'
175657 ,p_level => C_LEVEL_PROCEDURE
175658 ,p_module => l_log_module);
175659
175660 END IF;
175661
175662 -- select APPS owner
175663 SELECT oracle_username
175664 INTO p_apps_owner
175665 FROM fnd_oracle_userid
175666 WHERE read_only_flag = 'U'
175667 ;
175668
175669 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175670 trace
175671 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
175672 ' - p_language = '||p_language||
175673 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
175674 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
175675 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
175676 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
175677 ,p_level => C_LEVEL_STATEMENT
175678 ,p_module => l_log_module);
175679 END IF;
175680
175681
175682 --
175683 INSERT INTO xla_diag_sources --hdr1
175684 (
175685 event_id
175686 , ledger_id
175687 , sla_ledger_id
175688 , description_language
175689 , object_name
175690 , object_type_code
175691 , line_number
175692 , source_application_id
175693 , source_type_code
175694 , source_code
175695 , source_value
175696 , source_meaning
175697 , created_by
175698 , creation_date
175699 , last_update_date
175700 , last_updated_by
175701 , last_update_login
175702 , program_update_date
175703 , program_application_id
175704 , program_id
175705 , request_id
175706 )
175707 SELECT
175708 event_id
175709 , p_target_ledger_id
175710 , p_sla_ledger_id
175711 , p_language
175712 , object_name
175713 , object_type_code
175714 , line_number
175715 , source_application_id
175716 , source_type_code
175717 , source_code
175718 , SUBSTR(source_value ,1,1996)
175719 , SUBSTR(source_meaning,1,200)
175720 , xla_environment_pkg.g_Usr_Id
175721 , TRUNC(SYSDATE)
175722 , TRUNC(SYSDATE)
175723 , xla_environment_pkg.g_Usr_Id
175724 , xla_environment_pkg.g_Login_Id
175725 , TRUNC(SYSDATE)
175726 , xla_environment_pkg.g_Prog_Appl_Id
175727 , xla_environment_pkg.g_Prog_Id
175728 , xla_environment_pkg.g_Req_Id
175729 FROM (
175730 SELECT xet.event_id event_id
175731 , 0 line_number
175732 , CASE r
175733 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
175734 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
175735 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
175736 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
175737 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
175738 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
175739
175740 ELSE null
175741 END object_name
175742 , CASE r
175743 WHEN 1 THEN 'HEADER'
175744 WHEN 2 THEN 'HEADER'
175745 WHEN 3 THEN 'HEADER'
175746 WHEN 4 THEN 'HEADER'
175747 WHEN 5 THEN 'HEADER'
175748 WHEN 6 THEN 'HEADER'
175749
175750 ELSE null
175751 END object_type_code
175752 , CASE r
175753 WHEN 1 THEN '555'
175754 WHEN 2 THEN '555'
175755 WHEN 3 THEN '555'
175756 WHEN 4 THEN '555'
175757 WHEN 5 THEN '555'
175758 WHEN 6 THEN '555'
175759
175760 ELSE null
175761 END source_application_id
175762 , 'S' source_type_code
175763 , CASE r
175764 WHEN 1 THEN 'ENTITY_CODE'
175765 WHEN 2 THEN 'CURRENCY_CODE'
175766 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
175767 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
175768 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
175769 WHEN 6 THEN 'TRANSACTION_DATE'
175770
175771 ELSE null
175772 END source_code
175773 , CASE r
175774 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
175775 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
175776 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
175777 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
175778 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
175779 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
175780
175781 ELSE null
175782 END source_value
175783 , CASE r
175784 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
175785 1010186
175786 ,TO_CHAR(h1.CURRENCY_CODE)
175787 ,'CURRENCY_CODE'
175788 ,'S'
175789 ,555)
175790
175791 ELSE null
175792 END source_meaning
175793 FROM xla_events_gt xet
175794 , GMF_XLA_EXTRACT_HEADERS h1
175795 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
175796 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175800 )
175797 AND xet.event_type_code = C_EVENT_TYPE_CODE
175798 AND h1.event_id = xet.event_id
175799
175801 ;
175802 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175803
175804 trace
175805 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
175806 ,p_level => C_LEVEL_STATEMENT
175807 ,p_module => l_log_module);
175808
175809 END IF;
175810 --
175811
175812
175813
175814 --
175815 INSERT INTO xla_diag_sources --line1
175816 (
175817 event_id
175818 , ledger_id
175819 , sla_ledger_id
175820 , description_language
175821 , object_name
175822 , object_type_code
175823 , line_number
175824 , source_application_id
175825 , source_type_code
175826 , source_code
175827 , source_value
175828 , source_meaning
175829 , created_by
175830 , creation_date
175831 , last_update_date
175832 , last_updated_by
175833 , last_update_login
175834 , program_update_date
175835 , program_application_id
175836 , program_id
175837 , request_id
175838 )
175839 SELECT event_id
175840 , p_target_ledger_id
175841 , p_sla_ledger_id
175842 , p_language
175843 , object_name
175844 , object_type_code
175845 , line_number
175846 , source_application_id
175847 , source_type_code
175848 , source_code
175849 , SUBSTR(source_value,1,1996)
175850 , SUBSTR(source_meaning,1,200)
175851 , xla_environment_pkg.g_Usr_Id
175852 , TRUNC(SYSDATE)
175853 , TRUNC(SYSDATE)
175854 , xla_environment_pkg.g_Usr_Id
175855 , xla_environment_pkg.g_Login_Id
175856 , TRUNC(SYSDATE)
175857 , xla_environment_pkg.g_Prog_Appl_Id
175858 , xla_environment_pkg.g_Prog_Id
175859 , xla_environment_pkg.g_Req_Id
175860 FROM (
175861 SELECT xet.event_id event_id
175862 , l2.line_number line_number
175863 , CASE r
175864 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
175865 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
175866 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
175867 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
175868 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
175869
175870 ELSE null
175871 END object_name
175872 , CASE r
175873 WHEN 1 THEN 'LINE'
175874 WHEN 2 THEN 'LINE'
175875 WHEN 3 THEN 'LINE'
175876 WHEN 4 THEN 'LINE'
175877 WHEN 5 THEN 'LINE'
175878
175879 ELSE null
175880 END object_type_code
175881 , CASE r
175882 WHEN 1 THEN '555'
175883 WHEN 2 THEN '555'
175884 WHEN 3 THEN '555'
175885 WHEN 4 THEN '555'
175886 WHEN 5 THEN '555'
175887
175888 ELSE null
175889 END source_application_id
175890 , 'S' source_type_code
175891 , CASE r
175892 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
175893 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
175894 WHEN 3 THEN 'ENTERED_AMOUNT'
175895 WHEN 4 THEN 'LINE_ID'
175896 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
175897
175898 ELSE null
175899 END source_code
175900 , CASE r
175901 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
175902 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
175903 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
175904 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
175905 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
175906
175907 ELSE null
175908 END source_value
175909 , null source_meaning
175910 FROM xla_events_gt xet
175911 , GMF_XLA_EXTRACT_LINES l2
175912 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
175913 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175914 AND xet.event_type_code = C_EVENT_TYPE_CODE
175915 AND l2.event_id = xet.event_id
175916
175917 )
175918 ;
175919 --
175920 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175921
175922 trace
175923 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
175924 ,p_level => C_LEVEL_STATEMENT
175925 ,p_module => l_log_module);
175926
175927 END IF;
175928
175929
175930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175931 trace
175932 (p_msg => 'END of insert_sources_294'
175933 ,p_level => C_LEVEL_PROCEDURE
175934 ,p_module => l_log_module);
175935 END IF;
175936 EXCEPTION
175937 WHEN xla_exceptions_pkg.application_exception THEN
175938 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175939 trace
175940 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175941 ,p_level => C_LEVEL_EXCEPTION
175942 ,p_module => l_log_module);
175943 END IF;
175944 RAISE;
175945 WHEN OTHERS THEN
175946 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175947 trace
175948 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175949 ,p_level => C_LEVEL_EXCEPTION
175950 ,p_module => l_log_module);
175951 END IF;
175955 --
175952 xla_exceptions_pkg.raise_message
175953 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_294');
175954 END insert_sources_294;
175956
175957 ---------------------------------------
175958 --
175959 -- PRIVATE FUNCTION
175960 -- EventType_294
175961 --
175962 ----------------------------------------
175963 --
175964 FUNCTION EventType_294
175965 (p_application_id IN NUMBER
175966 ,p_base_ledger_id IN NUMBER
175967 ,p_target_ledger_id IN NUMBER
175968 ,p_language IN VARCHAR2
175969 ,p_currency_code IN VARCHAR2
175970 ,p_sla_ledger_id IN NUMBER
175971 ,p_pad_start_date IN DATE
175972 ,p_pad_end_date IN DATE
175973 ,p_primary_ledger_id IN NUMBER)
175974 RETURN BOOLEAN IS
175975 --
175976 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PO_RECEIPT_ADJ';
175977 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
175978
175979 l_calculate_acctd_flag VARCHAR2(1) :='N';
175980 l_calculate_g_l_flag VARCHAR2(1) :='N';
175981 --
175982 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175983 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175984 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175985 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175986 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175987 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175988 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175989 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175990 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175991 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175992 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175993 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175994 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175995 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175996 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175997 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175998 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175999 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176000 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176001 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176002 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176003 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176004 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
176005 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176006 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
176007 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
176008
176009 l_event_id NUMBER;
176010 l_previous_event_id NUMBER;
176011 l_first_event_id NUMBER;
176012 l_last_event_id NUMBER;
176013
176014 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
176015 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
176016 --
176017 --
176018 l_result BOOLEAN := TRUE;
176019 l_rows NUMBER := 1000;
176020 l_event_type_name VARCHAR2(80) := 'PO Receipt Adjustment';
176021 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
176022 l_description VARCHAR2(4000);
176023 l_transaction_reversal NUMBER;
176024 l_ae_header_id NUMBER;
176025 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
176026 l_log_module VARCHAR2(240);
176027 --
176028 l_acct_reversal_source VARCHAR2(30);
176029 l_trx_reversal_source VARCHAR2(30);
176030
176031 l_continue_with_lines BOOLEAN := TRUE;
176032 --
176033 l_acc_rev_gl_date_source DATE; -- 4262811
176034 --
176035 type t_array_event_id is table of number index by binary_integer;
176036
176037 l_rec_array_event t_rec_array_event;
176038 l_null_rec_array_event t_rec_array_event;
176039 l_array_ae_header_id xla_number_array_type;
176040 l_actual_flag VARCHAR2(1) := NULL;
176041 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
176042 l_balance_type_code VARCHAR2(1) :=NULL;
176043 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
176044
176045 --
176046 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
176047 --
176048
176049 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
176050 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
176051 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
176052 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
176053 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
176054 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
176055
176056 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
176057 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
176058 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
176062 l_array_source_6 t_array_source_6;
176059 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
176060 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
176061
176063 l_array_source_7 t_array_source_7;
176064 l_array_source_8 t_array_source_8;
176065 l_array_source_9 t_array_source_9;
176066 l_array_source_10 t_array_source_10;
176067 l_array_source_12 t_array_source_12;
176068
176069 l_array_source_1 t_array_source_1;
176070 l_array_source_2 t_array_source_2;
176071 l_array_source_3 t_array_source_3;
176072 l_array_source_5 t_array_source_5;
176073 l_array_source_11 t_array_source_11;
176074
176075 --
176076 CURSOR header_cur
176077 IS
176078 SELECT /*+ leading(xet) cardinality(xet,1) */
176079 -- Event Type Code: PO_RECEIPT_ADJ
176080 -- Event Class Code: DELIVER
176081 xet.entity_id
176082 , xet.legal_entity_id
176083 , xet.entity_code
176084 , xet.transaction_number
176085 , xet.event_id
176086 , xet.event_class_code
176087 , xet.event_type_code
176088 , xet.event_number
176089 , xet.event_date
176090 , xet.transaction_date
176091 , xet.reference_num_1
176092 , xet.reference_num_2
176093 , xet.reference_num_3
176094 , xet.reference_num_4
176095 , xet.reference_char_1
176096 , xet.reference_char_2
176097 , xet.reference_char_3
176098 , xet.reference_char_4
176099 , xet.reference_date_1
176100 , xet.reference_date_2
176101 , xet.reference_date_3
176102 , xet.reference_date_4
176103 , xet.event_created_by
176104 , xet.budgetary_control_flag
176105 , h1.ENTITY_CODE source_6
176106 , h1.CURRENCY_CODE source_7
176107 , h1.CURRENCY_CONVERSION_DATE source_8
176108 , h1.CURRENCY_CONVERSION_RATE source_9
176109 , h1.CURRENCY_CONVERSION_TYPE source_10
176110 , h1.TRANSACTION_DATE source_12
176111 FROM xla_events_gt xet
176112 , GMF_XLA_EXTRACT_HEADERS h1
176113 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
176114 and xet.event_type_code = C_EVENT_TYPE_CODE
176115 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
176116
176117 ORDER BY event_id
176118 ;
176119
176120
176121 --
176122 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
176123 IS
176124 SELECT /*+ leading(xet) cardinality(xet,1) */
176125 -- Event Type Code: PO_RECEIPT_ADJ
176126 -- Event Class Code: DELIVER
176127 xet.entity_id
176128 ,xet.legal_entity_id
176129 ,xet.entity_code
176130 ,xet.transaction_number
176131 ,xet.event_id
176132 ,xet.event_class_code
176133 ,xet.event_type_code
176134 ,xet.event_number
176135 ,xet.event_date
176136 ,xet.transaction_date
176137 ,xet.reference_num_1
176138 ,xet.reference_num_2
176139 ,xet.reference_num_3
176140 ,xet.reference_num_4
176141 ,xet.reference_char_1
176142 ,xet.reference_char_2
176143 ,xet.reference_char_3
176144 ,xet.reference_char_4
176145 ,xet.reference_date_1
176146 ,xet.reference_date_2
176147 ,xet.reference_date_3
176148 ,xet.reference_date_4
176149 ,xet.event_created_by
176150 ,xet.budgetary_control_flag , l2.LINE_NUMBER
176151 , l2.TRANSACTION_ACCOUNT_ID source_1
176152 , l2.JOURNAL_LINE_TYPE source_2
176153 , l2.ENTERED_AMOUNT source_3
176154 , l2.LINE_ID source_5
176155 , l2.ACCOUNTED_AMOUNT source_11
176156 FROM xla_events_gt xet
176157 , GMF_XLA_EXTRACT_LINES l2
176158 WHERE xet.event_id between x_first_event_id and x_last_event_id
176159 and xet.event_date between p_pad_start_date and p_pad_end_date
176160 and xet.event_type_code = C_EVENT_TYPE_CODE
176161 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
176162 ;
176163
176164 --
176165 BEGIN
176166 IF g_log_enabled THEN
176167 l_log_module := C_DEFAULT_MODULE||'.EventType_294';
176168 END IF;
176169 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176170 trace
176171 (p_msg => 'BEGIN of EventType_294'
176172 ,p_level => C_LEVEL_PROCEDURE
176173 ,p_module => l_log_module);
176174 END IF;
176175
176176 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176177 trace
176178 (p_msg => 'p_application_id = '||p_application_id||
176179 ' - p_base_ledger_id = '||p_base_ledger_id||
176180 ' - p_target_ledger_id = '||p_target_ledger_id||
176181 ' - p_language = '||p_language||
176182 ' - p_currency_code = '||p_currency_code||
176183 ' - p_sla_ledger_id = '||p_sla_ledger_id
176184 ,p_level => C_LEVEL_STATEMENT
176185 ,p_module => l_log_module);
176186 END IF;
176187 --
176188 -- initialze arrays
176189 --
176190 g_array_event.DELETE;
176191 l_rec_array_event := l_null_rec_array_event;
176192 --
176193 --------------------------------------
176194 -- 4262811 Initialze MPA Line Number
176195 --------------------------------------
176196 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
176197
176198 --
176199
176200 --
176201 OPEN header_cur;
176202 --
176203 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176204 trace
176205 (p_msg => 'SQL - FETCH header_cur'
176206 ,p_level => C_LEVEL_STATEMENT
176207 ,p_module => l_log_module);
176208 END IF;
176209 --
176210 LOOP
176211 FETCH header_cur BULK COLLECT INTO
176212 l_array_entity_id
176213 , l_array_legal_entity_id
176214 , l_array_entity_code
176215 , l_array_transaction_num
176216 , l_array_event_id
176217 , l_array_class_code
176218 , l_array_event_type
176219 , l_array_event_number
176223 , l_array_reference_num_2
176220 , l_array_event_date
176221 , l_array_transaction_date
176222 , l_array_reference_num_1
176224 , l_array_reference_num_3
176225 , l_array_reference_num_4
176226 , l_array_reference_char_1
176227 , l_array_reference_char_2
176228 , l_array_reference_char_3
176229 , l_array_reference_char_4
176230 , l_array_reference_date_1
176231 , l_array_reference_date_2
176232 , l_array_reference_date_3
176233 , l_array_reference_date_4
176234 , l_array_event_created_by
176235 , l_array_budgetary_control_flag
176236 , l_array_source_6
176237 , l_array_source_7
176238 , l_array_source_8
176239 , l_array_source_9
176240 , l_array_source_10
176241 , l_array_source_12
176242 LIMIT l_rows;
176243 --
176244 IF (C_LEVEL_EVENT >= g_log_level) THEN
176245 trace
176246 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
176247 ,p_level => C_LEVEL_EVENT
176248 ,p_module => l_log_module);
176249 END IF;
176250 --
176251 EXIT WHEN l_array_entity_id.COUNT = 0;
176252
176253 -- initialize arrays
176254 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
176255 XLA_AE_LINES_PKG.g_rec_lines := NULL;
176256
176257 --
176258 -- Bug 4458708
176259 --
176260 XLA_AE_LINES_PKG.g_LineNumber := 0;
176261
176262
176263 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
176264 g_last_hdr_idx := l_array_event_id.LAST;
176265 --
176266 -- loop for the headers. Each iteration is for each header extract row
176267 -- fetched in header cursor
176268 --
176269 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
176270
176271 --
176272 -- set event info as cache for other routines to refer event attributes
176273 --
176274 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176275 (p_application_id => p_application_id
176276 ,p_primary_ledger_id => p_primary_ledger_id
176277 ,p_base_ledger_id => p_base_ledger_id
176278 ,p_target_ledger_id => p_target_ledger_id
176279 ,p_entity_id => l_array_entity_id(hdr_idx)
176280 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
176281 ,p_entity_code => l_array_entity_code(hdr_idx)
176282 ,p_transaction_num => l_array_transaction_num(hdr_idx)
176283 ,p_event_id => l_array_event_id(hdr_idx)
176284 ,p_event_class_code => l_array_class_code(hdr_idx)
176285 ,p_event_type_code => l_array_event_type(hdr_idx)
176286 ,p_event_number => l_array_event_number(hdr_idx)
176287 ,p_event_date => l_array_event_date(hdr_idx)
176288 ,p_transaction_date => l_array_transaction_date(hdr_idx)
176289 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
176290 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
176291 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
176292 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
176293 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
176294 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
176295 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
176296 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
176297 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
176298 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
176299 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
176300 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
176301 ,p_event_created_by => l_array_event_created_by(hdr_idx)
176302 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
176303
176304 --
176305 -- set the status of entry to C_VALID (0)
176306 --
176307 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176308
176309 --
176310 -- initialize a row for ae header
176311 --
176312 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
176313
176314 l_event_id := l_array_event_id(hdr_idx);
176315
176316 --
176317 -- storing the hdr_idx for event. May be used by line cursor.
176318 --
176319 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
176320
176321 --
176322 -- store sources from header extract. This can be improved to
176323 -- store only those sources from header extract that may be used in lines
176324 --
176325
176326 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
176327 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
176328 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
176329 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
176330 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
176331 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
176332
176333 --
176334 -- initilaize the status of ae headers for diffrent balance types
176335 -- the status is initialised to C_NOT_CREATED (2)
176336 --
176337 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176338 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176339 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
176340
176341 --
176342 -- call api to validate and store accounting attributes for header
176343 --
176344
176345 ------------------------------------------------------------
176346 -- Accrual Reversal : to get date for Standard Source (NONE)
176347 ------------------------------------------------------------
176348 l_acc_rev_gl_date_source := NULL;
176349
176353
176350 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
176351 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
176352
176354 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
176355
176356 XLA_AE_HEADER_PKG.SetJeCategoryName;
176357
176358 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
176359 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
176360 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
176361 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
176362 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
176363
176364
176365 -- No header level analytical criteria
176366
176367 --
176368 --accounting attribute enhancement, bug 3612931
176369 --
176370 l_trx_reversal_source := SUBSTR(NULL, 1,30);
176371
176372 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
176373 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
176374
176375 xla_accounting_err_pkg.build_message
176376 (p_appli_s_name => 'XLA'
176377 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
176378 ,p_token_1 => 'ACCT_ATTR_NAME'
176379 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
176380 ,p_token_2 => 'PRODUCT_NAME'
176381 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176382 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176383 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176384 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176385
176386 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
176387 --
176388 -- following sets the accounting attributes needed to reverse
176389 -- accounting for a distributeion
176390 --
176391 xla_ae_lines_pkg.SetTrxReversalAttrs
176392 (p_event_id => l_event_id
176393 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
176394 ,p_trx_reversal_source => l_trx_reversal_source);
176395
176396 END IF;
176397
176398
176399 ----------------------------------------------------------------
176400 -- 4262811 - update the header statuses to invalid in need be
176401 ----------------------------------------------------------------
176402 --
176403 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
176404
176405
176406 -----------------------------------------------
176407 -- No accrual reversal for the event class/type
176408 -----------------------------------------------
176409 ----------------------------------------------------------------
176410
176411 --
176412 -- this ends the header loop iteration for one bulk fetch
176413 --
176414 END LOOP;
176415
176416 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
176417 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
176418
176419 --
176420 -- insert dummy rows into lines gt table that were created due to
176421 -- transaction reversals
176422 --
176423 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
176424 l_result := XLA_AE_LINES_PKG.InsertLines;
176425 END IF;
176426
176427 --
176428 -- reset the temp_line_num for each set of events fetched from header
176429 -- cursor rather than doing it for each new event in line cursor
176430 -- Bug 3939231
176431 --
176432 xla_ae_lines_pkg.g_temp_line_num := 0;
176433
176434
176435
176436 --
176437 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
176438 --
176439 --
176440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176441
176442 trace
176443 (p_msg => 'SQL - FETCH line_cur'
176444 ,p_level => C_LEVEL_STATEMENT
176445 ,p_module => l_log_module);
176446
176447 END IF;
176448 --
176449 --
176450 LOOP
176451 --
176452 FETCH line_cur BULK COLLECT INTO
176453 l_array_entity_id
176454 , l_array_legal_entity_id
176455 , l_array_entity_code
176456 , l_array_transaction_num
176457 , l_array_event_id
176458 , l_array_class_code
176459 , l_array_event_type
176460 , l_array_event_number
176461 , l_array_event_date
176462 , l_array_transaction_date
176463 , l_array_reference_num_1
176464 , l_array_reference_num_2
176465 , l_array_reference_num_3
176466 , l_array_reference_num_4
176467 , l_array_reference_char_1
176468 , l_array_reference_char_2
176469 , l_array_reference_char_3
176470 , l_array_reference_char_4
176471 , l_array_reference_date_1
176472 , l_array_reference_date_2
176473 , l_array_reference_date_3
176474 , l_array_reference_date_4
176475 , l_array_event_created_by
176476 , l_array_budgetary_control_flag
176477 , l_array_extract_line_num
176478 , l_array_source_1
176479 , l_array_source_2
176480 , l_array_source_3
176481 , l_array_source_5
176482 , l_array_source_11
176483 LIMIT l_rows;
176484
176485 --
176486 IF (C_LEVEL_EVENT >= g_log_level) THEN
176487 trace
176488 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
176489 ,p_level => C_LEVEL_EVENT
176490 ,p_module => l_log_module);
176491 END IF;
176492 --
176493 EXIT WHEN l_array_entity_id.count = 0;
176494
176495 XLA_AE_LINES_PKG.g_rec_lines := null;
176496
176497 --
176498 -- Bug 4458708
176502 --
176499 --
176500 XLA_AE_LINES_PKG.g_LineNumber := 0;
176501 --
176503
176504 FOR Idx IN 1..l_array_event_id.count LOOP
176505 --
176506 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
176507 --
176508 l_event_id := l_array_event_id(idx); -- 5648433
176509
176510 --
176511 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176512 --
176513
176514 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
176515 (g_array_event(l_event_id).array_value_num('header_index'))
176516 ,'N'
176517 ) <> 'Y'
176518 THEN
176519 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176520 trace
176521 (p_msg => 'Trancaction revesal option is not Y '
176522 ,p_level => C_LEVEL_STATEMENT
176523 ,p_module => l_log_module);
176524 END IF;
176525
176526 --
176527 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
176528 --
176529 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176530 --
176531 -- set event info as cache for other routines to refer event attributes
176532 --
176533
176534 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
176535 l_previous_event_id := l_event_id;
176536
176537 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176538 (p_application_id => p_application_id
176539 ,p_primary_ledger_id => p_primary_ledger_id
176540 ,p_base_ledger_id => p_base_ledger_id
176541 ,p_target_ledger_id => p_target_ledger_id
176542 ,p_entity_id => l_array_entity_id(Idx)
176543 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
176544 ,p_entity_code => l_array_entity_code(Idx)
176545 ,p_transaction_num => l_array_transaction_num(Idx)
176546 ,p_event_id => l_array_event_id(Idx)
176547 ,p_event_class_code => l_array_class_code(Idx)
176548 ,p_event_type_code => l_array_event_type(Idx)
176549 ,p_event_number => l_array_event_number(Idx)
176550 ,p_event_date => l_array_event_date(Idx)
176551 ,p_transaction_date => l_array_transaction_date(Idx)
176552 ,p_reference_num_1 => l_array_reference_num_1(Idx)
176553 ,p_reference_num_2 => l_array_reference_num_2(Idx)
176554 ,p_reference_num_3 => l_array_reference_num_3(Idx)
176555 ,p_reference_num_4 => l_array_reference_num_4(Idx)
176556 ,p_reference_char_1 => l_array_reference_char_1(Idx)
176557 ,p_reference_char_2 => l_array_reference_char_2(Idx)
176558 ,p_reference_char_3 => l_array_reference_char_3(Idx)
176559 ,p_reference_char_4 => l_array_reference_char_4(Idx)
176560 ,p_reference_date_1 => l_array_reference_date_1(Idx)
176561 ,p_reference_date_2 => l_array_reference_date_2(Idx)
176562 ,p_reference_date_3 => l_array_reference_date_3(Idx)
176563 ,p_reference_date_4 => l_array_reference_date_4(Idx)
176564 ,p_event_created_by => l_array_event_created_by(Idx)
176565 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
176566 --
176567 END IF;
176568
176569
176570
176571 --
176572 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
176573
176574 l_acct_reversal_source := SUBSTR(NULL, 1,30);
176575
176576 IF l_continue_with_lines THEN
176577 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
176578 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
176579
176580 xla_accounting_err_pkg.build_message
176581 (p_appli_s_name => 'XLA'
176582 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
176583 ,p_token_1 => 'LINE_NUMBER'
176584 ,p_value_1 => l_array_extract_line_num(Idx)
176585 ,p_token_2 => 'PRODUCT_NAME'
176586 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176587 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176588 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176589 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176590
176591 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
176592 --
176593 -- following sets the accounting attributes needed to reverse
176594 -- accounting for a distributeion
176595 --
176596
176597 --
176598 -- 5217187
176599 --
176600 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
176601 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
176602 g_array_event(l_event_id).array_value_num('header_index'));
176603 --
176604 --
176605
176606 -- No reversal code generated
176607
176608 xla_ae_lines_pkg.SetAcctReversalAttrs
176609 (p_event_id => l_event_id
176610 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
176611 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176612 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
176613 END IF;
176614
176615 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
176616 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
176617
176618 --
176619 AcctLineType_45 (
176620 p_application_id => p_application_id
176621 ,p_event_id => l_event_id
176622 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176623 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176624 ,p_actual_flag => l_actual_flag
176625 ,p_balance_type_code => l_balance_type_code
176626 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176627
176631 , p_source_5 => l_array_source_5(Idx)
176628 , p_source_1 => l_array_source_1(Idx)
176629 , p_source_2 => l_array_source_2(Idx)
176630 , p_source_3 => l_array_source_3(Idx)
176632 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176633 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176634 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176635 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176636 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176637 , p_source_11 => l_array_source_11(Idx)
176638 );
176639 If(l_balance_type_code = 'A') THEN
176640 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176641 END IF;
176642
176643 --
176644
176645
176646 --
176647 AcctLineType_55 (
176648 p_application_id => p_application_id
176649 ,p_event_id => l_event_id
176650 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176651 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176652 ,p_actual_flag => l_actual_flag
176653 ,p_balance_type_code => l_balance_type_code
176654 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176655
176656 , p_source_1 => l_array_source_1(Idx)
176657 , p_source_2 => l_array_source_2(Idx)
176658 , p_source_3 => l_array_source_3(Idx)
176659 , p_source_5 => l_array_source_5(Idx)
176660 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176661 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176662 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176663 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176664 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176665 , p_source_11 => l_array_source_11(Idx)
176666 );
176667 If(l_balance_type_code = 'A') THEN
176668 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176669 END IF;
176670
176671 --
176672
176673
176674 --
176675 AcctLineType_102 (
176676 p_application_id => p_application_id
176677 ,p_event_id => l_event_id
176678 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176679 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176680 ,p_actual_flag => l_actual_flag
176681 ,p_balance_type_code => l_balance_type_code
176682 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176683
176684 , p_source_1 => l_array_source_1(Idx)
176685 , p_source_2 => l_array_source_2(Idx)
176686 , p_source_3 => l_array_source_3(Idx)
176687 , p_source_5 => l_array_source_5(Idx)
176688 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176689 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176690 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176691 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176692 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176693 , p_source_11 => l_array_source_11(Idx)
176694 );
176695 If(l_balance_type_code = 'A') THEN
176696 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176697 END IF;
176698
176699 --
176700
176701
176702 --
176703 AcctLineType_155 (
176704 p_application_id => p_application_id
176705 ,p_event_id => l_event_id
176706 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176707 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176708 ,p_actual_flag => l_actual_flag
176709 ,p_balance_type_code => l_balance_type_code
176710 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176711
176712 , p_source_1 => l_array_source_1(Idx)
176713 , p_source_2 => l_array_source_2(Idx)
176714 , p_source_3 => l_array_source_3(Idx)
176715 , p_source_5 => l_array_source_5(Idx)
176716 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176717 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176718 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176719 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176720 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176721 , p_source_11 => l_array_source_11(Idx)
176722 );
176723 If(l_balance_type_code = 'A') THEN
176724 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176725 END IF;
176726
176727 --
176728
176729
176730 --
176731 AcctLineType_198 (
176732 p_application_id => p_application_id
176733 ,p_event_id => l_event_id
176734 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176735 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176736 ,p_actual_flag => l_actual_flag
176737 ,p_balance_type_code => l_balance_type_code
176738 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176739
176740 , p_source_1 => l_array_source_1(Idx)
176741 , p_source_2 => l_array_source_2(Idx)
176742 , p_source_3 => l_array_source_3(Idx)
176743 , p_source_5 => l_array_source_5(Idx)
176744 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176745 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176746 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176747 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176748 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176749 , p_source_11 => l_array_source_11(Idx)
176750 );
176751 If(l_balance_type_code = 'A') THEN
176752 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176753 END IF;
176754
176755 --
176756
176757
176758 --
176759 AcctLineType_227 (
176760 p_application_id => p_application_id
176761 ,p_event_id => l_event_id
176762 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176763 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176764 ,p_actual_flag => l_actual_flag
176765 ,p_balance_type_code => l_balance_type_code
176766 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176767
176768 , p_source_1 => l_array_source_1(Idx)
176769 , p_source_2 => l_array_source_2(Idx)
176770 , p_source_3 => l_array_source_3(Idx)
176774 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
176771 , p_source_5 => l_array_source_5(Idx)
176772 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
176773 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
176775 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
176776 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
176777 , p_source_11 => l_array_source_11(Idx)
176778 );
176779 If(l_balance_type_code = 'A') THEN
176780 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176781 END IF;
176782
176783 --
176784
176785 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
176786 -- or secondary ledger that has different currency with primary
176787 -- or alc that is calculated by sla
176788 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
176789 (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'))
176790
176791 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
176792 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
176793 AND (l_actual_flag = 'A')) THEN
176794 XLA_AE_LINES_PKG.CreateGainOrLossLines(
176795 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176796 ,p_application_id => p_application_id
176797 ,p_amb_context_code => 'DEFAULT'
176798 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
176799 ,p_event_class_code => C_EVENT_CLASS_CODE
176800 ,p_event_type_code => C_EVENT_TYPE_CODE
176801
176802 ,p_gain_ccid => -1
176803 ,p_loss_ccid => -1
176804
176805 ,p_actual_flag => l_actual_flag
176806 ,p_enc_flag => null
176807 ,p_actual_g_l_ref => l_actual_gain_loss_ref
176808 ,p_enc_g_l_ref => null
176809 );
176810 END IF;
176811 END IF;
176812 END IF;
176813
176814 ELSE
176815 --
176816 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176817 --
176818 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176819 trace
176820 (p_msg => 'Trancaction revesal option is Y'
176821 ,p_level => C_LEVEL_STATEMENT
176822 ,p_module => l_log_module);
176823 END IF;
176824 END IF;
176825
176826 END LOOP;
176827 l_result := XLA_AE_LINES_PKG.InsertLines ;
176828 end loop;
176829 close line_cur;
176830
176831
176832 --
176833 -- insert headers into xla_ae_headers_gt table
176834 --
176835 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
176836
176837 -- insert into errors table here.
176838
176839 END LOOP;
176840
176841 --
176842 -- 4865292
176843 --
176844 -- Compare g_hdr_extract_count with event count in
176845 -- CreateHeadersAndLines.
176846 --
176847 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
176848
176849 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176850 trace (p_msg => '# rows extracted from header extract objects '
176851 || ' (running total): '
176852 || g_hdr_extract_count
176853 ,p_level => C_LEVEL_STATEMENT
176854 ,p_module => l_log_module);
176855 END IF;
176856
176857 CLOSE header_cur;
176858 --
176859
176860 --
176861 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176862 trace
176863 (p_msg => 'END of EventType_294'
176864 ,p_level => C_LEVEL_PROCEDURE
176865 ,p_module => l_log_module);
176866 END IF;
176867 --
176868 RETURN l_result;
176869 EXCEPTION
176870 WHEN xla_exceptions_pkg.application_exception THEN
176871
176872 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176873
176874
176875 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
176876
176877 RAISE;
176878
176879 WHEN NO_DATA_FOUND THEN
176880
176881 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176882 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
176883
176884 FOR header_record IN header_cur
176885 LOOP
176886 l_array_header_events(header_record.event_id) := header_record.event_id;
176887 END LOOP;
176888
176889 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
176890 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
176891
176892 fnd_file.put_line(fnd_file.LOG, ' ');
176893 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176894 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
176895 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
176896
176897 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
176898 LOOP
176899 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
176900 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
176901 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
176902 END IF;
176903 END LOOP;
176904
176905 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176906 fnd_file.put_line(fnd_file.LOG, ' ');
176907
176908
176909 xla_exceptions_pkg.raise_message
176910 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_294');
176911
176912
176913 WHEN OTHERS THEN
176914 xla_exceptions_pkg.raise_message
176915 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_294');
176916 END EventType_294;
176920 --
176917 --
176918
176919 ---------------------------------------
176921 -- PRIVATE PROCEDURE
176922 -- insert_sources_295
176923 --
176924 ----------------------------------------
176925 --
176926 PROCEDURE insert_sources_295(
176927 p_target_ledger_id IN NUMBER
176928 , p_language IN VARCHAR2
176929 , p_sla_ledger_id IN NUMBER
176930 , p_pad_start_date IN DATE
176931 , p_pad_end_date IN DATE
176932 )
176933 IS
176934
176935 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
176936 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
176937 p_apps_owner VARCHAR2(30);
176938 l_log_module VARCHAR2(240);
176939 BEGIN
176940 IF g_log_enabled THEN
176941 l_log_module := C_DEFAULT_MODULE||'.insert_sources_295';
176942 END IF;
176943 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176944
176945 trace
176946 (p_msg => 'BEGIN of insert_sources_295'
176947 ,p_level => C_LEVEL_PROCEDURE
176948 ,p_module => l_log_module);
176949
176950 END IF;
176951
176952 -- select APPS owner
176953 SELECT oracle_username
176954 INTO p_apps_owner
176955 FROM fnd_oracle_userid
176956 WHERE read_only_flag = 'U'
176957 ;
176958
176959 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176960 trace
176961 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
176962 ' - p_language = '||p_language||
176963 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
176964 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
176965 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
176966 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
176967 ,p_level => C_LEVEL_STATEMENT
176968 ,p_module => l_log_module);
176969 END IF;
176970
176971
176972 --
176973 INSERT INTO xla_diag_sources --hdr1
176974 (
176975 event_id
176976 , ledger_id
176977 , sla_ledger_id
176978 , description_language
176979 , object_name
176980 , object_type_code
176981 , line_number
176982 , source_application_id
176983 , source_type_code
176984 , source_code
176985 , source_value
176986 , source_meaning
176987 , created_by
176988 , creation_date
176989 , last_update_date
176990 , last_updated_by
176991 , last_update_login
176992 , program_update_date
176993 , program_application_id
176994 , program_id
176995 , request_id
176996 )
176997 SELECT
176998 event_id
176999 , p_target_ledger_id
177000 , p_sla_ledger_id
177001 , p_language
177002 , object_name
177003 , object_type_code
177004 , line_number
177005 , source_application_id
177006 , source_type_code
177007 , source_code
177008 , SUBSTR(source_value ,1,1996)
177009 , SUBSTR(source_meaning,1,200)
177010 , xla_environment_pkg.g_Usr_Id
177011 , TRUNC(SYSDATE)
177012 , TRUNC(SYSDATE)
177013 , xla_environment_pkg.g_Usr_Id
177014 , xla_environment_pkg.g_Login_Id
177015 , TRUNC(SYSDATE)
177016 , xla_environment_pkg.g_Prog_Appl_Id
177017 , xla_environment_pkg.g_Prog_Id
177018 , xla_environment_pkg.g_Req_Id
177019 FROM (
177020 SELECT xet.event_id event_id
177021 , 0 line_number
177022 , CASE r
177023 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
177024 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
177025 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
177026 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
177027 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
177028 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
177029
177030 ELSE null
177031 END object_name
177032 , CASE r
177033 WHEN 1 THEN 'HEADER'
177034 WHEN 2 THEN 'HEADER'
177035 WHEN 3 THEN 'HEADER'
177036 WHEN 4 THEN 'HEADER'
177037 WHEN 5 THEN 'HEADER'
177038 WHEN 6 THEN 'HEADER'
177039
177040 ELSE null
177041 END object_type_code
177042 , CASE r
177043 WHEN 1 THEN '555'
177044 WHEN 2 THEN '555'
177045 WHEN 3 THEN '555'
177046 WHEN 4 THEN '555'
177047 WHEN 5 THEN '555'
177048 WHEN 6 THEN '555'
177049
177050 ELSE null
177051 END source_application_id
177052 , 'S' source_type_code
177053 , CASE r
177054 WHEN 1 THEN 'ENTITY_CODE'
177055 WHEN 2 THEN 'CURRENCY_CODE'
177056 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
177057 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
177058 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
177059 WHEN 6 THEN 'TRANSACTION_DATE'
177060
177061 ELSE null
177062 END source_code
177063 , CASE r
177064 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
177065 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
177066 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
177067 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
177071 ELSE null
177068 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
177069 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
177070
177072 END source_value
177073 , CASE r
177074 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
177075 1010186
177076 ,TO_CHAR(h1.CURRENCY_CODE)
177077 ,'CURRENCY_CODE'
177078 ,'S'
177079 ,555)
177080
177081 ELSE null
177082 END source_meaning
177083 FROM xla_events_gt xet
177084 , GMF_XLA_EXTRACT_HEADERS h1
177085 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
177086 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177087 AND xet.event_type_code = C_EVENT_TYPE_CODE
177088 AND h1.event_id = xet.event_id
177089
177090 )
177091 ;
177092 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177093
177094 trace
177095 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
177096 ,p_level => C_LEVEL_STATEMENT
177097 ,p_module => l_log_module);
177098
177099 END IF;
177100 --
177101
177102
177103
177104 --
177105 INSERT INTO xla_diag_sources --line1
177106 (
177107 event_id
177108 , ledger_id
177109 , sla_ledger_id
177110 , description_language
177111 , object_name
177112 , object_type_code
177113 , line_number
177114 , source_application_id
177115 , source_type_code
177116 , source_code
177117 , source_value
177118 , source_meaning
177119 , created_by
177120 , creation_date
177121 , last_update_date
177122 , last_updated_by
177123 , last_update_login
177124 , program_update_date
177125 , program_application_id
177126 , program_id
177127 , request_id
177128 )
177129 SELECT event_id
177130 , p_target_ledger_id
177131 , p_sla_ledger_id
177132 , p_language
177133 , object_name
177134 , object_type_code
177135 , line_number
177136 , source_application_id
177137 , source_type_code
177138 , source_code
177139 , SUBSTR(source_value,1,1996)
177140 , SUBSTR(source_meaning,1,200)
177141 , xla_environment_pkg.g_Usr_Id
177142 , TRUNC(SYSDATE)
177143 , TRUNC(SYSDATE)
177144 , xla_environment_pkg.g_Usr_Id
177145 , xla_environment_pkg.g_Login_Id
177146 , TRUNC(SYSDATE)
177147 , xla_environment_pkg.g_Prog_Appl_Id
177148 , xla_environment_pkg.g_Prog_Id
177149 , xla_environment_pkg.g_Req_Id
177150 FROM (
177151 SELECT xet.event_id event_id
177152 , l2.line_number line_number
177153 , CASE r
177154 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
177155 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
177156 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
177157 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
177158 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
177159
177160 ELSE null
177161 END object_name
177162 , CASE r
177163 WHEN 1 THEN 'LINE'
177164 WHEN 2 THEN 'LINE'
177165 WHEN 3 THEN 'LINE'
177166 WHEN 4 THEN 'LINE'
177167 WHEN 5 THEN 'LINE'
177168
177169 ELSE null
177170 END object_type_code
177171 , CASE r
177172 WHEN 1 THEN '555'
177173 WHEN 2 THEN '555'
177174 WHEN 3 THEN '555'
177175 WHEN 4 THEN '555'
177176 WHEN 5 THEN '555'
177177
177178 ELSE null
177179 END source_application_id
177180 , 'S' source_type_code
177181 , CASE r
177182 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
177183 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
177184 WHEN 3 THEN 'ENTERED_AMOUNT'
177185 WHEN 4 THEN 'LINE_ID'
177186 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
177187
177188 ELSE null
177189 END source_code
177190 , CASE r
177191 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
177192 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
177193 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
177194 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
177195 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
177196
177197 ELSE null
177198 END source_value
177199 , null source_meaning
177200 FROM xla_events_gt xet
177201 , GMF_XLA_EXTRACT_LINES l2
177202 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
177203 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177204 AND xet.event_type_code = C_EVENT_TYPE_CODE
177205 AND l2.event_id = xet.event_id
177206
177207 )
177208 ;
177209 --
177210 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177211
177212 trace
177213 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
177214 ,p_level => C_LEVEL_STATEMENT
177215 ,p_module => l_log_module);
177216
177217 END IF;
177218
177219
177223 ,p_level => C_LEVEL_PROCEDURE
177220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177221 trace
177222 (p_msg => 'END of insert_sources_295'
177224 ,p_module => l_log_module);
177225 END IF;
177226 EXCEPTION
177227 WHEN xla_exceptions_pkg.application_exception THEN
177228 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177229 trace
177230 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177231 ,p_level => C_LEVEL_EXCEPTION
177232 ,p_module => l_log_module);
177233 END IF;
177234 RAISE;
177235 WHEN OTHERS THEN
177236 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177237 trace
177238 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177239 ,p_level => C_LEVEL_EXCEPTION
177240 ,p_module => l_log_module);
177241 END IF;
177242 xla_exceptions_pkg.raise_message
177243 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_295');
177244 END insert_sources_295;
177245 --
177246
177247 ---------------------------------------
177248 --
177249 -- PRIVATE FUNCTION
177250 -- EventType_295
177251 --
177252 ----------------------------------------
177253 --
177254 FUNCTION EventType_295
177255 (p_application_id IN NUMBER
177256 ,p_base_ledger_id IN NUMBER
177257 ,p_target_ledger_id IN NUMBER
177258 ,p_language IN VARCHAR2
177259 ,p_currency_code IN VARCHAR2
177260 ,p_sla_ledger_id IN NUMBER
177261 ,p_pad_start_date IN DATE
177262 ,p_pad_end_date IN DATE
177263 ,p_primary_ledger_id IN NUMBER)
177264 RETURN BOOLEAN IS
177265 --
177266 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
177267 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
177268
177269 l_calculate_acctd_flag VARCHAR2(1) :='N';
177270 l_calculate_g_l_flag VARCHAR2(1) :='N';
177271 --
177272 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177273 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177274 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177275 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177276 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177277 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177278 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177279 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177280 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177281 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177282 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177283 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177284 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177285 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
177286 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177287 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177288 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177289 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
177290 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177291 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177292 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177293 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
177294 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
177295 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
177296 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
177297 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
177298
177299 l_event_id NUMBER;
177300 l_previous_event_id NUMBER;
177301 l_first_event_id NUMBER;
177302 l_last_event_id NUMBER;
177303
177304 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
177305 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
177306 --
177307 --
177308 l_result BOOLEAN := TRUE;
177309 l_rows NUMBER := 1000;
177310 l_event_type_name VARCHAR2(80) := 'Receive to Inspection';
177311 l_event_class_name VARCHAR2(80) := 'Receiving';
177312 l_description VARCHAR2(4000);
177313 l_transaction_reversal NUMBER;
177314 l_ae_header_id NUMBER;
177315 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
177316 l_log_module VARCHAR2(240);
177317 --
177318 l_acct_reversal_source VARCHAR2(30);
177319 l_trx_reversal_source VARCHAR2(30);
177320
177321 l_continue_with_lines BOOLEAN := TRUE;
177322 --
177323 l_acc_rev_gl_date_source DATE; -- 4262811
177324 --
177325 type t_array_event_id is table of number index by binary_integer;
177326
177327 l_rec_array_event t_rec_array_event;
177328 l_null_rec_array_event t_rec_array_event;
177329 l_array_ae_header_id xla_number_array_type;
177330 l_actual_flag VARCHAR2(1) := NULL;
177331 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
177332 l_balance_type_code VARCHAR2(1) :=NULL;
177333 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
177334
177335 --
177336 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
177337 --
177338
177342 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
177339 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
177340 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
177341 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
177343 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
177344 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
177345
177346 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
177347 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
177348 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
177349 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
177350 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
177351
177352 l_array_source_6 t_array_source_6;
177353 l_array_source_7 t_array_source_7;
177354 l_array_source_8 t_array_source_8;
177355 l_array_source_9 t_array_source_9;
177356 l_array_source_10 t_array_source_10;
177357 l_array_source_12 t_array_source_12;
177358
177359 l_array_source_1 t_array_source_1;
177360 l_array_source_2 t_array_source_2;
177361 l_array_source_3 t_array_source_3;
177362 l_array_source_5 t_array_source_5;
177363 l_array_source_11 t_array_source_11;
177364
177365 --
177366 CURSOR header_cur
177367 IS
177368 SELECT /*+ leading(xet) cardinality(xet,1) */
177369 -- Event Type Code: RECEIVE
177370 -- Event Class Code: RECEIVE
177371 xet.entity_id
177372 , xet.legal_entity_id
177373 , xet.entity_code
177374 , xet.transaction_number
177375 , xet.event_id
177376 , xet.event_class_code
177377 , xet.event_type_code
177378 , xet.event_number
177379 , xet.event_date
177380 , xet.transaction_date
177381 , xet.reference_num_1
177382 , xet.reference_num_2
177383 , xet.reference_num_3
177384 , xet.reference_num_4
177385 , xet.reference_char_1
177386 , xet.reference_char_2
177387 , xet.reference_char_3
177388 , xet.reference_char_4
177389 , xet.reference_date_1
177390 , xet.reference_date_2
177391 , xet.reference_date_3
177392 , xet.reference_date_4
177393 , xet.event_created_by
177394 , xet.budgetary_control_flag
177395 , h1.ENTITY_CODE source_6
177396 , h1.CURRENCY_CODE source_7
177397 , h1.CURRENCY_CONVERSION_DATE source_8
177398 , h1.CURRENCY_CONVERSION_RATE source_9
177399 , h1.CURRENCY_CONVERSION_TYPE source_10
177400 , h1.TRANSACTION_DATE source_12
177401 FROM xla_events_gt xet
177402 , GMF_XLA_EXTRACT_HEADERS h1
177403 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
177404 and xet.event_type_code = C_EVENT_TYPE_CODE
177405 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
177406
177407 ORDER BY event_id
177408 ;
177409
177410
177411 --
177412 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
177413 IS
177414 SELECT /*+ leading(xet) cardinality(xet,1) */
177415 -- Event Type Code: RECEIVE
177416 -- Event Class Code: RECEIVE
177417 xet.entity_id
177418 ,xet.legal_entity_id
177419 ,xet.entity_code
177420 ,xet.transaction_number
177421 ,xet.event_id
177422 ,xet.event_class_code
177423 ,xet.event_type_code
177424 ,xet.event_number
177425 ,xet.event_date
177426 ,xet.transaction_date
177427 ,xet.reference_num_1
177428 ,xet.reference_num_2
177429 ,xet.reference_num_3
177430 ,xet.reference_num_4
177431 ,xet.reference_char_1
177432 ,xet.reference_char_2
177433 ,xet.reference_char_3
177434 ,xet.reference_char_4
177435 ,xet.reference_date_1
177436 ,xet.reference_date_2
177437 ,xet.reference_date_3
177438 ,xet.reference_date_4
177439 ,xet.event_created_by
177440 ,xet.budgetary_control_flag , l2.LINE_NUMBER
177441 , l2.TRANSACTION_ACCOUNT_ID source_1
177442 , l2.JOURNAL_LINE_TYPE source_2
177443 , l2.ENTERED_AMOUNT source_3
177444 , l2.LINE_ID source_5
177445 , l2.ACCOUNTED_AMOUNT source_11
177446 FROM xla_events_gt xet
177447 , GMF_XLA_EXTRACT_LINES l2
177448 WHERE xet.event_id between x_first_event_id and x_last_event_id
177449 and xet.event_date between p_pad_start_date and p_pad_end_date
177450 and xet.event_type_code = C_EVENT_TYPE_CODE
177451 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
177452 ;
177453
177454 --
177455 BEGIN
177456 IF g_log_enabled THEN
177457 l_log_module := C_DEFAULT_MODULE||'.EventType_295';
177458 END IF;
177459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177460 trace
177461 (p_msg => 'BEGIN of EventType_295'
177462 ,p_level => C_LEVEL_PROCEDURE
177463 ,p_module => l_log_module);
177464 END IF;
177465
177466 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177467 trace
177468 (p_msg => 'p_application_id = '||p_application_id||
177469 ' - p_base_ledger_id = '||p_base_ledger_id||
177470 ' - p_target_ledger_id = '||p_target_ledger_id||
177471 ' - p_language = '||p_language||
177472 ' - p_currency_code = '||p_currency_code||
177473 ' - p_sla_ledger_id = '||p_sla_ledger_id
177474 ,p_level => C_LEVEL_STATEMENT
177475 ,p_module => l_log_module);
177476 END IF;
177477 --
177478 -- initialze arrays
177479 --
177480 g_array_event.DELETE;
177484 -- 4262811 Initialze MPA Line Number
177481 l_rec_array_event := l_null_rec_array_event;
177482 --
177483 --------------------------------------
177485 --------------------------------------
177486 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
177487
177488 --
177489
177490 --
177491 OPEN header_cur;
177492 --
177493 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177494 trace
177495 (p_msg => 'SQL - FETCH header_cur'
177496 ,p_level => C_LEVEL_STATEMENT
177497 ,p_module => l_log_module);
177498 END IF;
177499 --
177500 LOOP
177501 FETCH header_cur BULK COLLECT INTO
177502 l_array_entity_id
177503 , l_array_legal_entity_id
177504 , l_array_entity_code
177505 , l_array_transaction_num
177506 , l_array_event_id
177507 , l_array_class_code
177508 , l_array_event_type
177509 , l_array_event_number
177510 , l_array_event_date
177511 , l_array_transaction_date
177512 , l_array_reference_num_1
177513 , l_array_reference_num_2
177514 , l_array_reference_num_3
177515 , l_array_reference_num_4
177516 , l_array_reference_char_1
177517 , l_array_reference_char_2
177518 , l_array_reference_char_3
177519 , l_array_reference_char_4
177520 , l_array_reference_date_1
177521 , l_array_reference_date_2
177522 , l_array_reference_date_3
177523 , l_array_reference_date_4
177524 , l_array_event_created_by
177525 , l_array_budgetary_control_flag
177526 , l_array_source_6
177527 , l_array_source_7
177528 , l_array_source_8
177529 , l_array_source_9
177530 , l_array_source_10
177531 , l_array_source_12
177532 LIMIT l_rows;
177533 --
177534 IF (C_LEVEL_EVENT >= g_log_level) THEN
177535 trace
177536 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
177537 ,p_level => C_LEVEL_EVENT
177538 ,p_module => l_log_module);
177539 END IF;
177540 --
177541 EXIT WHEN l_array_entity_id.COUNT = 0;
177542
177543 -- initialize arrays
177544 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
177545 XLA_AE_LINES_PKG.g_rec_lines := NULL;
177546
177547 --
177548 -- Bug 4458708
177549 --
177550 XLA_AE_LINES_PKG.g_LineNumber := 0;
177551
177552
177553 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
177554 g_last_hdr_idx := l_array_event_id.LAST;
177555 --
177556 -- loop for the headers. Each iteration is for each header extract row
177557 -- fetched in header cursor
177558 --
177559 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
177560
177561 --
177562 -- set event info as cache for other routines to refer event attributes
177563 --
177564 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177565 (p_application_id => p_application_id
177566 ,p_primary_ledger_id => p_primary_ledger_id
177567 ,p_base_ledger_id => p_base_ledger_id
177568 ,p_target_ledger_id => p_target_ledger_id
177569 ,p_entity_id => l_array_entity_id(hdr_idx)
177570 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
177571 ,p_entity_code => l_array_entity_code(hdr_idx)
177572 ,p_transaction_num => l_array_transaction_num(hdr_idx)
177573 ,p_event_id => l_array_event_id(hdr_idx)
177574 ,p_event_class_code => l_array_class_code(hdr_idx)
177575 ,p_event_type_code => l_array_event_type(hdr_idx)
177576 ,p_event_number => l_array_event_number(hdr_idx)
177577 ,p_event_date => l_array_event_date(hdr_idx)
177578 ,p_transaction_date => l_array_transaction_date(hdr_idx)
177579 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
177580 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
177581 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
177582 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
177583 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
177584 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
177585 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
177586 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
177587 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
177588 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
177589 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
177590 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
177591 ,p_event_created_by => l_array_event_created_by(hdr_idx)
177592 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
177593
177594 --
177595 -- set the status of entry to C_VALID (0)
177596 --
177597 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177598
177599 --
177600 -- initialize a row for ae header
177601 --
177602 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
177603
177604 l_event_id := l_array_event_id(hdr_idx);
177605
177606 --
177607 -- storing the hdr_idx for event. May be used by line cursor.
177608 --
177609 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
177610
177611 --
177612 -- store sources from header extract. This can be improved to
177613 -- store only those sources from header extract that may be used in lines
177614 --
177615
177616 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
177617 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
177618 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
177619 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
177620 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
177624 -- initilaize the status of ae headers for diffrent balance types
177621 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
177622
177623 --
177625 -- the status is initialised to C_NOT_CREATED (2)
177626 --
177627 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177628 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177629 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177630
177631 --
177632 -- call api to validate and store accounting attributes for header
177633 --
177634
177635 ------------------------------------------------------------
177636 -- Accrual Reversal : to get date for Standard Source (NONE)
177637 ------------------------------------------------------------
177638 l_acc_rev_gl_date_source := NULL;
177639
177640 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
177641 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
177642
177643
177644 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
177645
177646 XLA_AE_HEADER_PKG.SetJeCategoryName;
177647
177648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
177649 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
177650 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
177651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
177652 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
177653
177654
177655 -- No header level analytical criteria
177656
177657 --
177658 --accounting attribute enhancement, bug 3612931
177659 --
177660 l_trx_reversal_source := SUBSTR(NULL, 1,30);
177661
177662 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
177663 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
177664
177665 xla_accounting_err_pkg.build_message
177666 (p_appli_s_name => 'XLA'
177667 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
177668 ,p_token_1 => 'ACCT_ATTR_NAME'
177669 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
177670 ,p_token_2 => 'PRODUCT_NAME'
177671 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177672 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177673 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
177674 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177675
177676 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
177677 --
177678 -- following sets the accounting attributes needed to reverse
177679 -- accounting for a distributeion
177680 --
177681 xla_ae_lines_pkg.SetTrxReversalAttrs
177682 (p_event_id => l_event_id
177683 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
177684 ,p_trx_reversal_source => l_trx_reversal_source);
177685
177686 END IF;
177687
177688
177689 ----------------------------------------------------------------
177690 -- 4262811 - update the header statuses to invalid in need be
177691 ----------------------------------------------------------------
177692 --
177693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
177694
177695
177696 -----------------------------------------------
177697 -- No accrual reversal for the event class/type
177698 -----------------------------------------------
177699 ----------------------------------------------------------------
177700
177701 --
177702 -- this ends the header loop iteration for one bulk fetch
177703 --
177704 END LOOP;
177705
177706 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
177707 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
177708
177709 --
177710 -- insert dummy rows into lines gt table that were created due to
177711 -- transaction reversals
177712 --
177713 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
177714 l_result := XLA_AE_LINES_PKG.InsertLines;
177715 END IF;
177716
177717 --
177718 -- reset the temp_line_num for each set of events fetched from header
177719 -- cursor rather than doing it for each new event in line cursor
177720 -- Bug 3939231
177721 --
177722 xla_ae_lines_pkg.g_temp_line_num := 0;
177723
177724
177725
177726 --
177727 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
177728 --
177729 --
177730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177731
177732 trace
177733 (p_msg => 'SQL - FETCH line_cur'
177734 ,p_level => C_LEVEL_STATEMENT
177735 ,p_module => l_log_module);
177736
177737 END IF;
177738 --
177739 --
177740 LOOP
177741 --
177742 FETCH line_cur BULK COLLECT INTO
177743 l_array_entity_id
177744 , l_array_legal_entity_id
177745 , l_array_entity_code
177746 , l_array_transaction_num
177747 , l_array_event_id
177748 , l_array_class_code
177749 , l_array_event_type
177750 , l_array_event_number
177751 , l_array_event_date
177752 , l_array_transaction_date
177753 , l_array_reference_num_1
177754 , l_array_reference_num_2
177755 , l_array_reference_num_3
177756 , l_array_reference_num_4
177757 , l_array_reference_char_1
177758 , l_array_reference_char_2
177759 , l_array_reference_char_3
177760 , l_array_reference_char_4
177761 , l_array_reference_date_1
177765 , l_array_event_created_by
177762 , l_array_reference_date_2
177763 , l_array_reference_date_3
177764 , l_array_reference_date_4
177766 , l_array_budgetary_control_flag
177767 , l_array_extract_line_num
177768 , l_array_source_1
177769 , l_array_source_2
177770 , l_array_source_3
177771 , l_array_source_5
177772 , l_array_source_11
177773 LIMIT l_rows;
177774
177775 --
177776 IF (C_LEVEL_EVENT >= g_log_level) THEN
177777 trace
177778 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
177779 ,p_level => C_LEVEL_EVENT
177780 ,p_module => l_log_module);
177781 END IF;
177782 --
177783 EXIT WHEN l_array_entity_id.count = 0;
177784
177785 XLA_AE_LINES_PKG.g_rec_lines := null;
177786
177787 --
177788 -- Bug 4458708
177789 --
177790 XLA_AE_LINES_PKG.g_LineNumber := 0;
177791 --
177792 --
177793
177794 FOR Idx IN 1..l_array_event_id.count LOOP
177795 --
177796 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
177797 --
177798 l_event_id := l_array_event_id(idx); -- 5648433
177799
177800 --
177801 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
177802 --
177803
177804 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
177805 (g_array_event(l_event_id).array_value_num('header_index'))
177806 ,'N'
177807 ) <> 'Y'
177808 THEN
177809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177810 trace
177811 (p_msg => 'Trancaction revesal option is not Y '
177812 ,p_level => C_LEVEL_STATEMENT
177813 ,p_module => l_log_module);
177814 END IF;
177815
177816 --
177817 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
177818 --
177819 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177820 --
177821 -- set event info as cache for other routines to refer event attributes
177822 --
177823
177824 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
177825 l_previous_event_id := l_event_id;
177826
177827 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177828 (p_application_id => p_application_id
177829 ,p_primary_ledger_id => p_primary_ledger_id
177830 ,p_base_ledger_id => p_base_ledger_id
177831 ,p_target_ledger_id => p_target_ledger_id
177832 ,p_entity_id => l_array_entity_id(Idx)
177833 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
177834 ,p_entity_code => l_array_entity_code(Idx)
177835 ,p_transaction_num => l_array_transaction_num(Idx)
177836 ,p_event_id => l_array_event_id(Idx)
177837 ,p_event_class_code => l_array_class_code(Idx)
177838 ,p_event_type_code => l_array_event_type(Idx)
177839 ,p_event_number => l_array_event_number(Idx)
177840 ,p_event_date => l_array_event_date(Idx)
177841 ,p_transaction_date => l_array_transaction_date(Idx)
177842 ,p_reference_num_1 => l_array_reference_num_1(Idx)
177843 ,p_reference_num_2 => l_array_reference_num_2(Idx)
177844 ,p_reference_num_3 => l_array_reference_num_3(Idx)
177845 ,p_reference_num_4 => l_array_reference_num_4(Idx)
177846 ,p_reference_char_1 => l_array_reference_char_1(Idx)
177847 ,p_reference_char_2 => l_array_reference_char_2(Idx)
177848 ,p_reference_char_3 => l_array_reference_char_3(Idx)
177849 ,p_reference_char_4 => l_array_reference_char_4(Idx)
177850 ,p_reference_date_1 => l_array_reference_date_1(Idx)
177851 ,p_reference_date_2 => l_array_reference_date_2(Idx)
177852 ,p_reference_date_3 => l_array_reference_date_3(Idx)
177853 ,p_reference_date_4 => l_array_reference_date_4(Idx)
177854 ,p_event_created_by => l_array_event_created_by(Idx)
177855 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
177856 --
177857 END IF;
177858
177859
177860
177861 --
177862 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
177863
177864 l_acct_reversal_source := SUBSTR(NULL, 1,30);
177865
177866 IF l_continue_with_lines THEN
177867 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
177868 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
177869
177870 xla_accounting_err_pkg.build_message
177871 (p_appli_s_name => 'XLA'
177872 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
177873 ,p_token_1 => 'LINE_NUMBER'
177874 ,p_value_1 => l_array_extract_line_num(Idx)
177875 ,p_token_2 => 'PRODUCT_NAME'
177876 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177877 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177878 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
177879 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177880
177881 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
177882 --
177883 -- following sets the accounting attributes needed to reverse
177884 -- accounting for a distributeion
177885 --
177886
177887 --
177888 -- 5217187
177889 --
177890 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
177891 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
177892 g_array_event(l_event_id).array_value_num('header_index'));
177896 -- No reversal code generated
177893 --
177894 --
177895
177897
177898 xla_ae_lines_pkg.SetAcctReversalAttrs
177899 (p_event_id => l_event_id
177900 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
177901 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177902 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
177903 END IF;
177904
177905 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
177906 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
177907
177908 --
177909 AcctLineType_47 (
177910 p_application_id => p_application_id
177911 ,p_event_id => l_event_id
177912 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177913 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177914 ,p_actual_flag => l_actual_flag
177915 ,p_balance_type_code => l_balance_type_code
177916 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177917
177918 , p_source_1 => l_array_source_1(Idx)
177919 , p_source_2 => l_array_source_2(Idx)
177920 , p_source_3 => l_array_source_3(Idx)
177921 , p_source_5 => l_array_source_5(Idx)
177922 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
177923 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
177924 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
177925 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
177926 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
177927 , p_source_11 => l_array_source_11(Idx)
177928 );
177929 If(l_balance_type_code = 'A') THEN
177930 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177931 END IF;
177932
177933 --
177934
177935
177936 --
177937 AcctLineType_122 (
177938 p_application_id => p_application_id
177939 ,p_event_id => l_event_id
177940 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177941 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177942 ,p_actual_flag => l_actual_flag
177943 ,p_balance_type_code => l_balance_type_code
177944 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177945
177946 , p_source_1 => l_array_source_1(Idx)
177947 , p_source_2 => l_array_source_2(Idx)
177948 , p_source_3 => l_array_source_3(Idx)
177949 , p_source_5 => l_array_source_5(Idx)
177950 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
177951 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
177952 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
177953 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
177954 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
177955 , p_source_11 => l_array_source_11(Idx)
177956 );
177957 If(l_balance_type_code = 'A') THEN
177958 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177959 END IF;
177960
177961 --
177962
177963
177964 --
177965 AcctLineType_201 (
177966 p_application_id => p_application_id
177967 ,p_event_id => l_event_id
177968 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177969 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177970 ,p_actual_flag => l_actual_flag
177971 ,p_balance_type_code => l_balance_type_code
177972 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177973
177974 , p_source_1 => l_array_source_1(Idx)
177975 , p_source_2 => l_array_source_2(Idx)
177976 , p_source_3 => l_array_source_3(Idx)
177977 , p_source_5 => l_array_source_5(Idx)
177978 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
177979 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
177980 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
177981 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
177982 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
177983 , p_source_11 => l_array_source_11(Idx)
177984 );
177985 If(l_balance_type_code = 'A') THEN
177986 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177987 END IF;
177988
177989 --
177990
177991 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
177992 -- or secondary ledger that has different currency with primary
177993 -- or alc that is calculated by sla
177994 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
177995 (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'))
177996
177997 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
177998 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
177999 AND (l_actual_flag = 'A')) THEN
178000 XLA_AE_LINES_PKG.CreateGainOrLossLines(
178001 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
178002 ,p_application_id => p_application_id
178003 ,p_amb_context_code => 'DEFAULT'
178004 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
178005 ,p_event_class_code => C_EVENT_CLASS_CODE
178006 ,p_event_type_code => C_EVENT_TYPE_CODE
178007
178008 ,p_gain_ccid => -1
178009 ,p_loss_ccid => -1
178010
178011 ,p_actual_flag => l_actual_flag
178012 ,p_enc_flag => null
178013 ,p_actual_g_l_ref => l_actual_gain_loss_ref
178014 ,p_enc_g_l_ref => null
178015 );
178016 END IF;
178017 END IF;
178018 END IF;
178019
178020 ELSE
178021 --
178022 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
178023 --
178024 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178025 trace
178026 (p_msg => 'Trancaction revesal option is Y'
178027 ,p_level => C_LEVEL_STATEMENT
178028 ,p_module => l_log_module);
178032 END LOOP;
178029 END IF;
178030 END IF;
178031
178033 l_result := XLA_AE_LINES_PKG.InsertLines ;
178034 end loop;
178035 close line_cur;
178036
178037
178038 --
178039 -- insert headers into xla_ae_headers_gt table
178040 --
178041 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
178042
178043 -- insert into errors table here.
178044
178045 END LOOP;
178046
178047 --
178048 -- 4865292
178049 --
178050 -- Compare g_hdr_extract_count with event count in
178051 -- CreateHeadersAndLines.
178052 --
178053 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
178054
178055 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178056 trace (p_msg => '# rows extracted from header extract objects '
178057 || ' (running total): '
178058 || g_hdr_extract_count
178059 ,p_level => C_LEVEL_STATEMENT
178060 ,p_module => l_log_module);
178061 END IF;
178062
178063 CLOSE header_cur;
178064 --
178065
178066 --
178067 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178068 trace
178069 (p_msg => 'END of EventType_295'
178070 ,p_level => C_LEVEL_PROCEDURE
178071 ,p_module => l_log_module);
178072 END IF;
178073 --
178074 RETURN l_result;
178075 EXCEPTION
178076 WHEN xla_exceptions_pkg.application_exception THEN
178077
178078 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178079
178080
178081 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
178082
178083 RAISE;
178084
178085 WHEN NO_DATA_FOUND THEN
178086
178087 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178088 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
178089
178090 FOR header_record IN header_cur
178091 LOOP
178092 l_array_header_events(header_record.event_id) := header_record.event_id;
178093 END LOOP;
178094
178095 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
178096 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
178097
178098 fnd_file.put_line(fnd_file.LOG, ' ');
178099 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178100 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
178101 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
178102
178103 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
178104 LOOP
178105 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
178106 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
178107 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
178108 END IF;
178109 END LOOP;
178110
178111 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178112 fnd_file.put_line(fnd_file.LOG, ' ');
178113
178114
178115 xla_exceptions_pkg.raise_message
178116 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_295');
178117
178118
178119 WHEN OTHERS THEN
178120 xla_exceptions_pkg.raise_message
178121 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_295');
178122 END EventType_295;
178123 --
178124
178125 ---------------------------------------
178126 --
178127 -- PRIVATE PROCEDURE
178128 -- insert_sources_296
178129 --
178130 ----------------------------------------
178131 --
178132 PROCEDURE insert_sources_296(
178133 p_target_ledger_id IN NUMBER
178134 , p_language IN VARCHAR2
178135 , p_sla_ledger_id IN NUMBER
178136 , p_pad_start_date IN DATE
178137 , p_pad_end_date IN DATE
178138 )
178139 IS
178140
178141 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RELE';
178142 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BATCH_MATERIAL';
178143 p_apps_owner VARCHAR2(30);
178144 l_log_module VARCHAR2(240);
178145 BEGIN
178146 IF g_log_enabled THEN
178147 l_log_module := C_DEFAULT_MODULE||'.insert_sources_296';
178148 END IF;
178149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178150
178151 trace
178152 (p_msg => 'BEGIN of insert_sources_296'
178153 ,p_level => C_LEVEL_PROCEDURE
178154 ,p_module => l_log_module);
178155
178156 END IF;
178157
178158 -- select APPS owner
178159 SELECT oracle_username
178160 INTO p_apps_owner
178161 FROM fnd_oracle_userid
178162 WHERE read_only_flag = 'U'
178163 ;
178164
178165 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178166 trace
178167 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
178168 ' - p_language = '||p_language||
178169 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
178170 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
178171 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
178172 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
178173 ,p_level => C_LEVEL_STATEMENT
178174 ,p_module => l_log_module);
178175 END IF;
178176
178177
178178 --
178179 INSERT INTO xla_diag_sources --hdr1
178180 (
178181 event_id
178182 , ledger_id
178183 , sla_ledger_id
178184 , description_language
178185 , object_name
178186 , object_type_code
178187 , line_number
178188 , source_application_id
178189 , source_type_code
178190 , source_code
178194 , creation_date
178191 , source_value
178192 , source_meaning
178193 , created_by
178195 , last_update_date
178196 , last_updated_by
178197 , last_update_login
178198 , program_update_date
178199 , program_application_id
178200 , program_id
178201 , request_id
178202 )
178203 SELECT
178204 event_id
178205 , p_target_ledger_id
178206 , p_sla_ledger_id
178207 , p_language
178208 , object_name
178209 , object_type_code
178210 , line_number
178211 , source_application_id
178212 , source_type_code
178213 , source_code
178214 , SUBSTR(source_value ,1,1996)
178215 , SUBSTR(source_meaning,1,200)
178216 , xla_environment_pkg.g_Usr_Id
178217 , TRUNC(SYSDATE)
178218 , TRUNC(SYSDATE)
178219 , xla_environment_pkg.g_Usr_Id
178220 , xla_environment_pkg.g_Login_Id
178221 , TRUNC(SYSDATE)
178222 , xla_environment_pkg.g_Prog_Appl_Id
178223 , xla_environment_pkg.g_Prog_Id
178224 , xla_environment_pkg.g_Req_Id
178225 FROM (
178226 SELECT xet.event_id event_id
178227 , 0 line_number
178228 , CASE r
178229 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
178230 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
178231 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
178232 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
178233 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
178234 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
178235
178236 ELSE null
178237 END object_name
178238 , CASE r
178239 WHEN 1 THEN 'HEADER'
178240 WHEN 2 THEN 'HEADER'
178241 WHEN 3 THEN 'HEADER'
178242 WHEN 4 THEN 'HEADER'
178243 WHEN 5 THEN 'HEADER'
178244 WHEN 6 THEN 'HEADER'
178245
178246 ELSE null
178247 END object_type_code
178248 , CASE r
178249 WHEN 1 THEN '555'
178250 WHEN 2 THEN '555'
178251 WHEN 3 THEN '555'
178252 WHEN 4 THEN '555'
178253 WHEN 5 THEN '555'
178254 WHEN 6 THEN '555'
178255
178256 ELSE null
178257 END source_application_id
178258 , 'S' source_type_code
178259 , CASE r
178260 WHEN 1 THEN 'ENTITY_CODE'
178261 WHEN 2 THEN 'CURRENCY_CODE'
178262 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
178263 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
178264 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
178265 WHEN 6 THEN 'TRANSACTION_DATE'
178266
178267 ELSE null
178268 END source_code
178269 , CASE r
178270 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
178271 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
178272 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
178273 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
178274 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
178275 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
178276
178277 ELSE null
178278 END source_value
178279 , CASE r
178280 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
178281 1010186
178282 ,TO_CHAR(h1.CURRENCY_CODE)
178283 ,'CURRENCY_CODE'
178284 ,'S'
178285 ,555)
178286
178287 ELSE null
178288 END source_meaning
178289 FROM xla_events_gt xet
178290 , GMF_XLA_EXTRACT_HEADERS h1
178291 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
178292 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
178293 AND xet.event_type_code = C_EVENT_TYPE_CODE
178294 AND h1.event_id = xet.event_id
178295
178296 )
178297 ;
178298 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178299
178300 trace
178301 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
178302 ,p_level => C_LEVEL_STATEMENT
178303 ,p_module => l_log_module);
178304
178305 END IF;
178306 --
178307
178308
178309
178310 --
178311 INSERT INTO xla_diag_sources --line1
178312 (
178313 event_id
178314 , ledger_id
178315 , sla_ledger_id
178316 , description_language
178317 , object_name
178318 , object_type_code
178319 , line_number
178320 , source_application_id
178321 , source_type_code
178322 , source_code
178323 , source_value
178324 , source_meaning
178325 , created_by
178326 , creation_date
178327 , last_update_date
178328 , last_updated_by
178329 , last_update_login
178330 , program_update_date
178331 , program_application_id
178332 , program_id
178333 , request_id
178334 )
178335 SELECT event_id
178336 , p_target_ledger_id
178337 , p_sla_ledger_id
178338 , p_language
178339 , object_name
178340 , object_type_code
178341 , line_number
178342 , source_application_id
178343 , source_type_code
178344 , source_code
178345 , SUBSTR(source_value,1,1996)
178349 , TRUNC(SYSDATE)
178346 , SUBSTR(source_meaning,1,200)
178347 , xla_environment_pkg.g_Usr_Id
178348 , TRUNC(SYSDATE)
178350 , xla_environment_pkg.g_Usr_Id
178351 , xla_environment_pkg.g_Login_Id
178352 , TRUNC(SYSDATE)
178353 , xla_environment_pkg.g_Prog_Appl_Id
178354 , xla_environment_pkg.g_Prog_Id
178355 , xla_environment_pkg.g_Req_Id
178356 FROM (
178357 SELECT xet.event_id event_id
178358 , l2.line_number line_number
178359 , CASE r
178360 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
178361 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
178362 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
178363 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
178364 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
178365
178366 ELSE null
178367 END object_name
178368 , CASE r
178369 WHEN 1 THEN 'LINE'
178370 WHEN 2 THEN 'LINE'
178371 WHEN 3 THEN 'LINE'
178372 WHEN 4 THEN 'LINE'
178373 WHEN 5 THEN 'LINE'
178374
178375 ELSE null
178376 END object_type_code
178377 , CASE r
178378 WHEN 1 THEN '555'
178379 WHEN 2 THEN '555'
178380 WHEN 3 THEN '555'
178381 WHEN 4 THEN '555'
178382 WHEN 5 THEN '555'
178383
178384 ELSE null
178385 END source_application_id
178386 , 'S' source_type_code
178387 , CASE r
178388 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
178389 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
178390 WHEN 3 THEN 'ENTERED_AMOUNT'
178391 WHEN 4 THEN 'LINE_ID'
178392 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
178393
178394 ELSE null
178395 END source_code
178396 , CASE r
178397 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
178398 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
178399 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
178400 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
178401 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
178402
178403 ELSE null
178404 END source_value
178405 , null source_meaning
178406 FROM xla_events_gt xet
178407 , GMF_XLA_EXTRACT_LINES l2
178408 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
178409 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
178410 AND xet.event_type_code = C_EVENT_TYPE_CODE
178411 AND l2.event_id = xet.event_id
178412
178413 )
178414 ;
178415 --
178416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178417
178418 trace
178419 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
178420 ,p_level => C_LEVEL_STATEMENT
178421 ,p_module => l_log_module);
178422
178423 END IF;
178424
178425
178426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178427 trace
178428 (p_msg => 'END of insert_sources_296'
178429 ,p_level => C_LEVEL_PROCEDURE
178430 ,p_module => l_log_module);
178431 END IF;
178432 EXCEPTION
178433 WHEN xla_exceptions_pkg.application_exception THEN
178434 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
178435 trace
178436 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
178437 ,p_level => C_LEVEL_EXCEPTION
178438 ,p_module => l_log_module);
178439 END IF;
178440 RAISE;
178441 WHEN OTHERS THEN
178442 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
178443 trace
178444 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
178445 ,p_level => C_LEVEL_EXCEPTION
178446 ,p_module => l_log_module);
178447 END IF;
178448 xla_exceptions_pkg.raise_message
178449 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_296');
178450 END insert_sources_296;
178451 --
178452
178453 ---------------------------------------
178454 --
178455 -- PRIVATE FUNCTION
178456 -- EventType_296
178457 --
178458 ----------------------------------------
178459 --
178460 FUNCTION EventType_296
178461 (p_application_id IN NUMBER
178462 ,p_base_ledger_id IN NUMBER
178463 ,p_target_ledger_id IN NUMBER
178464 ,p_language IN VARCHAR2
178465 ,p_currency_code IN VARCHAR2
178466 ,p_sla_ledger_id IN NUMBER
178467 ,p_pad_start_date IN DATE
178468 ,p_pad_end_date IN DATE
178469 ,p_primary_ledger_id IN NUMBER)
178470 RETURN BOOLEAN IS
178471 --
178472 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RELE';
178473 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BATCH_MATERIAL';
178474
178475 l_calculate_acctd_flag VARCHAR2(1) :='N';
178476 l_calculate_g_l_flag VARCHAR2(1) :='N';
178477 --
178478 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178479 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178480 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178481 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178482 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178483 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178487 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178484 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178485 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178486 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178488 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178489 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178490 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178491 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178492 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178493 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178494 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178495 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178496 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178497 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178498 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178499 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178500 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
178501 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178502 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
178503 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
178504
178505 l_event_id NUMBER;
178506 l_previous_event_id NUMBER;
178507 l_first_event_id NUMBER;
178508 l_last_event_id NUMBER;
178509
178510 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
178511 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
178512 --
178513 --
178514 l_result BOOLEAN := TRUE;
178515 l_rows NUMBER := 1000;
178516 l_event_type_name VARCHAR2(80) := 'Batch Release';
178517 l_event_class_name VARCHAR2(80) := 'Batch Material Transactions';
178518 l_description VARCHAR2(4000);
178519 l_transaction_reversal NUMBER;
178520 l_ae_header_id NUMBER;
178521 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
178522 l_log_module VARCHAR2(240);
178523 --
178524 l_acct_reversal_source VARCHAR2(30);
178525 l_trx_reversal_source VARCHAR2(30);
178526
178527 l_continue_with_lines BOOLEAN := TRUE;
178528 --
178529 l_acc_rev_gl_date_source DATE; -- 4262811
178530 --
178531 type t_array_event_id is table of number index by binary_integer;
178532
178533 l_rec_array_event t_rec_array_event;
178534 l_null_rec_array_event t_rec_array_event;
178535 l_array_ae_header_id xla_number_array_type;
178536 l_actual_flag VARCHAR2(1) := NULL;
178537 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
178538 l_balance_type_code VARCHAR2(1) :=NULL;
178539 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
178540
178541 --
178542 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
178543 --
178544
178545 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
178546 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
178547 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
178548 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
178549 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178550 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
178551
178552 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
178553 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
178554 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178555 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
178556 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178557
178558 l_array_source_6 t_array_source_6;
178559 l_array_source_7 t_array_source_7;
178560 l_array_source_8 t_array_source_8;
178561 l_array_source_9 t_array_source_9;
178562 l_array_source_10 t_array_source_10;
178563 l_array_source_12 t_array_source_12;
178564
178565 l_array_source_1 t_array_source_1;
178566 l_array_source_2 t_array_source_2;
178567 l_array_source_3 t_array_source_3;
178568 l_array_source_5 t_array_source_5;
178569 l_array_source_11 t_array_source_11;
178570
178571 --
178572 CURSOR header_cur
178573 IS
178574 SELECT /*+ leading(xet) cardinality(xet,1) */
178575 -- Event Type Code: RELE
178576 -- Event Class Code: BATCH_MATERIAL
178577 xet.entity_id
178578 , xet.legal_entity_id
178579 , xet.entity_code
178580 , xet.transaction_number
178581 , xet.event_id
178582 , xet.event_class_code
178583 , xet.event_type_code
178584 , xet.event_number
178585 , xet.event_date
178586 , xet.transaction_date
178587 , xet.reference_num_1
178588 , xet.reference_num_2
178589 , xet.reference_num_3
178590 , xet.reference_num_4
178591 , xet.reference_char_1
178592 , xet.reference_char_2
178593 , xet.reference_char_3
178594 , xet.reference_char_4
178595 , xet.reference_date_1
178596 , xet.reference_date_2
178597 , xet.reference_date_3
178601 , h1.ENTITY_CODE source_6
178598 , xet.reference_date_4
178599 , xet.event_created_by
178600 , xet.budgetary_control_flag
178602 , h1.CURRENCY_CODE source_7
178603 , h1.CURRENCY_CONVERSION_DATE source_8
178604 , h1.CURRENCY_CONVERSION_RATE source_9
178605 , h1.CURRENCY_CONVERSION_TYPE source_10
178606 , h1.TRANSACTION_DATE source_12
178607 FROM xla_events_gt xet
178608 , GMF_XLA_EXTRACT_HEADERS h1
178609 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
178610 and xet.event_type_code = C_EVENT_TYPE_CODE
178611 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
178612
178613 ORDER BY event_id
178614 ;
178615
178616
178617 --
178618 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
178619 IS
178620 SELECT /*+ leading(xet) cardinality(xet,1) */
178621 -- Event Type Code: RELE
178622 -- Event Class Code: BATCH_MATERIAL
178623 xet.entity_id
178624 ,xet.legal_entity_id
178625 ,xet.entity_code
178626 ,xet.transaction_number
178627 ,xet.event_id
178628 ,xet.event_class_code
178629 ,xet.event_type_code
178630 ,xet.event_number
178631 ,xet.event_date
178632 ,xet.transaction_date
178633 ,xet.reference_num_1
178634 ,xet.reference_num_2
178635 ,xet.reference_num_3
178636 ,xet.reference_num_4
178637 ,xet.reference_char_1
178638 ,xet.reference_char_2
178639 ,xet.reference_char_3
178640 ,xet.reference_char_4
178641 ,xet.reference_date_1
178642 ,xet.reference_date_2
178643 ,xet.reference_date_3
178644 ,xet.reference_date_4
178645 ,xet.event_created_by
178646 ,xet.budgetary_control_flag , l2.LINE_NUMBER
178647 , l2.TRANSACTION_ACCOUNT_ID source_1
178648 , l2.JOURNAL_LINE_TYPE source_2
178649 , l2.ENTERED_AMOUNT source_3
178650 , l2.LINE_ID source_5
178651 , l2.ACCOUNTED_AMOUNT source_11
178652 FROM xla_events_gt xet
178653 , GMF_XLA_EXTRACT_LINES l2
178654 WHERE xet.event_id between x_first_event_id and x_last_event_id
178655 and xet.event_date between p_pad_start_date and p_pad_end_date
178656 and xet.event_type_code = C_EVENT_TYPE_CODE
178657 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
178658 ;
178659
178660 --
178661 BEGIN
178662 IF g_log_enabled THEN
178663 l_log_module := C_DEFAULT_MODULE||'.EventType_296';
178664 END IF;
178665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178666 trace
178667 (p_msg => 'BEGIN of EventType_296'
178668 ,p_level => C_LEVEL_PROCEDURE
178669 ,p_module => l_log_module);
178670 END IF;
178671
178672 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178673 trace
178674 (p_msg => 'p_application_id = '||p_application_id||
178675 ' - p_base_ledger_id = '||p_base_ledger_id||
178676 ' - p_target_ledger_id = '||p_target_ledger_id||
178677 ' - p_language = '||p_language||
178678 ' - p_currency_code = '||p_currency_code||
178679 ' - p_sla_ledger_id = '||p_sla_ledger_id
178680 ,p_level => C_LEVEL_STATEMENT
178681 ,p_module => l_log_module);
178682 END IF;
178683 --
178684 -- initialze arrays
178685 --
178686 g_array_event.DELETE;
178687 l_rec_array_event := l_null_rec_array_event;
178688 --
178689 --------------------------------------
178690 -- 4262811 Initialze MPA Line Number
178691 --------------------------------------
178692 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
178693
178694 --
178695
178696 --
178697 OPEN header_cur;
178698 --
178699 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178700 trace
178701 (p_msg => 'SQL - FETCH header_cur'
178702 ,p_level => C_LEVEL_STATEMENT
178703 ,p_module => l_log_module);
178704 END IF;
178705 --
178706 LOOP
178707 FETCH header_cur BULK COLLECT INTO
178708 l_array_entity_id
178709 , l_array_legal_entity_id
178710 , l_array_entity_code
178711 , l_array_transaction_num
178712 , l_array_event_id
178713 , l_array_class_code
178714 , l_array_event_type
178715 , l_array_event_number
178716 , l_array_event_date
178717 , l_array_transaction_date
178718 , l_array_reference_num_1
178719 , l_array_reference_num_2
178720 , l_array_reference_num_3
178721 , l_array_reference_num_4
178722 , l_array_reference_char_1
178723 , l_array_reference_char_2
178724 , l_array_reference_char_3
178725 , l_array_reference_char_4
178726 , l_array_reference_date_1
178727 , l_array_reference_date_2
178728 , l_array_reference_date_3
178729 , l_array_reference_date_4
178730 , l_array_event_created_by
178731 , l_array_budgetary_control_flag
178732 , l_array_source_6
178733 , l_array_source_7
178734 , l_array_source_8
178735 , l_array_source_9
178736 , l_array_source_10
178737 , l_array_source_12
178738 LIMIT l_rows;
178739 --
178740 IF (C_LEVEL_EVENT >= g_log_level) THEN
178741 trace
178742 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
178743 ,p_level => C_LEVEL_EVENT
178744 ,p_module => l_log_module);
178745 END IF;
178746 --
178747 EXIT WHEN l_array_entity_id.COUNT = 0;
178748
178749 -- initialize arrays
178750 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
178751 XLA_AE_LINES_PKG.g_rec_lines := NULL;
178752
178753 --
178754 -- Bug 4458708
178755 --
178756 XLA_AE_LINES_PKG.g_LineNumber := 0;
178757
178758
178759 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
178760 g_last_hdr_idx := l_array_event_id.LAST;
178761 --
178765 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
178762 -- loop for the headers. Each iteration is for each header extract row
178763 -- fetched in header cursor
178764 --
178766
178767 --
178768 -- set event info as cache for other routines to refer event attributes
178769 --
178770 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
178771 (p_application_id => p_application_id
178772 ,p_primary_ledger_id => p_primary_ledger_id
178773 ,p_base_ledger_id => p_base_ledger_id
178774 ,p_target_ledger_id => p_target_ledger_id
178775 ,p_entity_id => l_array_entity_id(hdr_idx)
178776 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
178777 ,p_entity_code => l_array_entity_code(hdr_idx)
178778 ,p_transaction_num => l_array_transaction_num(hdr_idx)
178779 ,p_event_id => l_array_event_id(hdr_idx)
178780 ,p_event_class_code => l_array_class_code(hdr_idx)
178781 ,p_event_type_code => l_array_event_type(hdr_idx)
178782 ,p_event_number => l_array_event_number(hdr_idx)
178783 ,p_event_date => l_array_event_date(hdr_idx)
178784 ,p_transaction_date => l_array_transaction_date(hdr_idx)
178785 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
178786 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
178787 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
178788 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
178789 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
178790 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
178791 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
178792 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
178793 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
178794 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
178795 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
178796 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
178797 ,p_event_created_by => l_array_event_created_by(hdr_idx)
178798 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
178799
178800 --
178801 -- set the status of entry to C_VALID (0)
178802 --
178803 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
178804
178805 --
178806 -- initialize a row for ae header
178807 --
178808 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
178809
178810 l_event_id := l_array_event_id(hdr_idx);
178811
178812 --
178813 -- storing the hdr_idx for event. May be used by line cursor.
178814 --
178815 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
178816
178817 --
178818 -- store sources from header extract. This can be improved to
178819 -- store only those sources from header extract that may be used in lines
178820 --
178821
178822 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
178823 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
178824 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
178825 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
178826 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
178827 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
178828
178829 --
178830 -- initilaize the status of ae headers for diffrent balance types
178831 -- the status is initialised to C_NOT_CREATED (2)
178832 --
178833 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178834 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178835 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178836
178837 --
178838 -- call api to validate and store accounting attributes for header
178839 --
178840
178841 ------------------------------------------------------------
178842 -- Accrual Reversal : to get date for Standard Source (NONE)
178843 ------------------------------------------------------------
178844 l_acc_rev_gl_date_source := NULL;
178845
178846 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
178847 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
178848
178849
178850 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
178851
178852 XLA_AE_HEADER_PKG.SetJeCategoryName;
178853
178854 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
178855 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
178856 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
178857 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
178858 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
178859
178860
178861 -- No header level analytical criteria
178862
178863 --
178864 --accounting attribute enhancement, bug 3612931
178865 --
178866 l_trx_reversal_source := SUBSTR(NULL, 1,30);
178867
178868 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
178869 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
178870
178871 xla_accounting_err_pkg.build_message
178872 (p_appli_s_name => 'XLA'
178873 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
178874 ,p_token_1 => 'ACCT_ATTR_NAME'
178875 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
178876 ,p_token_2 => 'PRODUCT_NAME'
178877 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178881
178878 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
178879 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
178880 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
178882 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
178883 --
178884 -- following sets the accounting attributes needed to reverse
178885 -- accounting for a distributeion
178886 --
178887 xla_ae_lines_pkg.SetTrxReversalAttrs
178888 (p_event_id => l_event_id
178889 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
178890 ,p_trx_reversal_source => l_trx_reversal_source);
178891
178892 END IF;
178893
178894
178895 ----------------------------------------------------------------
178896 -- 4262811 - update the header statuses to invalid in need be
178897 ----------------------------------------------------------------
178898 --
178899 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
178900
178901
178902 -----------------------------------------------
178903 -- No accrual reversal for the event class/type
178904 -----------------------------------------------
178905 ----------------------------------------------------------------
178906
178907 --
178908 -- this ends the header loop iteration for one bulk fetch
178909 --
178910 END LOOP;
178911
178912 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
178913 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
178914
178915 --
178916 -- insert dummy rows into lines gt table that were created due to
178917 -- transaction reversals
178918 --
178919 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
178920 l_result := XLA_AE_LINES_PKG.InsertLines;
178921 END IF;
178922
178923 --
178924 -- reset the temp_line_num for each set of events fetched from header
178925 -- cursor rather than doing it for each new event in line cursor
178926 -- Bug 3939231
178927 --
178928 xla_ae_lines_pkg.g_temp_line_num := 0;
178929
178930
178931
178932 --
178933 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
178934 --
178935 --
178936 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178937
178938 trace
178939 (p_msg => 'SQL - FETCH line_cur'
178940 ,p_level => C_LEVEL_STATEMENT
178941 ,p_module => l_log_module);
178942
178943 END IF;
178944 --
178945 --
178946 LOOP
178947 --
178948 FETCH line_cur BULK COLLECT INTO
178949 l_array_entity_id
178950 , l_array_legal_entity_id
178951 , l_array_entity_code
178952 , l_array_transaction_num
178953 , l_array_event_id
178954 , l_array_class_code
178955 , l_array_event_type
178956 , l_array_event_number
178957 , l_array_event_date
178958 , l_array_transaction_date
178959 , l_array_reference_num_1
178960 , l_array_reference_num_2
178961 , l_array_reference_num_3
178962 , l_array_reference_num_4
178963 , l_array_reference_char_1
178964 , l_array_reference_char_2
178965 , l_array_reference_char_3
178966 , l_array_reference_char_4
178967 , l_array_reference_date_1
178968 , l_array_reference_date_2
178969 , l_array_reference_date_3
178970 , l_array_reference_date_4
178971 , l_array_event_created_by
178972 , l_array_budgetary_control_flag
178973 , l_array_extract_line_num
178974 , l_array_source_1
178975 , l_array_source_2
178976 , l_array_source_3
178977 , l_array_source_5
178978 , l_array_source_11
178979 LIMIT l_rows;
178980
178981 --
178982 IF (C_LEVEL_EVENT >= g_log_level) THEN
178983 trace
178984 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
178985 ,p_level => C_LEVEL_EVENT
178986 ,p_module => l_log_module);
178987 END IF;
178988 --
178989 EXIT WHEN l_array_entity_id.count = 0;
178990
178991 XLA_AE_LINES_PKG.g_rec_lines := null;
178992
178993 --
178994 -- Bug 4458708
178995 --
178996 XLA_AE_LINES_PKG.g_LineNumber := 0;
178997 --
178998 --
178999
179000 FOR Idx IN 1..l_array_event_id.count LOOP
179001 --
179002 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
179003 --
179004 l_event_id := l_array_event_id(idx); -- 5648433
179005
179006 --
179007 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179008 --
179009
179010 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
179011 (g_array_event(l_event_id).array_value_num('header_index'))
179012 ,'N'
179013 ) <> 'Y'
179014 THEN
179015 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179016 trace
179017 (p_msg => 'Trancaction revesal option is not Y '
179018 ,p_level => C_LEVEL_STATEMENT
179019 ,p_module => l_log_module);
179020 END IF;
179021
179022 --
179023 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
179024 --
179025 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179026 --
179027 -- set event info as cache for other routines to refer event attributes
179028 --
179029
179030 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
179031 l_previous_event_id := l_event_id;
179032
179033 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179034 (p_application_id => p_application_id
179035 ,p_primary_ledger_id => p_primary_ledger_id
179036 ,p_base_ledger_id => p_base_ledger_id
179040 ,p_entity_code => l_array_entity_code(Idx)
179037 ,p_target_ledger_id => p_target_ledger_id
179038 ,p_entity_id => l_array_entity_id(Idx)
179039 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
179041 ,p_transaction_num => l_array_transaction_num(Idx)
179042 ,p_event_id => l_array_event_id(Idx)
179043 ,p_event_class_code => l_array_class_code(Idx)
179044 ,p_event_type_code => l_array_event_type(Idx)
179045 ,p_event_number => l_array_event_number(Idx)
179046 ,p_event_date => l_array_event_date(Idx)
179047 ,p_transaction_date => l_array_transaction_date(Idx)
179048 ,p_reference_num_1 => l_array_reference_num_1(Idx)
179049 ,p_reference_num_2 => l_array_reference_num_2(Idx)
179050 ,p_reference_num_3 => l_array_reference_num_3(Idx)
179051 ,p_reference_num_4 => l_array_reference_num_4(Idx)
179052 ,p_reference_char_1 => l_array_reference_char_1(Idx)
179053 ,p_reference_char_2 => l_array_reference_char_2(Idx)
179054 ,p_reference_char_3 => l_array_reference_char_3(Idx)
179055 ,p_reference_char_4 => l_array_reference_char_4(Idx)
179056 ,p_reference_date_1 => l_array_reference_date_1(Idx)
179057 ,p_reference_date_2 => l_array_reference_date_2(Idx)
179058 ,p_reference_date_3 => l_array_reference_date_3(Idx)
179059 ,p_reference_date_4 => l_array_reference_date_4(Idx)
179060 ,p_event_created_by => l_array_event_created_by(Idx)
179061 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
179062 --
179063 END IF;
179064
179065
179066
179067 --
179068 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
179069
179070 l_acct_reversal_source := SUBSTR(NULL, 1,30);
179071
179072 IF l_continue_with_lines THEN
179073 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
179074 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
179075
179076 xla_accounting_err_pkg.build_message
179077 (p_appli_s_name => 'XLA'
179078 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
179079 ,p_token_1 => 'LINE_NUMBER'
179080 ,p_value_1 => l_array_extract_line_num(Idx)
179081 ,p_token_2 => 'PRODUCT_NAME'
179082 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179083 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179084 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
179085 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179086
179087 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
179088 --
179089 -- following sets the accounting attributes needed to reverse
179090 -- accounting for a distributeion
179091 --
179092
179093 --
179094 -- 5217187
179095 --
179096 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
179097 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
179098 g_array_event(l_event_id).array_value_num('header_index'));
179099 --
179100 --
179101
179102 -- No reversal code generated
179103
179104 xla_ae_lines_pkg.SetAcctReversalAttrs
179105 (p_event_id => l_event_id
179106 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
179107 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179108 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
179109 END IF;
179110
179111 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
179112 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
179113
179114 --
179115 AcctLineType_134 (
179116 p_application_id => p_application_id
179117 ,p_event_id => l_event_id
179118 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179119 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179120 ,p_actual_flag => l_actual_flag
179121 ,p_balance_type_code => l_balance_type_code
179122 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179123
179124 , p_source_1 => l_array_source_1(Idx)
179125 , p_source_2 => l_array_source_2(Idx)
179126 , p_source_3 => l_array_source_3(Idx)
179127 , p_source_5 => l_array_source_5(Idx)
179128 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
179129 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
179130 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
179131 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
179132 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
179133 , p_source_11 => l_array_source_11(Idx)
179134 );
179135 If(l_balance_type_code = 'A') THEN
179136 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179137 END IF;
179138
179139 --
179140
179141
179142 --
179143 AcctLineType_242 (
179144 p_application_id => p_application_id
179145 ,p_event_id => l_event_id
179146 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179147 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179148 ,p_actual_flag => l_actual_flag
179149 ,p_balance_type_code => l_balance_type_code
179150 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179151
179152 , p_source_1 => l_array_source_1(Idx)
179153 , p_source_2 => l_array_source_2(Idx)
179154 , p_source_3 => l_array_source_3(Idx)
179155 , p_source_5 => l_array_source_5(Idx)
179156 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
179157 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
179158 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
179162 );
179159 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
179160 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
179161 , p_source_11 => l_array_source_11(Idx)
179163 If(l_balance_type_code = 'A') THEN
179164 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179165 END IF;
179166
179167 --
179168
179169 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
179170 -- or secondary ledger that has different currency with primary
179171 -- or alc that is calculated by sla
179172 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
179173 (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'))
179174
179175 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
179176 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
179177 AND (l_actual_flag = 'A')) THEN
179178 XLA_AE_LINES_PKG.CreateGainOrLossLines(
179179 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
179180 ,p_application_id => p_application_id
179181 ,p_amb_context_code => 'DEFAULT'
179182 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
179183 ,p_event_class_code => C_EVENT_CLASS_CODE
179184 ,p_event_type_code => C_EVENT_TYPE_CODE
179185
179186 ,p_gain_ccid => -1
179187 ,p_loss_ccid => -1
179188
179189 ,p_actual_flag => l_actual_flag
179190 ,p_enc_flag => null
179191 ,p_actual_g_l_ref => l_actual_gain_loss_ref
179192 ,p_enc_g_l_ref => null
179193 );
179194 END IF;
179195 END IF;
179196 END IF;
179197
179198 ELSE
179199 --
179200 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179201 --
179202 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179203 trace
179204 (p_msg => 'Trancaction revesal option is Y'
179205 ,p_level => C_LEVEL_STATEMENT
179206 ,p_module => l_log_module);
179207 END IF;
179208 END IF;
179209
179210 END LOOP;
179211 l_result := XLA_AE_LINES_PKG.InsertLines ;
179212 end loop;
179213 close line_cur;
179214
179215
179216 --
179217 -- insert headers into xla_ae_headers_gt table
179218 --
179219 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
179220
179221 -- insert into errors table here.
179222
179223 END LOOP;
179224
179225 --
179226 -- 4865292
179227 --
179228 -- Compare g_hdr_extract_count with event count in
179229 -- CreateHeadersAndLines.
179230 --
179231 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
179232
179233 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179234 trace (p_msg => '# rows extracted from header extract objects '
179235 || ' (running total): '
179236 || g_hdr_extract_count
179237 ,p_level => C_LEVEL_STATEMENT
179238 ,p_module => l_log_module);
179239 END IF;
179240
179241 CLOSE header_cur;
179242 --
179243
179244 --
179245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179246 trace
179247 (p_msg => 'END of EventType_296'
179248 ,p_level => C_LEVEL_PROCEDURE
179249 ,p_module => l_log_module);
179250 END IF;
179251 --
179252 RETURN l_result;
179253 EXCEPTION
179254 WHEN xla_exceptions_pkg.application_exception THEN
179255
179256 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
179257
179258
179259 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
179260
179261 RAISE;
179262
179263 WHEN NO_DATA_FOUND THEN
179264
179265 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
179266 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
179267
179268 FOR header_record IN header_cur
179269 LOOP
179270 l_array_header_events(header_record.event_id) := header_record.event_id;
179271 END LOOP;
179272
179273 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
179274 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
179275
179276 fnd_file.put_line(fnd_file.LOG, ' ');
179277 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
179278 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
179279 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
179280
179281 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
179282 LOOP
179283 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
179284 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
179285 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
179286 END IF;
179287 END LOOP;
179288
179289 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
179290 fnd_file.put_line(fnd_file.LOG, ' ');
179291
179292
179293 xla_exceptions_pkg.raise_message
179294 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_296');
179295
179296
179297 WHEN OTHERS THEN
179298 xla_exceptions_pkg.raise_message
179299 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_296');
179300 END EventType_296;
179301 --
179302
179303 ---------------------------------------
179304 --
179305 -- PRIVATE PROCEDURE
179306 -- insert_sources_297
179307 --
179308 ----------------------------------------
179309 --
179313 , p_sla_ledger_id IN NUMBER
179310 PROCEDURE insert_sources_297(
179311 p_target_ledger_id IN NUMBER
179312 , p_language IN VARCHAR2
179314 , p_pad_start_date IN DATE
179315 , p_pad_end_date IN DATE
179316 )
179317 IS
179318
179319 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETRO_PRICE_UPD';
179320 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
179321 p_apps_owner VARCHAR2(30);
179322 l_log_module VARCHAR2(240);
179323 BEGIN
179324 IF g_log_enabled THEN
179325 l_log_module := C_DEFAULT_MODULE||'.insert_sources_297';
179326 END IF;
179327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179328
179329 trace
179330 (p_msg => 'BEGIN of insert_sources_297'
179331 ,p_level => C_LEVEL_PROCEDURE
179332 ,p_module => l_log_module);
179333
179334 END IF;
179335
179336 -- select APPS owner
179337 SELECT oracle_username
179338 INTO p_apps_owner
179339 FROM fnd_oracle_userid
179340 WHERE read_only_flag = 'U'
179341 ;
179342
179343 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179344 trace
179345 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
179346 ' - p_language = '||p_language||
179347 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
179348 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
179349 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
179350 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
179351 ,p_level => C_LEVEL_STATEMENT
179352 ,p_module => l_log_module);
179353 END IF;
179354
179355
179356 --
179357 INSERT INTO xla_diag_sources --hdr1
179358 (
179359 event_id
179360 , ledger_id
179361 , sla_ledger_id
179362 , description_language
179363 , object_name
179364 , object_type_code
179365 , line_number
179366 , source_application_id
179367 , source_type_code
179368 , source_code
179369 , source_value
179370 , source_meaning
179371 , created_by
179372 , creation_date
179373 , last_update_date
179374 , last_updated_by
179375 , last_update_login
179376 , program_update_date
179377 , program_application_id
179378 , program_id
179379 , request_id
179380 )
179381 SELECT
179382 event_id
179383 , p_target_ledger_id
179384 , p_sla_ledger_id
179385 , p_language
179386 , object_name
179387 , object_type_code
179388 , line_number
179389 , source_application_id
179390 , source_type_code
179391 , source_code
179392 , SUBSTR(source_value ,1,1996)
179393 , SUBSTR(source_meaning,1,200)
179394 , xla_environment_pkg.g_Usr_Id
179395 , TRUNC(SYSDATE)
179396 , TRUNC(SYSDATE)
179397 , xla_environment_pkg.g_Usr_Id
179398 , xla_environment_pkg.g_Login_Id
179399 , TRUNC(SYSDATE)
179400 , xla_environment_pkg.g_Prog_Appl_Id
179401 , xla_environment_pkg.g_Prog_Id
179402 , xla_environment_pkg.g_Req_Id
179403 FROM (
179404 SELECT xet.event_id event_id
179405 , 0 line_number
179406 , CASE r
179407 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
179408 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
179409 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
179410 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
179411 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
179412 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
179413
179414 ELSE null
179415 END object_name
179416 , CASE r
179417 WHEN 1 THEN 'HEADER'
179418 WHEN 2 THEN 'HEADER'
179419 WHEN 3 THEN 'HEADER'
179420 WHEN 4 THEN 'HEADER'
179421 WHEN 5 THEN 'HEADER'
179422 WHEN 6 THEN 'HEADER'
179423
179424 ELSE null
179425 END object_type_code
179426 , CASE r
179427 WHEN 1 THEN '555'
179428 WHEN 2 THEN '555'
179429 WHEN 3 THEN '555'
179430 WHEN 4 THEN '555'
179431 WHEN 5 THEN '555'
179432 WHEN 6 THEN '555'
179433
179434 ELSE null
179435 END source_application_id
179436 , 'S' source_type_code
179437 , CASE r
179438 WHEN 1 THEN 'ENTITY_CODE'
179439 WHEN 2 THEN 'CURRENCY_CODE'
179440 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
179441 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
179442 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
179443 WHEN 6 THEN 'TRANSACTION_DATE'
179444
179445 ELSE null
179446 END source_code
179447 , CASE r
179448 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
179449 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
179450 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
179451 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
179452 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
179453 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
179454
179455 ELSE null
179456 END source_value
179460 ,TO_CHAR(h1.CURRENCY_CODE)
179457 , CASE r
179458 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
179459 1010186
179461 ,'CURRENCY_CODE'
179462 ,'S'
179463 ,555)
179464
179465 ELSE null
179466 END source_meaning
179467 FROM xla_events_gt xet
179468 , GMF_XLA_EXTRACT_HEADERS h1
179469 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
179470 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179471 AND xet.event_type_code = C_EVENT_TYPE_CODE
179472 AND h1.event_id = xet.event_id
179473
179474 )
179475 ;
179476 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179477
179478 trace
179479 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
179480 ,p_level => C_LEVEL_STATEMENT
179481 ,p_module => l_log_module);
179482
179483 END IF;
179484 --
179485
179486
179487
179488 --
179489 INSERT INTO xla_diag_sources --line1
179490 (
179491 event_id
179492 , ledger_id
179493 , sla_ledger_id
179494 , description_language
179495 , object_name
179496 , object_type_code
179497 , line_number
179498 , source_application_id
179499 , source_type_code
179500 , source_code
179501 , source_value
179502 , source_meaning
179503 , created_by
179504 , creation_date
179505 , last_update_date
179506 , last_updated_by
179507 , last_update_login
179508 , program_update_date
179509 , program_application_id
179510 , program_id
179511 , request_id
179512 )
179513 SELECT event_id
179514 , p_target_ledger_id
179515 , p_sla_ledger_id
179516 , p_language
179517 , object_name
179518 , object_type_code
179519 , line_number
179520 , source_application_id
179521 , source_type_code
179522 , source_code
179523 , SUBSTR(source_value,1,1996)
179524 , SUBSTR(source_meaning,1,200)
179525 , xla_environment_pkg.g_Usr_Id
179526 , TRUNC(SYSDATE)
179527 , TRUNC(SYSDATE)
179528 , xla_environment_pkg.g_Usr_Id
179529 , xla_environment_pkg.g_Login_Id
179530 , TRUNC(SYSDATE)
179531 , xla_environment_pkg.g_Prog_Appl_Id
179532 , xla_environment_pkg.g_Prog_Id
179533 , xla_environment_pkg.g_Req_Id
179534 FROM (
179535 SELECT xet.event_id event_id
179536 , l2.line_number line_number
179537 , CASE r
179538 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
179539 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
179540 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
179541 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
179542 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
179543
179544 ELSE null
179545 END object_name
179546 , CASE r
179547 WHEN 1 THEN 'LINE'
179548 WHEN 2 THEN 'LINE'
179549 WHEN 3 THEN 'LINE'
179550 WHEN 4 THEN 'LINE'
179551 WHEN 5 THEN 'LINE'
179552
179553 ELSE null
179554 END object_type_code
179555 , CASE r
179556 WHEN 1 THEN '555'
179557 WHEN 2 THEN '555'
179558 WHEN 3 THEN '555'
179559 WHEN 4 THEN '555'
179560 WHEN 5 THEN '555'
179561
179562 ELSE null
179563 END source_application_id
179564 , 'S' source_type_code
179565 , CASE r
179566 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
179567 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
179568 WHEN 3 THEN 'ENTERED_AMOUNT'
179569 WHEN 4 THEN 'LINE_ID'
179570 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
179571
179572 ELSE null
179573 END source_code
179574 , CASE r
179575 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
179576 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
179577 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
179578 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
179579 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
179580
179581 ELSE null
179582 END source_value
179583 , null source_meaning
179584 FROM xla_events_gt xet
179585 , GMF_XLA_EXTRACT_LINES l2
179586 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
179587 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179588 AND xet.event_type_code = C_EVENT_TYPE_CODE
179589 AND l2.event_id = xet.event_id
179590
179591 )
179592 ;
179593 --
179594 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179595
179596 trace
179597 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
179598 ,p_level => C_LEVEL_STATEMENT
179599 ,p_module => l_log_module);
179600
179601 END IF;
179602
179603
179604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179605 trace
179606 (p_msg => 'END of insert_sources_297'
179607 ,p_level => C_LEVEL_PROCEDURE
179608 ,p_module => l_log_module);
179609 END IF;
179610 EXCEPTION
179614 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
179611 WHEN xla_exceptions_pkg.application_exception THEN
179612 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
179613 trace
179615 ,p_level => C_LEVEL_EXCEPTION
179616 ,p_module => l_log_module);
179617 END IF;
179618 RAISE;
179619 WHEN OTHERS THEN
179620 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
179621 trace
179622 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
179623 ,p_level => C_LEVEL_EXCEPTION
179624 ,p_module => l_log_module);
179625 END IF;
179626 xla_exceptions_pkg.raise_message
179627 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_297');
179628 END insert_sources_297;
179629 --
179630
179631 ---------------------------------------
179632 --
179633 -- PRIVATE FUNCTION
179634 -- EventType_297
179635 --
179636 ----------------------------------------
179637 --
179638 FUNCTION EventType_297
179639 (p_application_id IN NUMBER
179640 ,p_base_ledger_id IN NUMBER
179641 ,p_target_ledger_id IN NUMBER
179642 ,p_language IN VARCHAR2
179643 ,p_currency_code IN VARCHAR2
179644 ,p_sla_ledger_id IN NUMBER
179645 ,p_pad_start_date IN DATE
179646 ,p_pad_end_date IN DATE
179647 ,p_primary_ledger_id IN NUMBER)
179648 RETURN BOOLEAN IS
179649 --
179650 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETRO_PRICE_UPD';
179651 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
179652
179653 l_calculate_acctd_flag VARCHAR2(1) :='N';
179654 l_calculate_g_l_flag VARCHAR2(1) :='N';
179655 --
179656 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179657 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179658 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179659 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179660 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179661 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179662 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179663 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179664 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179665 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179666 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179667 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179668 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179669 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179670 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179671 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179672 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179673 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179674 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179675 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179676 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179677 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179678 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
179679 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179680 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
179681 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
179682
179683 l_event_id NUMBER;
179684 l_previous_event_id NUMBER;
179685 l_first_event_id NUMBER;
179686 l_last_event_id NUMBER;
179687
179688 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
179689 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
179690 --
179691 --
179692 l_result BOOLEAN := TRUE;
179693 l_rows NUMBER := 1000;
179694 l_event_type_name VARCHAR2(80) := 'Retroactive Price Update';
179695 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
179696 l_description VARCHAR2(4000);
179697 l_transaction_reversal NUMBER;
179698 l_ae_header_id NUMBER;
179699 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
179700 l_log_module VARCHAR2(240);
179701 --
179702 l_acct_reversal_source VARCHAR2(30);
179703 l_trx_reversal_source VARCHAR2(30);
179704
179705 l_continue_with_lines BOOLEAN := TRUE;
179706 --
179707 l_acc_rev_gl_date_source DATE; -- 4262811
179708 --
179709 type t_array_event_id is table of number index by binary_integer;
179710
179711 l_rec_array_event t_rec_array_event;
179712 l_null_rec_array_event t_rec_array_event;
179713 l_array_ae_header_id xla_number_array_type;
179714 l_actual_flag VARCHAR2(1) := NULL;
179715 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
179716 l_balance_type_code VARCHAR2(1) :=NULL;
179717 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
179718
179719 --
179720 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
179721 --
179722
179723 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
179724 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
179728 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
179725 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
179726 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
179727 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
179729
179730 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
179731 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
179732 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
179733 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
179734 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
179735
179736 l_array_source_6 t_array_source_6;
179737 l_array_source_7 t_array_source_7;
179738 l_array_source_8 t_array_source_8;
179739 l_array_source_9 t_array_source_9;
179740 l_array_source_10 t_array_source_10;
179741 l_array_source_12 t_array_source_12;
179742
179743 l_array_source_1 t_array_source_1;
179744 l_array_source_2 t_array_source_2;
179745 l_array_source_3 t_array_source_3;
179746 l_array_source_5 t_array_source_5;
179747 l_array_source_11 t_array_source_11;
179748
179749 --
179750 CURSOR header_cur
179751 IS
179752 SELECT /*+ leading(xet) cardinality(xet,1) */
179753 -- Event Type Code: RETRO_PRICE_UPD
179754 -- Event Class Code: DELIVER
179755 xet.entity_id
179756 , xet.legal_entity_id
179757 , xet.entity_code
179758 , xet.transaction_number
179759 , xet.event_id
179760 , xet.event_class_code
179761 , xet.event_type_code
179762 , xet.event_number
179763 , xet.event_date
179764 , xet.transaction_date
179765 , xet.reference_num_1
179766 , xet.reference_num_2
179767 , xet.reference_num_3
179768 , xet.reference_num_4
179769 , xet.reference_char_1
179770 , xet.reference_char_2
179771 , xet.reference_char_3
179772 , xet.reference_char_4
179773 , xet.reference_date_1
179774 , xet.reference_date_2
179775 , xet.reference_date_3
179776 , xet.reference_date_4
179777 , xet.event_created_by
179778 , xet.budgetary_control_flag
179779 , h1.ENTITY_CODE source_6
179780 , h1.CURRENCY_CODE source_7
179781 , h1.CURRENCY_CONVERSION_DATE source_8
179782 , h1.CURRENCY_CONVERSION_RATE source_9
179783 , h1.CURRENCY_CONVERSION_TYPE source_10
179784 , h1.TRANSACTION_DATE source_12
179785 FROM xla_events_gt xet
179786 , GMF_XLA_EXTRACT_HEADERS h1
179787 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
179788 and xet.event_type_code = C_EVENT_TYPE_CODE
179789 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
179790
179791 ORDER BY event_id
179792 ;
179793
179794
179795 --
179796 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
179797 IS
179798 SELECT /*+ leading(xet) cardinality(xet,1) */
179799 -- Event Type Code: RETRO_PRICE_UPD
179800 -- Event Class Code: DELIVER
179801 xet.entity_id
179802 ,xet.legal_entity_id
179803 ,xet.entity_code
179804 ,xet.transaction_number
179805 ,xet.event_id
179806 ,xet.event_class_code
179807 ,xet.event_type_code
179808 ,xet.event_number
179809 ,xet.event_date
179810 ,xet.transaction_date
179811 ,xet.reference_num_1
179812 ,xet.reference_num_2
179813 ,xet.reference_num_3
179814 ,xet.reference_num_4
179815 ,xet.reference_char_1
179816 ,xet.reference_char_2
179817 ,xet.reference_char_3
179818 ,xet.reference_char_4
179819 ,xet.reference_date_1
179820 ,xet.reference_date_2
179821 ,xet.reference_date_3
179822 ,xet.reference_date_4
179823 ,xet.event_created_by
179824 ,xet.budgetary_control_flag , l2.LINE_NUMBER
179825 , l2.TRANSACTION_ACCOUNT_ID source_1
179826 , l2.JOURNAL_LINE_TYPE source_2
179827 , l2.ENTERED_AMOUNT source_3
179828 , l2.LINE_ID source_5
179829 , l2.ACCOUNTED_AMOUNT source_11
179830 FROM xla_events_gt xet
179831 , GMF_XLA_EXTRACT_LINES l2
179832 WHERE xet.event_id between x_first_event_id and x_last_event_id
179833 and xet.event_date between p_pad_start_date and p_pad_end_date
179834 and xet.event_type_code = C_EVENT_TYPE_CODE
179835 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
179836 ;
179837
179838 --
179839 BEGIN
179840 IF g_log_enabled THEN
179841 l_log_module := C_DEFAULT_MODULE||'.EventType_297';
179842 END IF;
179843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179844 trace
179845 (p_msg => 'BEGIN of EventType_297'
179846 ,p_level => C_LEVEL_PROCEDURE
179847 ,p_module => l_log_module);
179848 END IF;
179849
179850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179851 trace
179852 (p_msg => 'p_application_id = '||p_application_id||
179853 ' - p_base_ledger_id = '||p_base_ledger_id||
179854 ' - p_target_ledger_id = '||p_target_ledger_id||
179855 ' - p_language = '||p_language||
179856 ' - p_currency_code = '||p_currency_code||
179857 ' - p_sla_ledger_id = '||p_sla_ledger_id
179858 ,p_level => C_LEVEL_STATEMENT
179859 ,p_module => l_log_module);
179860 END IF;
179861 --
179862 -- initialze arrays
179863 --
179864 g_array_event.DELETE;
179865 l_rec_array_event := l_null_rec_array_event;
179866 --
179867 --------------------------------------
179868 -- 4262811 Initialze MPA Line Number
179869 --------------------------------------
179873
179870 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
179871
179872 --
179874 --
179875 OPEN header_cur;
179876 --
179877 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179878 trace
179879 (p_msg => 'SQL - FETCH header_cur'
179880 ,p_level => C_LEVEL_STATEMENT
179881 ,p_module => l_log_module);
179882 END IF;
179883 --
179884 LOOP
179885 FETCH header_cur BULK COLLECT INTO
179886 l_array_entity_id
179887 , l_array_legal_entity_id
179888 , l_array_entity_code
179889 , l_array_transaction_num
179890 , l_array_event_id
179891 , l_array_class_code
179892 , l_array_event_type
179893 , l_array_event_number
179894 , l_array_event_date
179895 , l_array_transaction_date
179896 , l_array_reference_num_1
179897 , l_array_reference_num_2
179898 , l_array_reference_num_3
179899 , l_array_reference_num_4
179900 , l_array_reference_char_1
179901 , l_array_reference_char_2
179902 , l_array_reference_char_3
179903 , l_array_reference_char_4
179904 , l_array_reference_date_1
179905 , l_array_reference_date_2
179906 , l_array_reference_date_3
179907 , l_array_reference_date_4
179908 , l_array_event_created_by
179909 , l_array_budgetary_control_flag
179910 , l_array_source_6
179911 , l_array_source_7
179912 , l_array_source_8
179913 , l_array_source_9
179914 , l_array_source_10
179915 , l_array_source_12
179916 LIMIT l_rows;
179917 --
179918 IF (C_LEVEL_EVENT >= g_log_level) THEN
179919 trace
179920 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
179921 ,p_level => C_LEVEL_EVENT
179922 ,p_module => l_log_module);
179923 END IF;
179924 --
179925 EXIT WHEN l_array_entity_id.COUNT = 0;
179926
179927 -- initialize arrays
179928 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
179929 XLA_AE_LINES_PKG.g_rec_lines := NULL;
179930
179931 --
179932 -- Bug 4458708
179933 --
179934 XLA_AE_LINES_PKG.g_LineNumber := 0;
179935
179936
179937 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
179938 g_last_hdr_idx := l_array_event_id.LAST;
179939 --
179940 -- loop for the headers. Each iteration is for each header extract row
179941 -- fetched in header cursor
179942 --
179943 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
179944
179945 --
179946 -- set event info as cache for other routines to refer event attributes
179947 --
179948 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179949 (p_application_id => p_application_id
179950 ,p_primary_ledger_id => p_primary_ledger_id
179951 ,p_base_ledger_id => p_base_ledger_id
179952 ,p_target_ledger_id => p_target_ledger_id
179953 ,p_entity_id => l_array_entity_id(hdr_idx)
179954 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
179955 ,p_entity_code => l_array_entity_code(hdr_idx)
179956 ,p_transaction_num => l_array_transaction_num(hdr_idx)
179957 ,p_event_id => l_array_event_id(hdr_idx)
179958 ,p_event_class_code => l_array_class_code(hdr_idx)
179959 ,p_event_type_code => l_array_event_type(hdr_idx)
179960 ,p_event_number => l_array_event_number(hdr_idx)
179961 ,p_event_date => l_array_event_date(hdr_idx)
179962 ,p_transaction_date => l_array_transaction_date(hdr_idx)
179963 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
179964 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
179965 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
179966 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
179967 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
179968 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
179969 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
179970 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
179971 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
179972 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
179973 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
179974 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
179975 ,p_event_created_by => l_array_event_created_by(hdr_idx)
179976 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
179977
179978 --
179979 -- set the status of entry to C_VALID (0)
179980 --
179981 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179982
179983 --
179984 -- initialize a row for ae header
179985 --
179986 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
179987
179988 l_event_id := l_array_event_id(hdr_idx);
179989
179990 --
179991 -- storing the hdr_idx for event. May be used by line cursor.
179992 --
179993 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
179994
179995 --
179996 -- store sources from header extract. This can be improved to
179997 -- store only those sources from header extract that may be used in lines
179998 --
179999
180000 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
180001 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
180002 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
180003 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
180004 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
180005 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
180006
180007 --
180008 -- initilaize the status of ae headers for diffrent balance types
180012 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180009 -- the status is initialised to C_NOT_CREATED (2)
180010 --
180011 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180013 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180014
180015 --
180016 -- call api to validate and store accounting attributes for header
180017 --
180018
180019 ------------------------------------------------------------
180020 -- Accrual Reversal : to get date for Standard Source (NONE)
180021 ------------------------------------------------------------
180022 l_acc_rev_gl_date_source := NULL;
180023
180024 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
180025 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
180026
180027
180028 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
180029
180030 XLA_AE_HEADER_PKG.SetJeCategoryName;
180031
180032 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
180033 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
180034 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
180035 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
180036 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
180037
180038
180039 -- No header level analytical criteria
180040
180041 --
180042 --accounting attribute enhancement, bug 3612931
180043 --
180044 l_trx_reversal_source := SUBSTR(NULL, 1,30);
180045
180046 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
180047 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
180048
180049 xla_accounting_err_pkg.build_message
180050 (p_appli_s_name => 'XLA'
180051 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
180052 ,p_token_1 => 'ACCT_ATTR_NAME'
180053 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
180054 ,p_token_2 => 'PRODUCT_NAME'
180055 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180056 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
180057 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
180058 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
180059
180060 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
180061 --
180062 -- following sets the accounting attributes needed to reverse
180063 -- accounting for a distributeion
180064 --
180065 xla_ae_lines_pkg.SetTrxReversalAttrs
180066 (p_event_id => l_event_id
180067 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
180068 ,p_trx_reversal_source => l_trx_reversal_source);
180069
180070 END IF;
180071
180072
180073 ----------------------------------------------------------------
180074 -- 4262811 - update the header statuses to invalid in need be
180075 ----------------------------------------------------------------
180076 --
180077 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
180078
180079
180080 -----------------------------------------------
180081 -- No accrual reversal for the event class/type
180082 -----------------------------------------------
180083 ----------------------------------------------------------------
180084
180085 --
180086 -- this ends the header loop iteration for one bulk fetch
180087 --
180088 END LOOP;
180089
180090 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
180091 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
180092
180093 --
180094 -- insert dummy rows into lines gt table that were created due to
180095 -- transaction reversals
180096 --
180097 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
180098 l_result := XLA_AE_LINES_PKG.InsertLines;
180099 END IF;
180100
180101 --
180102 -- reset the temp_line_num for each set of events fetched from header
180103 -- cursor rather than doing it for each new event in line cursor
180104 -- Bug 3939231
180105 --
180106 xla_ae_lines_pkg.g_temp_line_num := 0;
180107
180108
180109
180110 --
180111 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
180112 --
180113 --
180114 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180115
180116 trace
180117 (p_msg => 'SQL - FETCH line_cur'
180118 ,p_level => C_LEVEL_STATEMENT
180119 ,p_module => l_log_module);
180120
180121 END IF;
180122 --
180123 --
180124 LOOP
180125 --
180126 FETCH line_cur BULK COLLECT INTO
180127 l_array_entity_id
180128 , l_array_legal_entity_id
180129 , l_array_entity_code
180130 , l_array_transaction_num
180131 , l_array_event_id
180132 , l_array_class_code
180133 , l_array_event_type
180134 , l_array_event_number
180135 , l_array_event_date
180136 , l_array_transaction_date
180137 , l_array_reference_num_1
180138 , l_array_reference_num_2
180139 , l_array_reference_num_3
180140 , l_array_reference_num_4
180141 , l_array_reference_char_1
180142 , l_array_reference_char_2
180143 , l_array_reference_char_3
180144 , l_array_reference_char_4
180145 , l_array_reference_date_1
180146 , l_array_reference_date_2
180147 , l_array_reference_date_3
180148 , l_array_reference_date_4
180149 , l_array_event_created_by
180153 , l_array_source_2
180150 , l_array_budgetary_control_flag
180151 , l_array_extract_line_num
180152 , l_array_source_1
180154 , l_array_source_3
180155 , l_array_source_5
180156 , l_array_source_11
180157 LIMIT l_rows;
180158
180159 --
180160 IF (C_LEVEL_EVENT >= g_log_level) THEN
180161 trace
180162 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
180163 ,p_level => C_LEVEL_EVENT
180164 ,p_module => l_log_module);
180165 END IF;
180166 --
180167 EXIT WHEN l_array_entity_id.count = 0;
180168
180169 XLA_AE_LINES_PKG.g_rec_lines := null;
180170
180171 --
180172 -- Bug 4458708
180173 --
180174 XLA_AE_LINES_PKG.g_LineNumber := 0;
180175 --
180176 --
180177
180178 FOR Idx IN 1..l_array_event_id.count LOOP
180179 --
180180 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
180181 --
180182 l_event_id := l_array_event_id(idx); -- 5648433
180183
180184 --
180185 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
180186 --
180187
180188 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
180189 (g_array_event(l_event_id).array_value_num('header_index'))
180190 ,'N'
180191 ) <> 'Y'
180192 THEN
180193 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180194 trace
180195 (p_msg => 'Trancaction revesal option is not Y '
180196 ,p_level => C_LEVEL_STATEMENT
180197 ,p_module => l_log_module);
180198 END IF;
180199
180200 --
180201 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
180202 --
180203 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
180204 --
180205 -- set event info as cache for other routines to refer event attributes
180206 --
180207
180208 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
180209 l_previous_event_id := l_event_id;
180210
180211 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
180212 (p_application_id => p_application_id
180213 ,p_primary_ledger_id => p_primary_ledger_id
180214 ,p_base_ledger_id => p_base_ledger_id
180215 ,p_target_ledger_id => p_target_ledger_id
180216 ,p_entity_id => l_array_entity_id(Idx)
180217 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
180218 ,p_entity_code => l_array_entity_code(Idx)
180219 ,p_transaction_num => l_array_transaction_num(Idx)
180220 ,p_event_id => l_array_event_id(Idx)
180221 ,p_event_class_code => l_array_class_code(Idx)
180222 ,p_event_type_code => l_array_event_type(Idx)
180223 ,p_event_number => l_array_event_number(Idx)
180224 ,p_event_date => l_array_event_date(Idx)
180225 ,p_transaction_date => l_array_transaction_date(Idx)
180226 ,p_reference_num_1 => l_array_reference_num_1(Idx)
180227 ,p_reference_num_2 => l_array_reference_num_2(Idx)
180228 ,p_reference_num_3 => l_array_reference_num_3(Idx)
180229 ,p_reference_num_4 => l_array_reference_num_4(Idx)
180230 ,p_reference_char_1 => l_array_reference_char_1(Idx)
180231 ,p_reference_char_2 => l_array_reference_char_2(Idx)
180232 ,p_reference_char_3 => l_array_reference_char_3(Idx)
180233 ,p_reference_char_4 => l_array_reference_char_4(Idx)
180234 ,p_reference_date_1 => l_array_reference_date_1(Idx)
180235 ,p_reference_date_2 => l_array_reference_date_2(Idx)
180236 ,p_reference_date_3 => l_array_reference_date_3(Idx)
180237 ,p_reference_date_4 => l_array_reference_date_4(Idx)
180238 ,p_event_created_by => l_array_event_created_by(Idx)
180239 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
180240 --
180241 END IF;
180242
180243
180244
180245 --
180246 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
180247
180248 l_acct_reversal_source := SUBSTR(NULL, 1,30);
180249
180250 IF l_continue_with_lines THEN
180251 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
180252 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
180253
180254 xla_accounting_err_pkg.build_message
180255 (p_appli_s_name => 'XLA'
180256 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
180257 ,p_token_1 => 'LINE_NUMBER'
180258 ,p_value_1 => l_array_extract_line_num(Idx)
180259 ,p_token_2 => 'PRODUCT_NAME'
180260 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180261 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
180262 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
180263 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
180264
180265 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
180266 --
180267 -- following sets the accounting attributes needed to reverse
180268 -- accounting for a distributeion
180269 --
180270
180271 --
180272 -- 5217187
180273 --
180274 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
180275 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
180276 g_array_event(l_event_id).array_value_num('header_index'));
180277 --
180278 --
180279
180280 -- No reversal code generated
180281
180282 xla_ae_lines_pkg.SetAcctReversalAttrs
180286 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
180283 (p_event_id => l_event_id
180284 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
180285 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180287 END IF;
180288
180289 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
180290 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
180291
180292 --
180293 AcctLineType_51 (
180294 p_application_id => p_application_id
180295 ,p_event_id => l_event_id
180296 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180297 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180298 ,p_actual_flag => l_actual_flag
180299 ,p_balance_type_code => l_balance_type_code
180300 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180301
180302 , p_source_1 => l_array_source_1(Idx)
180303 , p_source_2 => l_array_source_2(Idx)
180304 , p_source_3 => l_array_source_3(Idx)
180305 , p_source_5 => l_array_source_5(Idx)
180306 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
180307 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
180308 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
180309 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
180310 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
180311 , p_source_11 => l_array_source_11(Idx)
180312 );
180313 If(l_balance_type_code = 'A') THEN
180314 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180315 END IF;
180316
180317 --
180318
180319
180320 --
180321 AcctLineType_233 (
180322 p_application_id => p_application_id
180323 ,p_event_id => l_event_id
180324 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180325 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180326 ,p_actual_flag => l_actual_flag
180327 ,p_balance_type_code => l_balance_type_code
180328 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180329
180330 , p_source_1 => l_array_source_1(Idx)
180331 , p_source_2 => l_array_source_2(Idx)
180332 , p_source_3 => l_array_source_3(Idx)
180333 , p_source_5 => l_array_source_5(Idx)
180334 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
180335 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
180336 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
180337 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
180338 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
180339 , p_source_11 => l_array_source_11(Idx)
180340 );
180341 If(l_balance_type_code = 'A') THEN
180342 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180343 END IF;
180344
180345 --
180346
180347 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
180348 -- or secondary ledger that has different currency with primary
180349 -- or alc that is calculated by sla
180350 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
180351 (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'))
180352
180353 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
180354 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
180355 AND (l_actual_flag = 'A')) THEN
180356 XLA_AE_LINES_PKG.CreateGainOrLossLines(
180357 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
180358 ,p_application_id => p_application_id
180359 ,p_amb_context_code => 'DEFAULT'
180360 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
180361 ,p_event_class_code => C_EVENT_CLASS_CODE
180362 ,p_event_type_code => C_EVENT_TYPE_CODE
180363
180364 ,p_gain_ccid => -1
180365 ,p_loss_ccid => -1
180366
180367 ,p_actual_flag => l_actual_flag
180368 ,p_enc_flag => null
180369 ,p_actual_g_l_ref => l_actual_gain_loss_ref
180370 ,p_enc_g_l_ref => null
180371 );
180372 END IF;
180373 END IF;
180374 END IF;
180375
180376 ELSE
180377 --
180378 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
180379 --
180380 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180381 trace
180382 (p_msg => 'Trancaction revesal option is Y'
180383 ,p_level => C_LEVEL_STATEMENT
180384 ,p_module => l_log_module);
180385 END IF;
180386 END IF;
180387
180388 END LOOP;
180389 l_result := XLA_AE_LINES_PKG.InsertLines ;
180390 end loop;
180391 close line_cur;
180392
180393
180394 --
180395 -- insert headers into xla_ae_headers_gt table
180396 --
180397 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
180398
180399 -- insert into errors table here.
180400
180401 END LOOP;
180402
180403 --
180404 -- 4865292
180405 --
180406 -- Compare g_hdr_extract_count with event count in
180407 -- CreateHeadersAndLines.
180408 --
180409 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
180410
180411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180412 trace (p_msg => '# rows extracted from header extract objects '
180413 || ' (running total): '
180414 || g_hdr_extract_count
180415 ,p_level => C_LEVEL_STATEMENT
180416 ,p_module => l_log_module);
180417 END IF;
180418
180419 CLOSE header_cur;
180420 --
180421
180422 --
180423 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180424 trace
180425 (p_msg => 'END of EventType_297'
180426 ,p_level => C_LEVEL_PROCEDURE
180427 ,p_module => l_log_module);
180428 END IF;
180432 WHEN xla_exceptions_pkg.application_exception THEN
180429 --
180430 RETURN l_result;
180431 EXCEPTION
180433
180434 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
180435
180436
180437 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
180438
180439 RAISE;
180440
180441 WHEN NO_DATA_FOUND THEN
180442
180443 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
180444 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
180445
180446 FOR header_record IN header_cur
180447 LOOP
180448 l_array_header_events(header_record.event_id) := header_record.event_id;
180449 END LOOP;
180450
180451 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
180452 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
180453
180454 fnd_file.put_line(fnd_file.LOG, ' ');
180455 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
180456 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
180457 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
180458
180459 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
180460 LOOP
180461 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
180462 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
180463 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
180464 END IF;
180465 END LOOP;
180466
180467 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
180468 fnd_file.put_line(fnd_file.LOG, ' ');
180469
180470
180471 xla_exceptions_pkg.raise_message
180472 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_297');
180473
180474
180475 WHEN OTHERS THEN
180476 xla_exceptions_pkg.raise_message
180477 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_297');
180478 END EventType_297;
180479 --
180480
180481 ---------------------------------------
180482 --
180483 -- PRIVATE PROCEDURE
180484 -- insert_sources_298
180485 --
180486 ----------------------------------------
180487 --
180488 PROCEDURE insert_sources_298(
180489 p_target_ledger_id IN NUMBER
180490 , p_language IN VARCHAR2
180491 , p_sla_ledger_id IN NUMBER
180492 , p_pad_start_date IN DATE
180493 , p_pad_end_date IN DATE
180494 )
180495 IS
180496
180497 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RET_TO_RECEIVING';
180498 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
180499 p_apps_owner VARCHAR2(30);
180500 l_log_module VARCHAR2(240);
180501 BEGIN
180502 IF g_log_enabled THEN
180503 l_log_module := C_DEFAULT_MODULE||'.insert_sources_298';
180504 END IF;
180505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180506
180507 trace
180508 (p_msg => 'BEGIN of insert_sources_298'
180509 ,p_level => C_LEVEL_PROCEDURE
180510 ,p_module => l_log_module);
180511
180512 END IF;
180513
180514 -- select APPS owner
180515 SELECT oracle_username
180516 INTO p_apps_owner
180517 FROM fnd_oracle_userid
180518 WHERE read_only_flag = 'U'
180519 ;
180520
180521 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180522 trace
180523 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
180524 ' - p_language = '||p_language||
180525 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
180526 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
180527 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
180528 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
180529 ,p_level => C_LEVEL_STATEMENT
180530 ,p_module => l_log_module);
180531 END IF;
180532
180533
180534 --
180535 INSERT INTO xla_diag_sources --hdr1
180536 (
180537 event_id
180538 , ledger_id
180539 , sla_ledger_id
180540 , description_language
180541 , object_name
180542 , object_type_code
180543 , line_number
180544 , source_application_id
180545 , source_type_code
180546 , source_code
180547 , source_value
180548 , source_meaning
180549 , created_by
180550 , creation_date
180551 , last_update_date
180552 , last_updated_by
180553 , last_update_login
180554 , program_update_date
180555 , program_application_id
180556 , program_id
180557 , request_id
180558 )
180559 SELECT
180560 event_id
180561 , p_target_ledger_id
180562 , p_sla_ledger_id
180563 , p_language
180564 , object_name
180565 , object_type_code
180566 , line_number
180567 , source_application_id
180568 , source_type_code
180569 , source_code
180570 , SUBSTR(source_value ,1,1996)
180571 , SUBSTR(source_meaning,1,200)
180572 , xla_environment_pkg.g_Usr_Id
180573 , TRUNC(SYSDATE)
180574 , TRUNC(SYSDATE)
180575 , xla_environment_pkg.g_Usr_Id
180576 , xla_environment_pkg.g_Login_Id
180577 , TRUNC(SYSDATE)
180578 , xla_environment_pkg.g_Prog_Appl_Id
180579 , xla_environment_pkg.g_Prog_Id
180580 , xla_environment_pkg.g_Req_Id
180581 FROM (
180582 SELECT xet.event_id event_id
180583 , 0 line_number
180584 , CASE r
180588 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
180585 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
180586 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
180587 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
180589 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
180590 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
180591
180592 ELSE null
180593 END object_name
180594 , CASE r
180595 WHEN 1 THEN 'HEADER'
180596 WHEN 2 THEN 'HEADER'
180597 WHEN 3 THEN 'HEADER'
180598 WHEN 4 THEN 'HEADER'
180599 WHEN 5 THEN 'HEADER'
180600 WHEN 6 THEN 'HEADER'
180601
180602 ELSE null
180603 END object_type_code
180604 , CASE r
180605 WHEN 1 THEN '555'
180606 WHEN 2 THEN '555'
180607 WHEN 3 THEN '555'
180608 WHEN 4 THEN '555'
180609 WHEN 5 THEN '555'
180610 WHEN 6 THEN '555'
180611
180612 ELSE null
180613 END source_application_id
180614 , 'S' source_type_code
180615 , CASE r
180616 WHEN 1 THEN 'ENTITY_CODE'
180617 WHEN 2 THEN 'CURRENCY_CODE'
180618 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
180619 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
180620 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
180621 WHEN 6 THEN 'TRANSACTION_DATE'
180622
180623 ELSE null
180624 END source_code
180625 , CASE r
180626 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
180627 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
180628 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
180629 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
180630 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
180631 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
180632
180633 ELSE null
180634 END source_value
180635 , CASE r
180636 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
180637 1010186
180638 ,TO_CHAR(h1.CURRENCY_CODE)
180639 ,'CURRENCY_CODE'
180640 ,'S'
180641 ,555)
180642
180643 ELSE null
180644 END source_meaning
180645 FROM xla_events_gt xet
180646 , GMF_XLA_EXTRACT_HEADERS h1
180647 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
180648 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
180649 AND xet.event_type_code = C_EVENT_TYPE_CODE
180650 AND h1.event_id = xet.event_id
180651
180652 )
180653 ;
180654 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180655
180656 trace
180657 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
180658 ,p_level => C_LEVEL_STATEMENT
180659 ,p_module => l_log_module);
180660
180661 END IF;
180662 --
180663
180664
180665
180666 --
180667 INSERT INTO xla_diag_sources --line1
180668 (
180669 event_id
180670 , ledger_id
180671 , sla_ledger_id
180672 , description_language
180673 , object_name
180674 , object_type_code
180675 , line_number
180676 , source_application_id
180677 , source_type_code
180678 , source_code
180679 , source_value
180680 , source_meaning
180681 , created_by
180682 , creation_date
180683 , last_update_date
180684 , last_updated_by
180685 , last_update_login
180686 , program_update_date
180687 , program_application_id
180688 , program_id
180689 , request_id
180690 )
180691 SELECT event_id
180692 , p_target_ledger_id
180693 , p_sla_ledger_id
180694 , p_language
180695 , object_name
180696 , object_type_code
180697 , line_number
180698 , source_application_id
180699 , source_type_code
180700 , source_code
180701 , SUBSTR(source_value,1,1996)
180702 , SUBSTR(source_meaning,1,200)
180703 , xla_environment_pkg.g_Usr_Id
180704 , TRUNC(SYSDATE)
180705 , TRUNC(SYSDATE)
180706 , xla_environment_pkg.g_Usr_Id
180707 , xla_environment_pkg.g_Login_Id
180708 , TRUNC(SYSDATE)
180709 , xla_environment_pkg.g_Prog_Appl_Id
180710 , xla_environment_pkg.g_Prog_Id
180711 , xla_environment_pkg.g_Req_Id
180712 FROM (
180713 SELECT xet.event_id event_id
180714 , l2.line_number line_number
180715 , CASE r
180716 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
180717 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
180718 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
180719 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
180720 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
180721
180722 ELSE null
180723 END object_name
180724 , CASE r
180725 WHEN 1 THEN 'LINE'
180726 WHEN 2 THEN 'LINE'
180727 WHEN 3 THEN 'LINE'
180728 WHEN 4 THEN 'LINE'
180729 WHEN 5 THEN 'LINE'
180730
180731 ELSE null
180735 WHEN 2 THEN '555'
180732 END object_type_code
180733 , CASE r
180734 WHEN 1 THEN '555'
180736 WHEN 3 THEN '555'
180737 WHEN 4 THEN '555'
180738 WHEN 5 THEN '555'
180739
180740 ELSE null
180741 END source_application_id
180742 , 'S' source_type_code
180743 , CASE r
180744 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
180745 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
180746 WHEN 3 THEN 'ENTERED_AMOUNT'
180747 WHEN 4 THEN 'LINE_ID'
180748 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
180749
180750 ELSE null
180751 END source_code
180752 , CASE r
180753 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
180754 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
180755 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
180756 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
180757 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
180758
180759 ELSE null
180760 END source_value
180761 , null source_meaning
180762 FROM xla_events_gt xet
180763 , GMF_XLA_EXTRACT_LINES l2
180764 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
180765 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
180766 AND xet.event_type_code = C_EVENT_TYPE_CODE
180767 AND l2.event_id = xet.event_id
180768
180769 )
180770 ;
180771 --
180772 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180773
180774 trace
180775 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
180776 ,p_level => C_LEVEL_STATEMENT
180777 ,p_module => l_log_module);
180778
180779 END IF;
180780
180781
180782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180783 trace
180784 (p_msg => 'END of insert_sources_298'
180785 ,p_level => C_LEVEL_PROCEDURE
180786 ,p_module => l_log_module);
180787 END IF;
180788 EXCEPTION
180789 WHEN xla_exceptions_pkg.application_exception THEN
180790 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180791 trace
180792 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180793 ,p_level => C_LEVEL_EXCEPTION
180794 ,p_module => l_log_module);
180795 END IF;
180796 RAISE;
180797 WHEN OTHERS THEN
180798 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180799 trace
180800 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180801 ,p_level => C_LEVEL_EXCEPTION
180802 ,p_module => l_log_module);
180803 END IF;
180804 xla_exceptions_pkg.raise_message
180805 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_298');
180806 END insert_sources_298;
180807 --
180808
180809 ---------------------------------------
180810 --
180811 -- PRIVATE FUNCTION
180812 -- EventType_298
180813 --
180814 ----------------------------------------
180815 --
180816 FUNCTION EventType_298
180817 (p_application_id IN NUMBER
180818 ,p_base_ledger_id IN NUMBER
180819 ,p_target_ledger_id IN NUMBER
180820 ,p_language IN VARCHAR2
180821 ,p_currency_code IN VARCHAR2
180822 ,p_sla_ledger_id IN NUMBER
180823 ,p_pad_start_date IN DATE
180824 ,p_pad_end_date IN DATE
180825 ,p_primary_ledger_id IN NUMBER)
180826 RETURN BOOLEAN IS
180827 --
180828 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RET_TO_RECEIVING';
180829 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
180830
180831 l_calculate_acctd_flag VARCHAR2(1) :='N';
180832 l_calculate_g_l_flag VARCHAR2(1) :='N';
180833 --
180834 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180835 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180836 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180837 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180838 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180839 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180840 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180841 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180842 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180843 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180844 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180845 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180846 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180847 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180848 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180849 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180850 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180851 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180852 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180853 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180854 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180855 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180859 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
180856 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
180857 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180858 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
180860
180861 l_event_id NUMBER;
180862 l_previous_event_id NUMBER;
180863 l_first_event_id NUMBER;
180864 l_last_event_id NUMBER;
180865
180866 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
180867 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
180868 --
180869 --
180870 l_result BOOLEAN := TRUE;
180871 l_rows NUMBER := 1000;
180872 l_event_type_name VARCHAR2(80) := 'Return to Receiving from Inventory';
180873 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
180874 l_description VARCHAR2(4000);
180875 l_transaction_reversal NUMBER;
180876 l_ae_header_id NUMBER;
180877 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
180878 l_log_module VARCHAR2(240);
180879 --
180880 l_acct_reversal_source VARCHAR2(30);
180881 l_trx_reversal_source VARCHAR2(30);
180882
180883 l_continue_with_lines BOOLEAN := TRUE;
180884 --
180885 l_acc_rev_gl_date_source DATE; -- 4262811
180886 --
180887 type t_array_event_id is table of number index by binary_integer;
180888
180889 l_rec_array_event t_rec_array_event;
180890 l_null_rec_array_event t_rec_array_event;
180891 l_array_ae_header_id xla_number_array_type;
180892 l_actual_flag VARCHAR2(1) := NULL;
180893 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
180894 l_balance_type_code VARCHAR2(1) :=NULL;
180895 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
180896
180897 --
180898 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
180899 --
180900
180901 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
180902 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
180903 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
180904 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
180905 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180906 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
180907
180908 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
180909 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
180910 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180911 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
180912 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180913
180914 l_array_source_6 t_array_source_6;
180915 l_array_source_7 t_array_source_7;
180916 l_array_source_8 t_array_source_8;
180917 l_array_source_9 t_array_source_9;
180918 l_array_source_10 t_array_source_10;
180919 l_array_source_12 t_array_source_12;
180920
180921 l_array_source_1 t_array_source_1;
180922 l_array_source_2 t_array_source_2;
180923 l_array_source_3 t_array_source_3;
180924 l_array_source_5 t_array_source_5;
180925 l_array_source_11 t_array_source_11;
180926
180927 --
180928 CURSOR header_cur
180929 IS
180930 SELECT /*+ leading(xet) cardinality(xet,1) */
180931 -- Event Type Code: RET_TO_RECEIVING
180932 -- Event Class Code: DELIVER
180933 xet.entity_id
180934 , xet.legal_entity_id
180935 , xet.entity_code
180936 , xet.transaction_number
180937 , xet.event_id
180938 , xet.event_class_code
180939 , xet.event_type_code
180940 , xet.event_number
180941 , xet.event_date
180942 , xet.transaction_date
180943 , xet.reference_num_1
180944 , xet.reference_num_2
180945 , xet.reference_num_3
180946 , xet.reference_num_4
180947 , xet.reference_char_1
180948 , xet.reference_char_2
180949 , xet.reference_char_3
180950 , xet.reference_char_4
180951 , xet.reference_date_1
180952 , xet.reference_date_2
180953 , xet.reference_date_3
180954 , xet.reference_date_4
180955 , xet.event_created_by
180956 , xet.budgetary_control_flag
180957 , h1.ENTITY_CODE source_6
180958 , h1.CURRENCY_CODE source_7
180959 , h1.CURRENCY_CONVERSION_DATE source_8
180960 , h1.CURRENCY_CONVERSION_RATE source_9
180961 , h1.CURRENCY_CONVERSION_TYPE source_10
180962 , h1.TRANSACTION_DATE source_12
180963 FROM xla_events_gt xet
180964 , GMF_XLA_EXTRACT_HEADERS h1
180965 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
180966 and xet.event_type_code = C_EVENT_TYPE_CODE
180967 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
180968
180969 ORDER BY event_id
180970 ;
180971
180972
180973 --
180974 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
180975 IS
180976 SELECT /*+ leading(xet) cardinality(xet,1) */
180977 -- Event Type Code: RET_TO_RECEIVING
180978 -- Event Class Code: DELIVER
180979 xet.entity_id
180980 ,xet.legal_entity_id
180981 ,xet.entity_code
180982 ,xet.transaction_number
180983 ,xet.event_id
180984 ,xet.event_class_code
180985 ,xet.event_type_code
180986 ,xet.event_number
180990 ,xet.reference_num_2
180987 ,xet.event_date
180988 ,xet.transaction_date
180989 ,xet.reference_num_1
180991 ,xet.reference_num_3
180992 ,xet.reference_num_4
180993 ,xet.reference_char_1
180994 ,xet.reference_char_2
180995 ,xet.reference_char_3
180996 ,xet.reference_char_4
180997 ,xet.reference_date_1
180998 ,xet.reference_date_2
180999 ,xet.reference_date_3
181000 ,xet.reference_date_4
181001 ,xet.event_created_by
181002 ,xet.budgetary_control_flag , l2.LINE_NUMBER
181003 , l2.TRANSACTION_ACCOUNT_ID source_1
181004 , l2.JOURNAL_LINE_TYPE source_2
181005 , l2.ENTERED_AMOUNT source_3
181006 , l2.LINE_ID source_5
181007 , l2.ACCOUNTED_AMOUNT source_11
181008 FROM xla_events_gt xet
181009 , GMF_XLA_EXTRACT_LINES l2
181010 WHERE xet.event_id between x_first_event_id and x_last_event_id
181011 and xet.event_date between p_pad_start_date and p_pad_end_date
181012 and xet.event_type_code = C_EVENT_TYPE_CODE
181013 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
181014 ;
181015
181016 --
181017 BEGIN
181018 IF g_log_enabled THEN
181019 l_log_module := C_DEFAULT_MODULE||'.EventType_298';
181020 END IF;
181021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181022 trace
181023 (p_msg => 'BEGIN of EventType_298'
181024 ,p_level => C_LEVEL_PROCEDURE
181025 ,p_module => l_log_module);
181026 END IF;
181027
181028 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181029 trace
181030 (p_msg => 'p_application_id = '||p_application_id||
181031 ' - p_base_ledger_id = '||p_base_ledger_id||
181032 ' - p_target_ledger_id = '||p_target_ledger_id||
181033 ' - p_language = '||p_language||
181034 ' - p_currency_code = '||p_currency_code||
181035 ' - p_sla_ledger_id = '||p_sla_ledger_id
181036 ,p_level => C_LEVEL_STATEMENT
181037 ,p_module => l_log_module);
181038 END IF;
181039 --
181040 -- initialze arrays
181041 --
181042 g_array_event.DELETE;
181043 l_rec_array_event := l_null_rec_array_event;
181044 --
181045 --------------------------------------
181046 -- 4262811 Initialze MPA Line Number
181047 --------------------------------------
181048 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
181049
181050 --
181051
181052 --
181053 OPEN header_cur;
181054 --
181055 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181056 trace
181057 (p_msg => 'SQL - FETCH header_cur'
181058 ,p_level => C_LEVEL_STATEMENT
181059 ,p_module => l_log_module);
181060 END IF;
181061 --
181062 LOOP
181063 FETCH header_cur BULK COLLECT INTO
181064 l_array_entity_id
181065 , l_array_legal_entity_id
181066 , l_array_entity_code
181067 , l_array_transaction_num
181068 , l_array_event_id
181069 , l_array_class_code
181070 , l_array_event_type
181071 , l_array_event_number
181072 , l_array_event_date
181073 , l_array_transaction_date
181074 , l_array_reference_num_1
181075 , l_array_reference_num_2
181076 , l_array_reference_num_3
181077 , l_array_reference_num_4
181078 , l_array_reference_char_1
181079 , l_array_reference_char_2
181080 , l_array_reference_char_3
181081 , l_array_reference_char_4
181082 , l_array_reference_date_1
181083 , l_array_reference_date_2
181084 , l_array_reference_date_3
181085 , l_array_reference_date_4
181086 , l_array_event_created_by
181087 , l_array_budgetary_control_flag
181088 , l_array_source_6
181089 , l_array_source_7
181090 , l_array_source_8
181091 , l_array_source_9
181092 , l_array_source_10
181093 , l_array_source_12
181094 LIMIT l_rows;
181095 --
181096 IF (C_LEVEL_EVENT >= g_log_level) THEN
181097 trace
181098 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
181099 ,p_level => C_LEVEL_EVENT
181100 ,p_module => l_log_module);
181101 END IF;
181102 --
181103 EXIT WHEN l_array_entity_id.COUNT = 0;
181104
181105 -- initialize arrays
181106 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
181107 XLA_AE_LINES_PKG.g_rec_lines := NULL;
181108
181109 --
181110 -- Bug 4458708
181111 --
181112 XLA_AE_LINES_PKG.g_LineNumber := 0;
181113
181114
181115 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
181116 g_last_hdr_idx := l_array_event_id.LAST;
181117 --
181118 -- loop for the headers. Each iteration is for each header extract row
181119 -- fetched in header cursor
181120 --
181121 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
181122
181123 --
181124 -- set event info as cache for other routines to refer event attributes
181125 --
181126 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
181127 (p_application_id => p_application_id
181128 ,p_primary_ledger_id => p_primary_ledger_id
181129 ,p_base_ledger_id => p_base_ledger_id
181130 ,p_target_ledger_id => p_target_ledger_id
181131 ,p_entity_id => l_array_entity_id(hdr_idx)
181132 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
181133 ,p_entity_code => l_array_entity_code(hdr_idx)
181134 ,p_transaction_num => l_array_transaction_num(hdr_idx)
181135 ,p_event_id => l_array_event_id(hdr_idx)
181136 ,p_event_class_code => l_array_class_code(hdr_idx)
181137 ,p_event_type_code => l_array_event_type(hdr_idx)
181138 ,p_event_number => l_array_event_number(hdr_idx)
181139 ,p_event_date => l_array_event_date(hdr_idx)
181143 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
181140 ,p_transaction_date => l_array_transaction_date(hdr_idx)
181141 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
181142 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
181144 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
181145 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
181146 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
181147 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
181148 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
181149 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
181150 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
181151 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
181152 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
181153 ,p_event_created_by => l_array_event_created_by(hdr_idx)
181154 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
181155
181156 --
181157 -- set the status of entry to C_VALID (0)
181158 --
181159 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
181160
181161 --
181162 -- initialize a row for ae header
181163 --
181164 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
181165
181166 l_event_id := l_array_event_id(hdr_idx);
181167
181168 --
181169 -- storing the hdr_idx for event. May be used by line cursor.
181170 --
181171 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
181172
181173 --
181174 -- store sources from header extract. This can be improved to
181175 -- store only those sources from header extract that may be used in lines
181176 --
181177
181178 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
181179 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
181180 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
181181 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
181182 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
181183 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
181184
181185 --
181186 -- initilaize the status of ae headers for diffrent balance types
181187 -- the status is initialised to C_NOT_CREATED (2)
181188 --
181189 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181190 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181191 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
181192
181193 --
181194 -- call api to validate and store accounting attributes for header
181195 --
181196
181197 ------------------------------------------------------------
181198 -- Accrual Reversal : to get date for Standard Source (NONE)
181199 ------------------------------------------------------------
181200 l_acc_rev_gl_date_source := NULL;
181201
181202 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
181203 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
181204
181205
181206 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
181207
181208 XLA_AE_HEADER_PKG.SetJeCategoryName;
181209
181210 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
181211 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
181212 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
181213 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
181214 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
181215
181216
181217 -- No header level analytical criteria
181218
181219 --
181220 --accounting attribute enhancement, bug 3612931
181221 --
181222 l_trx_reversal_source := SUBSTR(NULL, 1,30);
181223
181224 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
181225 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
181226
181227 xla_accounting_err_pkg.build_message
181228 (p_appli_s_name => 'XLA'
181229 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
181230 ,p_token_1 => 'ACCT_ATTR_NAME'
181231 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
181232 ,p_token_2 => 'PRODUCT_NAME'
181233 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
181234 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181235 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
181236 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181237
181238 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
181239 --
181240 -- following sets the accounting attributes needed to reverse
181241 -- accounting for a distributeion
181242 --
181243 xla_ae_lines_pkg.SetTrxReversalAttrs
181244 (p_event_id => l_event_id
181245 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
181246 ,p_trx_reversal_source => l_trx_reversal_source);
181247
181248 END IF;
181249
181250
181251 ----------------------------------------------------------------
181252 -- 4262811 - update the header statuses to invalid in need be
181253 ----------------------------------------------------------------
181254 --
181255 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
181256
181257
181258 -----------------------------------------------
181259 -- No accrual reversal for the event class/type
181263 --
181260 -----------------------------------------------
181261 ----------------------------------------------------------------
181262
181264 -- this ends the header loop iteration for one bulk fetch
181265 --
181266 END LOOP;
181267
181268 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
181269 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
181270
181271 --
181272 -- insert dummy rows into lines gt table that were created due to
181273 -- transaction reversals
181274 --
181275 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
181276 l_result := XLA_AE_LINES_PKG.InsertLines;
181277 END IF;
181278
181279 --
181280 -- reset the temp_line_num for each set of events fetched from header
181281 -- cursor rather than doing it for each new event in line cursor
181282 -- Bug 3939231
181283 --
181284 xla_ae_lines_pkg.g_temp_line_num := 0;
181285
181286
181287
181288 --
181289 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
181290 --
181291 --
181292 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181293
181294 trace
181295 (p_msg => 'SQL - FETCH line_cur'
181296 ,p_level => C_LEVEL_STATEMENT
181297 ,p_module => l_log_module);
181298
181299 END IF;
181300 --
181301 --
181302 LOOP
181303 --
181304 FETCH line_cur BULK COLLECT INTO
181305 l_array_entity_id
181306 , l_array_legal_entity_id
181307 , l_array_entity_code
181308 , l_array_transaction_num
181309 , l_array_event_id
181310 , l_array_class_code
181311 , l_array_event_type
181312 , l_array_event_number
181313 , l_array_event_date
181314 , l_array_transaction_date
181315 , l_array_reference_num_1
181316 , l_array_reference_num_2
181317 , l_array_reference_num_3
181318 , l_array_reference_num_4
181319 , l_array_reference_char_1
181320 , l_array_reference_char_2
181321 , l_array_reference_char_3
181322 , l_array_reference_char_4
181323 , l_array_reference_date_1
181324 , l_array_reference_date_2
181325 , l_array_reference_date_3
181326 , l_array_reference_date_4
181327 , l_array_event_created_by
181328 , l_array_budgetary_control_flag
181329 , l_array_extract_line_num
181330 , l_array_source_1
181331 , l_array_source_2
181332 , l_array_source_3
181333 , l_array_source_5
181334 , l_array_source_11
181335 LIMIT l_rows;
181336
181337 --
181338 IF (C_LEVEL_EVENT >= g_log_level) THEN
181339 trace
181340 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
181341 ,p_level => C_LEVEL_EVENT
181342 ,p_module => l_log_module);
181343 END IF;
181344 --
181345 EXIT WHEN l_array_entity_id.count = 0;
181346
181347 XLA_AE_LINES_PKG.g_rec_lines := null;
181348
181349 --
181350 -- Bug 4458708
181351 --
181352 XLA_AE_LINES_PKG.g_LineNumber := 0;
181353 --
181354 --
181355
181356 FOR Idx IN 1..l_array_event_id.count LOOP
181357 --
181358 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
181359 --
181360 l_event_id := l_array_event_id(idx); -- 5648433
181361
181362 --
181363 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181364 --
181365
181366 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
181367 (g_array_event(l_event_id).array_value_num('header_index'))
181368 ,'N'
181369 ) <> 'Y'
181370 THEN
181371 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181372 trace
181373 (p_msg => 'Trancaction revesal option is not Y '
181374 ,p_level => C_LEVEL_STATEMENT
181375 ,p_module => l_log_module);
181376 END IF;
181377
181378 --
181379 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
181380 --
181381 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
181382 --
181383 -- set event info as cache for other routines to refer event attributes
181384 --
181385
181386 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
181387 l_previous_event_id := l_event_id;
181388
181389 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
181390 (p_application_id => p_application_id
181391 ,p_primary_ledger_id => p_primary_ledger_id
181392 ,p_base_ledger_id => p_base_ledger_id
181393 ,p_target_ledger_id => p_target_ledger_id
181394 ,p_entity_id => l_array_entity_id(Idx)
181395 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
181396 ,p_entity_code => l_array_entity_code(Idx)
181397 ,p_transaction_num => l_array_transaction_num(Idx)
181398 ,p_event_id => l_array_event_id(Idx)
181399 ,p_event_class_code => l_array_class_code(Idx)
181400 ,p_event_type_code => l_array_event_type(Idx)
181401 ,p_event_number => l_array_event_number(Idx)
181402 ,p_event_date => l_array_event_date(Idx)
181403 ,p_transaction_date => l_array_transaction_date(Idx)
181404 ,p_reference_num_1 => l_array_reference_num_1(Idx)
181405 ,p_reference_num_2 => l_array_reference_num_2(Idx)
181406 ,p_reference_num_3 => l_array_reference_num_3(Idx)
181407 ,p_reference_num_4 => l_array_reference_num_4(Idx)
181408 ,p_reference_char_1 => l_array_reference_char_1(Idx)
181409 ,p_reference_char_2 => l_array_reference_char_2(Idx)
181410 ,p_reference_char_3 => l_array_reference_char_3(Idx)
181414 ,p_reference_date_3 => l_array_reference_date_3(Idx)
181411 ,p_reference_char_4 => l_array_reference_char_4(Idx)
181412 ,p_reference_date_1 => l_array_reference_date_1(Idx)
181413 ,p_reference_date_2 => l_array_reference_date_2(Idx)
181415 ,p_reference_date_4 => l_array_reference_date_4(Idx)
181416 ,p_event_created_by => l_array_event_created_by(Idx)
181417 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
181418 --
181419 END IF;
181420
181421
181422
181423 --
181424 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
181425
181426 l_acct_reversal_source := SUBSTR(NULL, 1,30);
181427
181428 IF l_continue_with_lines THEN
181429 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
181430 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
181431
181432 xla_accounting_err_pkg.build_message
181433 (p_appli_s_name => 'XLA'
181434 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
181435 ,p_token_1 => 'LINE_NUMBER'
181436 ,p_value_1 => l_array_extract_line_num(Idx)
181437 ,p_token_2 => 'PRODUCT_NAME'
181438 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
181439 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181440 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
181441 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181442
181443 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
181444 --
181445 -- following sets the accounting attributes needed to reverse
181446 -- accounting for a distributeion
181447 --
181448
181449 --
181450 -- 5217187
181451 --
181452 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
181453 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
181454 g_array_event(l_event_id).array_value_num('header_index'));
181455 --
181456 --
181457
181458 -- No reversal code generated
181459
181460 xla_ae_lines_pkg.SetAcctReversalAttrs
181461 (p_event_id => l_event_id
181462 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
181463 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181464 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
181465 END IF;
181466
181467 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
181468 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
181469
181470 --
181471 AcctLineType_42 (
181472 p_application_id => p_application_id
181473 ,p_event_id => l_event_id
181474 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181475 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181476 ,p_actual_flag => l_actual_flag
181477 ,p_balance_type_code => l_balance_type_code
181478 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181479
181480 , p_source_1 => l_array_source_1(Idx)
181481 , p_source_2 => l_array_source_2(Idx)
181482 , p_source_3 => l_array_source_3(Idx)
181483 , p_source_5 => l_array_source_5(Idx)
181484 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181485 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181486 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181487 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181488 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181489 , p_source_11 => l_array_source_11(Idx)
181490 );
181491 If(l_balance_type_code = 'A') THEN
181492 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181493 END IF;
181494
181495 --
181496
181497
181498 --
181499 AcctLineType_56 (
181500 p_application_id => p_application_id
181501 ,p_event_id => l_event_id
181502 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181503 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181504 ,p_actual_flag => l_actual_flag
181505 ,p_balance_type_code => l_balance_type_code
181506 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181507
181508 , p_source_1 => l_array_source_1(Idx)
181509 , p_source_2 => l_array_source_2(Idx)
181510 , p_source_3 => l_array_source_3(Idx)
181511 , p_source_5 => l_array_source_5(Idx)
181512 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181513 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181514 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181515 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181516 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181517 , p_source_11 => l_array_source_11(Idx)
181518 );
181519 If(l_balance_type_code = 'A') THEN
181520 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181521 END IF;
181522
181523 --
181524
181525
181526 --
181527 AcctLineType_103 (
181528 p_application_id => p_application_id
181529 ,p_event_id => l_event_id
181530 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181531 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181532 ,p_actual_flag => l_actual_flag
181533 ,p_balance_type_code => l_balance_type_code
181534 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181535
181536 , p_source_1 => l_array_source_1(Idx)
181537 , p_source_2 => l_array_source_2(Idx)
181538 , p_source_3 => l_array_source_3(Idx)
181539 , p_source_5 => l_array_source_5(Idx)
181540 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181541 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181542 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181543 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181547 If(l_balance_type_code = 'A') THEN
181544 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181545 , p_source_11 => l_array_source_11(Idx)
181546 );
181548 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181549 END IF;
181550
181551 --
181552
181553
181554 --
181555 AcctLineType_139 (
181556 p_application_id => p_application_id
181557 ,p_event_id => l_event_id
181558 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181559 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181560 ,p_actual_flag => l_actual_flag
181561 ,p_balance_type_code => l_balance_type_code
181562 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181563
181564 , p_source_1 => l_array_source_1(Idx)
181565 , p_source_2 => l_array_source_2(Idx)
181566 , p_source_3 => l_array_source_3(Idx)
181567 , p_source_5 => l_array_source_5(Idx)
181568 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181569 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181570 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181571 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181572 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181573 , p_source_11 => l_array_source_11(Idx)
181574 );
181575 If(l_balance_type_code = 'A') THEN
181576 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181577 END IF;
181578
181579 --
181580
181581
181582 --
181583 AcctLineType_195 (
181584 p_application_id => p_application_id
181585 ,p_event_id => l_event_id
181586 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181587 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181588 ,p_actual_flag => l_actual_flag
181589 ,p_balance_type_code => l_balance_type_code
181590 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181591
181592 , p_source_1 => l_array_source_1(Idx)
181593 , p_source_2 => l_array_source_2(Idx)
181594 , p_source_3 => l_array_source_3(Idx)
181595 , p_source_5 => l_array_source_5(Idx)
181596 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181597 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181598 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181599 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181600 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181601 , p_source_11 => l_array_source_11(Idx)
181602 );
181603 If(l_balance_type_code = 'A') THEN
181604 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181605 END IF;
181606
181607 --
181608
181609
181610 --
181611 AcctLineType_219 (
181612 p_application_id => p_application_id
181613 ,p_event_id => l_event_id
181614 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181615 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181616 ,p_actual_flag => l_actual_flag
181617 ,p_balance_type_code => l_balance_type_code
181618 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181619
181620 , p_source_1 => l_array_source_1(Idx)
181621 , p_source_2 => l_array_source_2(Idx)
181622 , p_source_3 => l_array_source_3(Idx)
181623 , p_source_5 => l_array_source_5(Idx)
181624 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
181625 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
181626 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
181627 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
181628 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
181629 , p_source_11 => l_array_source_11(Idx)
181630 );
181631 If(l_balance_type_code = 'A') THEN
181632 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181633 END IF;
181634
181635 --
181636
181637 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
181638 -- or secondary ledger that has different currency with primary
181639 -- or alc that is calculated by sla
181640 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
181641 (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'))
181642
181643 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
181644 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
181645 AND (l_actual_flag = 'A')) THEN
181646 XLA_AE_LINES_PKG.CreateGainOrLossLines(
181647 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
181648 ,p_application_id => p_application_id
181649 ,p_amb_context_code => 'DEFAULT'
181650 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
181651 ,p_event_class_code => C_EVENT_CLASS_CODE
181652 ,p_event_type_code => C_EVENT_TYPE_CODE
181653
181654 ,p_gain_ccid => -1
181655 ,p_loss_ccid => -1
181656
181657 ,p_actual_flag => l_actual_flag
181658 ,p_enc_flag => null
181659 ,p_actual_g_l_ref => l_actual_gain_loss_ref
181660 ,p_enc_g_l_ref => null
181661 );
181662 END IF;
181663 END IF;
181664 END IF;
181665
181666 ELSE
181667 --
181668 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181669 --
181670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181671 trace
181672 (p_msg => 'Trancaction revesal option is Y'
181673 ,p_level => C_LEVEL_STATEMENT
181674 ,p_module => l_log_module);
181675 END IF;
181676 END IF;
181677
181678 END LOOP;
181679 l_result := XLA_AE_LINES_PKG.InsertLines ;
181680 end loop;
181681 close line_cur;
181682
181683
181684 --
181688
181685 -- insert headers into xla_ae_headers_gt table
181686 --
181687 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
181689 -- insert into errors table here.
181690
181691 END LOOP;
181692
181693 --
181694 -- 4865292
181695 --
181696 -- Compare g_hdr_extract_count with event count in
181697 -- CreateHeadersAndLines.
181698 --
181699 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
181700
181701 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181702 trace (p_msg => '# rows extracted from header extract objects '
181703 || ' (running total): '
181704 || g_hdr_extract_count
181705 ,p_level => C_LEVEL_STATEMENT
181706 ,p_module => l_log_module);
181707 END IF;
181708
181709 CLOSE header_cur;
181710 --
181711
181712 --
181713 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181714 trace
181715 (p_msg => 'END of EventType_298'
181716 ,p_level => C_LEVEL_PROCEDURE
181717 ,p_module => l_log_module);
181718 END IF;
181719 --
181720 RETURN l_result;
181721 EXCEPTION
181722 WHEN xla_exceptions_pkg.application_exception THEN
181723
181724 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181725
181726
181727 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
181728
181729 RAISE;
181730
181731 WHEN NO_DATA_FOUND THEN
181732
181733 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181734 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
181735
181736 FOR header_record IN header_cur
181737 LOOP
181738 l_array_header_events(header_record.event_id) := header_record.event_id;
181739 END LOOP;
181740
181741 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
181742 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
181743
181744 fnd_file.put_line(fnd_file.LOG, ' ');
181745 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181746 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
181747 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
181748
181749 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
181750 LOOP
181751 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
181752 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
181753 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
181754 END IF;
181755 END LOOP;
181756
181757 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181758 fnd_file.put_line(fnd_file.LOG, ' ');
181759
181760
181761 xla_exceptions_pkg.raise_message
181762 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_298');
181763
181764
181765 WHEN OTHERS THEN
181766 xla_exceptions_pkg.raise_message
181767 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_298');
181768 END EventType_298;
181769 --
181770
181771 ---------------------------------------
181772 --
181773 -- PRIVATE PROCEDURE
181774 -- insert_sources_299
181775 --
181776 ----------------------------------------
181777 --
181778 PROCEDURE insert_sources_299(
181779 p_target_ledger_id IN NUMBER
181780 , p_language IN VARCHAR2
181781 , p_sla_ledger_id IN NUMBER
181782 , p_pad_start_date IN DATE
181783 , p_pad_end_date IN DATE
181784 )
181785 IS
181786
181787 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RET_TO_VENDOR';
181788 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
181789 p_apps_owner VARCHAR2(30);
181790 l_log_module VARCHAR2(240);
181791 BEGIN
181792 IF g_log_enabled THEN
181793 l_log_module := C_DEFAULT_MODULE||'.insert_sources_299';
181794 END IF;
181795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181796
181797 trace
181798 (p_msg => 'BEGIN of insert_sources_299'
181799 ,p_level => C_LEVEL_PROCEDURE
181800 ,p_module => l_log_module);
181801
181802 END IF;
181803
181804 -- select APPS owner
181805 SELECT oracle_username
181806 INTO p_apps_owner
181807 FROM fnd_oracle_userid
181808 WHERE read_only_flag = 'U'
181809 ;
181810
181811 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181812 trace
181813 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
181814 ' - p_language = '||p_language||
181815 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
181816 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
181817 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
181818 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
181819 ,p_level => C_LEVEL_STATEMENT
181820 ,p_module => l_log_module);
181821 END IF;
181822
181823
181824 --
181825 INSERT INTO xla_diag_sources --hdr1
181826 (
181827 event_id
181828 , ledger_id
181829 , sla_ledger_id
181830 , description_language
181831 , object_name
181832 , object_type_code
181833 , line_number
181834 , source_application_id
181835 , source_type_code
181836 , source_code
181837 , source_value
181838 , source_meaning
181839 , created_by
181840 , creation_date
181841 , last_update_date
181842 , last_updated_by
181843 , last_update_login
181847 , request_id
181844 , program_update_date
181845 , program_application_id
181846 , program_id
181848 )
181849 SELECT
181850 event_id
181851 , p_target_ledger_id
181852 , p_sla_ledger_id
181853 , p_language
181854 , object_name
181855 , object_type_code
181856 , line_number
181857 , source_application_id
181858 , source_type_code
181859 , source_code
181860 , SUBSTR(source_value ,1,1996)
181861 , SUBSTR(source_meaning,1,200)
181862 , xla_environment_pkg.g_Usr_Id
181863 , TRUNC(SYSDATE)
181864 , TRUNC(SYSDATE)
181865 , xla_environment_pkg.g_Usr_Id
181866 , xla_environment_pkg.g_Login_Id
181867 , TRUNC(SYSDATE)
181868 , xla_environment_pkg.g_Prog_Appl_Id
181869 , xla_environment_pkg.g_Prog_Id
181870 , xla_environment_pkg.g_Req_Id
181871 FROM (
181872 SELECT xet.event_id event_id
181873 , 0 line_number
181874 , CASE r
181875 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
181876 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
181877 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
181878 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
181879 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
181880 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
181881
181882 ELSE null
181883 END object_name
181884 , CASE r
181885 WHEN 1 THEN 'HEADER'
181886 WHEN 2 THEN 'HEADER'
181887 WHEN 3 THEN 'HEADER'
181888 WHEN 4 THEN 'HEADER'
181889 WHEN 5 THEN 'HEADER'
181890 WHEN 6 THEN 'HEADER'
181891
181892 ELSE null
181893 END object_type_code
181894 , CASE r
181895 WHEN 1 THEN '555'
181896 WHEN 2 THEN '555'
181897 WHEN 3 THEN '555'
181898 WHEN 4 THEN '555'
181899 WHEN 5 THEN '555'
181900 WHEN 6 THEN '555'
181901
181902 ELSE null
181903 END source_application_id
181904 , 'S' source_type_code
181905 , CASE r
181906 WHEN 1 THEN 'ENTITY_CODE'
181907 WHEN 2 THEN 'CURRENCY_CODE'
181908 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
181909 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
181910 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
181911 WHEN 6 THEN 'TRANSACTION_DATE'
181912
181913 ELSE null
181914 END source_code
181915 , CASE r
181916 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
181917 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
181918 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
181919 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
181920 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
181921 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
181922
181923 ELSE null
181924 END source_value
181925 , CASE r
181926 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
181927 1010186
181928 ,TO_CHAR(h1.CURRENCY_CODE)
181929 ,'CURRENCY_CODE'
181930 ,'S'
181931 ,555)
181932
181933 ELSE null
181934 END source_meaning
181935 FROM xla_events_gt xet
181936 , GMF_XLA_EXTRACT_HEADERS h1
181937 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
181938 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181939 AND xet.event_type_code = C_EVENT_TYPE_CODE
181940 AND h1.event_id = xet.event_id
181941
181942 )
181943 ;
181944 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181945
181946 trace
181947 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
181948 ,p_level => C_LEVEL_STATEMENT
181949 ,p_module => l_log_module);
181950
181951 END IF;
181952 --
181953
181954
181955
181956 --
181957 INSERT INTO xla_diag_sources --line1
181958 (
181959 event_id
181960 , ledger_id
181961 , sla_ledger_id
181962 , description_language
181963 , object_name
181964 , object_type_code
181965 , line_number
181966 , source_application_id
181967 , source_type_code
181968 , source_code
181969 , source_value
181970 , source_meaning
181971 , created_by
181972 , creation_date
181973 , last_update_date
181974 , last_updated_by
181975 , last_update_login
181976 , program_update_date
181977 , program_application_id
181978 , program_id
181979 , request_id
181980 )
181981 SELECT event_id
181982 , p_target_ledger_id
181983 , p_sla_ledger_id
181984 , p_language
181985 , object_name
181986 , object_type_code
181987 , line_number
181988 , source_application_id
181989 , source_type_code
181990 , source_code
181991 , SUBSTR(source_value,1,1996)
181992 , SUBSTR(source_meaning,1,200)
181993 , xla_environment_pkg.g_Usr_Id
181994 , TRUNC(SYSDATE)
181995 , TRUNC(SYSDATE)
181996 , xla_environment_pkg.g_Usr_Id
182000 , xla_environment_pkg.g_Prog_Id
181997 , xla_environment_pkg.g_Login_Id
181998 , TRUNC(SYSDATE)
181999 , xla_environment_pkg.g_Prog_Appl_Id
182001 , xla_environment_pkg.g_Req_Id
182002 FROM (
182003 SELECT xet.event_id event_id
182004 , l2.line_number line_number
182005 , CASE r
182006 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
182007 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
182008 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
182009 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
182010 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
182011
182012 ELSE null
182013 END object_name
182014 , CASE r
182015 WHEN 1 THEN 'LINE'
182016 WHEN 2 THEN 'LINE'
182017 WHEN 3 THEN 'LINE'
182018 WHEN 4 THEN 'LINE'
182019 WHEN 5 THEN 'LINE'
182020
182021 ELSE null
182022 END object_type_code
182023 , CASE r
182024 WHEN 1 THEN '555'
182025 WHEN 2 THEN '555'
182026 WHEN 3 THEN '555'
182027 WHEN 4 THEN '555'
182028 WHEN 5 THEN '555'
182029
182030 ELSE null
182031 END source_application_id
182032 , 'S' source_type_code
182033 , CASE r
182034 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
182035 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
182036 WHEN 3 THEN 'ENTERED_AMOUNT'
182037 WHEN 4 THEN 'LINE_ID'
182038 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
182039
182040 ELSE null
182041 END source_code
182042 , CASE r
182043 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
182044 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
182045 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
182046 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
182047 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
182048
182049 ELSE null
182050 END source_value
182051 , null source_meaning
182052 FROM xla_events_gt xet
182053 , GMF_XLA_EXTRACT_LINES l2
182054 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
182055 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
182056 AND xet.event_type_code = C_EVENT_TYPE_CODE
182057 AND l2.event_id = xet.event_id
182058
182059 )
182060 ;
182061 --
182062 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182063
182064 trace
182065 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
182066 ,p_level => C_LEVEL_STATEMENT
182067 ,p_module => l_log_module);
182068
182069 END IF;
182070
182071
182072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182073 trace
182074 (p_msg => 'END of insert_sources_299'
182075 ,p_level => C_LEVEL_PROCEDURE
182076 ,p_module => l_log_module);
182077 END IF;
182078 EXCEPTION
182079 WHEN xla_exceptions_pkg.application_exception THEN
182080 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
182081 trace
182082 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
182083 ,p_level => C_LEVEL_EXCEPTION
182084 ,p_module => l_log_module);
182085 END IF;
182086 RAISE;
182087 WHEN OTHERS THEN
182088 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
182089 trace
182090 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
182091 ,p_level => C_LEVEL_EXCEPTION
182092 ,p_module => l_log_module);
182093 END IF;
182094 xla_exceptions_pkg.raise_message
182095 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_299');
182096 END insert_sources_299;
182097 --
182098
182099 ---------------------------------------
182100 --
182101 -- PRIVATE FUNCTION
182102 -- EventType_299
182103 --
182104 ----------------------------------------
182105 --
182106 FUNCTION EventType_299
182107 (p_application_id IN NUMBER
182108 ,p_base_ledger_id IN NUMBER
182109 ,p_target_ledger_id IN NUMBER
182110 ,p_language IN VARCHAR2
182111 ,p_currency_code IN VARCHAR2
182112 ,p_sla_ledger_id IN NUMBER
182113 ,p_pad_start_date IN DATE
182114 ,p_pad_end_date IN DATE
182115 ,p_primary_ledger_id IN NUMBER)
182116 RETURN BOOLEAN IS
182117 --
182118 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RET_TO_VENDOR';
182119 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RECEIVE';
182120
182121 l_calculate_acctd_flag VARCHAR2(1) :='N';
182122 l_calculate_g_l_flag VARCHAR2(1) :='N';
182123 --
182124 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182125 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182126 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182127 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182128 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182129 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182130 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182131 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182135 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182132 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182133 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182134 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182136 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182137 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
182138 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182139 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182140 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182141 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
182142 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182143 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182144 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182145 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
182146 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
182147 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
182148 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
182149 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
182150
182151 l_event_id NUMBER;
182152 l_previous_event_id NUMBER;
182153 l_first_event_id NUMBER;
182154 l_last_event_id NUMBER;
182155
182156 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
182157 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
182158 --
182159 --
182160 l_result BOOLEAN := TRUE;
182161 l_rows NUMBER := 1000;
182162 l_event_type_name VARCHAR2(80) := 'Return to Vendor';
182163 l_event_class_name VARCHAR2(80) := 'Receiving';
182164 l_description VARCHAR2(4000);
182165 l_transaction_reversal NUMBER;
182166 l_ae_header_id NUMBER;
182167 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
182168 l_log_module VARCHAR2(240);
182169 --
182170 l_acct_reversal_source VARCHAR2(30);
182171 l_trx_reversal_source VARCHAR2(30);
182172
182173 l_continue_with_lines BOOLEAN := TRUE;
182174 --
182175 l_acc_rev_gl_date_source DATE; -- 4262811
182176 --
182177 type t_array_event_id is table of number index by binary_integer;
182178
182179 l_rec_array_event t_rec_array_event;
182180 l_null_rec_array_event t_rec_array_event;
182181 l_array_ae_header_id xla_number_array_type;
182182 l_actual_flag VARCHAR2(1) := NULL;
182183 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
182184 l_balance_type_code VARCHAR2(1) :=NULL;
182185 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
182186
182187 --
182188 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
182189 --
182190
182191 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
182192 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
182193 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
182194 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
182195 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
182196 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
182197
182198 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
182199 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
182200 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
182201 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
182202 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
182203
182204 l_array_source_6 t_array_source_6;
182205 l_array_source_7 t_array_source_7;
182206 l_array_source_8 t_array_source_8;
182207 l_array_source_9 t_array_source_9;
182208 l_array_source_10 t_array_source_10;
182209 l_array_source_12 t_array_source_12;
182210
182211 l_array_source_1 t_array_source_1;
182212 l_array_source_2 t_array_source_2;
182213 l_array_source_3 t_array_source_3;
182214 l_array_source_5 t_array_source_5;
182215 l_array_source_11 t_array_source_11;
182216
182217 --
182218 CURSOR header_cur
182219 IS
182220 SELECT /*+ leading(xet) cardinality(xet,1) */
182221 -- Event Type Code: RET_TO_VENDOR
182222 -- Event Class Code: RECEIVE
182223 xet.entity_id
182224 , xet.legal_entity_id
182225 , xet.entity_code
182226 , xet.transaction_number
182227 , xet.event_id
182228 , xet.event_class_code
182229 , xet.event_type_code
182230 , xet.event_number
182231 , xet.event_date
182232 , xet.transaction_date
182233 , xet.reference_num_1
182234 , xet.reference_num_2
182235 , xet.reference_num_3
182236 , xet.reference_num_4
182237 , xet.reference_char_1
182238 , xet.reference_char_2
182239 , xet.reference_char_3
182240 , xet.reference_char_4
182241 , xet.reference_date_1
182242 , xet.reference_date_2
182243 , xet.reference_date_3
182244 , xet.reference_date_4
182245 , xet.event_created_by
182246 , xet.budgetary_control_flag
182247 , h1.ENTITY_CODE source_6
182248 , h1.CURRENCY_CODE source_7
182252 , h1.TRANSACTION_DATE source_12
182249 , h1.CURRENCY_CONVERSION_DATE source_8
182250 , h1.CURRENCY_CONVERSION_RATE source_9
182251 , h1.CURRENCY_CONVERSION_TYPE source_10
182253 FROM xla_events_gt xet
182254 , GMF_XLA_EXTRACT_HEADERS h1
182255 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
182256 and xet.event_type_code = C_EVENT_TYPE_CODE
182257 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
182258
182259 ORDER BY event_id
182260 ;
182261
182262
182263 --
182264 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
182265 IS
182266 SELECT /*+ leading(xet) cardinality(xet,1) */
182267 -- Event Type Code: RET_TO_VENDOR
182268 -- Event Class Code: RECEIVE
182269 xet.entity_id
182270 ,xet.legal_entity_id
182271 ,xet.entity_code
182272 ,xet.transaction_number
182273 ,xet.event_id
182274 ,xet.event_class_code
182275 ,xet.event_type_code
182276 ,xet.event_number
182277 ,xet.event_date
182278 ,xet.transaction_date
182279 ,xet.reference_num_1
182280 ,xet.reference_num_2
182281 ,xet.reference_num_3
182282 ,xet.reference_num_4
182283 ,xet.reference_char_1
182284 ,xet.reference_char_2
182285 ,xet.reference_char_3
182286 ,xet.reference_char_4
182287 ,xet.reference_date_1
182288 ,xet.reference_date_2
182289 ,xet.reference_date_3
182290 ,xet.reference_date_4
182291 ,xet.event_created_by
182292 ,xet.budgetary_control_flag , l2.LINE_NUMBER
182293 , l2.TRANSACTION_ACCOUNT_ID source_1
182294 , l2.JOURNAL_LINE_TYPE source_2
182295 , l2.ENTERED_AMOUNT source_3
182296 , l2.LINE_ID source_5
182297 , l2.ACCOUNTED_AMOUNT source_11
182298 FROM xla_events_gt xet
182299 , GMF_XLA_EXTRACT_LINES l2
182300 WHERE xet.event_id between x_first_event_id and x_last_event_id
182301 and xet.event_date between p_pad_start_date and p_pad_end_date
182302 and xet.event_type_code = C_EVENT_TYPE_CODE
182303 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
182304 ;
182305
182306 --
182307 BEGIN
182308 IF g_log_enabled THEN
182309 l_log_module := C_DEFAULT_MODULE||'.EventType_299';
182310 END IF;
182311 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182312 trace
182313 (p_msg => 'BEGIN of EventType_299'
182314 ,p_level => C_LEVEL_PROCEDURE
182315 ,p_module => l_log_module);
182316 END IF;
182317
182318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182319 trace
182320 (p_msg => 'p_application_id = '||p_application_id||
182321 ' - p_base_ledger_id = '||p_base_ledger_id||
182322 ' - p_target_ledger_id = '||p_target_ledger_id||
182323 ' - p_language = '||p_language||
182324 ' - p_currency_code = '||p_currency_code||
182325 ' - p_sla_ledger_id = '||p_sla_ledger_id
182326 ,p_level => C_LEVEL_STATEMENT
182327 ,p_module => l_log_module);
182328 END IF;
182329 --
182330 -- initialze arrays
182331 --
182332 g_array_event.DELETE;
182333 l_rec_array_event := l_null_rec_array_event;
182334 --
182335 --------------------------------------
182336 -- 4262811 Initialze MPA Line Number
182337 --------------------------------------
182338 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
182339
182340 --
182341
182342 --
182343 OPEN header_cur;
182344 --
182345 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182346 trace
182347 (p_msg => 'SQL - FETCH header_cur'
182348 ,p_level => C_LEVEL_STATEMENT
182349 ,p_module => l_log_module);
182350 END IF;
182351 --
182352 LOOP
182353 FETCH header_cur BULK COLLECT INTO
182354 l_array_entity_id
182355 , l_array_legal_entity_id
182356 , l_array_entity_code
182357 , l_array_transaction_num
182358 , l_array_event_id
182359 , l_array_class_code
182360 , l_array_event_type
182361 , l_array_event_number
182362 , l_array_event_date
182363 , l_array_transaction_date
182364 , l_array_reference_num_1
182365 , l_array_reference_num_2
182366 , l_array_reference_num_3
182367 , l_array_reference_num_4
182368 , l_array_reference_char_1
182369 , l_array_reference_char_2
182370 , l_array_reference_char_3
182371 , l_array_reference_char_4
182372 , l_array_reference_date_1
182373 , l_array_reference_date_2
182374 , l_array_reference_date_3
182375 , l_array_reference_date_4
182376 , l_array_event_created_by
182377 , l_array_budgetary_control_flag
182378 , l_array_source_6
182379 , l_array_source_7
182380 , l_array_source_8
182381 , l_array_source_9
182382 , l_array_source_10
182383 , l_array_source_12
182384 LIMIT l_rows;
182385 --
182386 IF (C_LEVEL_EVENT >= g_log_level) THEN
182387 trace
182388 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
182389 ,p_level => C_LEVEL_EVENT
182390 ,p_module => l_log_module);
182391 END IF;
182392 --
182393 EXIT WHEN l_array_entity_id.COUNT = 0;
182394
182395 -- initialize arrays
182396 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
182397 XLA_AE_LINES_PKG.g_rec_lines := NULL;
182398
182399 --
182400 -- Bug 4458708
182401 --
182402 XLA_AE_LINES_PKG.g_LineNumber := 0;
182403
182404
182405 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
182406 g_last_hdr_idx := l_array_event_id.LAST;
182407 --
182408 -- loop for the headers. Each iteration is for each header extract row
182409 -- fetched in header cursor
182410 --
182411 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
182415 --
182412
182413 --
182414 -- set event info as cache for other routines to refer event attributes
182416 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182417 (p_application_id => p_application_id
182418 ,p_primary_ledger_id => p_primary_ledger_id
182419 ,p_base_ledger_id => p_base_ledger_id
182420 ,p_target_ledger_id => p_target_ledger_id
182421 ,p_entity_id => l_array_entity_id(hdr_idx)
182422 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
182423 ,p_entity_code => l_array_entity_code(hdr_idx)
182424 ,p_transaction_num => l_array_transaction_num(hdr_idx)
182425 ,p_event_id => l_array_event_id(hdr_idx)
182426 ,p_event_class_code => l_array_class_code(hdr_idx)
182427 ,p_event_type_code => l_array_event_type(hdr_idx)
182428 ,p_event_number => l_array_event_number(hdr_idx)
182429 ,p_event_date => l_array_event_date(hdr_idx)
182430 ,p_transaction_date => l_array_transaction_date(hdr_idx)
182431 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
182432 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
182433 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
182434 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
182435 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
182436 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
182437 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
182438 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
182439 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
182440 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
182441 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
182442 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
182443 ,p_event_created_by => l_array_event_created_by(hdr_idx)
182444 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
182445
182446 --
182447 -- set the status of entry to C_VALID (0)
182448 --
182449 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182450
182451 --
182452 -- initialize a row for ae header
182453 --
182454 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
182455
182456 l_event_id := l_array_event_id(hdr_idx);
182457
182458 --
182459 -- storing the hdr_idx for event. May be used by line cursor.
182460 --
182461 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
182462
182463 --
182464 -- store sources from header extract. This can be improved to
182465 -- store only those sources from header extract that may be used in lines
182466 --
182467
182468 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
182469 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
182470 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
182471 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
182472 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
182473 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
182474
182475 --
182476 -- initilaize the status of ae headers for diffrent balance types
182477 -- the status is initialised to C_NOT_CREATED (2)
182478 --
182479 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182480 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182481 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182482
182483 --
182484 -- call api to validate and store accounting attributes for header
182485 --
182486
182487 ------------------------------------------------------------
182488 -- Accrual Reversal : to get date for Standard Source (NONE)
182489 ------------------------------------------------------------
182490 l_acc_rev_gl_date_source := NULL;
182491
182492 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
182493 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
182494
182495
182496 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
182497
182498 XLA_AE_HEADER_PKG.SetJeCategoryName;
182499
182500 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
182501 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
182502 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
182503 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
182504 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
182505
182506
182507 -- No header level analytical criteria
182508
182509 --
182510 --accounting attribute enhancement, bug 3612931
182511 --
182512 l_trx_reversal_source := SUBSTR(NULL, 1,30);
182513
182514 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
182515 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
182516
182517 xla_accounting_err_pkg.build_message
182518 (p_appli_s_name => 'XLA'
182519 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
182520 ,p_token_1 => 'ACCT_ATTR_NAME'
182521 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
182522 ,p_token_2 => 'PRODUCT_NAME'
182523 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182524 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182525 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
182526 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182530 -- following sets the accounting attributes needed to reverse
182527
182528 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
182529 --
182531 -- accounting for a distributeion
182532 --
182533 xla_ae_lines_pkg.SetTrxReversalAttrs
182534 (p_event_id => l_event_id
182535 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
182536 ,p_trx_reversal_source => l_trx_reversal_source);
182537
182538 END IF;
182539
182540
182541 ----------------------------------------------------------------
182542 -- 4262811 - update the header statuses to invalid in need be
182543 ----------------------------------------------------------------
182544 --
182545 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
182546
182547
182548 -----------------------------------------------
182549 -- No accrual reversal for the event class/type
182550 -----------------------------------------------
182551 ----------------------------------------------------------------
182552
182553 --
182554 -- this ends the header loop iteration for one bulk fetch
182555 --
182556 END LOOP;
182557
182558 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
182559 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
182560
182561 --
182562 -- insert dummy rows into lines gt table that were created due to
182563 -- transaction reversals
182564 --
182565 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
182566 l_result := XLA_AE_LINES_PKG.InsertLines;
182567 END IF;
182568
182569 --
182570 -- reset the temp_line_num for each set of events fetched from header
182571 -- cursor rather than doing it for each new event in line cursor
182572 -- Bug 3939231
182573 --
182574 xla_ae_lines_pkg.g_temp_line_num := 0;
182575
182576
182577
182578 --
182579 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
182580 --
182581 --
182582 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182583
182584 trace
182585 (p_msg => 'SQL - FETCH line_cur'
182586 ,p_level => C_LEVEL_STATEMENT
182587 ,p_module => l_log_module);
182588
182589 END IF;
182590 --
182591 --
182592 LOOP
182593 --
182594 FETCH line_cur BULK COLLECT INTO
182595 l_array_entity_id
182596 , l_array_legal_entity_id
182597 , l_array_entity_code
182598 , l_array_transaction_num
182599 , l_array_event_id
182600 , l_array_class_code
182601 , l_array_event_type
182602 , l_array_event_number
182603 , l_array_event_date
182604 , l_array_transaction_date
182605 , l_array_reference_num_1
182606 , l_array_reference_num_2
182607 , l_array_reference_num_3
182608 , l_array_reference_num_4
182609 , l_array_reference_char_1
182610 , l_array_reference_char_2
182611 , l_array_reference_char_3
182612 , l_array_reference_char_4
182613 , l_array_reference_date_1
182614 , l_array_reference_date_2
182615 , l_array_reference_date_3
182616 , l_array_reference_date_4
182617 , l_array_event_created_by
182618 , l_array_budgetary_control_flag
182619 , l_array_extract_line_num
182620 , l_array_source_1
182621 , l_array_source_2
182622 , l_array_source_3
182623 , l_array_source_5
182624 , l_array_source_11
182625 LIMIT l_rows;
182626
182627 --
182628 IF (C_LEVEL_EVENT >= g_log_level) THEN
182629 trace
182630 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
182631 ,p_level => C_LEVEL_EVENT
182632 ,p_module => l_log_module);
182633 END IF;
182634 --
182635 EXIT WHEN l_array_entity_id.count = 0;
182636
182637 XLA_AE_LINES_PKG.g_rec_lines := null;
182638
182639 --
182640 -- Bug 4458708
182641 --
182642 XLA_AE_LINES_PKG.g_LineNumber := 0;
182643 --
182644 --
182645
182646 FOR Idx IN 1..l_array_event_id.count LOOP
182647 --
182648 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
182649 --
182650 l_event_id := l_array_event_id(idx); -- 5648433
182651
182652 --
182653 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182654 --
182655
182656 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
182657 (g_array_event(l_event_id).array_value_num('header_index'))
182658 ,'N'
182659 ) <> 'Y'
182660 THEN
182661 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182662 trace
182663 (p_msg => 'Trancaction revesal option is not Y '
182664 ,p_level => C_LEVEL_STATEMENT
182665 ,p_module => l_log_module);
182666 END IF;
182667
182668 --
182669 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
182670 --
182671 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182672 --
182673 -- set event info as cache for other routines to refer event attributes
182674 --
182675
182676 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
182677 l_previous_event_id := l_event_id;
182678
182679 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182680 (p_application_id => p_application_id
182681 ,p_primary_ledger_id => p_primary_ledger_id
182682 ,p_base_ledger_id => p_base_ledger_id
182683 ,p_target_ledger_id => p_target_ledger_id
182684 ,p_entity_id => l_array_entity_id(Idx)
182685 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
182686 ,p_entity_code => l_array_entity_code(Idx)
182690 ,p_event_type_code => l_array_event_type(Idx)
182687 ,p_transaction_num => l_array_transaction_num(Idx)
182688 ,p_event_id => l_array_event_id(Idx)
182689 ,p_event_class_code => l_array_class_code(Idx)
182691 ,p_event_number => l_array_event_number(Idx)
182692 ,p_event_date => l_array_event_date(Idx)
182693 ,p_transaction_date => l_array_transaction_date(Idx)
182694 ,p_reference_num_1 => l_array_reference_num_1(Idx)
182695 ,p_reference_num_2 => l_array_reference_num_2(Idx)
182696 ,p_reference_num_3 => l_array_reference_num_3(Idx)
182697 ,p_reference_num_4 => l_array_reference_num_4(Idx)
182698 ,p_reference_char_1 => l_array_reference_char_1(Idx)
182699 ,p_reference_char_2 => l_array_reference_char_2(Idx)
182700 ,p_reference_char_3 => l_array_reference_char_3(Idx)
182701 ,p_reference_char_4 => l_array_reference_char_4(Idx)
182702 ,p_reference_date_1 => l_array_reference_date_1(Idx)
182703 ,p_reference_date_2 => l_array_reference_date_2(Idx)
182704 ,p_reference_date_3 => l_array_reference_date_3(Idx)
182705 ,p_reference_date_4 => l_array_reference_date_4(Idx)
182706 ,p_event_created_by => l_array_event_created_by(Idx)
182707 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
182708 --
182709 END IF;
182710
182711
182712
182713 --
182714 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
182715
182716 l_acct_reversal_source := SUBSTR(NULL, 1,30);
182717
182718 IF l_continue_with_lines THEN
182719 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
182720 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
182721
182722 xla_accounting_err_pkg.build_message
182723 (p_appli_s_name => 'XLA'
182724 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
182725 ,p_token_1 => 'LINE_NUMBER'
182726 ,p_value_1 => l_array_extract_line_num(Idx)
182727 ,p_token_2 => 'PRODUCT_NAME'
182728 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182729 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182730 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
182731 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182732
182733 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
182734 --
182735 -- following sets the accounting attributes needed to reverse
182736 -- accounting for a distributeion
182737 --
182738
182739 --
182740 -- 5217187
182741 --
182742 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
182743 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
182744 g_array_event(l_event_id).array_value_num('header_index'));
182745 --
182746 --
182747
182748 -- No reversal code generated
182749
182750 xla_ae_lines_pkg.SetAcctReversalAttrs
182751 (p_event_id => l_event_id
182752 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
182753 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182754 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
182755 END IF;
182756
182757 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
182758 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
182759
182760 --
182761 AcctLineType_53 (
182762 p_application_id => p_application_id
182763 ,p_event_id => l_event_id
182764 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182765 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182766 ,p_actual_flag => l_actual_flag
182767 ,p_balance_type_code => l_balance_type_code
182768 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182769
182770 , p_source_1 => l_array_source_1(Idx)
182771 , p_source_2 => l_array_source_2(Idx)
182772 , p_source_3 => l_array_source_3(Idx)
182773 , p_source_5 => l_array_source_5(Idx)
182774 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
182775 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
182776 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
182777 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
182778 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
182779 , p_source_11 => l_array_source_11(Idx)
182780 );
182781 If(l_balance_type_code = 'A') THEN
182782 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182783 END IF;
182784
182785 --
182786
182787
182788 --
182789 AcctLineType_203 (
182790 p_application_id => p_application_id
182791 ,p_event_id => l_event_id
182792 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182793 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182794 ,p_actual_flag => l_actual_flag
182795 ,p_balance_type_code => l_balance_type_code
182796 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182797
182798 , p_source_1 => l_array_source_1(Idx)
182799 , p_source_2 => l_array_source_2(Idx)
182800 , p_source_3 => l_array_source_3(Idx)
182801 , p_source_5 => l_array_source_5(Idx)
182802 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
182803 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
182804 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
182805 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
182806 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
182807 , p_source_11 => l_array_source_11(Idx)
182808 );
182809 If(l_balance_type_code = 'A') THEN
182810 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182814
182811 END IF;
182812
182813 --
182815 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
182816 -- or secondary ledger that has different currency with primary
182817 -- or alc that is calculated by sla
182818 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
182819 (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'))
182820
182821 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
182822 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
182823 AND (l_actual_flag = 'A')) THEN
182824 XLA_AE_LINES_PKG.CreateGainOrLossLines(
182825 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
182826 ,p_application_id => p_application_id
182827 ,p_amb_context_code => 'DEFAULT'
182828 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
182829 ,p_event_class_code => C_EVENT_CLASS_CODE
182830 ,p_event_type_code => C_EVENT_TYPE_CODE
182831
182832 ,p_gain_ccid => -1
182833 ,p_loss_ccid => -1
182834
182835 ,p_actual_flag => l_actual_flag
182836 ,p_enc_flag => null
182837 ,p_actual_g_l_ref => l_actual_gain_loss_ref
182838 ,p_enc_g_l_ref => null
182839 );
182840 END IF;
182841 END IF;
182842 END IF;
182843
182844 ELSE
182845 --
182846 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182847 --
182848 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182849 trace
182850 (p_msg => 'Trancaction revesal option is Y'
182851 ,p_level => C_LEVEL_STATEMENT
182852 ,p_module => l_log_module);
182853 END IF;
182854 END IF;
182855
182856 END LOOP;
182857 l_result := XLA_AE_LINES_PKG.InsertLines ;
182858 end loop;
182859 close line_cur;
182860
182861
182862 --
182863 -- insert headers into xla_ae_headers_gt table
182864 --
182865 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
182866
182867 -- insert into errors table here.
182868
182869 END LOOP;
182870
182871 --
182872 -- 4865292
182873 --
182874 -- Compare g_hdr_extract_count with event count in
182875 -- CreateHeadersAndLines.
182876 --
182877 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
182878
182879 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182880 trace (p_msg => '# rows extracted from header extract objects '
182881 || ' (running total): '
182882 || g_hdr_extract_count
182883 ,p_level => C_LEVEL_STATEMENT
182884 ,p_module => l_log_module);
182885 END IF;
182886
182887 CLOSE header_cur;
182888 --
182889
182890 --
182891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182892 trace
182893 (p_msg => 'END of EventType_299'
182894 ,p_level => C_LEVEL_PROCEDURE
182895 ,p_module => l_log_module);
182896 END IF;
182897 --
182898 RETURN l_result;
182899 EXCEPTION
182900 WHEN xla_exceptions_pkg.application_exception THEN
182901
182902 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182903
182904
182905 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
182906
182907 RAISE;
182908
182909 WHEN NO_DATA_FOUND THEN
182910
182911 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182912 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
182913
182914 FOR header_record IN header_cur
182915 LOOP
182916 l_array_header_events(header_record.event_id) := header_record.event_id;
182917 END LOOP;
182918
182919 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
182920 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
182921
182922 fnd_file.put_line(fnd_file.LOG, ' ');
182923 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182924 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
182925 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
182926
182927 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
182928 LOOP
182929 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
182930 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
182931 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
182932 END IF;
182933 END LOOP;
182934
182935 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182936 fnd_file.put_line(fnd_file.LOG, ' ');
182937
182938
182939 xla_exceptions_pkg.raise_message
182940 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_299');
182941
182942
182943 WHEN OTHERS THEN
182944 xla_exceptions_pkg.raise_message
182945 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_299');
182946 END EventType_299;
182947 --
182948
182949 ---------------------------------------
182950 --
182951 -- PRIVATE PROCEDURE
182952 -- insert_sources_300
182953 --
182954 ----------------------------------------
182955 --
182956 PROCEDURE insert_sources_300(
182957 p_target_ledger_id IN NUMBER
182958 , p_language IN VARCHAR2
182959 , p_sla_ledger_id IN NUMBER
182960 , p_pad_start_date IN DATE
182964
182961 , p_pad_end_date IN DATE
182962 )
182963 IS
182965 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RMA_ALL';
182966 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RMA';
182967 p_apps_owner VARCHAR2(30);
182968 l_log_module VARCHAR2(240);
182969 BEGIN
182970 IF g_log_enabled THEN
182971 l_log_module := C_DEFAULT_MODULE||'.insert_sources_300';
182972 END IF;
182973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182974
182975 trace
182976 (p_msg => 'BEGIN of insert_sources_300'
182977 ,p_level => C_LEVEL_PROCEDURE
182978 ,p_module => l_log_module);
182979
182980 END IF;
182981
182982 -- select APPS owner
182983 SELECT oracle_username
182984 INTO p_apps_owner
182985 FROM fnd_oracle_userid
182986 WHERE read_only_flag = 'U'
182987 ;
182988
182989 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182990 trace
182991 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
182992 ' - p_language = '||p_language||
182993 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
182994 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
182995 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
182996 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
182997 ,p_level => C_LEVEL_STATEMENT
182998 ,p_module => l_log_module);
182999 END IF;
183000
183001
183002 --
183003 INSERT INTO xla_diag_sources --hdr2
183004 (
183005 event_id
183006 , ledger_id
183007 , sla_ledger_id
183008 , description_language
183009 , object_name
183010 , object_type_code
183011 , line_number
183012 , source_application_id
183013 , source_type_code
183014 , source_code
183015 , source_value
183016 , source_meaning
183017 , created_by
183018 , creation_date
183019 , last_update_date
183020 , last_updated_by
183021 , last_update_login
183022 , program_update_date
183023 , program_application_id
183024 , program_id
183025 , request_id
183026 )
183027 SELECT
183028 event_id
183029 , p_target_ledger_id
183030 , p_sla_ledger_id
183031 , p_language
183032 , object_name
183033 , object_type_code
183034 , line_number
183035 , source_application_id
183036 , source_type_code
183037 , source_code
183038 , SUBSTR(source_value ,1,1996)
183039 , SUBSTR(source_meaning ,1,200)
183040 , xla_environment_pkg.g_Usr_Id
183041 , TRUNC(SYSDATE)
183042 , TRUNC(SYSDATE)
183043 , xla_environment_pkg.g_Usr_Id
183044 , xla_environment_pkg.g_Login_Id
183045 , TRUNC(SYSDATE)
183046 , xla_environment_pkg.g_Prog_Appl_Id
183047 , xla_environment_pkg.g_Prog_Id
183048 , xla_environment_pkg.g_Req_Id
183049 FROM (
183050 SELECT xet.event_id event_id
183051 , 0 line_number
183052 , CASE r
183053 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
183054 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
183055 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
183056 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
183057 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
183058 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
183059
183060 ELSE null
183061 END object_name
183062 , CASE r
183063 WHEN 1 THEN 'HEADER'
183064 WHEN 2 THEN 'HEADER'
183065 WHEN 3 THEN 'HEADER'
183066 WHEN 4 THEN 'HEADER'
183067 WHEN 5 THEN 'HEADER'
183068 WHEN 6 THEN 'HEADER'
183069
183070 ELSE null
183071 END object_type_code
183072 , CASE r
183073 WHEN 1 THEN '555'
183074 WHEN 2 THEN '555'
183075 WHEN 3 THEN '555'
183076 WHEN 4 THEN '555'
183077 WHEN 5 THEN '555'
183078 WHEN 6 THEN '555'
183079
183080 ELSE null
183081 END source_application_id
183082 , 'S' source_type_code
183083 , CASE r
183084 WHEN 1 THEN 'ENTITY_CODE'
183085 WHEN 2 THEN 'CURRENCY_CODE'
183086 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
183087 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
183088 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
183089 WHEN 6 THEN 'TRANSACTION_DATE'
183090
183091 ELSE null
183092 END source_code
183093 , CASE r
183094 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
183095 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
183096 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
183097 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
183098 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
183099 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
183100
183101 ELSE null
183102 END source_value
183103 , CASE r
183104 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
183105 1010186
183106 ,TO_CHAR(h1.CURRENCY_CODE)
183107 ,'CURRENCY_CODE'
183108 ,'S'
183109 ,555)
183113 FROM xla_events_gt xet
183110
183111 ELSE null
183112 END source_meaning
183114 , GMF_XLA_EXTRACT_HEADERS h1
183115 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
183116 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
183117 AND xet.event_class_code = C_EVENT_CLASS_CODE
183118 AND h1.event_id = xet.event_id
183119
183120 )
183121 ;
183122 --
183123 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183124
183125 trace
183126 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
183127 ,p_level => C_LEVEL_STATEMENT
183128 ,p_module => l_log_module);
183129
183130 END IF;
183131 --
183132
183133
183134
183135 --
183136 INSERT INTO xla_diag_sources --line2
183137 (
183138 event_id
183139 , ledger_id
183140 , sla_ledger_id
183141 , description_language
183142 , object_name
183143 , object_type_code
183144 , line_number
183145 , source_application_id
183146 , source_type_code
183147 , source_code
183148 , source_value
183149 , source_meaning
183150 , created_by
183151 , creation_date
183152 , last_update_date
183153 , last_updated_by
183154 , last_update_login
183155 , program_update_date
183156 , program_application_id
183157 , program_id
183158 , request_id
183159 )
183160 SELECT event_id
183161 , p_target_ledger_id
183162 , p_sla_ledger_id
183163 , p_language
183164 , object_name
183165 , object_type_code
183166 , line_number
183167 , source_application_id
183168 , source_type_code
183169 , source_code
183170 , SUBSTR(source_value,1,1996)
183171 , SUBSTR(source_meaning ,1,200)
183172 , xla_environment_pkg.g_Usr_Id
183173 , TRUNC(SYSDATE)
183174 , TRUNC(SYSDATE)
183175 , xla_environment_pkg.g_Usr_Id
183176 , xla_environment_pkg.g_Login_Id
183177 , TRUNC(SYSDATE)
183178 , xla_environment_pkg.g_Prog_Appl_Id
183179 , xla_environment_pkg.g_Prog_Id
183180 , xla_environment_pkg.g_Req_Id
183181 FROM (
183182 SELECT xet.event_id event_id
183183 , l2.line_number line_number
183184 , CASE r
183185 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
183186 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
183187 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
183188 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
183189 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
183190
183191 ELSE null
183192 END object_name
183193 , CASE r
183194 WHEN 1 THEN 'LINE'
183195 WHEN 2 THEN 'LINE'
183196 WHEN 3 THEN 'LINE'
183197 WHEN 4 THEN 'LINE'
183198 WHEN 5 THEN 'LINE'
183199
183200 ELSE null
183201 END object_type_code
183202 , CASE r
183203 WHEN 1 THEN '555'
183204 WHEN 2 THEN '555'
183205 WHEN 3 THEN '555'
183206 WHEN 4 THEN '555'
183207 WHEN 5 THEN '555'
183208
183209 ELSE null
183210 END source_application_id
183211 , 'S' source_type_code
183212 , CASE r
183213 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
183214 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
183215 WHEN 3 THEN 'ENTERED_AMOUNT'
183216 WHEN 4 THEN 'LINE_ID'
183217 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
183218
183219 ELSE null
183220 END source_code
183221 , CASE r
183222 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
183223 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
183224 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
183225 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
183226 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
183227
183228 ELSE null
183229 END source_value
183230 , null source_meaning
183231 FROM xla_events_gt xet
183232 , GMF_XLA_EXTRACT_LINES l2
183233 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
183234 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
183235 AND xet.event_class_code = C_EVENT_CLASS_CODE
183236 AND l2.event_id = xet.event_id
183237
183238 )
183239 ;
183240 --
183241 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183242
183243 trace
183244 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
183245 ,p_level => C_LEVEL_STATEMENT
183246 ,p_module => l_log_module);
183247
183248 END IF;
183249
183250
183251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183252 trace
183253 (p_msg => 'END of insert_sources_300'
183254 ,p_level => C_LEVEL_PROCEDURE
183255 ,p_module => l_log_module);
183256 END IF;
183257 EXCEPTION
183258 WHEN xla_exceptions_pkg.application_exception THEN
183259 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
183260 trace
183261 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
183262 ,p_level => C_LEVEL_EXCEPTION
183266 WHEN OTHERS THEN
183263 ,p_module => l_log_module);
183264 END IF;
183265 RAISE;
183267 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
183268 trace
183269 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
183270 ,p_level => C_LEVEL_EXCEPTION
183271 ,p_module => l_log_module);
183272 END IF;
183273 xla_exceptions_pkg.raise_message
183274 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_300');
183275 END insert_sources_300;
183276 --
183277
183278 ---------------------------------------
183279 --
183280 -- PRIVATE FUNCTION
183281 -- EventClass_300
183282 --
183283 ----------------------------------------
183284 --
183285 FUNCTION EventClass_300
183286 (p_application_id IN NUMBER
183287 ,p_base_ledger_id IN NUMBER
183288 ,p_target_ledger_id IN NUMBER
183289 ,p_language IN VARCHAR2
183290 ,p_currency_code IN VARCHAR2
183291 ,p_sla_ledger_id IN NUMBER
183292 ,p_pad_start_date IN DATE
183293 ,p_pad_end_date IN DATE
183294 ,p_primary_ledger_id IN NUMBER)
183295 RETURN BOOLEAN IS
183296 --
183297 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RMA_ALL';
183298 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RMA';
183299
183300 l_calculate_acctd_flag VARCHAR2(1) :='N';
183301 l_calculate_g_l_flag VARCHAR2(1) :='N';
183302 --
183303 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183304 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183305 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183306 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183307 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183308 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183309 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183310 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183311 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183312 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183313 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183314 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183315 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183316 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183317 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183318 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183319 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183320 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183321 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183322 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183323 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183324 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183325 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
183326 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183327 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
183328 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
183329
183330 l_event_id NUMBER;
183331 l_previous_event_id NUMBER;
183332 l_first_event_id NUMBER;
183333 l_last_event_id NUMBER;
183334
183335 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
183336 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
183337 --
183338 --
183339 l_result BOOLEAN := TRUE;
183340 l_rows NUMBER := 1000;
183341 l_event_type_name VARCHAR2(80) := 'All';
183342 l_event_class_name VARCHAR2(80) := 'RMA';
183343 l_description VARCHAR2(4000);
183344 l_transaction_reversal NUMBER;
183345 l_ae_header_id NUMBER;
183346 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
183347 l_log_module VARCHAR2(240);
183348 --
183349 l_acct_reversal_source VARCHAR2(30);
183350 l_trx_reversal_source VARCHAR2(30);
183351
183352 l_continue_with_lines BOOLEAN := TRUE;
183353 --
183354 l_acc_rev_gl_date_source DATE; -- 4262811
183355 --
183356 type t_array_event_id is table of number index by binary_integer;
183357
183358 l_rec_array_event t_rec_array_event;
183359 l_null_rec_array_event t_rec_array_event;
183360 l_array_ae_header_id xla_number_array_type;
183361 l_actual_flag VARCHAR2(1) := NULL;
183362 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
183363 l_balance_type_code VARCHAR2(1) :=NULL;
183364 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
183365
183366 --
183367 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
183368 --
183369
183370 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
183371 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
183372 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
183373 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
183374 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
183378 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
183375 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
183376
183377 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
183379 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
183380 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
183381 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
183382
183383 l_array_source_6 t_array_source_6;
183384 l_array_source_7 t_array_source_7;
183385 l_array_source_8 t_array_source_8;
183386 l_array_source_9 t_array_source_9;
183387 l_array_source_10 t_array_source_10;
183388 l_array_source_12 t_array_source_12;
183389
183390 l_array_source_1 t_array_source_1;
183391 l_array_source_2 t_array_source_2;
183392 l_array_source_3 t_array_source_3;
183393 l_array_source_5 t_array_source_5;
183394 l_array_source_11 t_array_source_11;
183395
183396 --
183397 CURSOR header_cur
183398 IS
183399 SELECT /*+ leading(xet) cardinality(xet,1) */
183400 -- Event Class Code: RMA
183401 xet.entity_id
183402 ,xet.legal_entity_id
183403 ,xet.entity_code
183404 ,xet.transaction_number
183405 ,xet.event_id
183406 ,xet.event_class_code
183407 ,xet.event_type_code
183408 ,xet.event_number
183409 ,xet.event_date
183410 ,xet.transaction_date
183411 ,xet.reference_num_1
183412 ,xet.reference_num_2
183413 ,xet.reference_num_3
183414 ,xet.reference_num_4
183415 ,xet.reference_char_1
183416 ,xet.reference_char_2
183417 ,xet.reference_char_3
183418 ,xet.reference_char_4
183419 ,xet.reference_date_1
183420 ,xet.reference_date_2
183421 ,xet.reference_date_3
183422 ,xet.reference_date_4
183423 ,xet.event_created_by
183424 ,xet.budgetary_control_flag
183425 , h1.ENTITY_CODE source_6
183426 , h1.CURRENCY_CODE source_7
183427 , h1.CURRENCY_CONVERSION_DATE source_8
183428 , h1.CURRENCY_CONVERSION_RATE source_9
183429 , h1.CURRENCY_CONVERSION_TYPE source_10
183430 , h1.TRANSACTION_DATE source_12
183431 FROM xla_events_gt xet
183432 , GMF_XLA_EXTRACT_HEADERS h1
183433 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
183434 and xet.event_class_code = C_EVENT_CLASS_CODE
183435 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
183436
183437 ORDER BY event_id
183438 ;
183439
183440
183441 --
183442 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
183443 IS
183444 SELECT /*+ leading(xet) cardinality(xet,1) */
183445 -- Event Class Code: RMA
183446 xet.entity_id
183447 ,xet.legal_entity_id
183448 ,xet.entity_code
183449 ,xet.transaction_number
183450 ,xet.event_id
183451 ,xet.event_class_code
183452 ,xet.event_type_code
183453 ,xet.event_number
183454 ,xet.event_date
183455 ,xet.transaction_date
183456 ,xet.reference_num_1
183457 ,xet.reference_num_2
183458 ,xet.reference_num_3
183459 ,xet.reference_num_4
183460 ,xet.reference_char_1
183461 ,xet.reference_char_2
183462 ,xet.reference_char_3
183463 ,xet.reference_char_4
183464 ,xet.reference_date_1
183465 ,xet.reference_date_2
183466 ,xet.reference_date_3
183467 ,xet.reference_date_4
183468 ,xet.event_created_by
183469 ,xet.budgetary_control_flag
183470 , l2.LINE_NUMBER
183471 , l2.TRANSACTION_ACCOUNT_ID source_1
183472 , l2.JOURNAL_LINE_TYPE source_2
183473 , l2.ENTERED_AMOUNT source_3
183474 , l2.LINE_ID source_5
183475 , l2.ACCOUNTED_AMOUNT source_11
183476 FROM xla_events_gt xet
183477 , GMF_XLA_EXTRACT_LINES l2
183478 WHERE xet.event_id between x_first_event_id and x_last_event_id
183479 and xet.event_date between p_pad_start_date and p_pad_end_date
183480 and xet.event_class_code = C_EVENT_CLASS_CODE
183481 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
183482 ;
183483
183484 --
183485 BEGIN
183486 IF g_log_enabled THEN
183487 l_log_module := C_DEFAULT_MODULE||'.EventClass_300';
183488 END IF;
183489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183490 trace
183491 (p_msg => 'BEGIN of EventClass_300'
183492 ,p_level => C_LEVEL_PROCEDURE
183493 ,p_module => l_log_module);
183494 END IF;
183495
183496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183497 trace
183498 (p_msg => 'p_application_id = '||p_application_id||
183499 ' - p_base_ledger_id = '||p_base_ledger_id||
183500 ' - p_target_ledger_id = '||p_target_ledger_id||
183501 ' - p_language = '||p_language||
183502 ' - p_currency_code = '||p_currency_code||
183503 ' - p_sla_ledger_id = '||p_sla_ledger_id
183504 ,p_level => C_LEVEL_STATEMENT
183505 ,p_module => l_log_module);
183506 END IF;
183507 --
183508 -- initialze arrays
183509 --
183510 g_array_event.DELETE;
183511 l_rec_array_event := l_null_rec_array_event;
183512 --
183513 --------------------------------------
183514 -- 4262811 Initialze MPA Line Number
183515 --------------------------------------
183516 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
183517
183518 --
183519
183520 --
183521 OPEN header_cur;
183522 --
183523 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183524 trace
183525 (p_msg => 'SQL - FETCH header_cur'
183526 ,p_level => C_LEVEL_STATEMENT
183527 ,p_module => l_log_module);
183528 END IF;
183529 --
183530 LOOP
183534 , l_array_entity_code
183531 FETCH header_cur BULK COLLECT INTO
183532 l_array_entity_id
183533 , l_array_legal_entity_id
183535 , l_array_transaction_num
183536 , l_array_event_id
183537 , l_array_class_code
183538 , l_array_event_type
183539 , l_array_event_number
183540 , l_array_event_date
183541 , l_array_transaction_date
183542 , l_array_reference_num_1
183543 , l_array_reference_num_2
183544 , l_array_reference_num_3
183545 , l_array_reference_num_4
183546 , l_array_reference_char_1
183547 , l_array_reference_char_2
183548 , l_array_reference_char_3
183549 , l_array_reference_char_4
183550 , l_array_reference_date_1
183551 , l_array_reference_date_2
183552 , l_array_reference_date_3
183553 , l_array_reference_date_4
183554 , l_array_event_created_by
183555 , l_array_budgetary_control_flag
183556 , l_array_source_6
183557 , l_array_source_7
183558 , l_array_source_8
183559 , l_array_source_9
183560 , l_array_source_10
183561 , l_array_source_12
183562 LIMIT l_rows;
183563 --
183564 IF (C_LEVEL_EVENT >= g_log_level) THEN
183565 trace
183566 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
183567 ,p_level => C_LEVEL_EVENT
183568 ,p_module => l_log_module);
183569 END IF;
183570 --
183571 EXIT WHEN l_array_entity_id.COUNT = 0;
183572
183573 -- initialize arrays
183574 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
183575 XLA_AE_LINES_PKG.g_rec_lines := NULL;
183576
183577 --
183578 -- Bug 4458708
183579 --
183580 XLA_AE_LINES_PKG.g_LineNumber := 0;
183581
183582
183583 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
183584 g_last_hdr_idx := l_array_event_id.LAST;
183585 --
183586 -- loop for the headers. Each iteration is for each header extract row
183587 -- fetched in header cursor
183588 --
183589 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
183590
183591 --
183592 -- set event info as cache for other routines to refer event attributes
183593 --
183594 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183595 (p_application_id => p_application_id
183596 ,p_primary_ledger_id => p_primary_ledger_id
183597 ,p_base_ledger_id => p_base_ledger_id
183598 ,p_target_ledger_id => p_target_ledger_id
183599 ,p_entity_id => l_array_entity_id(hdr_idx)
183600 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
183601 ,p_entity_code => l_array_entity_code(hdr_idx)
183602 ,p_transaction_num => l_array_transaction_num(hdr_idx)
183603 ,p_event_id => l_array_event_id(hdr_idx)
183604 ,p_event_class_code => l_array_class_code(hdr_idx)
183605 ,p_event_type_code => l_array_event_type(hdr_idx)
183606 ,p_event_number => l_array_event_number(hdr_idx)
183607 ,p_event_date => l_array_event_date(hdr_idx)
183608 ,p_transaction_date => l_array_transaction_date(hdr_idx)
183609 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
183610 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
183611 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
183612 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
183613 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
183614 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
183615 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
183616 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
183617 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
183618 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
183619 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
183620 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
183621 ,p_event_created_by => l_array_event_created_by(hdr_idx)
183622 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
183623
183624 --
183625 -- set the status of entry to C_VALID (0)
183626 --
183627 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183628
183629 --
183630 -- initialize a row for ae header
183631 --
183632 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
183633
183634 l_event_id := l_array_event_id(hdr_idx);
183635
183636 --
183637 -- storing the hdr_idx for event. May be used by line cursor.
183638 --
183639 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
183640
183641 --
183642 -- store sources from header extract. This can be improved to
183643 -- store only those sources from header extract that may be used in lines
183644 --
183645
183646 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
183647 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
183648 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
183649 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
183650 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
183651 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
183652
183653 --
183654 -- initilaize the status of ae headers for diffrent balance types
183655 -- the status is initialised to C_NOT_CREATED (2)
183656 --
183657 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183658 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183659 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183660
183661 --
183665 ------------------------------------------------------------
183662 -- call api to validate and store accounting attributes for header
183663 --
183664
183666 -- Accrual Reversal : to get date for Standard Source (NONE)
183667 ------------------------------------------------------------
183668 l_acc_rev_gl_date_source := NULL;
183669
183670 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
183671 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
183672
183673
183674 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
183675
183676 XLA_AE_HEADER_PKG.SetJeCategoryName;
183677
183678 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
183679 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
183680 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
183681 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
183682 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
183683
183684
183685 -- No header level analytical criteria
183686
183687 --
183688 --accounting attribute enhancement, bug 3612931
183689 --
183690 l_trx_reversal_source := SUBSTR(NULL, 1,30);
183691
183692 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
183693 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
183694
183695 xla_accounting_err_pkg.build_message
183696 (p_appli_s_name => 'XLA'
183697 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
183698 ,p_token_1 => 'ACCT_ATTR_NAME'
183699 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
183700 ,p_token_2 => 'PRODUCT_NAME'
183701 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183702 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183703 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
183704 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183705
183706 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
183707 --
183708 -- following sets the accounting attributes needed to reverse
183709 -- accounting for a distributeion
183710 --
183711 xla_ae_lines_pkg.SetTrxReversalAttrs
183712 (p_event_id => l_event_id
183713 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
183714 ,p_trx_reversal_source => l_trx_reversal_source);
183715
183716 END IF;
183717
183718
183719 ----------------------------------------------------------------
183720 -- 4262811 - update the header statuses to invalid in need be
183721 ----------------------------------------------------------------
183722 --
183723 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
183724
183725
183726 -----------------------------------------------
183727 -- No accrual reversal for the event class/type
183728 -----------------------------------------------
183729 ----------------------------------------------------------------
183730
183731 --
183732 -- this ends the header loop iteration for one bulk fetch
183733 --
183734 END LOOP;
183735
183736 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
183737 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
183738
183739 --
183740 -- insert dummy rows into lines gt table that were created due to
183741 -- transaction reversals
183742 --
183743 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
183744 l_result := XLA_AE_LINES_PKG.InsertLines;
183745 END IF;
183746
183747 --
183748 -- reset the temp_line_num for each set of events fetched from header
183749 -- cursor rather than doing it for each new event in line cursor
183750 -- Bug 3939231
183751 --
183752 xla_ae_lines_pkg.g_temp_line_num := 0;
183753
183754
183755
183756 --
183757 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
183758 --
183759 --
183760 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183761
183762 trace
183763 (p_msg => 'SQL - FETCH line_cur'
183764 ,p_level => C_LEVEL_STATEMENT
183765 ,p_module => l_log_module);
183766
183767 END IF;
183768 --
183769 --
183770 LOOP
183771 --
183772 FETCH line_cur BULK COLLECT INTO
183773 l_array_entity_id
183774 , l_array_legal_entity_id
183775 , l_array_entity_code
183776 , l_array_transaction_num
183777 , l_array_event_id
183778 , l_array_class_code
183779 , l_array_event_type
183780 , l_array_event_number
183781 , l_array_event_date
183782 , l_array_transaction_date
183783 , l_array_reference_num_1
183784 , l_array_reference_num_2
183785 , l_array_reference_num_3
183786 , l_array_reference_num_4
183787 , l_array_reference_char_1
183788 , l_array_reference_char_2
183789 , l_array_reference_char_3
183790 , l_array_reference_char_4
183791 , l_array_reference_date_1
183792 , l_array_reference_date_2
183793 , l_array_reference_date_3
183794 , l_array_reference_date_4
183795 , l_array_event_created_by
183796 , l_array_budgetary_control_flag
183797 , l_array_extract_line_num
183798 , l_array_source_1
183799 , l_array_source_2
183800 , l_array_source_3
183801 , l_array_source_5
183802 , l_array_source_11
183803 LIMIT l_rows;
183804
183805 --
183806 IF (C_LEVEL_EVENT >= g_log_level) THEN
183807 trace
183811 END IF;
183808 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
183809 ,p_level => C_LEVEL_EVENT
183810 ,p_module => l_log_module);
183812 --
183813 EXIT WHEN l_array_entity_id.count = 0;
183814
183815 XLA_AE_LINES_PKG.g_rec_lines := null;
183816
183817 --
183818 -- Bug 4458708
183819 --
183820 XLA_AE_LINES_PKG.g_LineNumber := 0;
183821 --
183822 --
183823
183824 FOR Idx IN 1..l_array_event_id.count LOOP
183825 --
183826 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
183827 --
183828 l_event_id := l_array_event_id(idx); -- 5648433
183829
183830 --
183831 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
183832 --
183833
183834 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
183835 (g_array_event(l_event_id).array_value_num('header_index'))
183836 ,'N'
183837 ) <> 'Y'
183838 THEN
183839 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183840 trace
183841 (p_msg => 'Trancaction revesal option is not Y '
183842 ,p_level => C_LEVEL_STATEMENT
183843 ,p_module => l_log_module);
183844 END IF;
183845
183846 --
183847 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
183848 --
183849 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183850 --
183851 -- set event info as cache for other routines to refer event attributes
183852 --
183853
183854 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
183855 l_previous_event_id := l_event_id;
183856
183857 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183858 (p_application_id => p_application_id
183859 ,p_primary_ledger_id => p_primary_ledger_id
183860 ,p_base_ledger_id => p_base_ledger_id
183861 ,p_target_ledger_id => p_target_ledger_id
183862 ,p_entity_id => l_array_entity_id(Idx)
183863 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
183864 ,p_entity_code => l_array_entity_code(Idx)
183865 ,p_transaction_num => l_array_transaction_num(Idx)
183866 ,p_event_id => l_array_event_id(Idx)
183867 ,p_event_class_code => l_array_class_code(Idx)
183868 ,p_event_type_code => l_array_event_type(Idx)
183869 ,p_event_number => l_array_event_number(Idx)
183870 ,p_event_date => l_array_event_date(Idx)
183871 ,p_transaction_date => l_array_transaction_date(Idx)
183872 ,p_reference_num_1 => l_array_reference_num_1(Idx)
183873 ,p_reference_num_2 => l_array_reference_num_2(Idx)
183874 ,p_reference_num_3 => l_array_reference_num_3(Idx)
183875 ,p_reference_num_4 => l_array_reference_num_4(Idx)
183876 ,p_reference_char_1 => l_array_reference_char_1(Idx)
183877 ,p_reference_char_2 => l_array_reference_char_2(Idx)
183878 ,p_reference_char_3 => l_array_reference_char_3(Idx)
183879 ,p_reference_char_4 => l_array_reference_char_4(Idx)
183880 ,p_reference_date_1 => l_array_reference_date_1(Idx)
183881 ,p_reference_date_2 => l_array_reference_date_2(Idx)
183882 ,p_reference_date_3 => l_array_reference_date_3(Idx)
183883 ,p_reference_date_4 => l_array_reference_date_4(Idx)
183884 ,p_event_created_by => l_array_event_created_by(Idx)
183885 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
183886 --
183887 END IF;
183888
183889
183890
183891 --
183892 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
183893
183894 l_acct_reversal_source := SUBSTR(NULL, 1,30);
183895
183896 IF l_continue_with_lines THEN
183897 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
183898 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
183899
183900 xla_accounting_err_pkg.build_message
183901 (p_appli_s_name => 'XLA'
183902 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
183903 ,p_token_1 => 'LINE_NUMBER'
183904 ,p_value_1 => l_array_extract_line_num(Idx)
183905 ,p_token_2 => 'PRODUCT_NAME'
183906 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183907 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183908 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
183909 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183910
183911 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
183912 --
183913 -- following sets the accounting attributes needed to reverse
183914 -- accounting for a distributeion
183915 --
183916
183917 --
183918 -- 5217187
183919 --
183920 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
183921 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
183922 g_array_event(l_event_id).array_value_num('header_index'));
183923 --
183924 --
183925
183926 -- No reversal code generated
183927
183928 xla_ae_lines_pkg.SetAcctReversalAttrs
183929 (p_event_id => l_event_id
183930 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
183931 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183932 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
183933 END IF;
183934
183935 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
183936 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
183940 p_application_id => p_application_id
183937
183938 --
183939 AcctLineType_72 (
183941 ,p_event_id => l_event_id
183942 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183943 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183944 ,p_actual_flag => l_actual_flag
183945 ,p_balance_type_code => l_balance_type_code
183946 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183947
183948 , p_source_1 => l_array_source_1(Idx)
183949 , p_source_2 => l_array_source_2(Idx)
183950 , p_source_3 => l_array_source_3(Idx)
183951 , p_source_5 => l_array_source_5(Idx)
183952 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
183953 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
183954 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
183955 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
183956 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
183957 , p_source_11 => l_array_source_11(Idx)
183958 );
183959 If(l_balance_type_code = 'A') THEN
183960 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183961 END IF;
183962
183963 --
183964
183965
183966 --
183967 AcctLineType_80 (
183968 p_application_id => p_application_id
183969 ,p_event_id => l_event_id
183970 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183971 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183972 ,p_actual_flag => l_actual_flag
183973 ,p_balance_type_code => l_balance_type_code
183974 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183975
183976 , p_source_1 => l_array_source_1(Idx)
183977 , p_source_2 => l_array_source_2(Idx)
183978 , p_source_3 => l_array_source_3(Idx)
183979 , p_source_5 => l_array_source_5(Idx)
183980 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
183981 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
183982 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
183983 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
183984 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
183985 , p_source_11 => l_array_source_11(Idx)
183986 );
183987 If(l_balance_type_code = 'A') THEN
183988 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183989 END IF;
183990
183991 --
183992
183993
183994 --
183995 AcctLineType_166 (
183996 p_application_id => p_application_id
183997 ,p_event_id => l_event_id
183998 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183999 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184000 ,p_actual_flag => l_actual_flag
184001 ,p_balance_type_code => l_balance_type_code
184002 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184003
184004 , p_source_1 => l_array_source_1(Idx)
184005 , p_source_2 => l_array_source_2(Idx)
184006 , p_source_3 => l_array_source_3(Idx)
184007 , p_source_5 => l_array_source_5(Idx)
184008 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
184009 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
184010 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
184011 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
184012 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
184013 , p_source_11 => l_array_source_11(Idx)
184014 );
184015 If(l_balance_type_code = 'A') THEN
184016 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184017 END IF;
184018
184019 --
184020
184021 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
184022 -- or secondary ledger that has different currency with primary
184023 -- or alc that is calculated by sla
184024 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
184025 (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'))
184026
184027 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
184028 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
184029 AND (l_actual_flag = 'A')) THEN
184030 XLA_AE_LINES_PKG.CreateGainOrLossLines(
184031 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
184032 ,p_application_id => p_application_id
184033 ,p_amb_context_code => 'DEFAULT'
184034 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
184035 ,p_event_class_code => C_EVENT_CLASS_CODE
184036 ,p_event_type_code => C_EVENT_TYPE_CODE
184037
184038 ,p_gain_ccid => -1
184039 ,p_loss_ccid => -1
184040
184041 ,p_actual_flag => l_actual_flag
184042 ,p_enc_flag => null
184043 ,p_actual_g_l_ref => l_actual_gain_loss_ref
184044 ,p_enc_g_l_ref => null
184045 );
184046 END IF;
184047 END IF;
184048 END IF;
184049
184050 ELSE
184051 --
184052 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
184053 --
184054 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184055 trace
184056 (p_msg => 'Trancaction revesal option is Y'
184057 ,p_level => C_LEVEL_STATEMENT
184058 ,p_module => l_log_module);
184059 END IF;
184060 END IF;
184061
184062 END LOOP;
184063 l_result := XLA_AE_LINES_PKG.InsertLines ;
184064 end loop;
184065 close line_cur;
184066
184067
184068 --
184069 -- insert headers into xla_ae_headers_gt table
184070 --
184071 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
184072
184073 -- insert into errors table here.
184074
184075 END LOOP;
184076
184077 --
184078 -- 4865292
184079 --
184080 -- Compare g_hdr_extract_count with event count in
184084
184081 -- CreateHeadersAndLines.
184082 --
184083 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
184085 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184086 trace (p_msg => '# rows extracted from header extract objects '
184087 || ' (running total): '
184088 || g_hdr_extract_count
184089 ,p_level => C_LEVEL_STATEMENT
184090 ,p_module => l_log_module);
184091 END IF;
184092
184093 CLOSE header_cur;
184094 --
184095
184096 --
184097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184098 trace
184099 (p_msg => 'END of EventClass_300'
184100 ,p_level => C_LEVEL_PROCEDURE
184101 ,p_module => l_log_module);
184102 END IF;
184103 --
184104 RETURN l_result;
184105 EXCEPTION
184106 WHEN xla_exceptions_pkg.application_exception THEN
184107
184108 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
184109
184110
184111 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
184112
184113 RAISE;
184114
184115 WHEN NO_DATA_FOUND THEN
184116
184117 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
184118 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
184119
184120 FOR header_record IN header_cur
184121 LOOP
184122 l_array_header_events(header_record.event_id) := header_record.event_id;
184123 END LOOP;
184124
184125 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
184126 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
184127
184128 fnd_file.put_line(fnd_file.LOG, ' ');
184129 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
184130 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
184131 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
184132
184133 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
184134 LOOP
184135 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
184136 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
184137 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
184138 END IF;
184139 END LOOP;
184140
184141 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
184142 fnd_file.put_line(fnd_file.LOG, ' ');
184143
184144
184145 xla_exceptions_pkg.raise_message
184146 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_300');
184147
184148
184149 WHEN OTHERS THEN
184150 xla_exceptions_pkg.raise_message
184151 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_300');
184152 END EventClass_300;
184153 --
184154
184155 ---------------------------------------
184156 --
184157 -- PRIVATE PROCEDURE
184158 -- insert_sources_301
184159 --
184160 ----------------------------------------
184161 --
184162 PROCEDURE insert_sources_301(
184163 p_target_ledger_id IN NUMBER
184164 , p_language IN VARCHAR2
184165 , p_sla_ledger_id IN NUMBER
184166 , p_pad_start_date IN DATE
184167 , p_pad_end_date IN DATE
184168 )
184169 IS
184170
184171 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SO_ISSUE';
184172 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SHIPPING';
184173 p_apps_owner VARCHAR2(30);
184174 l_log_module VARCHAR2(240);
184175 BEGIN
184176 IF g_log_enabled THEN
184177 l_log_module := C_DEFAULT_MODULE||'.insert_sources_301';
184178 END IF;
184179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184180
184181 trace
184182 (p_msg => 'BEGIN of insert_sources_301'
184183 ,p_level => C_LEVEL_PROCEDURE
184184 ,p_module => l_log_module);
184185
184186 END IF;
184187
184188 -- select APPS owner
184189 SELECT oracle_username
184190 INTO p_apps_owner
184191 FROM fnd_oracle_userid
184192 WHERE read_only_flag = 'U'
184193 ;
184194
184195 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184196 trace
184197 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
184198 ' - p_language = '||p_language||
184199 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
184200 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
184201 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
184202 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
184203 ,p_level => C_LEVEL_STATEMENT
184204 ,p_module => l_log_module);
184205 END IF;
184206
184207
184208 --
184209 INSERT INTO xla_diag_sources --hdr1
184210 (
184211 event_id
184212 , ledger_id
184213 , sla_ledger_id
184214 , description_language
184215 , object_name
184216 , object_type_code
184217 , line_number
184218 , source_application_id
184219 , source_type_code
184220 , source_code
184221 , source_value
184222 , source_meaning
184223 , created_by
184224 , creation_date
184225 , last_update_date
184226 , last_updated_by
184227 , last_update_login
184228 , program_update_date
184229 , program_application_id
184230 , program_id
184231 , request_id
184232 )
184233 SELECT
184234 event_id
184235 , p_target_ledger_id
184236 , p_sla_ledger_id
184237 , p_language
184238 , object_name
184242 , source_type_code
184239 , object_type_code
184240 , line_number
184241 , source_application_id
184243 , source_code
184244 , SUBSTR(source_value ,1,1996)
184245 , SUBSTR(source_meaning,1,200)
184246 , xla_environment_pkg.g_Usr_Id
184247 , TRUNC(SYSDATE)
184248 , TRUNC(SYSDATE)
184249 , xla_environment_pkg.g_Usr_Id
184250 , xla_environment_pkg.g_Login_Id
184251 , TRUNC(SYSDATE)
184252 , xla_environment_pkg.g_Prog_Appl_Id
184253 , xla_environment_pkg.g_Prog_Id
184254 , xla_environment_pkg.g_Req_Id
184255 FROM (
184256 SELECT xet.event_id event_id
184257 , 0 line_number
184258 , CASE r
184259 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
184260 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
184261 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
184262 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
184263 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
184264 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
184265
184266 ELSE null
184267 END object_name
184268 , CASE r
184269 WHEN 1 THEN 'HEADER'
184270 WHEN 2 THEN 'HEADER'
184271 WHEN 3 THEN 'HEADER'
184272 WHEN 4 THEN 'HEADER'
184273 WHEN 5 THEN 'HEADER'
184274 WHEN 6 THEN 'HEADER'
184275
184276 ELSE null
184277 END object_type_code
184278 , CASE r
184279 WHEN 1 THEN '555'
184280 WHEN 2 THEN '555'
184281 WHEN 3 THEN '555'
184282 WHEN 4 THEN '555'
184283 WHEN 5 THEN '555'
184284 WHEN 6 THEN '555'
184285
184286 ELSE null
184287 END source_application_id
184288 , 'S' source_type_code
184289 , CASE r
184290 WHEN 1 THEN 'ENTITY_CODE'
184291 WHEN 2 THEN 'CURRENCY_CODE'
184292 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
184293 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
184294 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
184295 WHEN 6 THEN 'TRANSACTION_DATE'
184296
184297 ELSE null
184298 END source_code
184299 , CASE r
184300 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
184301 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
184302 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
184303 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
184304 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
184305 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
184306
184307 ELSE null
184308 END source_value
184309 , CASE r
184310 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
184311 1010186
184312 ,TO_CHAR(h1.CURRENCY_CODE)
184313 ,'CURRENCY_CODE'
184314 ,'S'
184315 ,555)
184316
184317 ELSE null
184318 END source_meaning
184319 FROM xla_events_gt xet
184320 , GMF_XLA_EXTRACT_HEADERS h1
184321 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
184322 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184323 AND xet.event_type_code = C_EVENT_TYPE_CODE
184324 AND h1.event_id = xet.event_id
184325
184326 )
184327 ;
184328 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184329
184330 trace
184331 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
184332 ,p_level => C_LEVEL_STATEMENT
184333 ,p_module => l_log_module);
184334
184335 END IF;
184336 --
184337
184338
184339
184340 --
184341 INSERT INTO xla_diag_sources --line1
184342 (
184343 event_id
184344 , ledger_id
184345 , sla_ledger_id
184346 , description_language
184347 , object_name
184348 , object_type_code
184349 , line_number
184350 , source_application_id
184351 , source_type_code
184352 , source_code
184353 , source_value
184354 , source_meaning
184355 , created_by
184356 , creation_date
184357 , last_update_date
184358 , last_updated_by
184359 , last_update_login
184360 , program_update_date
184361 , program_application_id
184362 , program_id
184363 , request_id
184364 )
184365 SELECT event_id
184366 , p_target_ledger_id
184367 , p_sla_ledger_id
184368 , p_language
184369 , object_name
184370 , object_type_code
184371 , line_number
184372 , source_application_id
184373 , source_type_code
184374 , source_code
184375 , SUBSTR(source_value,1,1996)
184376 , SUBSTR(source_meaning,1,200)
184377 , xla_environment_pkg.g_Usr_Id
184378 , TRUNC(SYSDATE)
184379 , TRUNC(SYSDATE)
184380 , xla_environment_pkg.g_Usr_Id
184381 , xla_environment_pkg.g_Login_Id
184382 , TRUNC(SYSDATE)
184383 , xla_environment_pkg.g_Prog_Appl_Id
184384 , xla_environment_pkg.g_Prog_Id
184385 , xla_environment_pkg.g_Req_Id
184386 FROM (
184387 SELECT xet.event_id event_id
184388 , l2.line_number line_number
184392 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
184389 , CASE r
184390 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
184391 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
184393 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
184394 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
184395
184396 ELSE null
184397 END object_name
184398 , CASE r
184399 WHEN 1 THEN 'LINE'
184400 WHEN 2 THEN 'LINE'
184401 WHEN 3 THEN 'LINE'
184402 WHEN 4 THEN 'LINE'
184403 WHEN 5 THEN 'LINE'
184404
184405 ELSE null
184406 END object_type_code
184407 , CASE r
184408 WHEN 1 THEN '555'
184409 WHEN 2 THEN '555'
184410 WHEN 3 THEN '555'
184411 WHEN 4 THEN '555'
184412 WHEN 5 THEN '555'
184413
184414 ELSE null
184415 END source_application_id
184416 , 'S' source_type_code
184417 , CASE r
184418 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
184419 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
184420 WHEN 3 THEN 'ENTERED_AMOUNT'
184421 WHEN 4 THEN 'LINE_ID'
184422 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
184423
184424 ELSE null
184425 END source_code
184426 , CASE r
184427 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
184428 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
184429 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
184430 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
184431 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
184432
184433 ELSE null
184434 END source_value
184435 , null source_meaning
184436 FROM xla_events_gt xet
184437 , GMF_XLA_EXTRACT_LINES l2
184438 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
184439 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184440 AND xet.event_type_code = C_EVENT_TYPE_CODE
184441 AND l2.event_id = xet.event_id
184442
184443 )
184444 ;
184445 --
184446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184447
184448 trace
184449 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
184450 ,p_level => C_LEVEL_STATEMENT
184451 ,p_module => l_log_module);
184452
184453 END IF;
184454
184455
184456 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184457 trace
184458 (p_msg => 'END of insert_sources_301'
184459 ,p_level => C_LEVEL_PROCEDURE
184460 ,p_module => l_log_module);
184461 END IF;
184462 EXCEPTION
184463 WHEN xla_exceptions_pkg.application_exception THEN
184464 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184465 trace
184466 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184467 ,p_level => C_LEVEL_EXCEPTION
184468 ,p_module => l_log_module);
184469 END IF;
184470 RAISE;
184471 WHEN OTHERS THEN
184472 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184473 trace
184474 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184475 ,p_level => C_LEVEL_EXCEPTION
184476 ,p_module => l_log_module);
184477 END IF;
184478 xla_exceptions_pkg.raise_message
184479 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_301');
184480 END insert_sources_301;
184481 --
184482
184483 ---------------------------------------
184484 --
184485 -- PRIVATE FUNCTION
184486 -- EventType_301
184487 --
184488 ----------------------------------------
184489 --
184490 FUNCTION EventType_301
184491 (p_application_id IN NUMBER
184492 ,p_base_ledger_id IN NUMBER
184493 ,p_target_ledger_id IN NUMBER
184494 ,p_language IN VARCHAR2
184495 ,p_currency_code IN VARCHAR2
184496 ,p_sla_ledger_id IN NUMBER
184497 ,p_pad_start_date IN DATE
184498 ,p_pad_end_date IN DATE
184499 ,p_primary_ledger_id IN NUMBER)
184500 RETURN BOOLEAN IS
184501 --
184502 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SO_ISSUE';
184503 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SHIPPING';
184504
184505 l_calculate_acctd_flag VARCHAR2(1) :='N';
184506 l_calculate_g_l_flag VARCHAR2(1) :='N';
184507 --
184508 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184509 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184510 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184511 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184512 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184513 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184514 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184515 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184516 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184517 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184518 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184519 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184520 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184524 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184521 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184522 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184523 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184525 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184526 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184527 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184528 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184529 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184530 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
184531 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184532 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
184533 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
184534
184535 l_event_id NUMBER;
184536 l_previous_event_id NUMBER;
184537 l_first_event_id NUMBER;
184538 l_last_event_id NUMBER;
184539
184540 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
184541 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
184542 --
184543 --
184544 l_result BOOLEAN := TRUE;
184545 l_rows NUMBER := 1000;
184546 l_event_type_name VARCHAR2(80) := 'Sales Order Issue';
184547 l_event_class_name VARCHAR2(80) := 'Shipments';
184548 l_description VARCHAR2(4000);
184549 l_transaction_reversal NUMBER;
184550 l_ae_header_id NUMBER;
184551 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
184552 l_log_module VARCHAR2(240);
184553 --
184554 l_acct_reversal_source VARCHAR2(30);
184555 l_trx_reversal_source VARCHAR2(30);
184556
184557 l_continue_with_lines BOOLEAN := TRUE;
184558 --
184559 l_acc_rev_gl_date_source DATE; -- 4262811
184560 --
184561 type t_array_event_id is table of number index by binary_integer;
184562
184563 l_rec_array_event t_rec_array_event;
184564 l_null_rec_array_event t_rec_array_event;
184565 l_array_ae_header_id xla_number_array_type;
184566 l_actual_flag VARCHAR2(1) := NULL;
184567 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
184568 l_balance_type_code VARCHAR2(1) :=NULL;
184569 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
184570
184571 --
184572 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
184573 --
184574
184575 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
184576 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
184577 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
184578 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
184579 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184580 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
184581
184582 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
184583 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
184584 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184585 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
184586 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184587
184588 l_array_source_6 t_array_source_6;
184589 l_array_source_7 t_array_source_7;
184590 l_array_source_8 t_array_source_8;
184591 l_array_source_9 t_array_source_9;
184592 l_array_source_10 t_array_source_10;
184593 l_array_source_12 t_array_source_12;
184594
184595 l_array_source_1 t_array_source_1;
184596 l_array_source_2 t_array_source_2;
184597 l_array_source_3 t_array_source_3;
184598 l_array_source_5 t_array_source_5;
184599 l_array_source_11 t_array_source_11;
184600
184601 --
184602 CURSOR header_cur
184603 IS
184604 SELECT /*+ leading(xet) cardinality(xet,1) */
184605 -- Event Type Code: SO_ISSUE
184606 -- Event Class Code: SHIPPING
184607 xet.entity_id
184608 , xet.legal_entity_id
184609 , xet.entity_code
184610 , xet.transaction_number
184611 , xet.event_id
184612 , xet.event_class_code
184613 , xet.event_type_code
184614 , xet.event_number
184615 , xet.event_date
184616 , xet.transaction_date
184617 , xet.reference_num_1
184618 , xet.reference_num_2
184619 , xet.reference_num_3
184620 , xet.reference_num_4
184621 , xet.reference_char_1
184622 , xet.reference_char_2
184623 , xet.reference_char_3
184624 , xet.reference_char_4
184625 , xet.reference_date_1
184626 , xet.reference_date_2
184627 , xet.reference_date_3
184628 , xet.reference_date_4
184629 , xet.event_created_by
184630 , xet.budgetary_control_flag
184631 , h1.ENTITY_CODE source_6
184632 , h1.CURRENCY_CODE source_7
184633 , h1.CURRENCY_CONVERSION_DATE source_8
184634 , h1.CURRENCY_CONVERSION_RATE source_9
184635 , h1.CURRENCY_CONVERSION_TYPE source_10
184636 , h1.TRANSACTION_DATE source_12
184637 FROM xla_events_gt xet
184638 , GMF_XLA_EXTRACT_HEADERS h1
184639 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
184640 and xet.event_type_code = C_EVENT_TYPE_CODE
184644 ;
184641 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
184642
184643 ORDER BY event_id
184645
184646
184647 --
184648 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
184649 IS
184650 SELECT /*+ leading(xet) cardinality(xet,1) */
184651 -- Event Type Code: SO_ISSUE
184652 -- Event Class Code: SHIPPING
184653 xet.entity_id
184654 ,xet.legal_entity_id
184655 ,xet.entity_code
184656 ,xet.transaction_number
184657 ,xet.event_id
184658 ,xet.event_class_code
184659 ,xet.event_type_code
184660 ,xet.event_number
184661 ,xet.event_date
184662 ,xet.transaction_date
184663 ,xet.reference_num_1
184664 ,xet.reference_num_2
184665 ,xet.reference_num_3
184666 ,xet.reference_num_4
184667 ,xet.reference_char_1
184668 ,xet.reference_char_2
184669 ,xet.reference_char_3
184670 ,xet.reference_char_4
184671 ,xet.reference_date_1
184672 ,xet.reference_date_2
184673 ,xet.reference_date_3
184674 ,xet.reference_date_4
184675 ,xet.event_created_by
184676 ,xet.budgetary_control_flag , l2.LINE_NUMBER
184677 , l2.TRANSACTION_ACCOUNT_ID source_1
184678 , l2.JOURNAL_LINE_TYPE source_2
184679 , l2.ENTERED_AMOUNT source_3
184680 , l2.LINE_ID source_5
184681 , l2.ACCOUNTED_AMOUNT source_11
184682 FROM xla_events_gt xet
184683 , GMF_XLA_EXTRACT_LINES l2
184684 WHERE xet.event_id between x_first_event_id and x_last_event_id
184685 and xet.event_date between p_pad_start_date and p_pad_end_date
184686 and xet.event_type_code = C_EVENT_TYPE_CODE
184687 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
184688 ;
184689
184690 --
184691 BEGIN
184692 IF g_log_enabled THEN
184693 l_log_module := C_DEFAULT_MODULE||'.EventType_301';
184694 END IF;
184695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184696 trace
184697 (p_msg => 'BEGIN of EventType_301'
184698 ,p_level => C_LEVEL_PROCEDURE
184699 ,p_module => l_log_module);
184700 END IF;
184701
184702 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184703 trace
184704 (p_msg => 'p_application_id = '||p_application_id||
184705 ' - p_base_ledger_id = '||p_base_ledger_id||
184706 ' - p_target_ledger_id = '||p_target_ledger_id||
184707 ' - p_language = '||p_language||
184708 ' - p_currency_code = '||p_currency_code||
184709 ' - p_sla_ledger_id = '||p_sla_ledger_id
184710 ,p_level => C_LEVEL_STATEMENT
184711 ,p_module => l_log_module);
184712 END IF;
184713 --
184714 -- initialze arrays
184715 --
184716 g_array_event.DELETE;
184717 l_rec_array_event := l_null_rec_array_event;
184718 --
184719 --------------------------------------
184720 -- 4262811 Initialze MPA Line Number
184721 --------------------------------------
184722 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
184723
184724 --
184725
184726 --
184727 OPEN header_cur;
184728 --
184729 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184730 trace
184731 (p_msg => 'SQL - FETCH header_cur'
184732 ,p_level => C_LEVEL_STATEMENT
184733 ,p_module => l_log_module);
184734 END IF;
184735 --
184736 LOOP
184737 FETCH header_cur BULK COLLECT INTO
184738 l_array_entity_id
184739 , l_array_legal_entity_id
184740 , l_array_entity_code
184741 , l_array_transaction_num
184742 , l_array_event_id
184743 , l_array_class_code
184744 , l_array_event_type
184745 , l_array_event_number
184746 , l_array_event_date
184747 , l_array_transaction_date
184748 , l_array_reference_num_1
184749 , l_array_reference_num_2
184750 , l_array_reference_num_3
184751 , l_array_reference_num_4
184752 , l_array_reference_char_1
184753 , l_array_reference_char_2
184754 , l_array_reference_char_3
184755 , l_array_reference_char_4
184756 , l_array_reference_date_1
184757 , l_array_reference_date_2
184758 , l_array_reference_date_3
184759 , l_array_reference_date_4
184760 , l_array_event_created_by
184761 , l_array_budgetary_control_flag
184762 , l_array_source_6
184763 , l_array_source_7
184764 , l_array_source_8
184765 , l_array_source_9
184766 , l_array_source_10
184767 , l_array_source_12
184768 LIMIT l_rows;
184769 --
184770 IF (C_LEVEL_EVENT >= g_log_level) THEN
184771 trace
184772 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
184773 ,p_level => C_LEVEL_EVENT
184774 ,p_module => l_log_module);
184775 END IF;
184776 --
184777 EXIT WHEN l_array_entity_id.COUNT = 0;
184778
184779 -- initialize arrays
184780 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
184781 XLA_AE_LINES_PKG.g_rec_lines := NULL;
184782
184783 --
184784 -- Bug 4458708
184785 --
184786 XLA_AE_LINES_PKG.g_LineNumber := 0;
184787
184788
184789 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
184790 g_last_hdr_idx := l_array_event_id.LAST;
184791 --
184792 -- loop for the headers. Each iteration is for each header extract row
184793 -- fetched in header cursor
184794 --
184795 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
184796
184797 --
184798 -- set event info as cache for other routines to refer event attributes
184799 --
184800 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
184801 (p_application_id => p_application_id
184802 ,p_primary_ledger_id => p_primary_ledger_id
184803 ,p_base_ledger_id => p_base_ledger_id
184804 ,p_target_ledger_id => p_target_ledger_id
184808 ,p_transaction_num => l_array_transaction_num(hdr_idx)
184805 ,p_entity_id => l_array_entity_id(hdr_idx)
184806 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
184807 ,p_entity_code => l_array_entity_code(hdr_idx)
184809 ,p_event_id => l_array_event_id(hdr_idx)
184810 ,p_event_class_code => l_array_class_code(hdr_idx)
184811 ,p_event_type_code => l_array_event_type(hdr_idx)
184812 ,p_event_number => l_array_event_number(hdr_idx)
184813 ,p_event_date => l_array_event_date(hdr_idx)
184814 ,p_transaction_date => l_array_transaction_date(hdr_idx)
184815 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
184816 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
184817 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
184818 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
184819 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
184820 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
184821 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
184822 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
184823 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
184824 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
184825 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
184826 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
184827 ,p_event_created_by => l_array_event_created_by(hdr_idx)
184828 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
184829
184830 --
184831 -- set the status of entry to C_VALID (0)
184832 --
184833 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
184834
184835 --
184836 -- initialize a row for ae header
184837 --
184838 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
184839
184840 l_event_id := l_array_event_id(hdr_idx);
184841
184842 --
184843 -- storing the hdr_idx for event. May be used by line cursor.
184844 --
184845 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
184846
184847 --
184848 -- store sources from header extract. This can be improved to
184849 -- store only those sources from header extract that may be used in lines
184850 --
184851
184852 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
184853 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
184854 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
184855 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
184856 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
184857 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
184858
184859 --
184860 -- initilaize the status of ae headers for diffrent balance types
184861 -- the status is initialised to C_NOT_CREATED (2)
184862 --
184863 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184864 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184865 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184866
184867 --
184868 -- call api to validate and store accounting attributes for header
184869 --
184870
184871 ------------------------------------------------------------
184872 -- Accrual Reversal : to get date for Standard Source (NONE)
184873 ------------------------------------------------------------
184874 l_acc_rev_gl_date_source := NULL;
184875
184876 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
184877 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
184878
184879
184880 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
184881
184882 XLA_AE_HEADER_PKG.SetJeCategoryName;
184883
184884 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
184885 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
184886 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
184887 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
184888 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
184889
184890
184891 -- No header level analytical criteria
184892
184893 --
184894 --accounting attribute enhancement, bug 3612931
184895 --
184896 l_trx_reversal_source := SUBSTR(NULL, 1,30);
184897
184898 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
184899 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
184900
184901 xla_accounting_err_pkg.build_message
184902 (p_appli_s_name => 'XLA'
184903 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
184904 ,p_token_1 => 'ACCT_ATTR_NAME'
184905 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
184906 ,p_token_2 => 'PRODUCT_NAME'
184907 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
184908 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
184909 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
184910 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
184911
184912 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
184913 --
184914 -- following sets the accounting attributes needed to reverse
184915 -- accounting for a distributeion
184916 --
184917 xla_ae_lines_pkg.SetTrxReversalAttrs
184918 (p_event_id => l_event_id
184922 END IF;
184919 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
184920 ,p_trx_reversal_source => l_trx_reversal_source);
184921
184923
184924
184925 ----------------------------------------------------------------
184926 -- 4262811 - update the header statuses to invalid in need be
184927 ----------------------------------------------------------------
184928 --
184929 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
184930
184931
184932 -----------------------------------------------
184933 -- No accrual reversal for the event class/type
184934 -----------------------------------------------
184935 ----------------------------------------------------------------
184936
184937 --
184938 -- this ends the header loop iteration for one bulk fetch
184939 --
184940 END LOOP;
184941
184942 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
184943 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
184944
184945 --
184946 -- insert dummy rows into lines gt table that were created due to
184947 -- transaction reversals
184948 --
184949 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
184950 l_result := XLA_AE_LINES_PKG.InsertLines;
184951 END IF;
184952
184953 --
184954 -- reset the temp_line_num for each set of events fetched from header
184955 -- cursor rather than doing it for each new event in line cursor
184956 -- Bug 3939231
184957 --
184958 xla_ae_lines_pkg.g_temp_line_num := 0;
184959
184960
184961
184962 --
184963 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
184964 --
184965 --
184966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184967
184968 trace
184969 (p_msg => 'SQL - FETCH line_cur'
184970 ,p_level => C_LEVEL_STATEMENT
184971 ,p_module => l_log_module);
184972
184973 END IF;
184974 --
184975 --
184976 LOOP
184977 --
184978 FETCH line_cur BULK COLLECT INTO
184979 l_array_entity_id
184980 , l_array_legal_entity_id
184981 , l_array_entity_code
184982 , l_array_transaction_num
184983 , l_array_event_id
184984 , l_array_class_code
184985 , l_array_event_type
184986 , l_array_event_number
184987 , l_array_event_date
184988 , l_array_transaction_date
184989 , l_array_reference_num_1
184990 , l_array_reference_num_2
184991 , l_array_reference_num_3
184992 , l_array_reference_num_4
184993 , l_array_reference_char_1
184994 , l_array_reference_char_2
184995 , l_array_reference_char_3
184996 , l_array_reference_char_4
184997 , l_array_reference_date_1
184998 , l_array_reference_date_2
184999 , l_array_reference_date_3
185000 , l_array_reference_date_4
185001 , l_array_event_created_by
185002 , l_array_budgetary_control_flag
185003 , l_array_extract_line_num
185004 , l_array_source_1
185005 , l_array_source_2
185006 , l_array_source_3
185007 , l_array_source_5
185008 , l_array_source_11
185009 LIMIT l_rows;
185010
185011 --
185012 IF (C_LEVEL_EVENT >= g_log_level) THEN
185013 trace
185014 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
185015 ,p_level => C_LEVEL_EVENT
185016 ,p_module => l_log_module);
185017 END IF;
185018 --
185019 EXIT WHEN l_array_entity_id.count = 0;
185020
185021 XLA_AE_LINES_PKG.g_rec_lines := null;
185022
185023 --
185024 -- Bug 4458708
185025 --
185026 XLA_AE_LINES_PKG.g_LineNumber := 0;
185027 --
185028 --
185029
185030 FOR Idx IN 1..l_array_event_id.count LOOP
185031 --
185032 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
185033 --
185034 l_event_id := l_array_event_id(idx); -- 5648433
185035
185036 --
185037 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185038 --
185039
185040 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
185041 (g_array_event(l_event_id).array_value_num('header_index'))
185042 ,'N'
185043 ) <> 'Y'
185044 THEN
185045 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185046 trace
185047 (p_msg => 'Trancaction revesal option is not Y '
185048 ,p_level => C_LEVEL_STATEMENT
185049 ,p_module => l_log_module);
185050 END IF;
185051
185052 --
185053 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
185054 --
185055 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
185056 --
185057 -- set event info as cache for other routines to refer event attributes
185058 --
185059
185060 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
185061 l_previous_event_id := l_event_id;
185062
185063 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
185064 (p_application_id => p_application_id
185065 ,p_primary_ledger_id => p_primary_ledger_id
185066 ,p_base_ledger_id => p_base_ledger_id
185067 ,p_target_ledger_id => p_target_ledger_id
185068 ,p_entity_id => l_array_entity_id(Idx)
185069 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
185070 ,p_entity_code => l_array_entity_code(Idx)
185071 ,p_transaction_num => l_array_transaction_num(Idx)
185072 ,p_event_id => l_array_event_id(Idx)
185073 ,p_event_class_code => l_array_class_code(Idx)
185074 ,p_event_type_code => l_array_event_type(Idx)
185075 ,p_event_number => l_array_event_number(Idx)
185079 ,p_reference_num_2 => l_array_reference_num_2(Idx)
185076 ,p_event_date => l_array_event_date(Idx)
185077 ,p_transaction_date => l_array_transaction_date(Idx)
185078 ,p_reference_num_1 => l_array_reference_num_1(Idx)
185080 ,p_reference_num_3 => l_array_reference_num_3(Idx)
185081 ,p_reference_num_4 => l_array_reference_num_4(Idx)
185082 ,p_reference_char_1 => l_array_reference_char_1(Idx)
185083 ,p_reference_char_2 => l_array_reference_char_2(Idx)
185084 ,p_reference_char_3 => l_array_reference_char_3(Idx)
185085 ,p_reference_char_4 => l_array_reference_char_4(Idx)
185086 ,p_reference_date_1 => l_array_reference_date_1(Idx)
185087 ,p_reference_date_2 => l_array_reference_date_2(Idx)
185088 ,p_reference_date_3 => l_array_reference_date_3(Idx)
185089 ,p_reference_date_4 => l_array_reference_date_4(Idx)
185090 ,p_event_created_by => l_array_event_created_by(Idx)
185091 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
185092 --
185093 END IF;
185094
185095
185096
185097 --
185098 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
185099
185100 l_acct_reversal_source := SUBSTR(NULL, 1,30);
185101
185102 IF l_continue_with_lines THEN
185103 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
185104 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
185105
185106 xla_accounting_err_pkg.build_message
185107 (p_appli_s_name => 'XLA'
185108 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
185109 ,p_token_1 => 'LINE_NUMBER'
185110 ,p_value_1 => l_array_extract_line_num(Idx)
185111 ,p_token_2 => 'PRODUCT_NAME'
185112 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
185113 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
185114 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
185115 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
185116
185117 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
185118 --
185119 -- following sets the accounting attributes needed to reverse
185120 -- accounting for a distributeion
185121 --
185122
185123 --
185124 -- 5217187
185125 --
185126 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
185127 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
185128 g_array_event(l_event_id).array_value_num('header_index'));
185129 --
185130 --
185131
185132 -- No reversal code generated
185133
185134 xla_ae_lines_pkg.SetAcctReversalAttrs
185135 (p_event_id => l_event_id
185136 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
185137 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185138 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
185139 END IF;
185140
185141 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
185142 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
185143
185144 --
185145 AcctLineType_81 (
185146 p_application_id => p_application_id
185147 ,p_event_id => l_event_id
185148 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185149 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185150 ,p_actual_flag => l_actual_flag
185151 ,p_balance_type_code => l_balance_type_code
185152 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185153
185154 , p_source_1 => l_array_source_1(Idx)
185155 , p_source_2 => l_array_source_2(Idx)
185156 , p_source_3 => l_array_source_3(Idx)
185157 , p_source_5 => l_array_source_5(Idx)
185158 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
185159 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
185160 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
185161 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
185162 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
185163 , p_source_11 => l_array_source_11(Idx)
185164 );
185165 If(l_balance_type_code = 'A') THEN
185166 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185167 END IF;
185168
185169 --
185170
185171
185172 --
185173 AcctLineType_153 (
185174 p_application_id => p_application_id
185175 ,p_event_id => l_event_id
185176 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185177 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185178 ,p_actual_flag => l_actual_flag
185179 ,p_balance_type_code => l_balance_type_code
185180 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185181
185182 , p_source_1 => l_array_source_1(Idx)
185183 , p_source_2 => l_array_source_2(Idx)
185184 , p_source_3 => l_array_source_3(Idx)
185185 , p_source_5 => l_array_source_5(Idx)
185186 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
185187 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
185188 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
185189 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
185190 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
185191 , p_source_11 => l_array_source_11(Idx)
185192 );
185193 If(l_balance_type_code = 'A') THEN
185194 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185195 END IF;
185196
185197 --
185198
185199 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
185200 -- or secondary ledger that has different currency with primary
185201 -- or alc that is calculated by sla
185205 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
185202 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
185203 (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'))
185204
185206 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
185207 AND (l_actual_flag = 'A')) THEN
185208 XLA_AE_LINES_PKG.CreateGainOrLossLines(
185209 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
185210 ,p_application_id => p_application_id
185211 ,p_amb_context_code => 'DEFAULT'
185212 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
185213 ,p_event_class_code => C_EVENT_CLASS_CODE
185214 ,p_event_type_code => C_EVENT_TYPE_CODE
185215
185216 ,p_gain_ccid => -1
185217 ,p_loss_ccid => -1
185218
185219 ,p_actual_flag => l_actual_flag
185220 ,p_enc_flag => null
185221 ,p_actual_g_l_ref => l_actual_gain_loss_ref
185222 ,p_enc_g_l_ref => null
185223 );
185224 END IF;
185225 END IF;
185226 END IF;
185227
185228 ELSE
185229 --
185230 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185231 --
185232 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185233 trace
185234 (p_msg => 'Trancaction revesal option is Y'
185235 ,p_level => C_LEVEL_STATEMENT
185236 ,p_module => l_log_module);
185237 END IF;
185238 END IF;
185239
185240 END LOOP;
185241 l_result := XLA_AE_LINES_PKG.InsertLines ;
185242 end loop;
185243 close line_cur;
185244
185245
185246 --
185247 -- insert headers into xla_ae_headers_gt table
185248 --
185249 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
185250
185251 -- insert into errors table here.
185252
185253 END LOOP;
185254
185255 --
185256 -- 4865292
185257 --
185258 -- Compare g_hdr_extract_count with event count in
185259 -- CreateHeadersAndLines.
185260 --
185261 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
185262
185263 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185264 trace (p_msg => '# rows extracted from header extract objects '
185265 || ' (running total): '
185266 || g_hdr_extract_count
185267 ,p_level => C_LEVEL_STATEMENT
185268 ,p_module => l_log_module);
185269 END IF;
185270
185271 CLOSE header_cur;
185272 --
185273
185274 --
185275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185276 trace
185277 (p_msg => 'END of EventType_301'
185278 ,p_level => C_LEVEL_PROCEDURE
185279 ,p_module => l_log_module);
185280 END IF;
185281 --
185282 RETURN l_result;
185283 EXCEPTION
185284 WHEN xla_exceptions_pkg.application_exception THEN
185285
185286 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185287
185288
185289 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
185290
185291 RAISE;
185292
185293 WHEN NO_DATA_FOUND THEN
185294
185295 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185296 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
185297
185298 FOR header_record IN header_cur
185299 LOOP
185300 l_array_header_events(header_record.event_id) := header_record.event_id;
185301 END LOOP;
185302
185303 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
185304 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
185305
185306 fnd_file.put_line(fnd_file.LOG, ' ');
185307 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185308 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
185309 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
185310
185311 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
185312 LOOP
185313 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
185314 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
185315 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
185316 END IF;
185317 END LOOP;
185318
185319 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185320 fnd_file.put_line(fnd_file.LOG, ' ');
185321
185322
185323 xla_exceptions_pkg.raise_message
185324 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_301');
185325
185326
185327 WHEN OTHERS THEN
185328 xla_exceptions_pkg.raise_message
185329 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_301');
185330 END EventType_301;
185331 --
185332
185333 ---------------------------------------
185334 --
185335 -- PRIVATE PROCEDURE
185336 -- insert_sources_302
185337 --
185338 ----------------------------------------
185339 --
185340 PROCEDURE insert_sources_302(
185341 p_target_ledger_id IN NUMBER
185342 , p_language IN VARCHAR2
185343 , p_sla_ledger_id IN NUMBER
185344 , p_pad_start_date IN DATE
185345 , p_pad_end_date IN DATE
185346 )
185347 IS
185348
185349 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'STEP';
185350 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BATCH_RESOURCE';
185354 IF g_log_enabled THEN
185351 p_apps_owner VARCHAR2(30);
185352 l_log_module VARCHAR2(240);
185353 BEGIN
185355 l_log_module := C_DEFAULT_MODULE||'.insert_sources_302';
185356 END IF;
185357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185358
185359 trace
185360 (p_msg => 'BEGIN of insert_sources_302'
185361 ,p_level => C_LEVEL_PROCEDURE
185362 ,p_module => l_log_module);
185363
185364 END IF;
185365
185366 -- select APPS owner
185367 SELECT oracle_username
185368 INTO p_apps_owner
185369 FROM fnd_oracle_userid
185370 WHERE read_only_flag = 'U'
185371 ;
185372
185373 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185374 trace
185375 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
185376 ' - p_language = '||p_language||
185377 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
185378 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
185379 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
185380 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
185381 ,p_level => C_LEVEL_STATEMENT
185382 ,p_module => l_log_module);
185383 END IF;
185384
185385
185386 --
185387 INSERT INTO xla_diag_sources --hdr1
185388 (
185389 event_id
185390 , ledger_id
185391 , sla_ledger_id
185392 , description_language
185393 , object_name
185394 , object_type_code
185395 , line_number
185396 , source_application_id
185397 , source_type_code
185398 , source_code
185399 , source_value
185400 , source_meaning
185401 , created_by
185402 , creation_date
185403 , last_update_date
185404 , last_updated_by
185405 , last_update_login
185406 , program_update_date
185407 , program_application_id
185408 , program_id
185409 , request_id
185410 )
185411 SELECT
185412 event_id
185413 , p_target_ledger_id
185414 , p_sla_ledger_id
185415 , p_language
185416 , object_name
185417 , object_type_code
185418 , line_number
185419 , source_application_id
185420 , source_type_code
185421 , source_code
185422 , SUBSTR(source_value ,1,1996)
185423 , SUBSTR(source_meaning,1,200)
185424 , xla_environment_pkg.g_Usr_Id
185425 , TRUNC(SYSDATE)
185426 , TRUNC(SYSDATE)
185427 , xla_environment_pkg.g_Usr_Id
185428 , xla_environment_pkg.g_Login_Id
185429 , TRUNC(SYSDATE)
185430 , xla_environment_pkg.g_Prog_Appl_Id
185431 , xla_environment_pkg.g_Prog_Id
185432 , xla_environment_pkg.g_Req_Id
185433 FROM (
185434 SELECT xet.event_id event_id
185435 , 0 line_number
185436 , CASE r
185437 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
185438 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
185439 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
185440 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
185441 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
185442 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
185443
185444 ELSE null
185445 END object_name
185446 , CASE r
185447 WHEN 1 THEN 'HEADER'
185448 WHEN 2 THEN 'HEADER'
185449 WHEN 3 THEN 'HEADER'
185450 WHEN 4 THEN 'HEADER'
185451 WHEN 5 THEN 'HEADER'
185452 WHEN 6 THEN 'HEADER'
185453
185454 ELSE null
185455 END object_type_code
185456 , CASE r
185457 WHEN 1 THEN '555'
185458 WHEN 2 THEN '555'
185459 WHEN 3 THEN '555'
185460 WHEN 4 THEN '555'
185461 WHEN 5 THEN '555'
185462 WHEN 6 THEN '555'
185463
185464 ELSE null
185465 END source_application_id
185466 , 'S' source_type_code
185467 , CASE r
185468 WHEN 1 THEN 'ENTITY_CODE'
185469 WHEN 2 THEN 'CURRENCY_CODE'
185470 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
185471 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
185472 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
185473 WHEN 6 THEN 'TRANSACTION_DATE'
185474
185475 ELSE null
185476 END source_code
185477 , CASE r
185478 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
185479 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
185480 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
185481 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
185482 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
185483 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
185484
185485 ELSE null
185486 END source_value
185487 , CASE r
185488 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
185489 1010186
185490 ,TO_CHAR(h1.CURRENCY_CODE)
185491 ,'CURRENCY_CODE'
185492 ,'S'
185493 ,555)
185494
185495 ELSE null
185496 END source_meaning
185497 FROM xla_events_gt xet
185498 , GMF_XLA_EXTRACT_HEADERS h1
185502 AND h1.event_id = xet.event_id
185499 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
185500 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185501 AND xet.event_type_code = C_EVENT_TYPE_CODE
185503
185504 )
185505 ;
185506 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185507
185508 trace
185509 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
185510 ,p_level => C_LEVEL_STATEMENT
185511 ,p_module => l_log_module);
185512
185513 END IF;
185514 --
185515
185516
185517
185518 --
185519 INSERT INTO xla_diag_sources --line1
185520 (
185521 event_id
185522 , ledger_id
185523 , sla_ledger_id
185524 , description_language
185525 , object_name
185526 , object_type_code
185527 , line_number
185528 , source_application_id
185529 , source_type_code
185530 , source_code
185531 , source_value
185532 , source_meaning
185533 , created_by
185534 , creation_date
185535 , last_update_date
185536 , last_updated_by
185537 , last_update_login
185538 , program_update_date
185539 , program_application_id
185540 , program_id
185541 , request_id
185542 )
185543 SELECT event_id
185544 , p_target_ledger_id
185545 , p_sla_ledger_id
185546 , p_language
185547 , object_name
185548 , object_type_code
185549 , line_number
185550 , source_application_id
185551 , source_type_code
185552 , source_code
185553 , SUBSTR(source_value,1,1996)
185554 , SUBSTR(source_meaning,1,200)
185555 , xla_environment_pkg.g_Usr_Id
185556 , TRUNC(SYSDATE)
185557 , TRUNC(SYSDATE)
185558 , xla_environment_pkg.g_Usr_Id
185559 , xla_environment_pkg.g_Login_Id
185560 , TRUNC(SYSDATE)
185561 , xla_environment_pkg.g_Prog_Appl_Id
185562 , xla_environment_pkg.g_Prog_Id
185563 , xla_environment_pkg.g_Req_Id
185564 FROM (
185565 SELECT xet.event_id event_id
185566 , l2.line_number line_number
185567 , CASE r
185568 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
185569 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
185570 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
185571 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
185572 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
185573
185574 ELSE null
185575 END object_name
185576 , CASE r
185577 WHEN 1 THEN 'LINE'
185578 WHEN 2 THEN 'LINE'
185579 WHEN 3 THEN 'LINE'
185580 WHEN 4 THEN 'LINE'
185581 WHEN 5 THEN 'LINE'
185582
185583 ELSE null
185584 END object_type_code
185585 , CASE r
185586 WHEN 1 THEN '555'
185587 WHEN 2 THEN '555'
185588 WHEN 3 THEN '555'
185589 WHEN 4 THEN '555'
185590 WHEN 5 THEN '555'
185591
185592 ELSE null
185593 END source_application_id
185594 , 'S' source_type_code
185595 , CASE r
185596 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
185597 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
185598 WHEN 3 THEN 'ENTERED_AMOUNT'
185599 WHEN 4 THEN 'LINE_ID'
185600 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
185601
185602 ELSE null
185603 END source_code
185604 , CASE r
185605 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
185606 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
185607 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
185608 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
185609 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
185610
185611 ELSE null
185612 END source_value
185613 , null source_meaning
185614 FROM xla_events_gt xet
185615 , GMF_XLA_EXTRACT_LINES l2
185616 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
185617 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185618 AND xet.event_type_code = C_EVENT_TYPE_CODE
185619 AND l2.event_id = xet.event_id
185620
185621 )
185622 ;
185623 --
185624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185625
185626 trace
185627 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
185628 ,p_level => C_LEVEL_STATEMENT
185629 ,p_module => l_log_module);
185630
185631 END IF;
185632
185633
185634 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185635 trace
185636 (p_msg => 'END of insert_sources_302'
185637 ,p_level => C_LEVEL_PROCEDURE
185638 ,p_module => l_log_module);
185639 END IF;
185640 EXCEPTION
185641 WHEN xla_exceptions_pkg.application_exception THEN
185642 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185643 trace
185644 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185645 ,p_level => C_LEVEL_EXCEPTION
185646 ,p_module => l_log_module);
185647 END IF;
185648 RAISE;
185649 WHEN OTHERS THEN
185650 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185651 trace
185655 END IF;
185652 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185653 ,p_level => C_LEVEL_EXCEPTION
185654 ,p_module => l_log_module);
185656 xla_exceptions_pkg.raise_message
185657 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_302');
185658 END insert_sources_302;
185659 --
185660
185661 ---------------------------------------
185662 --
185663 -- PRIVATE FUNCTION
185664 -- EventType_302
185665 --
185666 ----------------------------------------
185667 --
185668 FUNCTION EventType_302
185669 (p_application_id IN NUMBER
185670 ,p_base_ledger_id IN NUMBER
185671 ,p_target_ledger_id IN NUMBER
185672 ,p_language IN VARCHAR2
185673 ,p_currency_code IN VARCHAR2
185674 ,p_sla_ledger_id IN NUMBER
185675 ,p_pad_start_date IN DATE
185676 ,p_pad_end_date IN DATE
185677 ,p_primary_ledger_id IN NUMBER)
185678 RETURN BOOLEAN IS
185679 --
185680 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'STEP';
185681 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'BATCH_RESOURCE';
185682
185683 l_calculate_acctd_flag VARCHAR2(1) :='N';
185684 l_calculate_g_l_flag VARCHAR2(1) :='N';
185685 --
185686 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185687 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185688 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185689 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185690 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185691 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185692 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185693 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185694 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185695 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185696 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185697 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185698 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185699 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185700 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185701 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185702 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185703 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185704 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185705 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185706 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185707 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185708 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
185709 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185710 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
185711 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
185712
185713 l_event_id NUMBER;
185714 l_previous_event_id NUMBER;
185715 l_first_event_id NUMBER;
185716 l_last_event_id NUMBER;
185717
185718 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
185719 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
185720 --
185721 --
185722 l_result BOOLEAN := TRUE;
185723 l_rows NUMBER := 1000;
185724 l_event_type_name VARCHAR2(80) := 'Step Completion';
185725 l_event_class_name VARCHAR2(80) := 'Batch Resource Transactions';
185726 l_description VARCHAR2(4000);
185727 l_transaction_reversal NUMBER;
185728 l_ae_header_id NUMBER;
185729 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
185730 l_log_module VARCHAR2(240);
185731 --
185732 l_acct_reversal_source VARCHAR2(30);
185733 l_trx_reversal_source VARCHAR2(30);
185734
185735 l_continue_with_lines BOOLEAN := TRUE;
185736 --
185737 l_acc_rev_gl_date_source DATE; -- 4262811
185738 --
185739 type t_array_event_id is table of number index by binary_integer;
185740
185741 l_rec_array_event t_rec_array_event;
185742 l_null_rec_array_event t_rec_array_event;
185743 l_array_ae_header_id xla_number_array_type;
185744 l_actual_flag VARCHAR2(1) := NULL;
185745 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
185746 l_balance_type_code VARCHAR2(1) :=NULL;
185747 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
185748
185749 --
185750 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
185751 --
185752
185753 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
185754 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
185755 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
185756 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
185757 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
185758 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
185759
185760 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
185764 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
185761 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
185762 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
185763 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
185765
185766 l_array_source_6 t_array_source_6;
185767 l_array_source_7 t_array_source_7;
185768 l_array_source_8 t_array_source_8;
185769 l_array_source_9 t_array_source_9;
185770 l_array_source_10 t_array_source_10;
185771 l_array_source_12 t_array_source_12;
185772
185773 l_array_source_1 t_array_source_1;
185774 l_array_source_2 t_array_source_2;
185775 l_array_source_3 t_array_source_3;
185776 l_array_source_5 t_array_source_5;
185777 l_array_source_11 t_array_source_11;
185778
185779 --
185780 CURSOR header_cur
185781 IS
185782 SELECT /*+ leading(xet) cardinality(xet,1) */
185783 -- Event Type Code: STEP
185784 -- Event Class Code: BATCH_RESOURCE
185785 xet.entity_id
185786 , xet.legal_entity_id
185787 , xet.entity_code
185788 , xet.transaction_number
185789 , xet.event_id
185790 , xet.event_class_code
185791 , xet.event_type_code
185792 , xet.event_number
185793 , xet.event_date
185794 , xet.transaction_date
185795 , xet.reference_num_1
185796 , xet.reference_num_2
185797 , xet.reference_num_3
185798 , xet.reference_num_4
185799 , xet.reference_char_1
185800 , xet.reference_char_2
185801 , xet.reference_char_3
185802 , xet.reference_char_4
185803 , xet.reference_date_1
185804 , xet.reference_date_2
185805 , xet.reference_date_3
185806 , xet.reference_date_4
185807 , xet.event_created_by
185808 , xet.budgetary_control_flag
185809 , h1.ENTITY_CODE source_6
185810 , h1.CURRENCY_CODE source_7
185811 , h1.CURRENCY_CONVERSION_DATE source_8
185812 , h1.CURRENCY_CONVERSION_RATE source_9
185813 , h1.CURRENCY_CONVERSION_TYPE source_10
185814 , h1.TRANSACTION_DATE source_12
185815 FROM xla_events_gt xet
185816 , GMF_XLA_EXTRACT_HEADERS h1
185817 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
185818 and xet.event_type_code = C_EVENT_TYPE_CODE
185819 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
185820
185821 ORDER BY event_id
185822 ;
185823
185824
185825 --
185826 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
185827 IS
185828 SELECT /*+ leading(xet) cardinality(xet,1) */
185829 -- Event Type Code: STEP
185830 -- Event Class Code: BATCH_RESOURCE
185831 xet.entity_id
185832 ,xet.legal_entity_id
185833 ,xet.entity_code
185834 ,xet.transaction_number
185835 ,xet.event_id
185836 ,xet.event_class_code
185837 ,xet.event_type_code
185838 ,xet.event_number
185839 ,xet.event_date
185840 ,xet.transaction_date
185841 ,xet.reference_num_1
185842 ,xet.reference_num_2
185843 ,xet.reference_num_3
185844 ,xet.reference_num_4
185845 ,xet.reference_char_1
185846 ,xet.reference_char_2
185847 ,xet.reference_char_3
185848 ,xet.reference_char_4
185849 ,xet.reference_date_1
185850 ,xet.reference_date_2
185851 ,xet.reference_date_3
185852 ,xet.reference_date_4
185853 ,xet.event_created_by
185854 ,xet.budgetary_control_flag , l2.LINE_NUMBER
185855 , l2.TRANSACTION_ACCOUNT_ID source_1
185856 , l2.JOURNAL_LINE_TYPE source_2
185857 , l2.ENTERED_AMOUNT source_3
185858 , l2.LINE_ID source_5
185859 , l2.ACCOUNTED_AMOUNT source_11
185860 FROM xla_events_gt xet
185861 , GMF_XLA_EXTRACT_LINES l2
185862 WHERE xet.event_id between x_first_event_id and x_last_event_id
185863 and 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 xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
185866 ;
185867
185868 --
185869 BEGIN
185870 IF g_log_enabled THEN
185871 l_log_module := C_DEFAULT_MODULE||'.EventType_302';
185872 END IF;
185873 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185874 trace
185875 (p_msg => 'BEGIN of EventType_302'
185876 ,p_level => C_LEVEL_PROCEDURE
185877 ,p_module => l_log_module);
185878 END IF;
185879
185880 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185881 trace
185882 (p_msg => 'p_application_id = '||p_application_id||
185883 ' - p_base_ledger_id = '||p_base_ledger_id||
185884 ' - p_target_ledger_id = '||p_target_ledger_id||
185885 ' - p_language = '||p_language||
185886 ' - p_currency_code = '||p_currency_code||
185887 ' - p_sla_ledger_id = '||p_sla_ledger_id
185888 ,p_level => C_LEVEL_STATEMENT
185889 ,p_module => l_log_module);
185890 END IF;
185891 --
185892 -- initialze arrays
185893 --
185894 g_array_event.DELETE;
185895 l_rec_array_event := l_null_rec_array_event;
185896 --
185897 --------------------------------------
185898 -- 4262811 Initialze MPA Line Number
185899 --------------------------------------
185900 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
185901
185902 --
185903
185904 --
185905 OPEN header_cur;
185906 --
185907 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185908 trace
185909 (p_msg => 'SQL - FETCH header_cur'
185910 ,p_level => C_LEVEL_STATEMENT
185911 ,p_module => l_log_module);
185912 END IF;
185913 --
185914 LOOP
185915 FETCH header_cur BULK COLLECT INTO
185916 l_array_entity_id
185917 , l_array_legal_entity_id
185918 , l_array_entity_code
185922 , l_array_event_type
185919 , l_array_transaction_num
185920 , l_array_event_id
185921 , l_array_class_code
185923 , l_array_event_number
185924 , l_array_event_date
185925 , l_array_transaction_date
185926 , l_array_reference_num_1
185927 , l_array_reference_num_2
185928 , l_array_reference_num_3
185929 , l_array_reference_num_4
185930 , l_array_reference_char_1
185931 , l_array_reference_char_2
185932 , l_array_reference_char_3
185933 , l_array_reference_char_4
185934 , l_array_reference_date_1
185935 , l_array_reference_date_2
185936 , l_array_reference_date_3
185937 , l_array_reference_date_4
185938 , l_array_event_created_by
185939 , l_array_budgetary_control_flag
185940 , l_array_source_6
185941 , l_array_source_7
185942 , l_array_source_8
185943 , l_array_source_9
185944 , l_array_source_10
185945 , l_array_source_12
185946 LIMIT l_rows;
185947 --
185948 IF (C_LEVEL_EVENT >= g_log_level) THEN
185949 trace
185950 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
185951 ,p_level => C_LEVEL_EVENT
185952 ,p_module => l_log_module);
185953 END IF;
185954 --
185955 EXIT WHEN l_array_entity_id.COUNT = 0;
185956
185957 -- initialize arrays
185958 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
185959 XLA_AE_LINES_PKG.g_rec_lines := NULL;
185960
185961 --
185962 -- Bug 4458708
185963 --
185964 XLA_AE_LINES_PKG.g_LineNumber := 0;
185965
185966
185967 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
185968 g_last_hdr_idx := l_array_event_id.LAST;
185969 --
185970 -- loop for the headers. Each iteration is for each header extract row
185971 -- fetched in header cursor
185972 --
185973 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
185974
185975 --
185976 -- set event info as cache for other routines to refer event attributes
185977 --
185978 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
185979 (p_application_id => p_application_id
185980 ,p_primary_ledger_id => p_primary_ledger_id
185981 ,p_base_ledger_id => p_base_ledger_id
185982 ,p_target_ledger_id => p_target_ledger_id
185983 ,p_entity_id => l_array_entity_id(hdr_idx)
185984 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
185985 ,p_entity_code => l_array_entity_code(hdr_idx)
185986 ,p_transaction_num => l_array_transaction_num(hdr_idx)
185987 ,p_event_id => l_array_event_id(hdr_idx)
185988 ,p_event_class_code => l_array_class_code(hdr_idx)
185989 ,p_event_type_code => l_array_event_type(hdr_idx)
185990 ,p_event_number => l_array_event_number(hdr_idx)
185991 ,p_event_date => l_array_event_date(hdr_idx)
185992 ,p_transaction_date => l_array_transaction_date(hdr_idx)
185993 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
185994 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
185995 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
185996 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
185997 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
185998 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
185999 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
186000 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
186001 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
186002 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
186003 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
186004 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
186005 ,p_event_created_by => l_array_event_created_by(hdr_idx)
186006 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
186007
186008 --
186009 -- set the status of entry to C_VALID (0)
186010 --
186011 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186012
186013 --
186014 -- initialize a row for ae header
186015 --
186016 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
186017
186018 l_event_id := l_array_event_id(hdr_idx);
186019
186020 --
186021 -- storing the hdr_idx for event. May be used by line cursor.
186022 --
186023 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
186024
186025 --
186026 -- store sources from header extract. This can be improved to
186027 -- store only those sources from header extract that may be used in lines
186028 --
186029
186030 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
186031 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
186032 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
186033 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
186034 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
186035 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
186036
186037 --
186038 -- initilaize the status of ae headers for diffrent balance types
186039 -- the status is initialised to C_NOT_CREATED (2)
186040 --
186041 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186042 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186043 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186044
186045 --
186046 -- call api to validate and store accounting attributes for header
186047 --
186048
186049 ------------------------------------------------------------
186053
186050 -- Accrual Reversal : to get date for Standard Source (NONE)
186051 ------------------------------------------------------------
186052 l_acc_rev_gl_date_source := NULL;
186054 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
186055 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
186056
186057
186058 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
186059
186060 XLA_AE_HEADER_PKG.SetJeCategoryName;
186061
186062 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
186063 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
186064 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
186065 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
186066 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
186067
186068
186069 -- No header level analytical criteria
186070
186071 --
186072 --accounting attribute enhancement, bug 3612931
186073 --
186074 l_trx_reversal_source := SUBSTR(NULL, 1,30);
186075
186076 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
186077 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
186078
186079 xla_accounting_err_pkg.build_message
186080 (p_appli_s_name => 'XLA'
186081 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
186082 ,p_token_1 => 'ACCT_ATTR_NAME'
186083 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
186084 ,p_token_2 => 'PRODUCT_NAME'
186085 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186086 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186087 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
186088 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186089
186090 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
186091 --
186092 -- following sets the accounting attributes needed to reverse
186093 -- accounting for a distributeion
186094 --
186095 xla_ae_lines_pkg.SetTrxReversalAttrs
186096 (p_event_id => l_event_id
186097 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
186098 ,p_trx_reversal_source => l_trx_reversal_source);
186099
186100 END IF;
186101
186102
186103 ----------------------------------------------------------------
186104 -- 4262811 - update the header statuses to invalid in need be
186105 ----------------------------------------------------------------
186106 --
186107 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
186108
186109
186110 -----------------------------------------------
186111 -- No accrual reversal for the event class/type
186112 -----------------------------------------------
186113 ----------------------------------------------------------------
186114
186115 --
186116 -- this ends the header loop iteration for one bulk fetch
186117 --
186118 END LOOP;
186119
186120 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
186121 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
186122
186123 --
186124 -- insert dummy rows into lines gt table that were created due to
186125 -- transaction reversals
186126 --
186127 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
186128 l_result := XLA_AE_LINES_PKG.InsertLines;
186129 END IF;
186130
186131 --
186132 -- reset the temp_line_num for each set of events fetched from header
186133 -- cursor rather than doing it for each new event in line cursor
186134 -- Bug 3939231
186135 --
186136 xla_ae_lines_pkg.g_temp_line_num := 0;
186137
186138
186139
186140 --
186141 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
186142 --
186143 --
186144 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186145
186146 trace
186147 (p_msg => 'SQL - FETCH line_cur'
186148 ,p_level => C_LEVEL_STATEMENT
186149 ,p_module => l_log_module);
186150
186151 END IF;
186152 --
186153 --
186154 LOOP
186155 --
186156 FETCH line_cur BULK COLLECT INTO
186157 l_array_entity_id
186158 , l_array_legal_entity_id
186159 , l_array_entity_code
186160 , l_array_transaction_num
186161 , l_array_event_id
186162 , l_array_class_code
186163 , l_array_event_type
186164 , l_array_event_number
186165 , l_array_event_date
186166 , l_array_transaction_date
186167 , l_array_reference_num_1
186168 , l_array_reference_num_2
186169 , l_array_reference_num_3
186170 , l_array_reference_num_4
186171 , l_array_reference_char_1
186172 , l_array_reference_char_2
186173 , l_array_reference_char_3
186174 , l_array_reference_char_4
186175 , l_array_reference_date_1
186176 , l_array_reference_date_2
186177 , l_array_reference_date_3
186178 , l_array_reference_date_4
186179 , l_array_event_created_by
186180 , l_array_budgetary_control_flag
186181 , l_array_extract_line_num
186182 , l_array_source_1
186183 , l_array_source_2
186184 , l_array_source_3
186185 , l_array_source_5
186186 , l_array_source_11
186187 LIMIT l_rows;
186188
186189 --
186190 IF (C_LEVEL_EVENT >= g_log_level) THEN
186191 trace
186192 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
186193 ,p_level => C_LEVEL_EVENT
186194 ,p_module => l_log_module);
186198
186195 END IF;
186196 --
186197 EXIT WHEN l_array_entity_id.count = 0;
186199 XLA_AE_LINES_PKG.g_rec_lines := null;
186200
186201 --
186202 -- Bug 4458708
186203 --
186204 XLA_AE_LINES_PKG.g_LineNumber := 0;
186205 --
186206 --
186207
186208 FOR Idx IN 1..l_array_event_id.count LOOP
186209 --
186210 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
186211 --
186212 l_event_id := l_array_event_id(idx); -- 5648433
186213
186214 --
186215 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186216 --
186217
186218 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
186219 (g_array_event(l_event_id).array_value_num('header_index'))
186220 ,'N'
186221 ) <> 'Y'
186222 THEN
186223 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186224 trace
186225 (p_msg => 'Trancaction revesal option is not Y '
186226 ,p_level => C_LEVEL_STATEMENT
186227 ,p_module => l_log_module);
186228 END IF;
186229
186230 --
186231 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
186232 --
186233 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186234 --
186235 -- set event info as cache for other routines to refer event attributes
186236 --
186237
186238 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
186239 l_previous_event_id := l_event_id;
186240
186241 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
186242 (p_application_id => p_application_id
186243 ,p_primary_ledger_id => p_primary_ledger_id
186244 ,p_base_ledger_id => p_base_ledger_id
186245 ,p_target_ledger_id => p_target_ledger_id
186246 ,p_entity_id => l_array_entity_id(Idx)
186247 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
186248 ,p_entity_code => l_array_entity_code(Idx)
186249 ,p_transaction_num => l_array_transaction_num(Idx)
186250 ,p_event_id => l_array_event_id(Idx)
186251 ,p_event_class_code => l_array_class_code(Idx)
186252 ,p_event_type_code => l_array_event_type(Idx)
186253 ,p_event_number => l_array_event_number(Idx)
186254 ,p_event_date => l_array_event_date(Idx)
186255 ,p_transaction_date => l_array_transaction_date(Idx)
186256 ,p_reference_num_1 => l_array_reference_num_1(Idx)
186257 ,p_reference_num_2 => l_array_reference_num_2(Idx)
186258 ,p_reference_num_3 => l_array_reference_num_3(Idx)
186259 ,p_reference_num_4 => l_array_reference_num_4(Idx)
186260 ,p_reference_char_1 => l_array_reference_char_1(Idx)
186261 ,p_reference_char_2 => l_array_reference_char_2(Idx)
186262 ,p_reference_char_3 => l_array_reference_char_3(Idx)
186263 ,p_reference_char_4 => l_array_reference_char_4(Idx)
186264 ,p_reference_date_1 => l_array_reference_date_1(Idx)
186265 ,p_reference_date_2 => l_array_reference_date_2(Idx)
186266 ,p_reference_date_3 => l_array_reference_date_3(Idx)
186267 ,p_reference_date_4 => l_array_reference_date_4(Idx)
186268 ,p_event_created_by => l_array_event_created_by(Idx)
186269 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
186270 --
186271 END IF;
186272
186273
186274
186275 --
186276 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
186277
186278 l_acct_reversal_source := SUBSTR(NULL, 1,30);
186279
186280 IF l_continue_with_lines THEN
186281 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
186282 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
186283
186284 xla_accounting_err_pkg.build_message
186285 (p_appli_s_name => 'XLA'
186286 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
186287 ,p_token_1 => 'LINE_NUMBER'
186288 ,p_value_1 => l_array_extract_line_num(Idx)
186289 ,p_token_2 => 'PRODUCT_NAME'
186290 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186291 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186292 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
186293 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186294
186295 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
186296 --
186297 -- following sets the accounting attributes needed to reverse
186298 -- accounting for a distributeion
186299 --
186300
186301 --
186302 -- 5217187
186303 --
186304 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
186305 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
186306 g_array_event(l_event_id).array_value_num('header_index'));
186307 --
186308 --
186309
186310 -- No reversal code generated
186311
186312 xla_ae_lines_pkg.SetAcctReversalAttrs
186313 (p_event_id => l_event_id
186314 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
186315 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186316 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
186317 END IF;
186318
186319 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
186320 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
186321
186322 --
186323 AcctLineType_231 (
186324 p_application_id => p_application_id
186325 ,p_event_id => l_event_id
186326 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186330 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186327 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186328 ,p_actual_flag => l_actual_flag
186329 ,p_balance_type_code => l_balance_type_code
186331
186332 , p_source_1 => l_array_source_1(Idx)
186333 , p_source_2 => l_array_source_2(Idx)
186334 , p_source_3 => l_array_source_3(Idx)
186335 , p_source_5 => l_array_source_5(Idx)
186336 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
186337 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
186338 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
186339 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
186340 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
186341 , p_source_11 => l_array_source_11(Idx)
186342 );
186343 If(l_balance_type_code = 'A') THEN
186344 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186345 END IF;
186346
186347 --
186348
186349
186350 --
186351 AcctLineType_240 (
186352 p_application_id => p_application_id
186353 ,p_event_id => l_event_id
186354 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186355 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186356 ,p_actual_flag => l_actual_flag
186357 ,p_balance_type_code => l_balance_type_code
186358 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186359
186360 , p_source_1 => l_array_source_1(Idx)
186361 , p_source_2 => l_array_source_2(Idx)
186362 , p_source_3 => l_array_source_3(Idx)
186363 , p_source_5 => l_array_source_5(Idx)
186364 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
186365 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
186366 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
186367 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
186368 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
186369 , p_source_11 => l_array_source_11(Idx)
186370 );
186371 If(l_balance_type_code = 'A') THEN
186372 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186373 END IF;
186374
186375 --
186376
186377 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
186378 -- or secondary ledger that has different currency with primary
186379 -- or alc that is calculated by sla
186380 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
186381 (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'))
186382
186383 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
186384 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
186385 AND (l_actual_flag = 'A')) THEN
186386 XLA_AE_LINES_PKG.CreateGainOrLossLines(
186387 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
186388 ,p_application_id => p_application_id
186389 ,p_amb_context_code => 'DEFAULT'
186390 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
186391 ,p_event_class_code => C_EVENT_CLASS_CODE
186392 ,p_event_type_code => C_EVENT_TYPE_CODE
186393
186394 ,p_gain_ccid => -1
186395 ,p_loss_ccid => -1
186396
186397 ,p_actual_flag => l_actual_flag
186398 ,p_enc_flag => null
186399 ,p_actual_g_l_ref => l_actual_gain_loss_ref
186400 ,p_enc_g_l_ref => null
186401 );
186402 END IF;
186403 END IF;
186404 END IF;
186405
186406 ELSE
186407 --
186408 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186409 --
186410 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186411 trace
186412 (p_msg => 'Trancaction revesal option is Y'
186413 ,p_level => C_LEVEL_STATEMENT
186414 ,p_module => l_log_module);
186415 END IF;
186416 END IF;
186417
186418 END LOOP;
186419 l_result := XLA_AE_LINES_PKG.InsertLines ;
186420 end loop;
186421 close line_cur;
186422
186423
186424 --
186425 -- insert headers into xla_ae_headers_gt table
186426 --
186427 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
186428
186429 -- insert into errors table here.
186430
186431 END LOOP;
186432
186433 --
186434 -- 4865292
186435 --
186436 -- Compare g_hdr_extract_count with event count in
186437 -- CreateHeadersAndLines.
186438 --
186439 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
186440
186441 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186442 trace (p_msg => '# rows extracted from header extract objects '
186443 || ' (running total): '
186444 || g_hdr_extract_count
186445 ,p_level => C_LEVEL_STATEMENT
186446 ,p_module => l_log_module);
186447 END IF;
186448
186449 CLOSE header_cur;
186450 --
186451
186452 --
186453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186454 trace
186455 (p_msg => 'END of EventType_302'
186456 ,p_level => C_LEVEL_PROCEDURE
186457 ,p_module => l_log_module);
186458 END IF;
186459 --
186460 RETURN l_result;
186461 EXCEPTION
186462 WHEN xla_exceptions_pkg.application_exception THEN
186463
186464 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186465
186466
186467 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
186468
186469 RAISE;
186470
186471 WHEN NO_DATA_FOUND THEN
186472
186473 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186474 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
186475
186476 FOR header_record IN header_cur
186477 LOOP
186481 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
186478 l_array_header_events(header_record.event_id) := header_record.event_id;
186479 END LOOP;
186480
186482 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
186483
186484 fnd_file.put_line(fnd_file.LOG, ' ');
186485 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186486 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
186487 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
186488
186489 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
186490 LOOP
186491 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
186492 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
186493 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
186494 END IF;
186495 END LOOP;
186496
186497 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186498 fnd_file.put_line(fnd_file.LOG, ' ');
186499
186500
186501 xla_exceptions_pkg.raise_message
186502 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_302');
186503
186504
186505 WHEN OTHERS THEN
186506 xla_exceptions_pkg.raise_message
186507 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_302');
186508 END EventType_302;
186509 --
186510
186511 ---------------------------------------
186512 --
186513 -- PRIVATE PROCEDURE
186514 -- insert_sources_303
186515 --
186516 ----------------------------------------
186517 --
186518 PROCEDURE insert_sources_303(
186519 p_target_ledger_id IN NUMBER
186520 , p_language IN VARCHAR2
186521 , p_sla_ledger_id IN NUMBER
186522 , p_pad_start_date IN DATE
186523 , p_pad_end_date IN DATE
186524 )
186525 IS
186526
186527 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SUBINV_XFER_ALL';
186528 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SUBINV_XFER';
186529 p_apps_owner VARCHAR2(30);
186530 l_log_module VARCHAR2(240);
186531 BEGIN
186532 IF g_log_enabled THEN
186533 l_log_module := C_DEFAULT_MODULE||'.insert_sources_303';
186534 END IF;
186535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186536
186537 trace
186538 (p_msg => 'BEGIN of insert_sources_303'
186539 ,p_level => C_LEVEL_PROCEDURE
186540 ,p_module => l_log_module);
186541
186542 END IF;
186543
186544 -- select APPS owner
186545 SELECT oracle_username
186546 INTO p_apps_owner
186547 FROM fnd_oracle_userid
186548 WHERE read_only_flag = 'U'
186549 ;
186550
186551 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186552 trace
186553 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
186554 ' - p_language = '||p_language||
186555 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
186556 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
186557 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
186558 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
186559 ,p_level => C_LEVEL_STATEMENT
186560 ,p_module => l_log_module);
186561 END IF;
186562
186563
186564 --
186565 INSERT INTO xla_diag_sources --hdr2
186566 (
186567 event_id
186568 , ledger_id
186569 , sla_ledger_id
186570 , description_language
186571 , object_name
186572 , object_type_code
186573 , line_number
186574 , source_application_id
186575 , source_type_code
186576 , source_code
186577 , source_value
186578 , source_meaning
186579 , created_by
186580 , creation_date
186581 , last_update_date
186582 , last_updated_by
186583 , last_update_login
186584 , program_update_date
186585 , program_application_id
186586 , program_id
186587 , request_id
186588 )
186589 SELECT
186590 event_id
186591 , p_target_ledger_id
186592 , p_sla_ledger_id
186593 , p_language
186594 , object_name
186595 , object_type_code
186596 , line_number
186597 , source_application_id
186598 , source_type_code
186599 , source_code
186600 , SUBSTR(source_value ,1,1996)
186601 , SUBSTR(source_meaning ,1,200)
186602 , xla_environment_pkg.g_Usr_Id
186603 , TRUNC(SYSDATE)
186604 , TRUNC(SYSDATE)
186605 , xla_environment_pkg.g_Usr_Id
186606 , xla_environment_pkg.g_Login_Id
186607 , TRUNC(SYSDATE)
186608 , xla_environment_pkg.g_Prog_Appl_Id
186609 , xla_environment_pkg.g_Prog_Id
186610 , xla_environment_pkg.g_Req_Id
186611 FROM (
186612 SELECT xet.event_id event_id
186613 , 0 line_number
186614 , CASE r
186615 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
186616 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
186617 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
186618 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
186619 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
186620 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
186621
186622 ELSE null
186623 END object_name
186624 , CASE r
186625 WHEN 1 THEN 'HEADER'
186629 WHEN 5 THEN 'HEADER'
186626 WHEN 2 THEN 'HEADER'
186627 WHEN 3 THEN 'HEADER'
186628 WHEN 4 THEN 'HEADER'
186630 WHEN 6 THEN 'HEADER'
186631
186632 ELSE null
186633 END object_type_code
186634 , CASE r
186635 WHEN 1 THEN '555'
186636 WHEN 2 THEN '555'
186637 WHEN 3 THEN '555'
186638 WHEN 4 THEN '555'
186639 WHEN 5 THEN '555'
186640 WHEN 6 THEN '555'
186641
186642 ELSE null
186643 END source_application_id
186644 , 'S' source_type_code
186645 , CASE r
186646 WHEN 1 THEN 'ENTITY_CODE'
186647 WHEN 2 THEN 'CURRENCY_CODE'
186648 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
186649 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
186650 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
186651 WHEN 6 THEN 'TRANSACTION_DATE'
186652
186653 ELSE null
186654 END source_code
186655 , CASE r
186656 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
186657 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
186658 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
186659 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
186660 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
186661 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
186662
186663 ELSE null
186664 END source_value
186665 , CASE r
186666 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
186667 1010186
186668 ,TO_CHAR(h1.CURRENCY_CODE)
186669 ,'CURRENCY_CODE'
186670 ,'S'
186671 ,555)
186672
186673 ELSE null
186674 END source_meaning
186675 FROM xla_events_gt xet
186676 , GMF_XLA_EXTRACT_HEADERS h1
186677 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
186678 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
186679 AND xet.event_class_code = C_EVENT_CLASS_CODE
186680 AND h1.event_id = xet.event_id
186681
186682 )
186683 ;
186684 --
186685 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186686
186687 trace
186688 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
186689 ,p_level => C_LEVEL_STATEMENT
186690 ,p_module => l_log_module);
186691
186692 END IF;
186693 --
186694
186695
186696
186697 --
186698 INSERT INTO xla_diag_sources --line2
186699 (
186700 event_id
186701 , ledger_id
186702 , sla_ledger_id
186703 , description_language
186704 , object_name
186705 , object_type_code
186706 , line_number
186707 , source_application_id
186708 , source_type_code
186709 , source_code
186710 , source_value
186711 , source_meaning
186712 , created_by
186713 , creation_date
186714 , last_update_date
186715 , last_updated_by
186716 , last_update_login
186717 , program_update_date
186718 , program_application_id
186719 , program_id
186720 , request_id
186721 )
186722 SELECT event_id
186723 , p_target_ledger_id
186724 , p_sla_ledger_id
186725 , p_language
186726 , object_name
186727 , object_type_code
186728 , line_number
186729 , source_application_id
186730 , source_type_code
186731 , source_code
186732 , SUBSTR(source_value,1,1996)
186733 , SUBSTR(source_meaning ,1,200)
186734 , xla_environment_pkg.g_Usr_Id
186735 , TRUNC(SYSDATE)
186736 , TRUNC(SYSDATE)
186737 , xla_environment_pkg.g_Usr_Id
186738 , xla_environment_pkg.g_Login_Id
186739 , TRUNC(SYSDATE)
186740 , xla_environment_pkg.g_Prog_Appl_Id
186741 , xla_environment_pkg.g_Prog_Id
186742 , xla_environment_pkg.g_Req_Id
186743 FROM (
186744 SELECT xet.event_id event_id
186745 , l2.line_number line_number
186746 , CASE r
186747 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
186748 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
186749 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
186750 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
186751 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
186752 WHEN 6 THEN 'GMF_XLA_EXTRACT_LINES'
186753
186754 ELSE null
186755 END object_name
186756 , CASE r
186757 WHEN 1 THEN 'LINE'
186758 WHEN 2 THEN 'LINE'
186759 WHEN 3 THEN 'LINE'
186760 WHEN 4 THEN 'LINE'
186761 WHEN 5 THEN 'LINE'
186762 WHEN 6 THEN 'LINE'
186763
186764 ELSE null
186765 END object_type_code
186766 , CASE r
186767 WHEN 1 THEN '555'
186768 WHEN 2 THEN '555'
186769 WHEN 3 THEN '555'
186770 WHEN 4 THEN '555'
186771 WHEN 5 THEN '555'
186772 WHEN 6 THEN '555'
186773
186774 ELSE null
186778 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
186775 END source_application_id
186776 , 'S' source_type_code
186777 , CASE r
186779 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
186780 WHEN 3 THEN 'ENTERED_AMOUNT'
186781 WHEN 4 THEN 'LINE_NUMBER'
186782 WHEN 5 THEN 'LINE_ID'
186783 WHEN 6 THEN 'ACCOUNTED_AMOUNT'
186784
186785 ELSE null
186786 END source_code
186787 , CASE r
186788 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
186789 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
186790 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
186791 WHEN 4 THEN TO_CHAR(l2.LINE_NUMBER)
186792 WHEN 5 THEN TO_CHAR(l2.LINE_ID)
186793 WHEN 6 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
186794
186795 ELSE null
186796 END source_value
186797 , null source_meaning
186798 FROM xla_events_gt xet
186799 , GMF_XLA_EXTRACT_LINES l2
186800 , (select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
186801 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
186802 AND xet.event_class_code = C_EVENT_CLASS_CODE
186803 AND l2.event_id = xet.event_id
186804
186805 )
186806 ;
186807 --
186808 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186809
186810 trace
186811 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
186812 ,p_level => C_LEVEL_STATEMENT
186813 ,p_module => l_log_module);
186814
186815 END IF;
186816
186817
186818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186819 trace
186820 (p_msg => 'END of insert_sources_303'
186821 ,p_level => C_LEVEL_PROCEDURE
186822 ,p_module => l_log_module);
186823 END IF;
186824 EXCEPTION
186825 WHEN xla_exceptions_pkg.application_exception THEN
186826 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
186827 trace
186828 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
186829 ,p_level => C_LEVEL_EXCEPTION
186830 ,p_module => l_log_module);
186831 END IF;
186832 RAISE;
186833 WHEN OTHERS THEN
186834 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
186835 trace
186836 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
186837 ,p_level => C_LEVEL_EXCEPTION
186838 ,p_module => l_log_module);
186839 END IF;
186840 xla_exceptions_pkg.raise_message
186841 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_303');
186842 END insert_sources_303;
186843 --
186844
186845 ---------------------------------------
186846 --
186847 -- PRIVATE FUNCTION
186848 -- EventClass_303
186849 --
186850 ----------------------------------------
186851 --
186852 FUNCTION EventClass_303
186853 (p_application_id IN NUMBER
186854 ,p_base_ledger_id IN NUMBER
186855 ,p_target_ledger_id IN NUMBER
186856 ,p_language IN VARCHAR2
186857 ,p_currency_code IN VARCHAR2
186858 ,p_sla_ledger_id IN NUMBER
186859 ,p_pad_start_date IN DATE
186860 ,p_pad_end_date IN DATE
186861 ,p_primary_ledger_id IN NUMBER)
186862 RETURN BOOLEAN IS
186863 --
186864 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SUBINV_XFER_ALL';
186865 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SUBINV_XFER';
186866
186867 l_calculate_acctd_flag VARCHAR2(1) :='N';
186868 l_calculate_g_l_flag VARCHAR2(1) :='N';
186869 --
186870 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186871 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186872 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186873 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186874 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186875 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186876 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186877 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186878 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186879 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186880 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186881 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186882 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186883 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
186884 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186885 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186886 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186887 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
186888 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186889 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186890 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186891 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
186892 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
186893 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
186894 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
186895 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
186899 l_first_event_id NUMBER;
186896
186897 l_event_id NUMBER;
186898 l_previous_event_id NUMBER;
186900 l_last_event_id NUMBER;
186901
186902 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
186903 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
186904 --
186905 --
186906 l_result BOOLEAN := TRUE;
186907 l_rows NUMBER := 1000;
186908 l_event_type_name VARCHAR2(80) := 'All';
186909 l_event_class_name VARCHAR2(80) := 'Sub-inventory Transfers';
186910 l_description VARCHAR2(4000);
186911 l_transaction_reversal NUMBER;
186912 l_ae_header_id NUMBER;
186913 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
186914 l_log_module VARCHAR2(240);
186915 --
186916 l_acct_reversal_source VARCHAR2(30);
186917 l_trx_reversal_source VARCHAR2(30);
186918
186919 l_continue_with_lines BOOLEAN := TRUE;
186920 --
186921 l_acc_rev_gl_date_source DATE; -- 4262811
186922 --
186923 type t_array_event_id is table of number index by binary_integer;
186924
186925 l_rec_array_event t_rec_array_event;
186926 l_null_rec_array_event t_rec_array_event;
186927 l_array_ae_header_id xla_number_array_type;
186928 l_actual_flag VARCHAR2(1) := NULL;
186929 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
186930 l_balance_type_code VARCHAR2(1) :=NULL;
186931 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
186932
186933 --
186934 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
186935 --
186936
186937 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
186938 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
186939 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
186940 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
186941 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
186942 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
186943
186944 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
186945 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
186946 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
186947 TYPE t_array_source_4 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
186948 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
186949 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
186950
186951 l_array_source_6 t_array_source_6;
186952 l_array_source_7 t_array_source_7;
186953 l_array_source_8 t_array_source_8;
186954 l_array_source_9 t_array_source_9;
186955 l_array_source_10 t_array_source_10;
186956 l_array_source_12 t_array_source_12;
186957
186958 l_array_source_1 t_array_source_1;
186959 l_array_source_2 t_array_source_2;
186960 l_array_source_3 t_array_source_3;
186961 l_array_source_4 t_array_source_4;
186962 l_array_source_5 t_array_source_5;
186963 l_array_source_11 t_array_source_11;
186964
186965 --
186966 CURSOR header_cur
186967 IS
186968 SELECT /*+ leading(xet) cardinality(xet,1) */
186969 -- Event Class Code: SUBINV_XFER
186970 xet.entity_id
186971 ,xet.legal_entity_id
186972 ,xet.entity_code
186973 ,xet.transaction_number
186974 ,xet.event_id
186975 ,xet.event_class_code
186976 ,xet.event_type_code
186977 ,xet.event_number
186978 ,xet.event_date
186979 ,xet.transaction_date
186980 ,xet.reference_num_1
186981 ,xet.reference_num_2
186982 ,xet.reference_num_3
186983 ,xet.reference_num_4
186984 ,xet.reference_char_1
186985 ,xet.reference_char_2
186986 ,xet.reference_char_3
186987 ,xet.reference_char_4
186988 ,xet.reference_date_1
186989 ,xet.reference_date_2
186990 ,xet.reference_date_3
186991 ,xet.reference_date_4
186992 ,xet.event_created_by
186993 ,xet.budgetary_control_flag
186994 , h1.ENTITY_CODE source_6
186995 , h1.CURRENCY_CODE source_7
186996 , h1.CURRENCY_CONVERSION_DATE source_8
186997 , h1.CURRENCY_CONVERSION_RATE source_9
186998 , h1.CURRENCY_CONVERSION_TYPE source_10
186999 , h1.TRANSACTION_DATE source_12
187000 FROM xla_events_gt xet
187001 , GMF_XLA_EXTRACT_HEADERS h1
187002 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
187003 and xet.event_class_code = C_EVENT_CLASS_CODE
187004 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
187005
187006 ORDER BY event_id
187007 ;
187008
187009
187010 --
187011 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
187012 IS
187013 SELECT /*+ leading(xet) cardinality(xet,1) */
187014 -- Event Class Code: SUBINV_XFER
187015 xet.entity_id
187016 ,xet.legal_entity_id
187017 ,xet.entity_code
187018 ,xet.transaction_number
187019 ,xet.event_id
187020 ,xet.event_class_code
187021 ,xet.event_type_code
187022 ,xet.event_number
187023 ,xet.event_date
187024 ,xet.transaction_date
187025 ,xet.reference_num_1
187026 ,xet.reference_num_2
187027 ,xet.reference_num_3
187028 ,xet.reference_num_4
187029 ,xet.reference_char_1
187030 ,xet.reference_char_2
187031 ,xet.reference_char_3
187035 ,xet.reference_date_3
187032 ,xet.reference_char_4
187033 ,xet.reference_date_1
187034 ,xet.reference_date_2
187036 ,xet.reference_date_4
187037 ,xet.event_created_by
187038 ,xet.budgetary_control_flag
187039 , l2.LINE_NUMBER
187040 , l2.TRANSACTION_ACCOUNT_ID source_1
187041 , l2.JOURNAL_LINE_TYPE source_2
187042 , l2.ENTERED_AMOUNT source_3
187043 , l2.LINE_NUMBER source_4
187044 , l2.LINE_ID source_5
187045 , l2.ACCOUNTED_AMOUNT source_11
187046 FROM xla_events_gt xet
187047 , GMF_XLA_EXTRACT_LINES l2
187048 WHERE xet.event_id between x_first_event_id and x_last_event_id
187049 and xet.event_date between p_pad_start_date and p_pad_end_date
187050 and xet.event_class_code = C_EVENT_CLASS_CODE
187051 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
187052 ;
187053
187054 --
187055 BEGIN
187056 IF g_log_enabled THEN
187057 l_log_module := C_DEFAULT_MODULE||'.EventClass_303';
187058 END IF;
187059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187060 trace
187061 (p_msg => 'BEGIN of EventClass_303'
187062 ,p_level => C_LEVEL_PROCEDURE
187063 ,p_module => l_log_module);
187064 END IF;
187065
187066 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187067 trace
187068 (p_msg => 'p_application_id = '||p_application_id||
187069 ' - p_base_ledger_id = '||p_base_ledger_id||
187070 ' - p_target_ledger_id = '||p_target_ledger_id||
187071 ' - p_language = '||p_language||
187072 ' - p_currency_code = '||p_currency_code||
187073 ' - p_sla_ledger_id = '||p_sla_ledger_id
187074 ,p_level => C_LEVEL_STATEMENT
187075 ,p_module => l_log_module);
187076 END IF;
187077 --
187078 -- initialze arrays
187079 --
187080 g_array_event.DELETE;
187081 l_rec_array_event := l_null_rec_array_event;
187082 --
187083 --------------------------------------
187084 -- 4262811 Initialze MPA Line Number
187085 --------------------------------------
187086 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
187087
187088 --
187089
187090 --
187091 OPEN header_cur;
187092 --
187093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187094 trace
187095 (p_msg => 'SQL - FETCH header_cur'
187096 ,p_level => C_LEVEL_STATEMENT
187097 ,p_module => l_log_module);
187098 END IF;
187099 --
187100 LOOP
187101 FETCH header_cur BULK COLLECT INTO
187102 l_array_entity_id
187103 , l_array_legal_entity_id
187104 , l_array_entity_code
187105 , l_array_transaction_num
187106 , l_array_event_id
187107 , l_array_class_code
187108 , l_array_event_type
187109 , l_array_event_number
187110 , l_array_event_date
187111 , l_array_transaction_date
187112 , l_array_reference_num_1
187113 , l_array_reference_num_2
187114 , l_array_reference_num_3
187115 , l_array_reference_num_4
187116 , l_array_reference_char_1
187117 , l_array_reference_char_2
187118 , l_array_reference_char_3
187119 , l_array_reference_char_4
187120 , l_array_reference_date_1
187121 , l_array_reference_date_2
187122 , l_array_reference_date_3
187123 , l_array_reference_date_4
187124 , l_array_event_created_by
187125 , l_array_budgetary_control_flag
187126 , l_array_source_6
187127 , l_array_source_7
187128 , l_array_source_8
187129 , l_array_source_9
187130 , l_array_source_10
187131 , l_array_source_12
187132 LIMIT l_rows;
187133 --
187134 IF (C_LEVEL_EVENT >= g_log_level) THEN
187135 trace
187136 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
187137 ,p_level => C_LEVEL_EVENT
187138 ,p_module => l_log_module);
187139 END IF;
187140 --
187141 EXIT WHEN l_array_entity_id.COUNT = 0;
187142
187143 -- initialize arrays
187144 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
187145 XLA_AE_LINES_PKG.g_rec_lines := NULL;
187146
187147 --
187148 -- Bug 4458708
187149 --
187150 XLA_AE_LINES_PKG.g_LineNumber := 0;
187151
187152
187153 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
187154 g_last_hdr_idx := l_array_event_id.LAST;
187155 --
187156 -- loop for the headers. Each iteration is for each header extract row
187157 -- fetched in header cursor
187158 --
187159 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
187160
187161 --
187162 -- set event info as cache for other routines to refer event attributes
187163 --
187164 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187165 (p_application_id => p_application_id
187166 ,p_primary_ledger_id => p_primary_ledger_id
187167 ,p_base_ledger_id => p_base_ledger_id
187168 ,p_target_ledger_id => p_target_ledger_id
187169 ,p_entity_id => l_array_entity_id(hdr_idx)
187170 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
187171 ,p_entity_code => l_array_entity_code(hdr_idx)
187172 ,p_transaction_num => l_array_transaction_num(hdr_idx)
187173 ,p_event_id => l_array_event_id(hdr_idx)
187174 ,p_event_class_code => l_array_class_code(hdr_idx)
187175 ,p_event_type_code => l_array_event_type(hdr_idx)
187176 ,p_event_number => l_array_event_number(hdr_idx)
187177 ,p_event_date => l_array_event_date(hdr_idx)
187178 ,p_transaction_date => l_array_transaction_date(hdr_idx)
187179 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
187180 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
187181 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
187185 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
187182 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
187183 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
187184 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
187186 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
187187 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
187188 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
187189 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
187190 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
187191 ,p_event_created_by => l_array_event_created_by(hdr_idx)
187192 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
187193
187194 --
187195 -- set the status of entry to C_VALID (0)
187196 --
187197 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187198
187199 --
187200 -- initialize a row for ae header
187201 --
187202 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
187203
187204 l_event_id := l_array_event_id(hdr_idx);
187205
187206 --
187207 -- storing the hdr_idx for event. May be used by line cursor.
187208 --
187209 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
187210
187211 --
187212 -- store sources from header extract. This can be improved to
187213 -- store only those sources from header extract that may be used in lines
187214 --
187215
187216 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
187217 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
187218 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
187219 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
187220 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
187221 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
187222
187223 --
187224 -- initilaize the status of ae headers for diffrent balance types
187225 -- the status is initialised to C_NOT_CREATED (2)
187226 --
187227 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187228 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187229 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187230
187231 --
187232 -- call api to validate and store accounting attributes for header
187233 --
187234
187235 ------------------------------------------------------------
187236 -- Accrual Reversal : to get date for Standard Source (NONE)
187237 ------------------------------------------------------------
187238 l_acc_rev_gl_date_source := NULL;
187239
187240 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
187241 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
187242
187243
187244 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
187245
187246 XLA_AE_HEADER_PKG.SetJeCategoryName;
187247
187248 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
187249 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
187250 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
187251 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
187252 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
187253
187254
187255 -- No header level analytical criteria
187256
187257 --
187258 --accounting attribute enhancement, bug 3612931
187259 --
187260 l_trx_reversal_source := SUBSTR(NULL, 1,30);
187261
187262 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
187263 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
187264
187265 xla_accounting_err_pkg.build_message
187266 (p_appli_s_name => 'XLA'
187267 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
187268 ,p_token_1 => 'ACCT_ATTR_NAME'
187269 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
187270 ,p_token_2 => 'PRODUCT_NAME'
187271 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187272 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187273 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
187274 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187275
187276 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
187277 --
187278 -- following sets the accounting attributes needed to reverse
187279 -- accounting for a distributeion
187280 --
187281 xla_ae_lines_pkg.SetTrxReversalAttrs
187282 (p_event_id => l_event_id
187283 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
187284 ,p_trx_reversal_source => l_trx_reversal_source);
187285
187286 END IF;
187287
187288
187289 ----------------------------------------------------------------
187290 -- 4262811 - update the header statuses to invalid in need be
187291 ----------------------------------------------------------------
187292 --
187293 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
187294
187295
187296 -----------------------------------------------
187297 -- No accrual reversal for the event class/type
187298 -----------------------------------------------
187299 ----------------------------------------------------------------
187300
187301 --
187302 -- this ends the header loop iteration for one bulk fetch
187303 --
187304 END LOOP;
187305
187309 --
187306 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
187307 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
187308
187310 -- insert dummy rows into lines gt table that were created due to
187311 -- transaction reversals
187312 --
187313 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
187314 l_result := XLA_AE_LINES_PKG.InsertLines;
187315 END IF;
187316
187317 --
187318 -- reset the temp_line_num for each set of events fetched from header
187319 -- cursor rather than doing it for each new event in line cursor
187320 -- Bug 3939231
187321 --
187322 xla_ae_lines_pkg.g_temp_line_num := 0;
187323
187324
187325
187326 --
187327 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
187328 --
187329 --
187330 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187331
187332 trace
187333 (p_msg => 'SQL - FETCH line_cur'
187334 ,p_level => C_LEVEL_STATEMENT
187335 ,p_module => l_log_module);
187336
187337 END IF;
187338 --
187339 --
187340 LOOP
187341 --
187342 FETCH line_cur BULK COLLECT INTO
187343 l_array_entity_id
187344 , l_array_legal_entity_id
187345 , l_array_entity_code
187346 , l_array_transaction_num
187347 , l_array_event_id
187348 , l_array_class_code
187349 , l_array_event_type
187350 , l_array_event_number
187351 , l_array_event_date
187352 , l_array_transaction_date
187353 , l_array_reference_num_1
187354 , l_array_reference_num_2
187355 , l_array_reference_num_3
187356 , l_array_reference_num_4
187357 , l_array_reference_char_1
187358 , l_array_reference_char_2
187359 , l_array_reference_char_3
187360 , l_array_reference_char_4
187361 , l_array_reference_date_1
187362 , l_array_reference_date_2
187363 , l_array_reference_date_3
187364 , l_array_reference_date_4
187365 , l_array_event_created_by
187366 , l_array_budgetary_control_flag
187367 , l_array_extract_line_num
187368 , l_array_source_1
187369 , l_array_source_2
187370 , l_array_source_3
187371 , l_array_source_4
187372 , l_array_source_5
187373 , l_array_source_11
187374 LIMIT l_rows;
187375
187376 --
187377 IF (C_LEVEL_EVENT >= g_log_level) THEN
187378 trace
187379 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
187380 ,p_level => C_LEVEL_EVENT
187381 ,p_module => l_log_module);
187382 END IF;
187383 --
187384 EXIT WHEN l_array_entity_id.count = 0;
187385
187386 XLA_AE_LINES_PKG.g_rec_lines := null;
187387
187388 --
187389 -- Bug 4458708
187390 --
187391 XLA_AE_LINES_PKG.g_LineNumber := 0;
187392 --
187393 --
187394
187395 FOR Idx IN 1..l_array_event_id.count LOOP
187396 --
187397 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
187398 --
187399 l_event_id := l_array_event_id(idx); -- 5648433
187400
187401 --
187402 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187403 --
187404
187405 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
187406 (g_array_event(l_event_id).array_value_num('header_index'))
187407 ,'N'
187408 ) <> 'Y'
187409 THEN
187410 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187411 trace
187412 (p_msg => 'Trancaction revesal option is not Y '
187413 ,p_level => C_LEVEL_STATEMENT
187414 ,p_module => l_log_module);
187415 END IF;
187416
187417 --
187418 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
187419 --
187420 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187421 --
187422 -- set event info as cache for other routines to refer event attributes
187423 --
187424
187425 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
187426 l_previous_event_id := l_event_id;
187427
187428 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187429 (p_application_id => p_application_id
187430 ,p_primary_ledger_id => p_primary_ledger_id
187431 ,p_base_ledger_id => p_base_ledger_id
187432 ,p_target_ledger_id => p_target_ledger_id
187433 ,p_entity_id => l_array_entity_id(Idx)
187434 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
187435 ,p_entity_code => l_array_entity_code(Idx)
187436 ,p_transaction_num => l_array_transaction_num(Idx)
187437 ,p_event_id => l_array_event_id(Idx)
187438 ,p_event_class_code => l_array_class_code(Idx)
187439 ,p_event_type_code => l_array_event_type(Idx)
187440 ,p_event_number => l_array_event_number(Idx)
187441 ,p_event_date => l_array_event_date(Idx)
187442 ,p_transaction_date => l_array_transaction_date(Idx)
187443 ,p_reference_num_1 => l_array_reference_num_1(Idx)
187444 ,p_reference_num_2 => l_array_reference_num_2(Idx)
187445 ,p_reference_num_3 => l_array_reference_num_3(Idx)
187446 ,p_reference_num_4 => l_array_reference_num_4(Idx)
187447 ,p_reference_char_1 => l_array_reference_char_1(Idx)
187448 ,p_reference_char_2 => l_array_reference_char_2(Idx)
187449 ,p_reference_char_3 => l_array_reference_char_3(Idx)
187450 ,p_reference_char_4 => l_array_reference_char_4(Idx)
187451 ,p_reference_date_1 => l_array_reference_date_1(Idx)
187452 ,p_reference_date_2 => l_array_reference_date_2(Idx)
187453 ,p_reference_date_3 => l_array_reference_date_3(Idx)
187457 --
187454 ,p_reference_date_4 => l_array_reference_date_4(Idx)
187455 ,p_event_created_by => l_array_event_created_by(Idx)
187456 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
187458 END IF;
187459
187460
187461
187462 --
187463 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
187464
187465 l_acct_reversal_source := SUBSTR(NULL, 1,30);
187466
187467 IF l_continue_with_lines THEN
187468 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
187469 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
187470
187471 xla_accounting_err_pkg.build_message
187472 (p_appli_s_name => 'XLA'
187473 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
187474 ,p_token_1 => 'LINE_NUMBER'
187475 ,p_value_1 => l_array_extract_line_num(Idx)
187476 ,p_token_2 => 'PRODUCT_NAME'
187477 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187478 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187479 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
187480 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187481
187482 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
187483 --
187484 -- following sets the accounting attributes needed to reverse
187485 -- accounting for a distributeion
187486 --
187487
187488 --
187489 -- 5217187
187490 --
187491 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
187492 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
187493 g_array_event(l_event_id).array_value_num('header_index'));
187494 --
187495 --
187496
187497 -- No reversal code generated
187498
187499 xla_ae_lines_pkg.SetAcctReversalAttrs
187500 (p_event_id => l_event_id
187501 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
187502 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187503 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
187504 END IF;
187505
187506 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
187507 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
187508
187509 --
187510 AcctLineType_110 (
187511 p_application_id => p_application_id
187512 ,p_event_id => l_event_id
187513 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187514 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187515 ,p_actual_flag => l_actual_flag
187516 ,p_balance_type_code => l_balance_type_code
187517 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187518
187519 , p_source_1 => l_array_source_1(Idx)
187520 , p_source_2 => l_array_source_2(Idx)
187521 , p_source_3 => l_array_source_3(Idx)
187522 , p_source_4 => l_array_source_4(Idx)
187523 , p_source_5 => l_array_source_5(Idx)
187524 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
187525 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
187526 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
187527 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
187528 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
187529 , p_source_11 => l_array_source_11(Idx)
187530 );
187531 If(l_balance_type_code = 'A') THEN
187532 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187533 END IF;
187534
187535 --
187536
187537
187538 --
187539 AcctLineType_111 (
187540 p_application_id => p_application_id
187541 ,p_event_id => l_event_id
187542 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187543 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187544 ,p_actual_flag => l_actual_flag
187545 ,p_balance_type_code => l_balance_type_code
187546 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187547
187548 , p_source_1 => l_array_source_1(Idx)
187549 , p_source_2 => l_array_source_2(Idx)
187550 , p_source_3 => l_array_source_3(Idx)
187551 , p_source_4 => l_array_source_4(Idx)
187552 , p_source_5 => l_array_source_5(Idx)
187553 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
187554 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
187555 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
187556 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
187557 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
187558 , p_source_11 => l_array_source_11(Idx)
187559 );
187560 If(l_balance_type_code = 'A') THEN
187561 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187562 END IF;
187563
187564 --
187565
187566
187567 --
187568 AcctLineType_169 (
187569 p_application_id => p_application_id
187570 ,p_event_id => l_event_id
187571 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187572 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187573 ,p_actual_flag => l_actual_flag
187574 ,p_balance_type_code => l_balance_type_code
187575 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187576
187577 , p_source_1 => l_array_source_1(Idx)
187578 , p_source_2 => l_array_source_2(Idx)
187579 , p_source_3 => l_array_source_3(Idx)
187580 , p_source_4 => l_array_source_4(Idx)
187581 , p_source_5 => l_array_source_5(Idx)
187582 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
187583 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
187584 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
187585 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
187586 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
187587 , p_source_11 => l_array_source_11(Idx)
187588 );
187592
187589 If(l_balance_type_code = 'A') THEN
187590 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187591 END IF;
187593 --
187594
187595
187596 --
187597 AcctLineType_170 (
187598 p_application_id => p_application_id
187599 ,p_event_id => l_event_id
187600 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187601 ,p_calculate_g_l_flag => l_calculate_g_l_flag
187602 ,p_actual_flag => l_actual_flag
187603 ,p_balance_type_code => l_balance_type_code
187604 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
187605
187606 , p_source_1 => l_array_source_1(Idx)
187607 , p_source_2 => l_array_source_2(Idx)
187608 , p_source_3 => l_array_source_3(Idx)
187609 , p_source_4 => l_array_source_4(Idx)
187610 , p_source_5 => l_array_source_5(Idx)
187611 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
187612 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
187613 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
187614 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
187615 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
187616 , p_source_11 => l_array_source_11(Idx)
187617 );
187618 If(l_balance_type_code = 'A') THEN
187619 l_actual_gain_loss_ref := l_gain_or_loss_ref;
187620 END IF;
187621
187622 --
187623
187624 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
187625 -- or secondary ledger that has different currency with primary
187626 -- or alc that is calculated by sla
187627 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
187628 (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'))
187629
187630 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
187631 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
187632 AND (l_actual_flag = 'A')) THEN
187633 XLA_AE_LINES_PKG.CreateGainOrLossLines(
187634 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
187635 ,p_application_id => p_application_id
187636 ,p_amb_context_code => 'DEFAULT'
187637 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
187638 ,p_event_class_code => C_EVENT_CLASS_CODE
187639 ,p_event_type_code => C_EVENT_TYPE_CODE
187640
187641 ,p_gain_ccid => -1
187642 ,p_loss_ccid => -1
187643
187644 ,p_actual_flag => l_actual_flag
187645 ,p_enc_flag => null
187646 ,p_actual_g_l_ref => l_actual_gain_loss_ref
187647 ,p_enc_g_l_ref => null
187648 );
187649 END IF;
187650 END IF;
187651 END IF;
187652
187653 ELSE
187654 --
187655 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187656 --
187657 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187658 trace
187659 (p_msg => 'Trancaction revesal option is Y'
187660 ,p_level => C_LEVEL_STATEMENT
187661 ,p_module => l_log_module);
187662 END IF;
187663 END IF;
187664
187665 END LOOP;
187666 l_result := XLA_AE_LINES_PKG.InsertLines ;
187667 end loop;
187668 close line_cur;
187669
187670
187671 --
187672 -- insert headers into xla_ae_headers_gt table
187673 --
187674 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
187675
187676 -- insert into errors table here.
187677
187678 END LOOP;
187679
187680 --
187681 -- 4865292
187682 --
187683 -- Compare g_hdr_extract_count with event count in
187684 -- CreateHeadersAndLines.
187685 --
187686 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
187687
187688 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187689 trace (p_msg => '# rows extracted from header extract objects '
187690 || ' (running total): '
187691 || g_hdr_extract_count
187692 ,p_level => C_LEVEL_STATEMENT
187693 ,p_module => l_log_module);
187694 END IF;
187695
187696 CLOSE header_cur;
187697 --
187698
187699 --
187700 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187701 trace
187702 (p_msg => 'END of EventClass_303'
187703 ,p_level => C_LEVEL_PROCEDURE
187704 ,p_module => l_log_module);
187705 END IF;
187706 --
187707 RETURN l_result;
187708 EXCEPTION
187709 WHEN xla_exceptions_pkg.application_exception THEN
187710
187711 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
187712
187713
187714 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
187715
187716 RAISE;
187717
187718 WHEN NO_DATA_FOUND THEN
187719
187720 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
187721 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
187722
187723 FOR header_record IN header_cur
187724 LOOP
187725 l_array_header_events(header_record.event_id) := header_record.event_id;
187726 END LOOP;
187727
187728 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
187729 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
187730
187731 fnd_file.put_line(fnd_file.LOG, ' ');
187732 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
187733 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
187734 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
187735
187736 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
187737 LOOP
187741 END IF;
187738 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
187739 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
187740 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
187742 END LOOP;
187743
187744 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
187745 fnd_file.put_line(fnd_file.LOG, ' ');
187746
187747
187748 xla_exceptions_pkg.raise_message
187749 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_303');
187750
187751
187752 WHEN OTHERS THEN
187753 xla_exceptions_pkg.raise_message
187754 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventClass_303');
187755 END EventClass_303;
187756 --
187757
187758 ---------------------------------------
187759 --
187760 -- PRIVATE PROCEDURE
187761 -- insert_sources_304
187762 --
187763 ----------------------------------------
187764 --
187765 PROCEDURE insert_sources_304(
187766 p_target_ledger_id IN NUMBER
187767 , p_language IN VARCHAR2
187768 , p_sla_ledger_id IN NUMBER
187769 , p_pad_start_date IN DATE
187770 , p_pad_end_date IN DATE
187771 )
187772 IS
187773
187774 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'XFER_TO_CONSIGNED';
187775 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
187776 p_apps_owner VARCHAR2(30);
187777 l_log_module VARCHAR2(240);
187778 BEGIN
187779 IF g_log_enabled THEN
187780 l_log_module := C_DEFAULT_MODULE||'.insert_sources_304';
187781 END IF;
187782 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187783
187784 trace
187785 (p_msg => 'BEGIN of insert_sources_304'
187786 ,p_level => C_LEVEL_PROCEDURE
187787 ,p_module => l_log_module);
187788
187789 END IF;
187790
187791 -- select APPS owner
187792 SELECT oracle_username
187793 INTO p_apps_owner
187794 FROM fnd_oracle_userid
187795 WHERE read_only_flag = 'U'
187796 ;
187797
187798 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187799 trace
187800 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
187801 ' - p_language = '||p_language||
187802 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
187803 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
187804 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
187805 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
187806 ,p_level => C_LEVEL_STATEMENT
187807 ,p_module => l_log_module);
187808 END IF;
187809
187810
187811 --
187812 INSERT INTO xla_diag_sources --hdr1
187813 (
187814 event_id
187815 , ledger_id
187816 , sla_ledger_id
187817 , description_language
187818 , object_name
187819 , object_type_code
187820 , line_number
187821 , source_application_id
187822 , source_type_code
187823 , source_code
187824 , source_value
187825 , source_meaning
187826 , created_by
187827 , creation_date
187828 , last_update_date
187829 , last_updated_by
187830 , last_update_login
187831 , program_update_date
187832 , program_application_id
187833 , program_id
187834 , request_id
187835 )
187836 SELECT
187837 event_id
187838 , p_target_ledger_id
187839 , p_sla_ledger_id
187840 , p_language
187841 , object_name
187842 , object_type_code
187843 , line_number
187844 , source_application_id
187845 , source_type_code
187846 , source_code
187847 , SUBSTR(source_value ,1,1996)
187848 , SUBSTR(source_meaning,1,200)
187849 , xla_environment_pkg.g_Usr_Id
187850 , TRUNC(SYSDATE)
187851 , TRUNC(SYSDATE)
187852 , xla_environment_pkg.g_Usr_Id
187853 , xla_environment_pkg.g_Login_Id
187854 , TRUNC(SYSDATE)
187855 , xla_environment_pkg.g_Prog_Appl_Id
187856 , xla_environment_pkg.g_Prog_Id
187857 , xla_environment_pkg.g_Req_Id
187858 FROM (
187859 SELECT xet.event_id event_id
187860 , 0 line_number
187861 , CASE r
187862 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
187863 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
187864 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
187865 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
187866 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
187867 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
187868
187869 ELSE null
187870 END object_name
187871 , CASE r
187872 WHEN 1 THEN 'HEADER'
187873 WHEN 2 THEN 'HEADER'
187874 WHEN 3 THEN 'HEADER'
187875 WHEN 4 THEN 'HEADER'
187876 WHEN 5 THEN 'HEADER'
187877 WHEN 6 THEN 'HEADER'
187878
187879 ELSE null
187880 END object_type_code
187881 , CASE r
187882 WHEN 1 THEN '555'
187883 WHEN 2 THEN '555'
187884 WHEN 3 THEN '555'
187885 WHEN 4 THEN '555'
187886 WHEN 5 THEN '555'
187887 WHEN 6 THEN '555'
187888
187889 ELSE null
187893 WHEN 1 THEN 'ENTITY_CODE'
187890 END source_application_id
187891 , 'S' source_type_code
187892 , CASE r
187894 WHEN 2 THEN 'CURRENCY_CODE'
187895 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
187896 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
187897 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
187898 WHEN 6 THEN 'TRANSACTION_DATE'
187899
187900 ELSE null
187901 END source_code
187902 , CASE r
187903 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
187904 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
187905 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
187906 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
187907 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
187908 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
187909
187910 ELSE null
187911 END source_value
187912 , CASE r
187913 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
187914 1010186
187915 ,TO_CHAR(h1.CURRENCY_CODE)
187916 ,'CURRENCY_CODE'
187917 ,'S'
187918 ,555)
187919
187920 ELSE null
187921 END source_meaning
187922 FROM xla_events_gt xet
187923 , GMF_XLA_EXTRACT_HEADERS h1
187924 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
187925 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
187926 AND xet.event_type_code = C_EVENT_TYPE_CODE
187927 AND h1.event_id = xet.event_id
187928
187929 )
187930 ;
187931 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187932
187933 trace
187934 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
187935 ,p_level => C_LEVEL_STATEMENT
187936 ,p_module => l_log_module);
187937
187938 END IF;
187939 --
187940
187941
187942
187943 --
187944 INSERT INTO xla_diag_sources --line1
187945 (
187946 event_id
187947 , ledger_id
187948 , sla_ledger_id
187949 , description_language
187950 , object_name
187951 , object_type_code
187952 , line_number
187953 , source_application_id
187954 , source_type_code
187955 , source_code
187956 , source_value
187957 , source_meaning
187958 , created_by
187959 , creation_date
187960 , last_update_date
187961 , last_updated_by
187962 , last_update_login
187963 , program_update_date
187964 , program_application_id
187965 , program_id
187966 , request_id
187967 )
187968 SELECT event_id
187969 , p_target_ledger_id
187970 , p_sla_ledger_id
187971 , p_language
187972 , object_name
187973 , object_type_code
187974 , line_number
187975 , source_application_id
187976 , source_type_code
187977 , source_code
187978 , SUBSTR(source_value,1,1996)
187979 , SUBSTR(source_meaning,1,200)
187980 , xla_environment_pkg.g_Usr_Id
187981 , TRUNC(SYSDATE)
187982 , TRUNC(SYSDATE)
187983 , xla_environment_pkg.g_Usr_Id
187984 , xla_environment_pkg.g_Login_Id
187985 , TRUNC(SYSDATE)
187986 , xla_environment_pkg.g_Prog_Appl_Id
187987 , xla_environment_pkg.g_Prog_Id
187988 , xla_environment_pkg.g_Req_Id
187989 FROM (
187990 SELECT xet.event_id event_id
187991 , l2.line_number line_number
187992 , CASE r
187993 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
187994 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
187995 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
187996 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
187997 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
187998
187999 ELSE null
188000 END object_name
188001 , CASE r
188002 WHEN 1 THEN 'LINE'
188003 WHEN 2 THEN 'LINE'
188004 WHEN 3 THEN 'LINE'
188005 WHEN 4 THEN 'LINE'
188006 WHEN 5 THEN 'LINE'
188007
188008 ELSE null
188009 END object_type_code
188010 , CASE r
188011 WHEN 1 THEN '555'
188012 WHEN 2 THEN '555'
188013 WHEN 3 THEN '555'
188014 WHEN 4 THEN '555'
188015 WHEN 5 THEN '555'
188016
188017 ELSE null
188018 END source_application_id
188019 , 'S' source_type_code
188020 , CASE r
188021 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
188022 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
188023 WHEN 3 THEN 'ENTERED_AMOUNT'
188024 WHEN 4 THEN 'LINE_ID'
188025 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
188026
188027 ELSE null
188028 END source_code
188029 , CASE r
188030 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
188031 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
188032 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
188033 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
188034 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
188035
188036 ELSE null
188040 , GMF_XLA_EXTRACT_LINES l2
188037 END source_value
188038 , null source_meaning
188039 FROM xla_events_gt xet
188041 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
188042 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188043 AND xet.event_type_code = C_EVENT_TYPE_CODE
188044 AND l2.event_id = xet.event_id
188045
188046 )
188047 ;
188048 --
188049 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188050
188051 trace
188052 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
188053 ,p_level => C_LEVEL_STATEMENT
188054 ,p_module => l_log_module);
188055
188056 END IF;
188057
188058
188059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188060 trace
188061 (p_msg => 'END of insert_sources_304'
188062 ,p_level => C_LEVEL_PROCEDURE
188063 ,p_module => l_log_module);
188064 END IF;
188065 EXCEPTION
188066 WHEN xla_exceptions_pkg.application_exception THEN
188067 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188068 trace
188069 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188070 ,p_level => C_LEVEL_EXCEPTION
188071 ,p_module => l_log_module);
188072 END IF;
188073 RAISE;
188074 WHEN OTHERS THEN
188075 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188076 trace
188077 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188078 ,p_level => C_LEVEL_EXCEPTION
188079 ,p_module => l_log_module);
188080 END IF;
188081 xla_exceptions_pkg.raise_message
188082 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_304');
188083 END insert_sources_304;
188084 --
188085
188086 ---------------------------------------
188087 --
188088 -- PRIVATE FUNCTION
188089 -- EventType_304
188090 --
188091 ----------------------------------------
188092 --
188093 FUNCTION EventType_304
188094 (p_application_id IN NUMBER
188095 ,p_base_ledger_id IN NUMBER
188096 ,p_target_ledger_id IN NUMBER
188097 ,p_language IN VARCHAR2
188098 ,p_currency_code IN VARCHAR2
188099 ,p_sla_ledger_id IN NUMBER
188100 ,p_pad_start_date IN DATE
188101 ,p_pad_end_date IN DATE
188102 ,p_primary_ledger_id IN NUMBER)
188103 RETURN BOOLEAN IS
188104 --
188105 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'XFER_TO_CONSIGNED';
188106 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
188107
188108 l_calculate_acctd_flag VARCHAR2(1) :='N';
188109 l_calculate_g_l_flag VARCHAR2(1) :='N';
188110 --
188111 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188112 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188113 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188114 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188115 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188116 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188117 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188118 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188119 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188120 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188121 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188122 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188123 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188124 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188125 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188126 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188127 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188128 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188129 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188130 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188131 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188132 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188133 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
188134 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188135 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
188136 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
188137
188138 l_event_id NUMBER;
188139 l_previous_event_id NUMBER;
188140 l_first_event_id NUMBER;
188141 l_last_event_id NUMBER;
188142
188143 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
188144 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
188145 --
188146 --
188147 l_result BOOLEAN := TRUE;
188148 l_rows NUMBER := 1000;
188149 l_event_type_name VARCHAR2(80) := 'Transfer to Consigned';
188150 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
188151 l_description VARCHAR2(4000);
188152 l_transaction_reversal NUMBER;
188153 l_ae_header_id NUMBER;
188154 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
188155 l_log_module VARCHAR2(240);
188156 --
188157 l_acct_reversal_source VARCHAR2(30);
188158 l_trx_reversal_source VARCHAR2(30);
188162 l_acc_rev_gl_date_source DATE; -- 4262811
188159
188160 l_continue_with_lines BOOLEAN := TRUE;
188161 --
188163 --
188164 type t_array_event_id is table of number index by binary_integer;
188165
188166 l_rec_array_event t_rec_array_event;
188167 l_null_rec_array_event t_rec_array_event;
188168 l_array_ae_header_id xla_number_array_type;
188169 l_actual_flag VARCHAR2(1) := NULL;
188170 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
188171 l_balance_type_code VARCHAR2(1) :=NULL;
188172 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
188173
188174 --
188175 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
188176 --
188177
188178 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
188179 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
188180 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
188181 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
188182 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188183 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
188184
188185 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
188186 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
188187 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188188 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
188189 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188190
188191 l_array_source_6 t_array_source_6;
188192 l_array_source_7 t_array_source_7;
188193 l_array_source_8 t_array_source_8;
188194 l_array_source_9 t_array_source_9;
188195 l_array_source_10 t_array_source_10;
188196 l_array_source_12 t_array_source_12;
188197
188198 l_array_source_1 t_array_source_1;
188199 l_array_source_2 t_array_source_2;
188200 l_array_source_3 t_array_source_3;
188201 l_array_source_5 t_array_source_5;
188202 l_array_source_11 t_array_source_11;
188203
188204 --
188205 CURSOR header_cur
188206 IS
188207 SELECT /*+ leading(xet) cardinality(xet,1) */
188208 -- Event Type Code: XFER_TO_CONSIGNED
188209 -- Event Class Code: DELIVER
188210 xet.entity_id
188211 , xet.legal_entity_id
188212 , xet.entity_code
188213 , xet.transaction_number
188214 , xet.event_id
188215 , xet.event_class_code
188216 , xet.event_type_code
188217 , xet.event_number
188218 , xet.event_date
188219 , xet.transaction_date
188220 , xet.reference_num_1
188221 , xet.reference_num_2
188222 , xet.reference_num_3
188223 , xet.reference_num_4
188224 , xet.reference_char_1
188225 , xet.reference_char_2
188226 , xet.reference_char_3
188227 , xet.reference_char_4
188228 , xet.reference_date_1
188229 , xet.reference_date_2
188230 , xet.reference_date_3
188231 , xet.reference_date_4
188232 , xet.event_created_by
188233 , xet.budgetary_control_flag
188234 , h1.ENTITY_CODE source_6
188235 , h1.CURRENCY_CODE source_7
188236 , h1.CURRENCY_CONVERSION_DATE source_8
188237 , h1.CURRENCY_CONVERSION_RATE source_9
188238 , h1.CURRENCY_CONVERSION_TYPE source_10
188239 , h1.TRANSACTION_DATE source_12
188240 FROM xla_events_gt xet
188241 , GMF_XLA_EXTRACT_HEADERS h1
188242 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
188243 and xet.event_type_code = C_EVENT_TYPE_CODE
188244 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
188245
188246 ORDER BY event_id
188247 ;
188248
188249
188250 --
188251 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
188252 IS
188253 SELECT /*+ leading(xet) cardinality(xet,1) */
188254 -- Event Type Code: XFER_TO_CONSIGNED
188255 -- Event Class Code: DELIVER
188256 xet.entity_id
188257 ,xet.legal_entity_id
188258 ,xet.entity_code
188259 ,xet.transaction_number
188260 ,xet.event_id
188261 ,xet.event_class_code
188262 ,xet.event_type_code
188263 ,xet.event_number
188264 ,xet.event_date
188265 ,xet.transaction_date
188266 ,xet.reference_num_1
188267 ,xet.reference_num_2
188268 ,xet.reference_num_3
188269 ,xet.reference_num_4
188270 ,xet.reference_char_1
188271 ,xet.reference_char_2
188272 ,xet.reference_char_3
188273 ,xet.reference_char_4
188274 ,xet.reference_date_1
188275 ,xet.reference_date_2
188276 ,xet.reference_date_3
188277 ,xet.reference_date_4
188278 ,xet.event_created_by
188279 ,xet.budgetary_control_flag , l2.LINE_NUMBER
188280 , l2.TRANSACTION_ACCOUNT_ID source_1
188281 , l2.JOURNAL_LINE_TYPE source_2
188282 , l2.ENTERED_AMOUNT source_3
188283 , l2.LINE_ID source_5
188284 , l2.ACCOUNTED_AMOUNT source_11
188285 FROM xla_events_gt xet
188286 , GMF_XLA_EXTRACT_LINES l2
188287 WHERE xet.event_id between x_first_event_id and x_last_event_id
188288 and xet.event_date between p_pad_start_date and p_pad_end_date
188289 and xet.event_type_code = C_EVENT_TYPE_CODE
188290 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
188291 ;
188292
188293 --
188294 BEGIN
188295 IF g_log_enabled THEN
188296 l_log_module := C_DEFAULT_MODULE||'.EventType_304';
188297 END IF;
188298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188299 trace
188303 END IF;
188300 (p_msg => 'BEGIN of EventType_304'
188301 ,p_level => C_LEVEL_PROCEDURE
188302 ,p_module => l_log_module);
188304
188305 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188306 trace
188307 (p_msg => 'p_application_id = '||p_application_id||
188308 ' - p_base_ledger_id = '||p_base_ledger_id||
188309 ' - p_target_ledger_id = '||p_target_ledger_id||
188310 ' - p_language = '||p_language||
188311 ' - p_currency_code = '||p_currency_code||
188312 ' - p_sla_ledger_id = '||p_sla_ledger_id
188313 ,p_level => C_LEVEL_STATEMENT
188314 ,p_module => l_log_module);
188315 END IF;
188316 --
188317 -- initialze arrays
188318 --
188319 g_array_event.DELETE;
188320 l_rec_array_event := l_null_rec_array_event;
188321 --
188322 --------------------------------------
188323 -- 4262811 Initialze MPA Line Number
188324 --------------------------------------
188325 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
188326
188327 --
188328
188329 --
188330 OPEN header_cur;
188331 --
188332 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188333 trace
188334 (p_msg => 'SQL - FETCH header_cur'
188335 ,p_level => C_LEVEL_STATEMENT
188336 ,p_module => l_log_module);
188337 END IF;
188338 --
188339 LOOP
188340 FETCH header_cur BULK COLLECT INTO
188341 l_array_entity_id
188342 , l_array_legal_entity_id
188343 , l_array_entity_code
188344 , l_array_transaction_num
188345 , l_array_event_id
188346 , l_array_class_code
188347 , l_array_event_type
188348 , l_array_event_number
188349 , l_array_event_date
188350 , l_array_transaction_date
188351 , l_array_reference_num_1
188352 , l_array_reference_num_2
188353 , l_array_reference_num_3
188354 , l_array_reference_num_4
188355 , l_array_reference_char_1
188356 , l_array_reference_char_2
188357 , l_array_reference_char_3
188358 , l_array_reference_char_4
188359 , l_array_reference_date_1
188360 , l_array_reference_date_2
188361 , l_array_reference_date_3
188362 , l_array_reference_date_4
188363 , l_array_event_created_by
188364 , l_array_budgetary_control_flag
188365 , l_array_source_6
188366 , l_array_source_7
188367 , l_array_source_8
188368 , l_array_source_9
188369 , l_array_source_10
188370 , l_array_source_12
188371 LIMIT l_rows;
188372 --
188373 IF (C_LEVEL_EVENT >= g_log_level) THEN
188374 trace
188375 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
188376 ,p_level => C_LEVEL_EVENT
188377 ,p_module => l_log_module);
188378 END IF;
188379 --
188380 EXIT WHEN l_array_entity_id.COUNT = 0;
188381
188382 -- initialize arrays
188383 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
188384 XLA_AE_LINES_PKG.g_rec_lines := NULL;
188385
188386 --
188387 -- Bug 4458708
188388 --
188389 XLA_AE_LINES_PKG.g_LineNumber := 0;
188390
188391
188392 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
188393 g_last_hdr_idx := l_array_event_id.LAST;
188394 --
188395 -- loop for the headers. Each iteration is for each header extract row
188396 -- fetched in header cursor
188397 --
188398 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
188399
188400 --
188401 -- set event info as cache for other routines to refer event attributes
188402 --
188403 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
188404 (p_application_id => p_application_id
188405 ,p_primary_ledger_id => p_primary_ledger_id
188406 ,p_base_ledger_id => p_base_ledger_id
188407 ,p_target_ledger_id => p_target_ledger_id
188408 ,p_entity_id => l_array_entity_id(hdr_idx)
188409 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
188410 ,p_entity_code => l_array_entity_code(hdr_idx)
188411 ,p_transaction_num => l_array_transaction_num(hdr_idx)
188412 ,p_event_id => l_array_event_id(hdr_idx)
188413 ,p_event_class_code => l_array_class_code(hdr_idx)
188414 ,p_event_type_code => l_array_event_type(hdr_idx)
188415 ,p_event_number => l_array_event_number(hdr_idx)
188416 ,p_event_date => l_array_event_date(hdr_idx)
188417 ,p_transaction_date => l_array_transaction_date(hdr_idx)
188418 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
188419 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
188420 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
188421 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
188422 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
188423 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
188424 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
188425 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
188426 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
188427 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
188428 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
188429 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
188430 ,p_event_created_by => l_array_event_created_by(hdr_idx)
188431 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
188432
188433 --
188434 -- set the status of entry to C_VALID (0)
188435 --
188436 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
188437
188438 --
188439 -- initialize a row for ae header
188440 --
188441 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
188442
188446 -- storing the hdr_idx for event. May be used by line cursor.
188443 l_event_id := l_array_event_id(hdr_idx);
188444
188445 --
188447 --
188448 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
188449
188450 --
188451 -- store sources from header extract. This can be improved to
188452 -- store only those sources from header extract that may be used in lines
188453 --
188454
188455 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
188456 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
188457 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
188458 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
188459 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
188460 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
188461
188462 --
188463 -- initilaize the status of ae headers for diffrent balance types
188464 -- the status is initialised to C_NOT_CREATED (2)
188465 --
188466 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188467 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188468 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
188469
188470 --
188471 -- call api to validate and store accounting attributes for header
188472 --
188473
188474 ------------------------------------------------------------
188475 -- Accrual Reversal : to get date for Standard Source (NONE)
188476 ------------------------------------------------------------
188477 l_acc_rev_gl_date_source := NULL;
188478
188479 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
188480 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
188481
188482
188483 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
188484
188485 XLA_AE_HEADER_PKG.SetJeCategoryName;
188486
188487 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
188488 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
188489 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
188490 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
188491 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
188492
188493
188494 -- No header level analytical criteria
188495
188496 --
188497 --accounting attribute enhancement, bug 3612931
188498 --
188499 l_trx_reversal_source := SUBSTR(NULL, 1,30);
188500
188501 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
188502 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
188503
188504 xla_accounting_err_pkg.build_message
188505 (p_appli_s_name => 'XLA'
188506 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
188507 ,p_token_1 => 'ACCT_ATTR_NAME'
188508 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
188509 ,p_token_2 => 'PRODUCT_NAME'
188510 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
188511 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
188512 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
188513 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
188514
188515 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
188516 --
188517 -- following sets the accounting attributes needed to reverse
188518 -- accounting for a distributeion
188519 --
188520 xla_ae_lines_pkg.SetTrxReversalAttrs
188521 (p_event_id => l_event_id
188522 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
188523 ,p_trx_reversal_source => l_trx_reversal_source);
188524
188525 END IF;
188526
188527
188528 ----------------------------------------------------------------
188529 -- 4262811 - update the header statuses to invalid in need be
188530 ----------------------------------------------------------------
188531 --
188532 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
188533
188534
188535 -----------------------------------------------
188536 -- No accrual reversal for the event class/type
188537 -----------------------------------------------
188538 ----------------------------------------------------------------
188539
188540 --
188541 -- this ends the header loop iteration for one bulk fetch
188542 --
188543 END LOOP;
188544
188545 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
188546 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
188547
188548 --
188549 -- insert dummy rows into lines gt table that were created due to
188550 -- transaction reversals
188551 --
188552 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
188553 l_result := XLA_AE_LINES_PKG.InsertLines;
188554 END IF;
188555
188556 --
188557 -- reset the temp_line_num for each set of events fetched from header
188558 -- cursor rather than doing it for each new event in line cursor
188559 -- Bug 3939231
188560 --
188561 xla_ae_lines_pkg.g_temp_line_num := 0;
188562
188563
188564
188565 --
188566 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
188567 --
188568 --
188569 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188570
188571 trace
188572 (p_msg => 'SQL - FETCH line_cur'
188573 ,p_level => C_LEVEL_STATEMENT
188574 ,p_module => l_log_module);
188575
188576 END IF;
188580 --
188577 --
188578 --
188579 LOOP
188581 FETCH line_cur BULK COLLECT INTO
188582 l_array_entity_id
188583 , l_array_legal_entity_id
188584 , l_array_entity_code
188585 , l_array_transaction_num
188586 , l_array_event_id
188587 , l_array_class_code
188588 , l_array_event_type
188589 , l_array_event_number
188590 , l_array_event_date
188591 , l_array_transaction_date
188592 , l_array_reference_num_1
188593 , l_array_reference_num_2
188594 , l_array_reference_num_3
188595 , l_array_reference_num_4
188596 , l_array_reference_char_1
188597 , l_array_reference_char_2
188598 , l_array_reference_char_3
188599 , l_array_reference_char_4
188600 , l_array_reference_date_1
188601 , l_array_reference_date_2
188602 , l_array_reference_date_3
188603 , l_array_reference_date_4
188604 , l_array_event_created_by
188605 , l_array_budgetary_control_flag
188606 , l_array_extract_line_num
188607 , l_array_source_1
188608 , l_array_source_2
188609 , l_array_source_3
188610 , l_array_source_5
188611 , l_array_source_11
188612 LIMIT l_rows;
188613
188614 --
188615 IF (C_LEVEL_EVENT >= g_log_level) THEN
188616 trace
188617 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
188618 ,p_level => C_LEVEL_EVENT
188619 ,p_module => l_log_module);
188620 END IF;
188621 --
188622 EXIT WHEN l_array_entity_id.count = 0;
188623
188624 XLA_AE_LINES_PKG.g_rec_lines := null;
188625
188626 --
188627 -- Bug 4458708
188628 --
188629 XLA_AE_LINES_PKG.g_LineNumber := 0;
188630 --
188631 --
188632
188633 FOR Idx IN 1..l_array_event_id.count LOOP
188634 --
188635 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
188636 --
188637 l_event_id := l_array_event_id(idx); -- 5648433
188638
188639 --
188640 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
188641 --
188642
188643 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
188644 (g_array_event(l_event_id).array_value_num('header_index'))
188645 ,'N'
188646 ) <> 'Y'
188647 THEN
188648 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188649 trace
188650 (p_msg => 'Trancaction revesal option is not Y '
188651 ,p_level => C_LEVEL_STATEMENT
188652 ,p_module => l_log_module);
188653 END IF;
188654
188655 --
188656 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
188657 --
188658 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
188659 --
188660 -- set event info as cache for other routines to refer event attributes
188661 --
188662
188663 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
188664 l_previous_event_id := l_event_id;
188665
188666 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
188667 (p_application_id => p_application_id
188668 ,p_primary_ledger_id => p_primary_ledger_id
188669 ,p_base_ledger_id => p_base_ledger_id
188670 ,p_target_ledger_id => p_target_ledger_id
188671 ,p_entity_id => l_array_entity_id(Idx)
188672 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
188673 ,p_entity_code => l_array_entity_code(Idx)
188674 ,p_transaction_num => l_array_transaction_num(Idx)
188675 ,p_event_id => l_array_event_id(Idx)
188676 ,p_event_class_code => l_array_class_code(Idx)
188677 ,p_event_type_code => l_array_event_type(Idx)
188678 ,p_event_number => l_array_event_number(Idx)
188679 ,p_event_date => l_array_event_date(Idx)
188680 ,p_transaction_date => l_array_transaction_date(Idx)
188681 ,p_reference_num_1 => l_array_reference_num_1(Idx)
188682 ,p_reference_num_2 => l_array_reference_num_2(Idx)
188683 ,p_reference_num_3 => l_array_reference_num_3(Idx)
188684 ,p_reference_num_4 => l_array_reference_num_4(Idx)
188685 ,p_reference_char_1 => l_array_reference_char_1(Idx)
188686 ,p_reference_char_2 => l_array_reference_char_2(Idx)
188687 ,p_reference_char_3 => l_array_reference_char_3(Idx)
188688 ,p_reference_char_4 => l_array_reference_char_4(Idx)
188689 ,p_reference_date_1 => l_array_reference_date_1(Idx)
188690 ,p_reference_date_2 => l_array_reference_date_2(Idx)
188691 ,p_reference_date_3 => l_array_reference_date_3(Idx)
188692 ,p_reference_date_4 => l_array_reference_date_4(Idx)
188693 ,p_event_created_by => l_array_event_created_by(Idx)
188694 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
188695 --
188696 END IF;
188697
188698
188699
188700 --
188701 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
188702
188703 l_acct_reversal_source := SUBSTR(NULL, 1,30);
188704
188705 IF l_continue_with_lines THEN
188706 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
188707 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
188708
188709 xla_accounting_err_pkg.build_message
188710 (p_appli_s_name => 'XLA'
188711 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
188712 ,p_token_1 => 'LINE_NUMBER'
188713 ,p_value_1 => l_array_extract_line_num(Idx)
188714 ,p_token_2 => 'PRODUCT_NAME'
188715 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
188719
188716 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
188717 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
188718 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
188720 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
188721 --
188722 -- following sets the accounting attributes needed to reverse
188723 -- accounting for a distributeion
188724 --
188725
188726 --
188727 -- 5217187
188728 --
188729 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
188730 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
188731 g_array_event(l_event_id).array_value_num('header_index'));
188732 --
188733 --
188734
188735 -- No reversal code generated
188736
188737 xla_ae_lines_pkg.SetAcctReversalAttrs
188738 (p_event_id => l_event_id
188739 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
188740 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188741 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
188742 END IF;
188743
188744 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
188745 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
188746
188747 --
188748 AcctLineType_49 (
188749 p_application_id => p_application_id
188750 ,p_event_id => l_event_id
188751 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188752 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188753 ,p_actual_flag => l_actual_flag
188754 ,p_balance_type_code => l_balance_type_code
188755 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188756
188757 , p_source_1 => l_array_source_1(Idx)
188758 , p_source_2 => l_array_source_2(Idx)
188759 , p_source_3 => l_array_source_3(Idx)
188760 , p_source_5 => l_array_source_5(Idx)
188761 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188762 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188763 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188764 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188765 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188766 , p_source_11 => l_array_source_11(Idx)
188767 );
188768 If(l_balance_type_code = 'A') THEN
188769 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188770 END IF;
188771
188772 --
188773
188774
188775 --
188776 AcctLineType_109 (
188777 p_application_id => p_application_id
188778 ,p_event_id => l_event_id
188779 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188780 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188781 ,p_actual_flag => l_actual_flag
188782 ,p_balance_type_code => l_balance_type_code
188783 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188784
188785 , p_source_1 => l_array_source_1(Idx)
188786 , p_source_2 => l_array_source_2(Idx)
188787 , p_source_3 => l_array_source_3(Idx)
188788 , p_source_5 => l_array_source_5(Idx)
188789 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188790 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188791 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188792 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188793 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188794 , p_source_11 => l_array_source_11(Idx)
188795 );
188796 If(l_balance_type_code = 'A') THEN
188797 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188798 END IF;
188799
188800 --
188801
188802
188803 --
188804 AcctLineType_126 (
188805 p_application_id => p_application_id
188806 ,p_event_id => l_event_id
188807 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188808 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188809 ,p_actual_flag => l_actual_flag
188810 ,p_balance_type_code => l_balance_type_code
188811 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188812
188813 , p_source_1 => l_array_source_1(Idx)
188814 , p_source_2 => l_array_source_2(Idx)
188815 , p_source_3 => l_array_source_3(Idx)
188816 , p_source_5 => l_array_source_5(Idx)
188817 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188818 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188819 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188820 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188821 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188822 , p_source_11 => l_array_source_11(Idx)
188823 );
188824 If(l_balance_type_code = 'A') THEN
188825 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188826 END IF;
188827
188828 --
188829
188830
188831 --
188832 AcctLineType_156 (
188833 p_application_id => p_application_id
188834 ,p_event_id => l_event_id
188835 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188836 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188837 ,p_actual_flag => l_actual_flag
188838 ,p_balance_type_code => l_balance_type_code
188839 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188840
188841 , p_source_1 => l_array_source_1(Idx)
188842 , p_source_2 => l_array_source_2(Idx)
188843 , p_source_3 => l_array_source_3(Idx)
188844 , p_source_5 => l_array_source_5(Idx)
188845 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188846 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188847 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188848 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188849 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188850 , p_source_11 => l_array_source_11(Idx)
188851 );
188852 If(l_balance_type_code = 'A') THEN
188853 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188857
188854 END IF;
188855
188856 --
188858
188859 --
188860 AcctLineType_202 (
188861 p_application_id => p_application_id
188862 ,p_event_id => l_event_id
188863 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188864 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188865 ,p_actual_flag => l_actual_flag
188866 ,p_balance_type_code => l_balance_type_code
188867 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188868
188869 , p_source_1 => l_array_source_1(Idx)
188870 , p_source_2 => l_array_source_2(Idx)
188871 , p_source_3 => l_array_source_3(Idx)
188872 , p_source_5 => l_array_source_5(Idx)
188873 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188874 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188875 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188876 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188877 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188878 , p_source_11 => l_array_source_11(Idx)
188879 );
188880 If(l_balance_type_code = 'A') THEN
188881 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188882 END IF;
188883
188884 --
188885
188886
188887 --
188888 AcctLineType_229 (
188889 p_application_id => p_application_id
188890 ,p_event_id => l_event_id
188891 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188892 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188893 ,p_actual_flag => l_actual_flag
188894 ,p_balance_type_code => l_balance_type_code
188895 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188896
188897 , p_source_1 => l_array_source_1(Idx)
188898 , p_source_2 => l_array_source_2(Idx)
188899 , p_source_3 => l_array_source_3(Idx)
188900 , p_source_5 => l_array_source_5(Idx)
188901 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
188902 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
188903 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
188904 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
188905 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
188906 , p_source_11 => l_array_source_11(Idx)
188907 );
188908 If(l_balance_type_code = 'A') THEN
188909 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188910 END IF;
188911
188912 --
188913
188914 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
188915 -- or secondary ledger that has different currency with primary
188916 -- or alc that is calculated by sla
188917 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
188918 (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'))
188919
188920 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
188921 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
188922 AND (l_actual_flag = 'A')) THEN
188923 XLA_AE_LINES_PKG.CreateGainOrLossLines(
188924 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
188925 ,p_application_id => p_application_id
188926 ,p_amb_context_code => 'DEFAULT'
188927 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
188928 ,p_event_class_code => C_EVENT_CLASS_CODE
188929 ,p_event_type_code => C_EVENT_TYPE_CODE
188930
188931 ,p_gain_ccid => -1
188932 ,p_loss_ccid => -1
188933
188934 ,p_actual_flag => l_actual_flag
188935 ,p_enc_flag => null
188936 ,p_actual_g_l_ref => l_actual_gain_loss_ref
188937 ,p_enc_g_l_ref => null
188938 );
188939 END IF;
188940 END IF;
188941 END IF;
188942
188943 ELSE
188944 --
188945 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
188946 --
188947 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188948 trace
188949 (p_msg => 'Trancaction revesal option is Y'
188950 ,p_level => C_LEVEL_STATEMENT
188951 ,p_module => l_log_module);
188952 END IF;
188953 END IF;
188954
188955 END LOOP;
188956 l_result := XLA_AE_LINES_PKG.InsertLines ;
188957 end loop;
188958 close line_cur;
188959
188960
188961 --
188962 -- insert headers into xla_ae_headers_gt table
188963 --
188964 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
188965
188966 -- insert into errors table here.
188967
188968 END LOOP;
188969
188970 --
188971 -- 4865292
188972 --
188973 -- Compare g_hdr_extract_count with event count in
188974 -- CreateHeadersAndLines.
188975 --
188976 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
188977
188978 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188979 trace (p_msg => '# rows extracted from header extract objects '
188980 || ' (running total): '
188981 || g_hdr_extract_count
188982 ,p_level => C_LEVEL_STATEMENT
188983 ,p_module => l_log_module);
188984 END IF;
188985
188986 CLOSE header_cur;
188987 --
188988
188989 --
188990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188991 trace
188992 (p_msg => 'END of EventType_304'
188993 ,p_level => C_LEVEL_PROCEDURE
188994 ,p_module => l_log_module);
188995 END IF;
188996 --
188997 RETURN l_result;
188998 EXCEPTION
188999 WHEN xla_exceptions_pkg.application_exception THEN
189000
189001 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189002
189003
189004 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
189005
189006 RAISE;
189007
189011 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
189008 WHEN NO_DATA_FOUND THEN
189009
189010 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189012
189013 FOR header_record IN header_cur
189014 LOOP
189015 l_array_header_events(header_record.event_id) := header_record.event_id;
189016 END LOOP;
189017
189018 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
189019 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
189020
189021 fnd_file.put_line(fnd_file.LOG, ' ');
189022 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189023 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
189024 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
189025
189026 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
189027 LOOP
189028 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
189029 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
189030 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
189031 END IF;
189032 END LOOP;
189033
189034 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189035 fnd_file.put_line(fnd_file.LOG, ' ');
189036
189037
189038 xla_exceptions_pkg.raise_message
189039 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_304');
189040
189041
189042 WHEN OTHERS THEN
189043 xla_exceptions_pkg.raise_message
189044 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_304');
189045 END EventType_304;
189046 --
189047
189048 ---------------------------------------
189049 --
189050 -- PRIVATE PROCEDURE
189051 -- insert_sources_305
189052 --
189053 ----------------------------------------
189054 --
189055 PROCEDURE insert_sources_305(
189056 p_target_ledger_id IN NUMBER
189057 , p_language IN VARCHAR2
189058 , p_sla_ledger_id IN NUMBER
189059 , p_pad_start_date IN DATE
189060 , p_pad_end_date IN DATE
189061 )
189062 IS
189063
189064 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'XFER_TO_REGULAR';
189065 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
189066 p_apps_owner VARCHAR2(30);
189067 l_log_module VARCHAR2(240);
189068 BEGIN
189069 IF g_log_enabled THEN
189070 l_log_module := C_DEFAULT_MODULE||'.insert_sources_305';
189071 END IF;
189072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189073
189074 trace
189075 (p_msg => 'BEGIN of insert_sources_305'
189076 ,p_level => C_LEVEL_PROCEDURE
189077 ,p_module => l_log_module);
189078
189079 END IF;
189080
189081 -- select APPS owner
189082 SELECT oracle_username
189083 INTO p_apps_owner
189084 FROM fnd_oracle_userid
189085 WHERE read_only_flag = 'U'
189086 ;
189087
189088 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189089 trace
189090 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
189091 ' - p_language = '||p_language||
189092 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
189093 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
189094 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
189095 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
189096 ,p_level => C_LEVEL_STATEMENT
189097 ,p_module => l_log_module);
189098 END IF;
189099
189100
189101 --
189102 INSERT INTO xla_diag_sources --hdr1
189103 (
189104 event_id
189105 , ledger_id
189106 , sla_ledger_id
189107 , description_language
189108 , object_name
189109 , object_type_code
189110 , line_number
189111 , source_application_id
189112 , source_type_code
189113 , source_code
189114 , source_value
189115 , source_meaning
189116 , created_by
189117 , creation_date
189118 , last_update_date
189119 , last_updated_by
189120 , last_update_login
189121 , program_update_date
189122 , program_application_id
189123 , program_id
189124 , request_id
189125 )
189126 SELECT
189127 event_id
189128 , p_target_ledger_id
189129 , p_sla_ledger_id
189130 , p_language
189131 , object_name
189132 , object_type_code
189133 , line_number
189134 , source_application_id
189135 , source_type_code
189136 , source_code
189137 , SUBSTR(source_value ,1,1996)
189138 , SUBSTR(source_meaning,1,200)
189139 , xla_environment_pkg.g_Usr_Id
189140 , TRUNC(SYSDATE)
189141 , TRUNC(SYSDATE)
189142 , xla_environment_pkg.g_Usr_Id
189143 , xla_environment_pkg.g_Login_Id
189144 , TRUNC(SYSDATE)
189145 , xla_environment_pkg.g_Prog_Appl_Id
189146 , xla_environment_pkg.g_Prog_Id
189147 , xla_environment_pkg.g_Req_Id
189148 FROM (
189149 SELECT xet.event_id event_id
189150 , 0 line_number
189151 , CASE r
189152 WHEN 1 THEN 'GMF_XLA_EXTRACT_HEADERS'
189153 WHEN 2 THEN 'GMF_XLA_EXTRACT_HEADERS'
189154 WHEN 3 THEN 'GMF_XLA_EXTRACT_HEADERS'
189155 WHEN 4 THEN 'GMF_XLA_EXTRACT_HEADERS'
189156 WHEN 5 THEN 'GMF_XLA_EXTRACT_HEADERS'
189160 END object_name
189157 WHEN 6 THEN 'GMF_XLA_EXTRACT_HEADERS'
189158
189159 ELSE null
189161 , CASE r
189162 WHEN 1 THEN 'HEADER'
189163 WHEN 2 THEN 'HEADER'
189164 WHEN 3 THEN 'HEADER'
189165 WHEN 4 THEN 'HEADER'
189166 WHEN 5 THEN 'HEADER'
189167 WHEN 6 THEN 'HEADER'
189168
189169 ELSE null
189170 END object_type_code
189171 , CASE r
189172 WHEN 1 THEN '555'
189173 WHEN 2 THEN '555'
189174 WHEN 3 THEN '555'
189175 WHEN 4 THEN '555'
189176 WHEN 5 THEN '555'
189177 WHEN 6 THEN '555'
189178
189179 ELSE null
189180 END source_application_id
189181 , 'S' source_type_code
189182 , CASE r
189183 WHEN 1 THEN 'ENTITY_CODE'
189184 WHEN 2 THEN 'CURRENCY_CODE'
189185 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
189186 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
189187 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
189188 WHEN 6 THEN 'TRANSACTION_DATE'
189189
189190 ELSE null
189191 END source_code
189192 , CASE r
189193 WHEN 1 THEN TO_CHAR(h1.ENTITY_CODE)
189194 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
189195 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
189196 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
189197 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
189198 WHEN 6 THEN TO_CHAR(h1.TRANSACTION_DATE)
189199
189200 ELSE null
189201 END source_value
189202 , CASE r
189203 WHEN 2 THEN XLA_00555_AAD_S_000001_PKG.GetMeaning(
189204 1010186
189205 ,TO_CHAR(h1.CURRENCY_CODE)
189206 ,'CURRENCY_CODE'
189207 ,'S'
189208 ,555)
189209
189210 ELSE null
189211 END source_meaning
189212 FROM xla_events_gt xet
189213 , GMF_XLA_EXTRACT_HEADERS h1
189214 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
189215 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189216 AND xet.event_type_code = C_EVENT_TYPE_CODE
189217 AND h1.event_id = xet.event_id
189218
189219 )
189220 ;
189221 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189222
189223 trace
189224 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
189225 ,p_level => C_LEVEL_STATEMENT
189226 ,p_module => l_log_module);
189227
189228 END IF;
189229 --
189230
189231
189232
189233 --
189234 INSERT INTO xla_diag_sources --line1
189235 (
189236 event_id
189237 , ledger_id
189238 , sla_ledger_id
189239 , description_language
189240 , object_name
189241 , object_type_code
189242 , line_number
189243 , source_application_id
189244 , source_type_code
189245 , source_code
189246 , source_value
189247 , source_meaning
189248 , created_by
189249 , creation_date
189250 , last_update_date
189251 , last_updated_by
189252 , last_update_login
189253 , program_update_date
189254 , program_application_id
189255 , program_id
189256 , request_id
189257 )
189258 SELECT event_id
189259 , p_target_ledger_id
189260 , p_sla_ledger_id
189261 , p_language
189262 , object_name
189263 , object_type_code
189264 , line_number
189265 , source_application_id
189266 , source_type_code
189267 , source_code
189268 , SUBSTR(source_value,1,1996)
189269 , SUBSTR(source_meaning,1,200)
189270 , xla_environment_pkg.g_Usr_Id
189271 , TRUNC(SYSDATE)
189272 , TRUNC(SYSDATE)
189273 , xla_environment_pkg.g_Usr_Id
189274 , xla_environment_pkg.g_Login_Id
189275 , TRUNC(SYSDATE)
189276 , xla_environment_pkg.g_Prog_Appl_Id
189277 , xla_environment_pkg.g_Prog_Id
189278 , xla_environment_pkg.g_Req_Id
189279 FROM (
189280 SELECT xet.event_id event_id
189281 , l2.line_number line_number
189282 , CASE r
189283 WHEN 1 THEN 'GMF_XLA_EXTRACT_LINES'
189284 WHEN 2 THEN 'GMF_XLA_EXTRACT_LINES'
189285 WHEN 3 THEN 'GMF_XLA_EXTRACT_LINES'
189286 WHEN 4 THEN 'GMF_XLA_EXTRACT_LINES'
189287 WHEN 5 THEN 'GMF_XLA_EXTRACT_LINES'
189288
189289 ELSE null
189290 END object_name
189291 , CASE r
189292 WHEN 1 THEN 'LINE'
189293 WHEN 2 THEN 'LINE'
189294 WHEN 3 THEN 'LINE'
189295 WHEN 4 THEN 'LINE'
189296 WHEN 5 THEN 'LINE'
189297
189298 ELSE null
189299 END object_type_code
189300 , CASE r
189301 WHEN 1 THEN '555'
189302 WHEN 2 THEN '555'
189303 WHEN 3 THEN '555'
189304 WHEN 4 THEN '555'
189305 WHEN 5 THEN '555'
189306
189310 , CASE r
189307 ELSE null
189308 END source_application_id
189309 , 'S' source_type_code
189311 WHEN 1 THEN 'TRANSACTION_ACCOUNT_ID'
189312 WHEN 2 THEN 'JOURNAL_LINE_TYPE'
189313 WHEN 3 THEN 'ENTERED_AMOUNT'
189314 WHEN 4 THEN 'LINE_ID'
189315 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
189316
189317 ELSE null
189318 END source_code
189319 , CASE r
189320 WHEN 1 THEN TO_CHAR(l2.TRANSACTION_ACCOUNT_ID)
189321 WHEN 2 THEN TO_CHAR(l2.JOURNAL_LINE_TYPE)
189322 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
189323 WHEN 4 THEN TO_CHAR(l2.LINE_ID)
189324 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
189325
189326 ELSE null
189327 END source_value
189328 , null source_meaning
189329 FROM xla_events_gt xet
189330 , GMF_XLA_EXTRACT_LINES l2
189331 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
189332 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189333 AND xet.event_type_code = C_EVENT_TYPE_CODE
189334 AND l2.event_id = xet.event_id
189335
189336 )
189337 ;
189338 --
189339 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189340
189341 trace
189342 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
189343 ,p_level => C_LEVEL_STATEMENT
189344 ,p_module => l_log_module);
189345
189346 END IF;
189347
189348
189349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189350 trace
189351 (p_msg => 'END of insert_sources_305'
189352 ,p_level => C_LEVEL_PROCEDURE
189353 ,p_module => l_log_module);
189354 END IF;
189355 EXCEPTION
189356 WHEN xla_exceptions_pkg.application_exception THEN
189357 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
189358 trace
189359 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
189360 ,p_level => C_LEVEL_EXCEPTION
189361 ,p_module => l_log_module);
189362 END IF;
189363 RAISE;
189364 WHEN OTHERS THEN
189365 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
189366 trace
189367 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
189368 ,p_level => C_LEVEL_EXCEPTION
189369 ,p_module => l_log_module);
189370 END IF;
189371 xla_exceptions_pkg.raise_message
189372 (p_location => 'XLA_00555_AAD_S_000001_PKG.insert_sources_305');
189373 END insert_sources_305;
189374 --
189375
189376 ---------------------------------------
189377 --
189378 -- PRIVATE FUNCTION
189379 -- EventType_305
189380 --
189381 ----------------------------------------
189382 --
189383 FUNCTION EventType_305
189384 (p_application_id IN NUMBER
189385 ,p_base_ledger_id IN NUMBER
189386 ,p_target_ledger_id IN NUMBER
189387 ,p_language IN VARCHAR2
189388 ,p_currency_code IN VARCHAR2
189389 ,p_sla_ledger_id IN NUMBER
189390 ,p_pad_start_date IN DATE
189391 ,p_pad_end_date IN DATE
189392 ,p_primary_ledger_id IN NUMBER)
189393 RETURN BOOLEAN IS
189394 --
189395 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'XFER_TO_REGULAR';
189396 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER';
189397
189398 l_calculate_acctd_flag VARCHAR2(1) :='N';
189399 l_calculate_g_l_flag VARCHAR2(1) :='N';
189400 --
189401 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189402 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189403 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189404 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189405 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189406 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189407 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189408 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189409 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189410 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189411 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189412 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189413 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189414 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
189415 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189416 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189417 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189418 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
189419 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189420 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189421 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189422 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
189423 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
189424 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
189425 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
189426 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
189427
189428 l_event_id NUMBER;
189432
189429 l_previous_event_id NUMBER;
189430 l_first_event_id NUMBER;
189431 l_last_event_id NUMBER;
189433 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
189434 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
189435 --
189436 --
189437 l_result BOOLEAN := TRUE;
189438 l_rows NUMBER := 1000;
189439 l_event_type_name VARCHAR2(80) := 'Transfer to Regular';
189440 l_event_class_name VARCHAR2(80) := 'Deliver to or Return from Inventory';
189441 l_description VARCHAR2(4000);
189442 l_transaction_reversal NUMBER;
189443 l_ae_header_id NUMBER;
189444 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
189445 l_log_module VARCHAR2(240);
189446 --
189447 l_acct_reversal_source VARCHAR2(30);
189448 l_trx_reversal_source VARCHAR2(30);
189449
189450 l_continue_with_lines BOOLEAN := TRUE;
189451 --
189452 l_acc_rev_gl_date_source DATE; -- 4262811
189453 --
189454 type t_array_event_id is table of number index by binary_integer;
189455
189456 l_rec_array_event t_rec_array_event;
189457 l_null_rec_array_event t_rec_array_event;
189458 l_array_ae_header_id xla_number_array_type;
189459 l_actual_flag VARCHAR2(1) := NULL;
189460 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
189461 l_balance_type_code VARCHAR2(1) :=NULL;
189462 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
189463
189464 --
189465 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
189466 --
189467
189468 TYPE t_array_source_6 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
189469 TYPE t_array_source_7 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
189470 TYPE t_array_source_8 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
189471 TYPE t_array_source_9 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
189472 TYPE t_array_source_10 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
189473 TYPE t_array_source_12 IS TABLE OF GMF_XLA_EXTRACT_HEADERS.TRANSACTION_DATE%TYPE INDEX BY BINARY_INTEGER;
189474
189475 TYPE t_array_source_1 IS TABLE OF GMF_XLA_EXTRACT_LINES.TRANSACTION_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
189476 TYPE t_array_source_2 IS TABLE OF GMF_XLA_EXTRACT_LINES.JOURNAL_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
189477 TYPE t_array_source_3 IS TABLE OF GMF_XLA_EXTRACT_LINES.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
189478 TYPE t_array_source_5 IS TABLE OF GMF_XLA_EXTRACT_LINES.LINE_ID%TYPE INDEX BY BINARY_INTEGER;
189479 TYPE t_array_source_11 IS TABLE OF GMF_XLA_EXTRACT_LINES.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
189480
189481 l_array_source_6 t_array_source_6;
189482 l_array_source_7 t_array_source_7;
189483 l_array_source_8 t_array_source_8;
189484 l_array_source_9 t_array_source_9;
189485 l_array_source_10 t_array_source_10;
189486 l_array_source_12 t_array_source_12;
189487
189488 l_array_source_1 t_array_source_1;
189489 l_array_source_2 t_array_source_2;
189490 l_array_source_3 t_array_source_3;
189491 l_array_source_5 t_array_source_5;
189492 l_array_source_11 t_array_source_11;
189493
189494 --
189495 CURSOR header_cur
189496 IS
189497 SELECT /*+ leading(xet) cardinality(xet,1) */
189498 -- Event Type Code: XFER_TO_REGULAR
189499 -- Event Class Code: DELIVER
189500 xet.entity_id
189501 , xet.legal_entity_id
189502 , xet.entity_code
189503 , xet.transaction_number
189504 , xet.event_id
189505 , xet.event_class_code
189506 , xet.event_type_code
189507 , xet.event_number
189508 , xet.event_date
189509 , xet.transaction_date
189510 , xet.reference_num_1
189511 , xet.reference_num_2
189512 , xet.reference_num_3
189513 , xet.reference_num_4
189514 , xet.reference_char_1
189515 , xet.reference_char_2
189516 , xet.reference_char_3
189517 , xet.reference_char_4
189518 , xet.reference_date_1
189519 , xet.reference_date_2
189520 , xet.reference_date_3
189521 , xet.reference_date_4
189522 , xet.event_created_by
189523 , xet.budgetary_control_flag
189524 , h1.ENTITY_CODE source_6
189525 , h1.CURRENCY_CODE source_7
189526 , h1.CURRENCY_CONVERSION_DATE source_8
189527 , h1.CURRENCY_CONVERSION_RATE source_9
189528 , h1.CURRENCY_CONVERSION_TYPE source_10
189529 , h1.TRANSACTION_DATE source_12
189530 FROM xla_events_gt xet
189531 , GMF_XLA_EXTRACT_HEADERS h1
189532 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
189533 and xet.event_type_code = C_EVENT_TYPE_CODE
189534 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
189535
189536 ORDER BY event_id
189537 ;
189538
189539
189540 --
189541 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
189542 IS
189543 SELECT /*+ leading(xet) cardinality(xet,1) */
189544 -- Event Type Code: XFER_TO_REGULAR
189545 -- Event Class Code: DELIVER
189546 xet.entity_id
189547 ,xet.legal_entity_id
189548 ,xet.entity_code
189549 ,xet.transaction_number
189550 ,xet.event_id
189551 ,xet.event_class_code
189552 ,xet.event_type_code
189553 ,xet.event_number
189554 ,xet.event_date
189555 ,xet.transaction_date
189556 ,xet.reference_num_1
189557 ,xet.reference_num_2
189558 ,xet.reference_num_3
189559 ,xet.reference_num_4
189560 ,xet.reference_char_1
189561 ,xet.reference_char_2
189562 ,xet.reference_char_3
189563 ,xet.reference_char_4
189564 ,xet.reference_date_1
189565 ,xet.reference_date_2
189569 ,xet.budgetary_control_flag , l2.LINE_NUMBER
189566 ,xet.reference_date_3
189567 ,xet.reference_date_4
189568 ,xet.event_created_by
189570 , l2.TRANSACTION_ACCOUNT_ID source_1
189571 , l2.JOURNAL_LINE_TYPE source_2
189572 , l2.ENTERED_AMOUNT source_3
189573 , l2.LINE_ID source_5
189574 , l2.ACCOUNTED_AMOUNT source_11
189575 FROM xla_events_gt xet
189576 , GMF_XLA_EXTRACT_LINES l2
189577 WHERE xet.event_id between x_first_event_id and x_last_event_id
189578 and xet.event_date between p_pad_start_date and p_pad_end_date
189579 and xet.event_type_code = C_EVENT_TYPE_CODE
189580 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
189581 ;
189582
189583 --
189584 BEGIN
189585 IF g_log_enabled THEN
189586 l_log_module := C_DEFAULT_MODULE||'.EventType_305';
189587 END IF;
189588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189589 trace
189590 (p_msg => 'BEGIN of EventType_305'
189591 ,p_level => C_LEVEL_PROCEDURE
189592 ,p_module => l_log_module);
189593 END IF;
189594
189595 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189596 trace
189597 (p_msg => 'p_application_id = '||p_application_id||
189598 ' - p_base_ledger_id = '||p_base_ledger_id||
189599 ' - p_target_ledger_id = '||p_target_ledger_id||
189600 ' - p_language = '||p_language||
189601 ' - p_currency_code = '||p_currency_code||
189602 ' - p_sla_ledger_id = '||p_sla_ledger_id
189603 ,p_level => C_LEVEL_STATEMENT
189604 ,p_module => l_log_module);
189605 END IF;
189606 --
189607 -- initialze arrays
189608 --
189609 g_array_event.DELETE;
189610 l_rec_array_event := l_null_rec_array_event;
189611 --
189612 --------------------------------------
189613 -- 4262811 Initialze MPA Line Number
189614 --------------------------------------
189615 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
189616
189617 --
189618
189619 --
189620 OPEN header_cur;
189621 --
189622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189623 trace
189624 (p_msg => 'SQL - FETCH header_cur'
189625 ,p_level => C_LEVEL_STATEMENT
189626 ,p_module => l_log_module);
189627 END IF;
189628 --
189629 LOOP
189630 FETCH header_cur BULK COLLECT INTO
189631 l_array_entity_id
189632 , l_array_legal_entity_id
189633 , l_array_entity_code
189634 , l_array_transaction_num
189635 , l_array_event_id
189636 , l_array_class_code
189637 , l_array_event_type
189638 , l_array_event_number
189639 , l_array_event_date
189640 , l_array_transaction_date
189641 , l_array_reference_num_1
189642 , l_array_reference_num_2
189643 , l_array_reference_num_3
189644 , l_array_reference_num_4
189645 , l_array_reference_char_1
189646 , l_array_reference_char_2
189647 , l_array_reference_char_3
189648 , l_array_reference_char_4
189649 , l_array_reference_date_1
189650 , l_array_reference_date_2
189651 , l_array_reference_date_3
189652 , l_array_reference_date_4
189653 , l_array_event_created_by
189654 , l_array_budgetary_control_flag
189655 , l_array_source_6
189656 , l_array_source_7
189657 , l_array_source_8
189658 , l_array_source_9
189659 , l_array_source_10
189660 , l_array_source_12
189661 LIMIT l_rows;
189662 --
189663 IF (C_LEVEL_EVENT >= g_log_level) THEN
189664 trace
189665 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
189666 ,p_level => C_LEVEL_EVENT
189667 ,p_module => l_log_module);
189668 END IF;
189669 --
189670 EXIT WHEN l_array_entity_id.COUNT = 0;
189671
189672 -- initialize arrays
189673 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
189674 XLA_AE_LINES_PKG.g_rec_lines := NULL;
189675
189676 --
189677 -- Bug 4458708
189678 --
189679 XLA_AE_LINES_PKG.g_LineNumber := 0;
189680
189681
189682 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
189683 g_last_hdr_idx := l_array_event_id.LAST;
189684 --
189685 -- loop for the headers. Each iteration is for each header extract row
189686 -- fetched in header cursor
189687 --
189688 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
189689
189690 --
189691 -- set event info as cache for other routines to refer event attributes
189692 --
189693 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189694 (p_application_id => p_application_id
189695 ,p_primary_ledger_id => p_primary_ledger_id
189696 ,p_base_ledger_id => p_base_ledger_id
189697 ,p_target_ledger_id => p_target_ledger_id
189698 ,p_entity_id => l_array_entity_id(hdr_idx)
189699 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
189700 ,p_entity_code => l_array_entity_code(hdr_idx)
189701 ,p_transaction_num => l_array_transaction_num(hdr_idx)
189702 ,p_event_id => l_array_event_id(hdr_idx)
189703 ,p_event_class_code => l_array_class_code(hdr_idx)
189704 ,p_event_type_code => l_array_event_type(hdr_idx)
189705 ,p_event_number => l_array_event_number(hdr_idx)
189706 ,p_event_date => l_array_event_date(hdr_idx)
189707 ,p_transaction_date => l_array_transaction_date(hdr_idx)
189708 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
189709 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
189710 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
189711 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
189712 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
189716 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
189713 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
189714 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
189715 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
189717 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
189718 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
189719 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
189720 ,p_event_created_by => l_array_event_created_by(hdr_idx)
189721 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
189722
189723 --
189724 -- set the status of entry to C_VALID (0)
189725 --
189726 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189727
189728 --
189729 -- initialize a row for ae header
189730 --
189731 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
189732
189733 l_event_id := l_array_event_id(hdr_idx);
189734
189735 --
189736 -- storing the hdr_idx for event. May be used by line cursor.
189737 --
189738 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
189739
189740 --
189741 -- store sources from header extract. This can be improved to
189742 -- store only those sources from header extract that may be used in lines
189743 --
189744
189745 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
189746 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
189747 g_array_event(l_event_id).array_value_date('source_8') := l_array_source_8(hdr_idx);
189748 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
189749 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
189750 g_array_event(l_event_id).array_value_date('source_12') := l_array_source_12(hdr_idx);
189751
189752 --
189753 -- initilaize the status of ae headers for diffrent balance types
189754 -- the status is initialised to C_NOT_CREATED (2)
189755 --
189756 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189757 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189758 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189759
189760 --
189761 -- call api to validate and store accounting attributes for header
189762 --
189763
189764 ------------------------------------------------------------
189765 -- Accrual Reversal : to get date for Standard Source (NONE)
189766 ------------------------------------------------------------
189767 l_acc_rev_gl_date_source := NULL;
189768
189769 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
189770 l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_12');
189771
189772
189773 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
189774
189775 XLA_AE_HEADER_PKG.SetJeCategoryName;
189776
189777 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
189778 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
189779 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
189780 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
189781 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
189782
189783
189784 -- No header level analytical criteria
189785
189786 --
189787 --accounting attribute enhancement, bug 3612931
189788 --
189789 l_trx_reversal_source := SUBSTR(NULL, 1,30);
189790
189791 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
189792 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
189793
189794 xla_accounting_err_pkg.build_message
189795 (p_appli_s_name => 'XLA'
189796 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
189797 ,p_token_1 => 'ACCT_ATTR_NAME'
189798 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
189799 ,p_token_2 => 'PRODUCT_NAME'
189800 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
189801 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
189802 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
189803 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
189804
189805 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
189806 --
189807 -- following sets the accounting attributes needed to reverse
189808 -- accounting for a distributeion
189809 --
189810 xla_ae_lines_pkg.SetTrxReversalAttrs
189811 (p_event_id => l_event_id
189812 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
189813 ,p_trx_reversal_source => l_trx_reversal_source);
189814
189815 END IF;
189816
189817
189818 ----------------------------------------------------------------
189819 -- 4262811 - update the header statuses to invalid in need be
189820 ----------------------------------------------------------------
189821 --
189822 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
189823
189824
189825 -----------------------------------------------
189826 -- No accrual reversal for the event class/type
189827 -----------------------------------------------
189828 ----------------------------------------------------------------
189829
189830 --
189831 -- this ends the header loop iteration for one bulk fetch
189832 --
189833 END LOOP;
189834
189835 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
189836 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
189837
189838 --
189842 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
189839 -- insert dummy rows into lines gt table that were created due to
189840 -- transaction reversals
189841 --
189843 l_result := XLA_AE_LINES_PKG.InsertLines;
189844 END IF;
189845
189846 --
189847 -- reset the temp_line_num for each set of events fetched from header
189848 -- cursor rather than doing it for each new event in line cursor
189849 -- Bug 3939231
189850 --
189851 xla_ae_lines_pkg.g_temp_line_num := 0;
189852
189853
189854
189855 --
189856 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
189857 --
189858 --
189859 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189860
189861 trace
189862 (p_msg => 'SQL - FETCH line_cur'
189863 ,p_level => C_LEVEL_STATEMENT
189864 ,p_module => l_log_module);
189865
189866 END IF;
189867 --
189868 --
189869 LOOP
189870 --
189871 FETCH line_cur BULK COLLECT INTO
189872 l_array_entity_id
189873 , l_array_legal_entity_id
189874 , l_array_entity_code
189875 , l_array_transaction_num
189876 , l_array_event_id
189877 , l_array_class_code
189878 , l_array_event_type
189879 , l_array_event_number
189880 , l_array_event_date
189881 , l_array_transaction_date
189882 , l_array_reference_num_1
189883 , l_array_reference_num_2
189884 , l_array_reference_num_3
189885 , l_array_reference_num_4
189886 , l_array_reference_char_1
189887 , l_array_reference_char_2
189888 , l_array_reference_char_3
189889 , l_array_reference_char_4
189890 , l_array_reference_date_1
189891 , l_array_reference_date_2
189892 , l_array_reference_date_3
189893 , l_array_reference_date_4
189894 , l_array_event_created_by
189895 , l_array_budgetary_control_flag
189896 , l_array_extract_line_num
189897 , l_array_source_1
189898 , l_array_source_2
189899 , l_array_source_3
189900 , l_array_source_5
189901 , l_array_source_11
189902 LIMIT l_rows;
189903
189904 --
189905 IF (C_LEVEL_EVENT >= g_log_level) THEN
189906 trace
189907 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
189908 ,p_level => C_LEVEL_EVENT
189909 ,p_module => l_log_module);
189910 END IF;
189911 --
189912 EXIT WHEN l_array_entity_id.count = 0;
189913
189914 XLA_AE_LINES_PKG.g_rec_lines := null;
189915
189916 --
189917 -- Bug 4458708
189918 --
189919 XLA_AE_LINES_PKG.g_LineNumber := 0;
189920 --
189921 --
189922
189923 FOR Idx IN 1..l_array_event_id.count LOOP
189924 --
189925 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
189926 --
189927 l_event_id := l_array_event_id(idx); -- 5648433
189928
189929 --
189930 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
189931 --
189932
189933 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
189934 (g_array_event(l_event_id).array_value_num('header_index'))
189935 ,'N'
189936 ) <> 'Y'
189937 THEN
189938 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189939 trace
189940 (p_msg => 'Trancaction revesal option is not Y '
189941 ,p_level => C_LEVEL_STATEMENT
189942 ,p_module => l_log_module);
189943 END IF;
189944
189945 --
189946 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
189947 --
189948 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189949 --
189950 -- set event info as cache for other routines to refer event attributes
189951 --
189952
189953 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
189954 l_previous_event_id := l_event_id;
189955
189956 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189957 (p_application_id => p_application_id
189958 ,p_primary_ledger_id => p_primary_ledger_id
189959 ,p_base_ledger_id => p_base_ledger_id
189960 ,p_target_ledger_id => p_target_ledger_id
189961 ,p_entity_id => l_array_entity_id(Idx)
189962 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
189963 ,p_entity_code => l_array_entity_code(Idx)
189964 ,p_transaction_num => l_array_transaction_num(Idx)
189965 ,p_event_id => l_array_event_id(Idx)
189966 ,p_event_class_code => l_array_class_code(Idx)
189967 ,p_event_type_code => l_array_event_type(Idx)
189968 ,p_event_number => l_array_event_number(Idx)
189969 ,p_event_date => l_array_event_date(Idx)
189970 ,p_transaction_date => l_array_transaction_date(Idx)
189971 ,p_reference_num_1 => l_array_reference_num_1(Idx)
189972 ,p_reference_num_2 => l_array_reference_num_2(Idx)
189973 ,p_reference_num_3 => l_array_reference_num_3(Idx)
189974 ,p_reference_num_4 => l_array_reference_num_4(Idx)
189975 ,p_reference_char_1 => l_array_reference_char_1(Idx)
189976 ,p_reference_char_2 => l_array_reference_char_2(Idx)
189977 ,p_reference_char_3 => l_array_reference_char_3(Idx)
189978 ,p_reference_char_4 => l_array_reference_char_4(Idx)
189979 ,p_reference_date_1 => l_array_reference_date_1(Idx)
189980 ,p_reference_date_2 => l_array_reference_date_2(Idx)
189981 ,p_reference_date_3 => l_array_reference_date_3(Idx)
189982 ,p_reference_date_4 => l_array_reference_date_4(Idx)
189983 ,p_event_created_by => l_array_event_created_by(Idx)
189987
189984 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
189985 --
189986 END IF;
189988
189989
189990 --
189991 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
189992
189993 l_acct_reversal_source := SUBSTR(NULL, 1,30);
189994
189995 IF l_continue_with_lines THEN
189996 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
189997 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
189998
189999 xla_accounting_err_pkg.build_message
190000 (p_appli_s_name => 'XLA'
190001 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
190002 ,p_token_1 => 'LINE_NUMBER'
190003 ,p_value_1 => l_array_extract_line_num(Idx)
190004 ,p_token_2 => 'PRODUCT_NAME'
190005 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
190006 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
190007 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
190008 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
190009
190010 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
190011 --
190012 -- following sets the accounting attributes needed to reverse
190013 -- accounting for a distributeion
190014 --
190015
190016 --
190017 -- 5217187
190018 --
190019 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
190020 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
190021 g_array_event(l_event_id).array_value_num('header_index'));
190022 --
190023 --
190024
190025 -- No reversal code generated
190026
190027 xla_ae_lines_pkg.SetAcctReversalAttrs
190028 (p_event_id => l_event_id
190029 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
190030 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190031 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
190032 END IF;
190033
190034 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
190035 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
190036
190037 --
190038 AcctLineType_50 (
190039 p_application_id => p_application_id
190040 ,p_event_id => l_event_id
190041 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190042 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190043 ,p_actual_flag => l_actual_flag
190044 ,p_balance_type_code => l_balance_type_code
190045 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190046
190047 , p_source_1 => l_array_source_1(Idx)
190048 , p_source_2 => l_array_source_2(Idx)
190049 , p_source_3 => l_array_source_3(Idx)
190050 , p_source_5 => l_array_source_5(Idx)
190051 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190052 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190053 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190054 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190055 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190056 , p_source_11 => l_array_source_11(Idx)
190057 );
190058 If(l_balance_type_code = 'A') THEN
190059 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190060 END IF;
190061
190062 --
190063
190064
190065 --
190066 AcctLineType_96 (
190067 p_application_id => p_application_id
190068 ,p_event_id => l_event_id
190069 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190070 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190071 ,p_actual_flag => l_actual_flag
190072 ,p_balance_type_code => l_balance_type_code
190073 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190074
190075 , p_source_1 => l_array_source_1(Idx)
190076 , p_source_2 => l_array_source_2(Idx)
190077 , p_source_3 => l_array_source_3(Idx)
190078 , p_source_5 => l_array_source_5(Idx)
190079 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190080 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190081 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190082 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190083 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190084 , p_source_11 => l_array_source_11(Idx)
190085 );
190086 If(l_balance_type_code = 'A') THEN
190087 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190088 END IF;
190089
190090 --
190091
190092
190093 --
190094 AcctLineType_140 (
190095 p_application_id => p_application_id
190096 ,p_event_id => l_event_id
190097 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190098 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190099 ,p_actual_flag => l_actual_flag
190100 ,p_balance_type_code => l_balance_type_code
190101 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190102
190103 , p_source_1 => l_array_source_1(Idx)
190104 , p_source_2 => l_array_source_2(Idx)
190105 , p_source_3 => l_array_source_3(Idx)
190106 , p_source_5 => l_array_source_5(Idx)
190107 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190108 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190109 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190110 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190111 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190112 , p_source_11 => l_array_source_11(Idx)
190113 );
190114 If(l_balance_type_code = 'A') THEN
190115 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190116 END IF;
190117
190118 --
190119
190120
190121 --
190122 AcctLineType_204 (
190123 p_application_id => p_application_id
190127 ,p_actual_flag => l_actual_flag
190124 ,p_event_id => l_event_id
190125 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190126 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190128 ,p_balance_type_code => l_balance_type_code
190129 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190130
190131 , p_source_1 => l_array_source_1(Idx)
190132 , p_source_2 => l_array_source_2(Idx)
190133 , p_source_3 => l_array_source_3(Idx)
190134 , p_source_5 => l_array_source_5(Idx)
190135 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190136 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190137 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190138 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190139 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190140 , p_source_11 => l_array_source_11(Idx)
190141 );
190142 If(l_balance_type_code = 'A') THEN
190143 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190144 END IF;
190145
190146 --
190147
190148
190149 --
190150 AcctLineType_225 (
190151 p_application_id => p_application_id
190152 ,p_event_id => l_event_id
190153 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190154 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190155 ,p_actual_flag => l_actual_flag
190156 ,p_balance_type_code => l_balance_type_code
190157 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190158
190159 , p_source_1 => l_array_source_1(Idx)
190160 , p_source_2 => l_array_source_2(Idx)
190161 , p_source_3 => l_array_source_3(Idx)
190162 , p_source_5 => l_array_source_5(Idx)
190163 , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
190164 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
190165 , p_source_8 => g_array_event(l_event_id).array_value_date('source_8')
190166 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
190167 , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
190168 , p_source_11 => l_array_source_11(Idx)
190169 );
190170 If(l_balance_type_code = 'A') THEN
190171 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190172 END IF;
190173
190174 --
190175
190176 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
190177 -- or secondary ledger that has different currency with primary
190178 -- or alc that is calculated by sla
190179 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
190180 (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'))
190181
190182 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
190183 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
190184 AND (l_actual_flag = 'A')) THEN
190185 XLA_AE_LINES_PKG.CreateGainOrLossLines(
190186 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
190187 ,p_application_id => p_application_id
190188 ,p_amb_context_code => 'DEFAULT'
190189 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
190190 ,p_event_class_code => C_EVENT_CLASS_CODE
190191 ,p_event_type_code => C_EVENT_TYPE_CODE
190192
190193 ,p_gain_ccid => -1
190194 ,p_loss_ccid => -1
190195
190196 ,p_actual_flag => l_actual_flag
190197 ,p_enc_flag => null
190198 ,p_actual_g_l_ref => l_actual_gain_loss_ref
190199 ,p_enc_g_l_ref => null
190200 );
190201 END IF;
190202 END IF;
190203 END IF;
190204
190205 ELSE
190206 --
190207 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
190208 --
190209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190210 trace
190211 (p_msg => 'Trancaction revesal option is Y'
190212 ,p_level => C_LEVEL_STATEMENT
190213 ,p_module => l_log_module);
190214 END IF;
190215 END IF;
190216
190217 END LOOP;
190218 l_result := XLA_AE_LINES_PKG.InsertLines ;
190219 end loop;
190220 close line_cur;
190221
190222
190223 --
190224 -- insert headers into xla_ae_headers_gt table
190225 --
190226 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
190227
190228 -- insert into errors table here.
190229
190230 END LOOP;
190231
190232 --
190233 -- 4865292
190234 --
190235 -- Compare g_hdr_extract_count with event count in
190236 -- CreateHeadersAndLines.
190237 --
190238 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
190239
190240 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190241 trace (p_msg => '# rows extracted from header extract objects '
190242 || ' (running total): '
190243 || g_hdr_extract_count
190244 ,p_level => C_LEVEL_STATEMENT
190245 ,p_module => l_log_module);
190246 END IF;
190247
190248 CLOSE header_cur;
190249 --
190250
190251 --
190252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190253 trace
190254 (p_msg => 'END of EventType_305'
190255 ,p_level => C_LEVEL_PROCEDURE
190256 ,p_module => l_log_module);
190257 END IF;
190258 --
190259 RETURN l_result;
190260 EXCEPTION
190261 WHEN xla_exceptions_pkg.application_exception THEN
190262
190263 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
190264
190265
190266 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
190267
190268 RAISE;
190269
190270 WHEN NO_DATA_FOUND THEN
190271
190272 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
190273 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
190274
190278 END LOOP;
190275 FOR header_record IN header_cur
190276 LOOP
190277 l_array_header_events(header_record.event_id) := header_record.event_id;
190279
190280 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
190281 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
190282
190283 fnd_file.put_line(fnd_file.LOG, ' ');
190284 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
190285 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
190286 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
190287
190288 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
190289 LOOP
190290 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
190291 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
190292 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
190293 END IF;
190294 END LOOP;
190295
190296 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
190297 fnd_file.put_line(fnd_file.LOG, ' ');
190298
190299
190300 xla_exceptions_pkg.raise_message
190301 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_305');
190302
190303
190304 WHEN OTHERS THEN
190305 xla_exceptions_pkg.raise_message
190306 (p_location => 'XLA_00555_AAD_S_000001_PKG.EventType_305');
190307 END EventType_305;
190308 --
190309
190310 --
190311 --+============================================+
190312 --| |
190313 --| PRIVATE FUNCTION |
190314 --| |
190315 --+============================================+
190316 --
190317 FUNCTION CreateHeadersAndLines
190318 (p_application_id IN NUMBER
190319 ,p_base_ledger_id IN NUMBER
190320 ,p_target_ledger_id IN NUMBER
190321 ,p_pad_start_date IN DATE
190322 ,p_pad_end_date IN DATE
190323 ,p_primary_ledger_id IN NUMBER)
190324 RETURN BOOLEAN IS
190325 l_created BOOLEAN:=FALSE;
190326 l_event_id NUMBER;
190327 l_event_date DATE;
190328 l_language VARCHAR2(30);
190329 l_currency_code VARCHAR2(30);
190330 l_sla_ledger_id NUMBER;
190331 l_log_module VARCHAR2(240);
190332
190333 BEGIN
190334 --
190335 IF g_log_enabled THEN
190336 l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
190337 END IF;
190338 --
190339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190340 trace
190341 (p_msg => 'BEGIN of CreateHeadersAndLines'
190342 ,p_level => C_LEVEL_PROCEDURE
190343 ,p_module => l_log_module);
190344 END IF;
190345
190346 l_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
190347 l_currency_code := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
190348 l_sla_ledger_id := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
190349
190350 --
190351 -- initialize array of lines with NULL
190352 --
190353 xla_ae_lines_pkg.SetNullLine;
190354
190355 --
190356 -- initialize header extract count -- Bug 4865292
190357 --
190358 g_hdr_extract_count:= 0;
190359
190360
190361 l_created := EventType_248(
190362 p_application_id => p_application_id
190363 , p_base_ledger_id => p_base_ledger_id
190364 , p_target_ledger_id => p_target_ledger_id
190365 , p_language => l_language
190366 , p_currency_code => l_currency_code
190367 , p_sla_ledger_id => l_sla_ledger_id
190368 , p_pad_start_date => p_pad_start_date
190369 , p_pad_end_date => p_pad_end_date
190370 , p_primary_ledger_id => p_primary_ledger_id
190371 );
190372
190373
190374
190375 IF ( g_diagnostics_mode ='Y' ) THEN
190376
190377 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190378 trace
190379 (p_msg => 'CALL Transaction Objects Diagnostics'
190380 ,p_level => C_LEVEL_STATEMENT
190381 ,p_module => l_log_module);
190382
190383 END IF;
190384
190385 insert_sources_248(
190386 p_target_ledger_id => p_target_ledger_id
190387 , p_language => l_language
190388 , p_sla_ledger_id => l_sla_ledger_id
190389 , p_pad_start_date => p_pad_start_date
190390 , p_pad_end_date => p_pad_end_date
190391 );
190392
190393 END IF;
190394
190395 l_created := EventType_249(
190396 p_application_id => p_application_id
190397 , p_base_ledger_id => p_base_ledger_id
190398 , p_target_ledger_id => p_target_ledger_id
190399 , p_language => l_language
190400 , p_currency_code => l_currency_code
190401 , p_sla_ledger_id => l_sla_ledger_id
190402 , p_pad_start_date => p_pad_start_date
190403 , p_pad_end_date => p_pad_end_date
190404 , p_primary_ledger_id => p_primary_ledger_id
190405 );
190406
190407
190408
190409 IF ( g_diagnostics_mode ='Y' ) THEN
190410
190411 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190412 trace
190413 (p_msg => 'CALL Transaction Objects Diagnostics'
190414 ,p_level => C_LEVEL_STATEMENT
190415 ,p_module => l_log_module);
190416
190417 END IF;
190418
190419 insert_sources_249(
190423 , p_pad_start_date => p_pad_start_date
190420 p_target_ledger_id => p_target_ledger_id
190421 , p_language => l_language
190422 , p_sla_ledger_id => l_sla_ledger_id
190424 , p_pad_end_date => p_pad_end_date
190425 );
190426
190427 END IF;
190428
190429 l_created := EventType_250(
190430 p_application_id => p_application_id
190431 , p_base_ledger_id => p_base_ledger_id
190432 , p_target_ledger_id => p_target_ledger_id
190433 , p_language => l_language
190434 , p_currency_code => l_currency_code
190435 , p_sla_ledger_id => l_sla_ledger_id
190436 , p_pad_start_date => p_pad_start_date
190437 , p_pad_end_date => p_pad_end_date
190438 , p_primary_ledger_id => p_primary_ledger_id
190439 );
190440
190441
190442
190443 IF ( g_diagnostics_mode ='Y' ) THEN
190444
190445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190446 trace
190447 (p_msg => 'CALL Transaction Objects Diagnostics'
190448 ,p_level => C_LEVEL_STATEMENT
190449 ,p_module => l_log_module);
190450
190451 END IF;
190452
190453 insert_sources_250(
190454 p_target_ledger_id => p_target_ledger_id
190455 , p_language => l_language
190456 , p_sla_ledger_id => l_sla_ledger_id
190457 , p_pad_start_date => p_pad_start_date
190458 , p_pad_end_date => p_pad_end_date
190459 );
190460
190461 END IF;
190462
190463 l_created := EventType_251(
190464 p_application_id => p_application_id
190465 , p_base_ledger_id => p_base_ledger_id
190466 , p_target_ledger_id => p_target_ledger_id
190467 , p_language => l_language
190468 , p_currency_code => l_currency_code
190469 , p_sla_ledger_id => l_sla_ledger_id
190470 , p_pad_start_date => p_pad_start_date
190471 , p_pad_end_date => p_pad_end_date
190472 , p_primary_ledger_id => p_primary_ledger_id
190473 );
190474
190475
190476
190477 IF ( g_diagnostics_mode ='Y' ) THEN
190478
190479 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190480 trace
190481 (p_msg => 'CALL Transaction Objects Diagnostics'
190482 ,p_level => C_LEVEL_STATEMENT
190483 ,p_module => l_log_module);
190484
190485 END IF;
190486
190487 insert_sources_251(
190488 p_target_ledger_id => p_target_ledger_id
190489 , p_language => l_language
190490 , p_sla_ledger_id => l_sla_ledger_id
190491 , p_pad_start_date => p_pad_start_date
190492 , p_pad_end_date => p_pad_end_date
190493 );
190494
190495 END IF;
190496
190497 l_created := EventType_252(
190498 p_application_id => p_application_id
190499 , p_base_ledger_id => p_base_ledger_id
190500 , p_target_ledger_id => p_target_ledger_id
190501 , p_language => l_language
190502 , p_currency_code => l_currency_code
190503 , p_sla_ledger_id => l_sla_ledger_id
190504 , p_pad_start_date => p_pad_start_date
190505 , p_pad_end_date => p_pad_end_date
190506 , p_primary_ledger_id => p_primary_ledger_id
190507 );
190508
190509
190510
190511 IF ( g_diagnostics_mode ='Y' ) THEN
190512
190513 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190514 trace
190515 (p_msg => 'CALL Transaction Objects Diagnostics'
190516 ,p_level => C_LEVEL_STATEMENT
190517 ,p_module => l_log_module);
190518
190519 END IF;
190520
190521 insert_sources_252(
190522 p_target_ledger_id => p_target_ledger_id
190523 , p_language => l_language
190524 , p_sla_ledger_id => l_sla_ledger_id
190525 , p_pad_start_date => p_pad_start_date
190526 , p_pad_end_date => p_pad_end_date
190527 );
190528
190529 END IF;
190530
190531 l_created := EventType_253(
190532 p_application_id => p_application_id
190533 , p_base_ledger_id => p_base_ledger_id
190534 , p_target_ledger_id => p_target_ledger_id
190535 , p_language => l_language
190536 , p_currency_code => l_currency_code
190537 , p_sla_ledger_id => l_sla_ledger_id
190538 , p_pad_start_date => p_pad_start_date
190539 , p_pad_end_date => p_pad_end_date
190540 , p_primary_ledger_id => p_primary_ledger_id
190541 );
190542
190543
190544
190545 IF ( g_diagnostics_mode ='Y' ) THEN
190546
190547 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190548 trace
190549 (p_msg => 'CALL Transaction Objects Diagnostics'
190550 ,p_level => C_LEVEL_STATEMENT
190551 ,p_module => l_log_module);
190552
190553 END IF;
190554
190555 insert_sources_253(
190556 p_target_ledger_id => p_target_ledger_id
190557 , p_language => l_language
190558 , p_sla_ledger_id => l_sla_ledger_id
190559 , p_pad_start_date => p_pad_start_date
190560 , p_pad_end_date => p_pad_end_date
190561 );
190562
190563 END IF;
190564
190568 , p_target_ledger_id => p_target_ledger_id
190565 l_created := EventType_254(
190566 p_application_id => p_application_id
190567 , p_base_ledger_id => p_base_ledger_id
190569 , p_language => l_language
190570 , p_currency_code => l_currency_code
190571 , p_sla_ledger_id => l_sla_ledger_id
190572 , p_pad_start_date => p_pad_start_date
190573 , p_pad_end_date => p_pad_end_date
190574 , p_primary_ledger_id => p_primary_ledger_id
190575 );
190576
190577
190578
190579 IF ( g_diagnostics_mode ='Y' ) THEN
190580
190581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190582 trace
190583 (p_msg => 'CALL Transaction Objects Diagnostics'
190584 ,p_level => C_LEVEL_STATEMENT
190585 ,p_module => l_log_module);
190586
190587 END IF;
190588
190589 insert_sources_254(
190590 p_target_ledger_id => p_target_ledger_id
190591 , p_language => l_language
190592 , p_sla_ledger_id => l_sla_ledger_id
190593 , p_pad_start_date => p_pad_start_date
190594 , p_pad_end_date => p_pad_end_date
190595 );
190596
190597 END IF;
190598
190599 l_created := EventType_255(
190600 p_application_id => p_application_id
190601 , p_base_ledger_id => p_base_ledger_id
190602 , p_target_ledger_id => p_target_ledger_id
190603 , p_language => l_language
190604 , p_currency_code => l_currency_code
190605 , p_sla_ledger_id => l_sla_ledger_id
190606 , p_pad_start_date => p_pad_start_date
190607 , p_pad_end_date => p_pad_end_date
190608 , p_primary_ledger_id => p_primary_ledger_id
190609 );
190610
190611
190612
190613 IF ( g_diagnostics_mode ='Y' ) THEN
190614
190615 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190616 trace
190617 (p_msg => 'CALL Transaction Objects Diagnostics'
190618 ,p_level => C_LEVEL_STATEMENT
190619 ,p_module => l_log_module);
190620
190621 END IF;
190622
190623 insert_sources_255(
190624 p_target_ledger_id => p_target_ledger_id
190625 , p_language => l_language
190626 , p_sla_ledger_id => l_sla_ledger_id
190627 , p_pad_start_date => p_pad_start_date
190628 , p_pad_end_date => p_pad_end_date
190629 );
190630
190631 END IF;
190632
190633 l_created := EventType_256(
190634 p_application_id => p_application_id
190635 , p_base_ledger_id => p_base_ledger_id
190636 , p_target_ledger_id => p_target_ledger_id
190637 , p_language => l_language
190638 , p_currency_code => l_currency_code
190639 , p_sla_ledger_id => l_sla_ledger_id
190640 , p_pad_start_date => p_pad_start_date
190641 , p_pad_end_date => p_pad_end_date
190642 , p_primary_ledger_id => p_primary_ledger_id
190643 );
190644
190645
190646
190647 IF ( g_diagnostics_mode ='Y' ) THEN
190648
190649 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190650 trace
190651 (p_msg => 'CALL Transaction Objects Diagnostics'
190652 ,p_level => C_LEVEL_STATEMENT
190653 ,p_module => l_log_module);
190654
190655 END IF;
190656
190657 insert_sources_256(
190658 p_target_ledger_id => p_target_ledger_id
190659 , p_language => l_language
190660 , p_sla_ledger_id => l_sla_ledger_id
190661 , p_pad_start_date => p_pad_start_date
190662 , p_pad_end_date => p_pad_end_date
190663 );
190664
190665 END IF;
190666
190667 l_created := EventType_257(
190668 p_application_id => p_application_id
190669 , p_base_ledger_id => p_base_ledger_id
190670 , p_target_ledger_id => p_target_ledger_id
190671 , p_language => l_language
190672 , p_currency_code => l_currency_code
190673 , p_sla_ledger_id => l_sla_ledger_id
190674 , p_pad_start_date => p_pad_start_date
190675 , p_pad_end_date => p_pad_end_date
190676 , p_primary_ledger_id => p_primary_ledger_id
190677 );
190678
190679
190680
190681 IF ( g_diagnostics_mode ='Y' ) THEN
190682
190683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190684 trace
190685 (p_msg => 'CALL Transaction Objects Diagnostics'
190686 ,p_level => C_LEVEL_STATEMENT
190687 ,p_module => l_log_module);
190688
190689 END IF;
190690
190691 insert_sources_257(
190692 p_target_ledger_id => p_target_ledger_id
190693 , p_language => l_language
190694 , p_sla_ledger_id => l_sla_ledger_id
190695 , p_pad_start_date => p_pad_start_date
190696 , p_pad_end_date => p_pad_end_date
190697 );
190698
190699 END IF;
190700
190701 l_created := EventType_258(
190702 p_application_id => p_application_id
190703 , p_base_ledger_id => p_base_ledger_id
190704 , p_target_ledger_id => p_target_ledger_id
190705 , p_language => l_language
190706 , p_currency_code => l_currency_code
190707 , p_sla_ledger_id => l_sla_ledger_id
190708 , p_pad_start_date => p_pad_start_date
190709 , p_pad_end_date => p_pad_end_date
190713
190710 , p_primary_ledger_id => p_primary_ledger_id
190711 );
190712
190714
190715 IF ( g_diagnostics_mode ='Y' ) THEN
190716
190717 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190718 trace
190719 (p_msg => 'CALL Transaction Objects Diagnostics'
190720 ,p_level => C_LEVEL_STATEMENT
190721 ,p_module => l_log_module);
190722
190723 END IF;
190724
190725 insert_sources_258(
190726 p_target_ledger_id => p_target_ledger_id
190727 , p_language => l_language
190728 , p_sla_ledger_id => l_sla_ledger_id
190729 , p_pad_start_date => p_pad_start_date
190730 , p_pad_end_date => p_pad_end_date
190731 );
190732
190733 END IF;
190734
190735 l_created := EventType_259(
190736 p_application_id => p_application_id
190737 , p_base_ledger_id => p_base_ledger_id
190738 , p_target_ledger_id => p_target_ledger_id
190739 , p_language => l_language
190740 , p_currency_code => l_currency_code
190741 , p_sla_ledger_id => l_sla_ledger_id
190742 , p_pad_start_date => p_pad_start_date
190743 , p_pad_end_date => p_pad_end_date
190744 , p_primary_ledger_id => p_primary_ledger_id
190745 );
190746
190747
190748
190749 IF ( g_diagnostics_mode ='Y' ) THEN
190750
190751 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190752 trace
190753 (p_msg => 'CALL Transaction Objects Diagnostics'
190754 ,p_level => C_LEVEL_STATEMENT
190755 ,p_module => l_log_module);
190756
190757 END IF;
190758
190759 insert_sources_259(
190760 p_target_ledger_id => p_target_ledger_id
190761 , p_language => l_language
190762 , p_sla_ledger_id => l_sla_ledger_id
190763 , p_pad_start_date => p_pad_start_date
190764 , p_pad_end_date => p_pad_end_date
190765 );
190766
190767 END IF;
190768
190769 l_created := EventType_260(
190770 p_application_id => p_application_id
190771 , p_base_ledger_id => p_base_ledger_id
190772 , p_target_ledger_id => p_target_ledger_id
190773 , p_language => l_language
190774 , p_currency_code => l_currency_code
190775 , p_sla_ledger_id => l_sla_ledger_id
190776 , p_pad_start_date => p_pad_start_date
190777 , p_pad_end_date => p_pad_end_date
190778 , p_primary_ledger_id => p_primary_ledger_id
190779 );
190780
190781
190782
190783 IF ( g_diagnostics_mode ='Y' ) THEN
190784
190785 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190786 trace
190787 (p_msg => 'CALL Transaction Objects Diagnostics'
190788 ,p_level => C_LEVEL_STATEMENT
190789 ,p_module => l_log_module);
190790
190791 END IF;
190792
190793 insert_sources_260(
190794 p_target_ledger_id => p_target_ledger_id
190795 , p_language => l_language
190796 , p_sla_ledger_id => l_sla_ledger_id
190797 , p_pad_start_date => p_pad_start_date
190798 , p_pad_end_date => p_pad_end_date
190799 );
190800
190801 END IF;
190802
190803 l_created := EventType_261(
190804 p_application_id => p_application_id
190805 , p_base_ledger_id => p_base_ledger_id
190806 , p_target_ledger_id => p_target_ledger_id
190807 , p_language => l_language
190808 , p_currency_code => l_currency_code
190809 , p_sla_ledger_id => l_sla_ledger_id
190810 , p_pad_start_date => p_pad_start_date
190811 , p_pad_end_date => p_pad_end_date
190812 , p_primary_ledger_id => p_primary_ledger_id
190813 );
190814
190815
190816
190817 IF ( g_diagnostics_mode ='Y' ) THEN
190818
190819 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190820 trace
190821 (p_msg => 'CALL Transaction Objects Diagnostics'
190822 ,p_level => C_LEVEL_STATEMENT
190823 ,p_module => l_log_module);
190824
190825 END IF;
190826
190827 insert_sources_261(
190828 p_target_ledger_id => p_target_ledger_id
190829 , p_language => l_language
190830 , p_sla_ledger_id => l_sla_ledger_id
190831 , p_pad_start_date => p_pad_start_date
190832 , p_pad_end_date => p_pad_end_date
190833 );
190834
190835 END IF;
190836
190837 l_created := EventType_262(
190838 p_application_id => p_application_id
190839 , p_base_ledger_id => p_base_ledger_id
190840 , p_target_ledger_id => p_target_ledger_id
190841 , p_language => l_language
190842 , p_currency_code => l_currency_code
190843 , p_sla_ledger_id => l_sla_ledger_id
190844 , p_pad_start_date => p_pad_start_date
190845 , p_pad_end_date => p_pad_end_date
190846 , p_primary_ledger_id => p_primary_ledger_id
190847 );
190848
190849
190850
190851 IF ( g_diagnostics_mode ='Y' ) THEN
190852
190853 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190854 trace
190855 (p_msg => 'CALL Transaction Objects Diagnostics'
190856 ,p_level => C_LEVEL_STATEMENT
190857 ,p_module => l_log_module);
190858
190862 p_target_ledger_id => p_target_ledger_id
190859 END IF;
190860
190861 insert_sources_262(
190863 , p_language => l_language
190864 , p_sla_ledger_id => l_sla_ledger_id
190865 , p_pad_start_date => p_pad_start_date
190866 , p_pad_end_date => p_pad_end_date
190867 );
190868
190869 END IF;
190870
190871 l_created := EventType_263(
190872 p_application_id => p_application_id
190873 , p_base_ledger_id => p_base_ledger_id
190874 , p_target_ledger_id => p_target_ledger_id
190875 , p_language => l_language
190876 , p_currency_code => l_currency_code
190877 , p_sla_ledger_id => l_sla_ledger_id
190878 , p_pad_start_date => p_pad_start_date
190879 , p_pad_end_date => p_pad_end_date
190880 , p_primary_ledger_id => p_primary_ledger_id
190881 );
190882
190883
190884
190885 IF ( g_diagnostics_mode ='Y' ) THEN
190886
190887 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190888 trace
190889 (p_msg => 'CALL Transaction Objects Diagnostics'
190890 ,p_level => C_LEVEL_STATEMENT
190891 ,p_module => l_log_module);
190892
190893 END IF;
190894
190895 insert_sources_263(
190896 p_target_ledger_id => p_target_ledger_id
190897 , p_language => l_language
190898 , p_sla_ledger_id => l_sla_ledger_id
190899 , p_pad_start_date => p_pad_start_date
190900 , p_pad_end_date => p_pad_end_date
190901 );
190902
190903 END IF;
190904
190905 l_created := EventType_264(
190906 p_application_id => p_application_id
190907 , p_base_ledger_id => p_base_ledger_id
190908 , p_target_ledger_id => p_target_ledger_id
190909 , p_language => l_language
190910 , p_currency_code => l_currency_code
190911 , p_sla_ledger_id => l_sla_ledger_id
190912 , p_pad_start_date => p_pad_start_date
190913 , p_pad_end_date => p_pad_end_date
190914 , p_primary_ledger_id => p_primary_ledger_id
190915 );
190916
190917
190918
190919 IF ( g_diagnostics_mode ='Y' ) THEN
190920
190921 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190922 trace
190923 (p_msg => 'CALL Transaction Objects Diagnostics'
190924 ,p_level => C_LEVEL_STATEMENT
190925 ,p_module => l_log_module);
190926
190927 END IF;
190928
190929 insert_sources_264(
190930 p_target_ledger_id => p_target_ledger_id
190931 , p_language => l_language
190932 , p_sla_ledger_id => l_sla_ledger_id
190933 , p_pad_start_date => p_pad_start_date
190934 , p_pad_end_date => p_pad_end_date
190935 );
190936
190937 END IF;
190938
190939 l_created := EventType_265(
190940 p_application_id => p_application_id
190941 , p_base_ledger_id => p_base_ledger_id
190942 , p_target_ledger_id => p_target_ledger_id
190943 , p_language => l_language
190944 , p_currency_code => l_currency_code
190945 , p_sla_ledger_id => l_sla_ledger_id
190946 , p_pad_start_date => p_pad_start_date
190947 , p_pad_end_date => p_pad_end_date
190948 , p_primary_ledger_id => p_primary_ledger_id
190949 );
190950
190951
190952
190953 IF ( g_diagnostics_mode ='Y' ) THEN
190954
190955 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190956 trace
190957 (p_msg => 'CALL Transaction Objects Diagnostics'
190958 ,p_level => C_LEVEL_STATEMENT
190959 ,p_module => l_log_module);
190960
190961 END IF;
190962
190963 insert_sources_265(
190964 p_target_ledger_id => p_target_ledger_id
190965 , p_language => l_language
190966 , p_sla_ledger_id => l_sla_ledger_id
190967 , p_pad_start_date => p_pad_start_date
190968 , p_pad_end_date => p_pad_end_date
190969 );
190970
190971 END IF;
190972
190973 l_created := EventType_266(
190974 p_application_id => p_application_id
190975 , p_base_ledger_id => p_base_ledger_id
190976 , p_target_ledger_id => p_target_ledger_id
190977 , p_language => l_language
190978 , p_currency_code => l_currency_code
190979 , p_sla_ledger_id => l_sla_ledger_id
190980 , p_pad_start_date => p_pad_start_date
190981 , p_pad_end_date => p_pad_end_date
190982 , p_primary_ledger_id => p_primary_ledger_id
190983 );
190984
190985
190986
190987 IF ( g_diagnostics_mode ='Y' ) THEN
190988
190989 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190990 trace
190991 (p_msg => 'CALL Transaction Objects Diagnostics'
190992 ,p_level => C_LEVEL_STATEMENT
190993 ,p_module => l_log_module);
190994
190995 END IF;
190996
190997 insert_sources_266(
190998 p_target_ledger_id => p_target_ledger_id
190999 , p_language => l_language
191000 , p_sla_ledger_id => l_sla_ledger_id
191001 , p_pad_start_date => p_pad_start_date
191002 , p_pad_end_date => p_pad_end_date
191003 );
191007 l_created := EventType_267(
191004
191005 END IF;
191006
191008 p_application_id => p_application_id
191009 , p_base_ledger_id => p_base_ledger_id
191010 , p_target_ledger_id => p_target_ledger_id
191011 , p_language => l_language
191012 , p_currency_code => l_currency_code
191013 , p_sla_ledger_id => l_sla_ledger_id
191014 , p_pad_start_date => p_pad_start_date
191015 , p_pad_end_date => p_pad_end_date
191016 , p_primary_ledger_id => p_primary_ledger_id
191017 );
191018
191019
191020
191021 IF ( g_diagnostics_mode ='Y' ) THEN
191022
191023 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191024 trace
191025 (p_msg => 'CALL Transaction Objects Diagnostics'
191026 ,p_level => C_LEVEL_STATEMENT
191027 ,p_module => l_log_module);
191028
191029 END IF;
191030
191031 insert_sources_267(
191032 p_target_ledger_id => p_target_ledger_id
191033 , p_language => l_language
191034 , p_sla_ledger_id => l_sla_ledger_id
191035 , p_pad_start_date => p_pad_start_date
191036 , p_pad_end_date => p_pad_end_date
191037 );
191038
191039 END IF;
191040
191041 l_created := EventType_268(
191042 p_application_id => p_application_id
191043 , p_base_ledger_id => p_base_ledger_id
191044 , p_target_ledger_id => p_target_ledger_id
191045 , p_language => l_language
191046 , p_currency_code => l_currency_code
191047 , p_sla_ledger_id => l_sla_ledger_id
191048 , p_pad_start_date => p_pad_start_date
191049 , p_pad_end_date => p_pad_end_date
191050 , p_primary_ledger_id => p_primary_ledger_id
191051 );
191052
191053
191054
191055 IF ( g_diagnostics_mode ='Y' ) THEN
191056
191057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191058 trace
191059 (p_msg => 'CALL Transaction Objects Diagnostics'
191060 ,p_level => C_LEVEL_STATEMENT
191061 ,p_module => l_log_module);
191062
191063 END IF;
191064
191065 insert_sources_268(
191066 p_target_ledger_id => p_target_ledger_id
191067 , p_language => l_language
191068 , p_sla_ledger_id => l_sla_ledger_id
191069 , p_pad_start_date => p_pad_start_date
191070 , p_pad_end_date => p_pad_end_date
191071 );
191072
191073 END IF;
191074
191075 l_created := EventType_269(
191076 p_application_id => p_application_id
191077 , p_base_ledger_id => p_base_ledger_id
191078 , p_target_ledger_id => p_target_ledger_id
191079 , p_language => l_language
191080 , p_currency_code => l_currency_code
191081 , p_sla_ledger_id => l_sla_ledger_id
191082 , p_pad_start_date => p_pad_start_date
191083 , p_pad_end_date => p_pad_end_date
191084 , p_primary_ledger_id => p_primary_ledger_id
191085 );
191086
191087
191088
191089 IF ( g_diagnostics_mode ='Y' ) THEN
191090
191091 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191092 trace
191093 (p_msg => 'CALL Transaction Objects Diagnostics'
191094 ,p_level => C_LEVEL_STATEMENT
191095 ,p_module => l_log_module);
191096
191097 END IF;
191098
191099 insert_sources_269(
191100 p_target_ledger_id => p_target_ledger_id
191101 , p_language => l_language
191102 , p_sla_ledger_id => l_sla_ledger_id
191103 , p_pad_start_date => p_pad_start_date
191104 , p_pad_end_date => p_pad_end_date
191105 );
191106
191107 END IF;
191108
191109 l_created := EventType_270(
191110 p_application_id => p_application_id
191111 , p_base_ledger_id => p_base_ledger_id
191112 , p_target_ledger_id => p_target_ledger_id
191113 , p_language => l_language
191114 , p_currency_code => l_currency_code
191115 , p_sla_ledger_id => l_sla_ledger_id
191116 , p_pad_start_date => p_pad_start_date
191117 , p_pad_end_date => p_pad_end_date
191118 , p_primary_ledger_id => p_primary_ledger_id
191119 );
191120
191121
191122
191123 IF ( g_diagnostics_mode ='Y' ) THEN
191124
191125 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191126 trace
191127 (p_msg => 'CALL Transaction Objects Diagnostics'
191128 ,p_level => C_LEVEL_STATEMENT
191129 ,p_module => l_log_module);
191130
191131 END IF;
191132
191133 insert_sources_270(
191134 p_target_ledger_id => p_target_ledger_id
191135 , p_language => l_language
191136 , p_sla_ledger_id => l_sla_ledger_id
191137 , p_pad_start_date => p_pad_start_date
191138 , p_pad_end_date => p_pad_end_date
191139 );
191140
191141 END IF;
191142
191143 l_created := EventType_271(
191144 p_application_id => p_application_id
191145 , p_base_ledger_id => p_base_ledger_id
191146 , p_target_ledger_id => p_target_ledger_id
191147 , p_language => l_language
191148 , p_currency_code => l_currency_code
191149 , p_sla_ledger_id => l_sla_ledger_id
191153 );
191150 , p_pad_start_date => p_pad_start_date
191151 , p_pad_end_date => p_pad_end_date
191152 , p_primary_ledger_id => p_primary_ledger_id
191154
191155
191156
191157 IF ( g_diagnostics_mode ='Y' ) THEN
191158
191159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191160 trace
191161 (p_msg => 'CALL Transaction Objects Diagnostics'
191162 ,p_level => C_LEVEL_STATEMENT
191163 ,p_module => l_log_module);
191164
191165 END IF;
191166
191167 insert_sources_271(
191168 p_target_ledger_id => p_target_ledger_id
191169 , p_language => l_language
191170 , p_sla_ledger_id => l_sla_ledger_id
191171 , p_pad_start_date => p_pad_start_date
191172 , p_pad_end_date => p_pad_end_date
191173 );
191174
191175 END IF;
191176
191177 l_created := EventType_272(
191178 p_application_id => p_application_id
191179 , p_base_ledger_id => p_base_ledger_id
191180 , p_target_ledger_id => p_target_ledger_id
191181 , p_language => l_language
191182 , p_currency_code => l_currency_code
191183 , p_sla_ledger_id => l_sla_ledger_id
191184 , p_pad_start_date => p_pad_start_date
191185 , p_pad_end_date => p_pad_end_date
191186 , p_primary_ledger_id => p_primary_ledger_id
191187 );
191188
191189
191190
191191 IF ( g_diagnostics_mode ='Y' ) THEN
191192
191193 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191194 trace
191195 (p_msg => 'CALL Transaction Objects Diagnostics'
191196 ,p_level => C_LEVEL_STATEMENT
191197 ,p_module => l_log_module);
191198
191199 END IF;
191200
191201 insert_sources_272(
191202 p_target_ledger_id => p_target_ledger_id
191203 , p_language => l_language
191204 , p_sla_ledger_id => l_sla_ledger_id
191205 , p_pad_start_date => p_pad_start_date
191206 , p_pad_end_date => p_pad_end_date
191207 );
191208
191209 END IF;
191210
191211 l_created := EventType_273(
191212 p_application_id => p_application_id
191213 , p_base_ledger_id => p_base_ledger_id
191214 , p_target_ledger_id => p_target_ledger_id
191215 , p_language => l_language
191216 , p_currency_code => l_currency_code
191217 , p_sla_ledger_id => l_sla_ledger_id
191218 , p_pad_start_date => p_pad_start_date
191219 , p_pad_end_date => p_pad_end_date
191220 , p_primary_ledger_id => p_primary_ledger_id
191221 );
191222
191223
191224
191225 IF ( g_diagnostics_mode ='Y' ) THEN
191226
191227 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191228 trace
191229 (p_msg => 'CALL Transaction Objects Diagnostics'
191230 ,p_level => C_LEVEL_STATEMENT
191231 ,p_module => l_log_module);
191232
191233 END IF;
191234
191235 insert_sources_273(
191236 p_target_ledger_id => p_target_ledger_id
191237 , p_language => l_language
191238 , p_sla_ledger_id => l_sla_ledger_id
191239 , p_pad_start_date => p_pad_start_date
191240 , p_pad_end_date => p_pad_end_date
191241 );
191242
191243 END IF;
191244
191245 l_created := EventType_274(
191246 p_application_id => p_application_id
191247 , p_base_ledger_id => p_base_ledger_id
191248 , p_target_ledger_id => p_target_ledger_id
191249 , p_language => l_language
191250 , p_currency_code => l_currency_code
191251 , p_sla_ledger_id => l_sla_ledger_id
191252 , p_pad_start_date => p_pad_start_date
191253 , p_pad_end_date => p_pad_end_date
191254 , p_primary_ledger_id => p_primary_ledger_id
191255 );
191256
191257
191258
191259 IF ( g_diagnostics_mode ='Y' ) THEN
191260
191261 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191262 trace
191263 (p_msg => 'CALL Transaction Objects Diagnostics'
191264 ,p_level => C_LEVEL_STATEMENT
191265 ,p_module => l_log_module);
191266
191267 END IF;
191268
191269 insert_sources_274(
191270 p_target_ledger_id => p_target_ledger_id
191271 , p_language => l_language
191272 , p_sla_ledger_id => l_sla_ledger_id
191273 , p_pad_start_date => p_pad_start_date
191274 , p_pad_end_date => p_pad_end_date
191275 );
191276
191277 END IF;
191278
191279 l_created := EventType_275(
191280 p_application_id => p_application_id
191281 , p_base_ledger_id => p_base_ledger_id
191282 , p_target_ledger_id => p_target_ledger_id
191283 , p_language => l_language
191284 , p_currency_code => l_currency_code
191285 , p_sla_ledger_id => l_sla_ledger_id
191286 , p_pad_start_date => p_pad_start_date
191287 , p_pad_end_date => p_pad_end_date
191288 , p_primary_ledger_id => p_primary_ledger_id
191289 );
191290
191291
191292
191293 IF ( g_diagnostics_mode ='Y' ) THEN
191294
191295 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191296 trace
191297 (p_msg => 'CALL Transaction Objects Diagnostics'
191301 END IF;
191298 ,p_level => C_LEVEL_STATEMENT
191299 ,p_module => l_log_module);
191300
191302
191303 insert_sources_275(
191304 p_target_ledger_id => p_target_ledger_id
191305 , p_language => l_language
191306 , p_sla_ledger_id => l_sla_ledger_id
191307 , p_pad_start_date => p_pad_start_date
191308 , p_pad_end_date => p_pad_end_date
191309 );
191310
191311 END IF;
191312
191313 l_created := EventType_276(
191314 p_application_id => p_application_id
191315 , p_base_ledger_id => p_base_ledger_id
191316 , p_target_ledger_id => p_target_ledger_id
191317 , p_language => l_language
191318 , p_currency_code => l_currency_code
191319 , p_sla_ledger_id => l_sla_ledger_id
191320 , p_pad_start_date => p_pad_start_date
191321 , p_pad_end_date => p_pad_end_date
191322 , p_primary_ledger_id => p_primary_ledger_id
191323 );
191324
191325
191326
191327 IF ( g_diagnostics_mode ='Y' ) THEN
191328
191329 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191330 trace
191331 (p_msg => 'CALL Transaction Objects Diagnostics'
191332 ,p_level => C_LEVEL_STATEMENT
191333 ,p_module => l_log_module);
191334
191335 END IF;
191336
191337 insert_sources_276(
191338 p_target_ledger_id => p_target_ledger_id
191339 , p_language => l_language
191340 , p_sla_ledger_id => l_sla_ledger_id
191341 , p_pad_start_date => p_pad_start_date
191342 , p_pad_end_date => p_pad_end_date
191343 );
191344
191345 END IF;
191346
191347 l_created := EventType_277(
191348 p_application_id => p_application_id
191349 , p_base_ledger_id => p_base_ledger_id
191350 , p_target_ledger_id => p_target_ledger_id
191351 , p_language => l_language
191352 , p_currency_code => l_currency_code
191353 , p_sla_ledger_id => l_sla_ledger_id
191354 , p_pad_start_date => p_pad_start_date
191355 , p_pad_end_date => p_pad_end_date
191356 , p_primary_ledger_id => p_primary_ledger_id
191357 );
191358
191359
191360
191361 IF ( g_diagnostics_mode ='Y' ) THEN
191362
191363 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191364 trace
191365 (p_msg => 'CALL Transaction Objects Diagnostics'
191366 ,p_level => C_LEVEL_STATEMENT
191367 ,p_module => l_log_module);
191368
191369 END IF;
191370
191371 insert_sources_277(
191372 p_target_ledger_id => p_target_ledger_id
191373 , p_language => l_language
191374 , p_sla_ledger_id => l_sla_ledger_id
191375 , p_pad_start_date => p_pad_start_date
191376 , p_pad_end_date => p_pad_end_date
191377 );
191378
191379 END IF;
191380
191381 l_created := EventType_278(
191382 p_application_id => p_application_id
191383 , p_base_ledger_id => p_base_ledger_id
191384 , p_target_ledger_id => p_target_ledger_id
191385 , p_language => l_language
191386 , p_currency_code => l_currency_code
191387 , p_sla_ledger_id => l_sla_ledger_id
191388 , p_pad_start_date => p_pad_start_date
191389 , p_pad_end_date => p_pad_end_date
191390 , p_primary_ledger_id => p_primary_ledger_id
191391 );
191392
191393
191394
191395 IF ( g_diagnostics_mode ='Y' ) THEN
191396
191397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191398 trace
191399 (p_msg => 'CALL Transaction Objects Diagnostics'
191400 ,p_level => C_LEVEL_STATEMENT
191401 ,p_module => l_log_module);
191402
191403 END IF;
191404
191405 insert_sources_278(
191406 p_target_ledger_id => p_target_ledger_id
191407 , p_language => l_language
191408 , p_sla_ledger_id => l_sla_ledger_id
191409 , p_pad_start_date => p_pad_start_date
191410 , p_pad_end_date => p_pad_end_date
191411 );
191412
191413 END IF;
191414
191415 l_created := EventType_279(
191416 p_application_id => p_application_id
191417 , p_base_ledger_id => p_base_ledger_id
191418 , p_target_ledger_id => p_target_ledger_id
191419 , p_language => l_language
191420 , p_currency_code => l_currency_code
191421 , p_sla_ledger_id => l_sla_ledger_id
191422 , p_pad_start_date => p_pad_start_date
191423 , p_pad_end_date => p_pad_end_date
191424 , p_primary_ledger_id => p_primary_ledger_id
191425 );
191426
191427
191428
191429 IF ( g_diagnostics_mode ='Y' ) THEN
191430
191431 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191432 trace
191433 (p_msg => 'CALL Transaction Objects Diagnostics'
191434 ,p_level => C_LEVEL_STATEMENT
191435 ,p_module => l_log_module);
191436
191437 END IF;
191438
191439 insert_sources_279(
191440 p_target_ledger_id => p_target_ledger_id
191441 , p_language => l_language
191442 , p_sla_ledger_id => l_sla_ledger_id
191446
191443 , p_pad_start_date => p_pad_start_date
191444 , p_pad_end_date => p_pad_end_date
191445 );
191447 END IF;
191448
191449 l_created := EventType_280(
191450 p_application_id => p_application_id
191451 , p_base_ledger_id => p_base_ledger_id
191452 , p_target_ledger_id => p_target_ledger_id
191453 , p_language => l_language
191454 , p_currency_code => l_currency_code
191455 , p_sla_ledger_id => l_sla_ledger_id
191456 , p_pad_start_date => p_pad_start_date
191457 , p_pad_end_date => p_pad_end_date
191458 , p_primary_ledger_id => p_primary_ledger_id
191459 );
191460
191461
191462
191463 IF ( g_diagnostics_mode ='Y' ) THEN
191464
191465 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191466 trace
191467 (p_msg => 'CALL Transaction Objects Diagnostics'
191468 ,p_level => C_LEVEL_STATEMENT
191469 ,p_module => l_log_module);
191470
191471 END IF;
191472
191473 insert_sources_280(
191474 p_target_ledger_id => p_target_ledger_id
191475 , p_language => l_language
191476 , p_sla_ledger_id => l_sla_ledger_id
191477 , p_pad_start_date => p_pad_start_date
191478 , p_pad_end_date => p_pad_end_date
191479 );
191480
191481 END IF;
191482
191483 l_created := EventType_281(
191484 p_application_id => p_application_id
191485 , p_base_ledger_id => p_base_ledger_id
191486 , p_target_ledger_id => p_target_ledger_id
191487 , p_language => l_language
191488 , p_currency_code => l_currency_code
191489 , p_sla_ledger_id => l_sla_ledger_id
191490 , p_pad_start_date => p_pad_start_date
191491 , p_pad_end_date => p_pad_end_date
191492 , p_primary_ledger_id => p_primary_ledger_id
191493 );
191494
191495
191496
191497 IF ( g_diagnostics_mode ='Y' ) THEN
191498
191499 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191500 trace
191501 (p_msg => 'CALL Transaction Objects Diagnostics'
191502 ,p_level => C_LEVEL_STATEMENT
191503 ,p_module => l_log_module);
191504
191505 END IF;
191506
191507 insert_sources_281(
191508 p_target_ledger_id => p_target_ledger_id
191509 , p_language => l_language
191510 , p_sla_ledger_id => l_sla_ledger_id
191511 , p_pad_start_date => p_pad_start_date
191512 , p_pad_end_date => p_pad_end_date
191513 );
191514
191515 END IF;
191516
191517 l_created := EventType_282(
191518 p_application_id => p_application_id
191519 , p_base_ledger_id => p_base_ledger_id
191520 , p_target_ledger_id => p_target_ledger_id
191521 , p_language => l_language
191522 , p_currency_code => l_currency_code
191523 , p_sla_ledger_id => l_sla_ledger_id
191524 , p_pad_start_date => p_pad_start_date
191525 , p_pad_end_date => p_pad_end_date
191526 , p_primary_ledger_id => p_primary_ledger_id
191527 );
191528
191529
191530
191531 IF ( g_diagnostics_mode ='Y' ) THEN
191532
191533 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191534 trace
191535 (p_msg => 'CALL Transaction Objects Diagnostics'
191536 ,p_level => C_LEVEL_STATEMENT
191537 ,p_module => l_log_module);
191538
191539 END IF;
191540
191541 insert_sources_282(
191542 p_target_ledger_id => p_target_ledger_id
191543 , p_language => l_language
191544 , p_sla_ledger_id => l_sla_ledger_id
191545 , p_pad_start_date => p_pad_start_date
191546 , p_pad_end_date => p_pad_end_date
191547 );
191548
191549 END IF;
191550
191551 l_created := EventType_283(
191552 p_application_id => p_application_id
191553 , p_base_ledger_id => p_base_ledger_id
191554 , p_target_ledger_id => p_target_ledger_id
191555 , p_language => l_language
191556 , p_currency_code => l_currency_code
191557 , p_sla_ledger_id => l_sla_ledger_id
191558 , p_pad_start_date => p_pad_start_date
191559 , p_pad_end_date => p_pad_end_date
191560 , p_primary_ledger_id => p_primary_ledger_id
191561 );
191562
191563
191564
191565 IF ( g_diagnostics_mode ='Y' ) THEN
191566
191567 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191568 trace
191569 (p_msg => 'CALL Transaction Objects Diagnostics'
191570 ,p_level => C_LEVEL_STATEMENT
191571 ,p_module => l_log_module);
191572
191573 END IF;
191574
191575 insert_sources_283(
191576 p_target_ledger_id => p_target_ledger_id
191577 , p_language => l_language
191578 , p_sla_ledger_id => l_sla_ledger_id
191579 , p_pad_start_date => p_pad_start_date
191580 , p_pad_end_date => p_pad_end_date
191581 );
191582
191583 END IF;
191584
191585 l_created := EventType_284(
191586 p_application_id => p_application_id
191587 , p_base_ledger_id => p_base_ledger_id
191588 , p_target_ledger_id => p_target_ledger_id
191592 , p_pad_start_date => p_pad_start_date
191589 , p_language => l_language
191590 , p_currency_code => l_currency_code
191591 , p_sla_ledger_id => l_sla_ledger_id
191593 , p_pad_end_date => p_pad_end_date
191594 , p_primary_ledger_id => p_primary_ledger_id
191595 );
191596
191597
191598
191599 IF ( g_diagnostics_mode ='Y' ) THEN
191600
191601 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191602 trace
191603 (p_msg => 'CALL Transaction Objects Diagnostics'
191604 ,p_level => C_LEVEL_STATEMENT
191605 ,p_module => l_log_module);
191606
191607 END IF;
191608
191609 insert_sources_284(
191610 p_target_ledger_id => p_target_ledger_id
191611 , p_language => l_language
191612 , p_sla_ledger_id => l_sla_ledger_id
191613 , p_pad_start_date => p_pad_start_date
191614 , p_pad_end_date => p_pad_end_date
191615 );
191616
191617 END IF;
191618
191619 l_created := EventType_285(
191620 p_application_id => p_application_id
191621 , p_base_ledger_id => p_base_ledger_id
191622 , p_target_ledger_id => p_target_ledger_id
191623 , p_language => l_language
191624 , p_currency_code => l_currency_code
191625 , p_sla_ledger_id => l_sla_ledger_id
191626 , p_pad_start_date => p_pad_start_date
191627 , p_pad_end_date => p_pad_end_date
191628 , p_primary_ledger_id => p_primary_ledger_id
191629 );
191630
191631
191632
191633 IF ( g_diagnostics_mode ='Y' ) THEN
191634
191635 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191636 trace
191637 (p_msg => 'CALL Transaction Objects Diagnostics'
191638 ,p_level => C_LEVEL_STATEMENT
191639 ,p_module => l_log_module);
191640
191641 END IF;
191642
191643 insert_sources_285(
191644 p_target_ledger_id => p_target_ledger_id
191645 , p_language => l_language
191646 , p_sla_ledger_id => l_sla_ledger_id
191647 , p_pad_start_date => p_pad_start_date
191648 , p_pad_end_date => p_pad_end_date
191649 );
191650
191651 END IF;
191652
191653 l_created := EventType_286(
191654 p_application_id => p_application_id
191655 , p_base_ledger_id => p_base_ledger_id
191656 , p_target_ledger_id => p_target_ledger_id
191657 , p_language => l_language
191658 , p_currency_code => l_currency_code
191659 , p_sla_ledger_id => l_sla_ledger_id
191660 , p_pad_start_date => p_pad_start_date
191661 , p_pad_end_date => p_pad_end_date
191662 , p_primary_ledger_id => p_primary_ledger_id
191663 );
191664
191665
191666
191667 IF ( g_diagnostics_mode ='Y' ) THEN
191668
191669 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191670 trace
191671 (p_msg => 'CALL Transaction Objects Diagnostics'
191672 ,p_level => C_LEVEL_STATEMENT
191673 ,p_module => l_log_module);
191674
191675 END IF;
191676
191677 insert_sources_286(
191678 p_target_ledger_id => p_target_ledger_id
191679 , p_language => l_language
191680 , p_sla_ledger_id => l_sla_ledger_id
191681 , p_pad_start_date => p_pad_start_date
191682 , p_pad_end_date => p_pad_end_date
191683 );
191684
191685 END IF;
191686
191687 l_created := EventType_287(
191688 p_application_id => p_application_id
191689 , p_base_ledger_id => p_base_ledger_id
191690 , p_target_ledger_id => p_target_ledger_id
191691 , p_language => l_language
191692 , p_currency_code => l_currency_code
191693 , p_sla_ledger_id => l_sla_ledger_id
191694 , p_pad_start_date => p_pad_start_date
191695 , p_pad_end_date => p_pad_end_date
191696 , p_primary_ledger_id => p_primary_ledger_id
191697 );
191698
191699
191700
191701 IF ( g_diagnostics_mode ='Y' ) THEN
191702
191703 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191704 trace
191705 (p_msg => 'CALL Transaction Objects Diagnostics'
191706 ,p_level => C_LEVEL_STATEMENT
191707 ,p_module => l_log_module);
191708
191709 END IF;
191710
191711 insert_sources_287(
191712 p_target_ledger_id => p_target_ledger_id
191713 , p_language => l_language
191714 , p_sla_ledger_id => l_sla_ledger_id
191715 , p_pad_start_date => p_pad_start_date
191716 , p_pad_end_date => p_pad_end_date
191717 );
191718
191719 END IF;
191720
191721 l_created := EventType_288(
191722 p_application_id => p_application_id
191723 , p_base_ledger_id => p_base_ledger_id
191724 , p_target_ledger_id => p_target_ledger_id
191725 , p_language => l_language
191726 , p_currency_code => l_currency_code
191727 , p_sla_ledger_id => l_sla_ledger_id
191728 , p_pad_start_date => p_pad_start_date
191729 , p_pad_end_date => p_pad_end_date
191730 , p_primary_ledger_id => p_primary_ledger_id
191731 );
191732
191733
191734
191735 IF ( g_diagnostics_mode ='Y' ) THEN
191736
191740 ,p_level => C_LEVEL_STATEMENT
191737 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191738 trace
191739 (p_msg => 'CALL Transaction Objects Diagnostics'
191741 ,p_module => l_log_module);
191742
191743 END IF;
191744
191745 insert_sources_288(
191746 p_target_ledger_id => p_target_ledger_id
191747 , p_language => l_language
191748 , p_sla_ledger_id => l_sla_ledger_id
191749 , p_pad_start_date => p_pad_start_date
191750 , p_pad_end_date => p_pad_end_date
191751 );
191752
191753 END IF;
191754
191755 l_created := EventType_289(
191756 p_application_id => p_application_id
191757 , p_base_ledger_id => p_base_ledger_id
191758 , p_target_ledger_id => p_target_ledger_id
191759 , p_language => l_language
191760 , p_currency_code => l_currency_code
191761 , p_sla_ledger_id => l_sla_ledger_id
191762 , p_pad_start_date => p_pad_start_date
191763 , p_pad_end_date => p_pad_end_date
191764 , p_primary_ledger_id => p_primary_ledger_id
191765 );
191766
191767
191768
191769 IF ( g_diagnostics_mode ='Y' ) THEN
191770
191771 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191772 trace
191773 (p_msg => 'CALL Transaction Objects Diagnostics'
191774 ,p_level => C_LEVEL_STATEMENT
191775 ,p_module => l_log_module);
191776
191777 END IF;
191778
191779 insert_sources_289(
191780 p_target_ledger_id => p_target_ledger_id
191781 , p_language => l_language
191782 , p_sla_ledger_id => l_sla_ledger_id
191783 , p_pad_start_date => p_pad_start_date
191784 , p_pad_end_date => p_pad_end_date
191785 );
191786
191787 END IF;
191788
191789 l_created := EventType_290(
191790 p_application_id => p_application_id
191791 , p_base_ledger_id => p_base_ledger_id
191792 , p_target_ledger_id => p_target_ledger_id
191793 , p_language => l_language
191794 , p_currency_code => l_currency_code
191795 , p_sla_ledger_id => l_sla_ledger_id
191796 , p_pad_start_date => p_pad_start_date
191797 , p_pad_end_date => p_pad_end_date
191798 , p_primary_ledger_id => p_primary_ledger_id
191799 );
191800
191801
191802
191803 IF ( g_diagnostics_mode ='Y' ) THEN
191804
191805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191806 trace
191807 (p_msg => 'CALL Transaction Objects Diagnostics'
191808 ,p_level => C_LEVEL_STATEMENT
191809 ,p_module => l_log_module);
191810
191811 END IF;
191812
191813 insert_sources_290(
191814 p_target_ledger_id => p_target_ledger_id
191815 , p_language => l_language
191816 , p_sla_ledger_id => l_sla_ledger_id
191817 , p_pad_start_date => p_pad_start_date
191818 , p_pad_end_date => p_pad_end_date
191819 );
191820
191821 END IF;
191822
191823 l_created := EventType_291(
191824 p_application_id => p_application_id
191825 , p_base_ledger_id => p_base_ledger_id
191826 , p_target_ledger_id => p_target_ledger_id
191827 , p_language => l_language
191828 , p_currency_code => l_currency_code
191829 , p_sla_ledger_id => l_sla_ledger_id
191830 , p_pad_start_date => p_pad_start_date
191831 , p_pad_end_date => p_pad_end_date
191832 , p_primary_ledger_id => p_primary_ledger_id
191833 );
191834
191835
191836
191837 IF ( g_diagnostics_mode ='Y' ) THEN
191838
191839 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191840 trace
191841 (p_msg => 'CALL Transaction Objects Diagnostics'
191842 ,p_level => C_LEVEL_STATEMENT
191843 ,p_module => l_log_module);
191844
191845 END IF;
191846
191847 insert_sources_291(
191848 p_target_ledger_id => p_target_ledger_id
191849 , p_language => l_language
191850 , p_sla_ledger_id => l_sla_ledger_id
191851 , p_pad_start_date => p_pad_start_date
191852 , p_pad_end_date => p_pad_end_date
191853 );
191854
191855 END IF;
191856
191857 l_created := EventClass_292(
191858 p_application_id => p_application_id
191859 , p_base_ledger_id => p_base_ledger_id
191860 , p_target_ledger_id => p_target_ledger_id
191861 , p_language => l_language
191862 , p_currency_code => l_currency_code
191863 , p_sla_ledger_id => l_sla_ledger_id
191864 , p_pad_start_date => p_pad_start_date
191865 , p_pad_end_date => p_pad_end_date
191866 , p_primary_ledger_id => p_primary_ledger_id
191867 );
191868
191869
191870
191871 IF ( g_diagnostics_mode ='Y' ) THEN
191872
191873 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191874 trace
191875 (p_msg => 'CALL Transaction Objects Diagnostics'
191876 ,p_level => C_LEVEL_STATEMENT
191877 ,p_module => l_log_module);
191878
191879 END IF;
191880
191881 insert_sources_292(
191882 p_target_ledger_id => p_target_ledger_id
191886 , p_pad_end_date => p_pad_end_date
191883 , p_language => l_language
191884 , p_sla_ledger_id => l_sla_ledger_id
191885 , p_pad_start_date => p_pad_start_date
191887 );
191888
191889 END IF;
191890
191891 l_created := EventType_293(
191892 p_application_id => p_application_id
191893 , p_base_ledger_id => p_base_ledger_id
191894 , p_target_ledger_id => p_target_ledger_id
191895 , p_language => l_language
191896 , p_currency_code => l_currency_code
191897 , p_sla_ledger_id => l_sla_ledger_id
191898 , p_pad_start_date => p_pad_start_date
191899 , p_pad_end_date => p_pad_end_date
191900 , p_primary_ledger_id => p_primary_ledger_id
191901 );
191902
191903
191904
191905 IF ( g_diagnostics_mode ='Y' ) THEN
191906
191907 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191908 trace
191909 (p_msg => 'CALL Transaction Objects Diagnostics'
191910 ,p_level => C_LEVEL_STATEMENT
191911 ,p_module => l_log_module);
191912
191913 END IF;
191914
191915 insert_sources_293(
191916 p_target_ledger_id => p_target_ledger_id
191917 , p_language => l_language
191918 , p_sla_ledger_id => l_sla_ledger_id
191919 , p_pad_start_date => p_pad_start_date
191920 , p_pad_end_date => p_pad_end_date
191921 );
191922
191923 END IF;
191924
191925 l_created := EventType_294(
191926 p_application_id => p_application_id
191927 , p_base_ledger_id => p_base_ledger_id
191928 , p_target_ledger_id => p_target_ledger_id
191929 , p_language => l_language
191930 , p_currency_code => l_currency_code
191931 , p_sla_ledger_id => l_sla_ledger_id
191932 , p_pad_start_date => p_pad_start_date
191933 , p_pad_end_date => p_pad_end_date
191934 , p_primary_ledger_id => p_primary_ledger_id
191935 );
191936
191937
191938
191939 IF ( g_diagnostics_mode ='Y' ) THEN
191940
191941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191942 trace
191943 (p_msg => 'CALL Transaction Objects Diagnostics'
191944 ,p_level => C_LEVEL_STATEMENT
191945 ,p_module => l_log_module);
191946
191947 END IF;
191948
191949 insert_sources_294(
191950 p_target_ledger_id => p_target_ledger_id
191951 , p_language => l_language
191952 , p_sla_ledger_id => l_sla_ledger_id
191953 , p_pad_start_date => p_pad_start_date
191954 , p_pad_end_date => p_pad_end_date
191955 );
191956
191957 END IF;
191958
191959 l_created := EventType_295(
191960 p_application_id => p_application_id
191961 , p_base_ledger_id => p_base_ledger_id
191962 , p_target_ledger_id => p_target_ledger_id
191963 , p_language => l_language
191964 , p_currency_code => l_currency_code
191965 , p_sla_ledger_id => l_sla_ledger_id
191966 , p_pad_start_date => p_pad_start_date
191967 , p_pad_end_date => p_pad_end_date
191968 , p_primary_ledger_id => p_primary_ledger_id
191969 );
191970
191971
191972
191973 IF ( g_diagnostics_mode ='Y' ) THEN
191974
191975 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191976 trace
191977 (p_msg => 'CALL Transaction Objects Diagnostics'
191978 ,p_level => C_LEVEL_STATEMENT
191979 ,p_module => l_log_module);
191980
191981 END IF;
191982
191983 insert_sources_295(
191984 p_target_ledger_id => p_target_ledger_id
191985 , p_language => l_language
191986 , p_sla_ledger_id => l_sla_ledger_id
191987 , p_pad_start_date => p_pad_start_date
191988 , p_pad_end_date => p_pad_end_date
191989 );
191990
191991 END IF;
191992
191993 l_created := EventType_296(
191994 p_application_id => p_application_id
191995 , p_base_ledger_id => p_base_ledger_id
191996 , p_target_ledger_id => p_target_ledger_id
191997 , p_language => l_language
191998 , p_currency_code => l_currency_code
191999 , p_sla_ledger_id => l_sla_ledger_id
192000 , p_pad_start_date => p_pad_start_date
192001 , p_pad_end_date => p_pad_end_date
192002 , p_primary_ledger_id => p_primary_ledger_id
192003 );
192004
192005
192006
192007 IF ( g_diagnostics_mode ='Y' ) THEN
192008
192009 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192010 trace
192011 (p_msg => 'CALL Transaction Objects Diagnostics'
192012 ,p_level => C_LEVEL_STATEMENT
192013 ,p_module => l_log_module);
192014
192015 END IF;
192016
192017 insert_sources_296(
192018 p_target_ledger_id => p_target_ledger_id
192019 , p_language => l_language
192020 , p_sla_ledger_id => l_sla_ledger_id
192021 , p_pad_start_date => p_pad_start_date
192022 , p_pad_end_date => p_pad_end_date
192023 );
192024
192025 END IF;
192026
192027 l_created := EventType_297(
192028 p_application_id => p_application_id
192032 , p_currency_code => l_currency_code
192029 , p_base_ledger_id => p_base_ledger_id
192030 , p_target_ledger_id => p_target_ledger_id
192031 , p_language => l_language
192033 , p_sla_ledger_id => l_sla_ledger_id
192034 , p_pad_start_date => p_pad_start_date
192035 , p_pad_end_date => p_pad_end_date
192036 , p_primary_ledger_id => p_primary_ledger_id
192037 );
192038
192039
192040
192041 IF ( g_diagnostics_mode ='Y' ) THEN
192042
192043 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192044 trace
192045 (p_msg => 'CALL Transaction Objects Diagnostics'
192046 ,p_level => C_LEVEL_STATEMENT
192047 ,p_module => l_log_module);
192048
192049 END IF;
192050
192051 insert_sources_297(
192052 p_target_ledger_id => p_target_ledger_id
192053 , p_language => l_language
192054 , p_sla_ledger_id => l_sla_ledger_id
192055 , p_pad_start_date => p_pad_start_date
192056 , p_pad_end_date => p_pad_end_date
192057 );
192058
192059 END IF;
192060
192061 l_created := EventType_298(
192062 p_application_id => p_application_id
192063 , p_base_ledger_id => p_base_ledger_id
192064 , p_target_ledger_id => p_target_ledger_id
192065 , p_language => l_language
192066 , p_currency_code => l_currency_code
192067 , p_sla_ledger_id => l_sla_ledger_id
192068 , p_pad_start_date => p_pad_start_date
192069 , p_pad_end_date => p_pad_end_date
192070 , p_primary_ledger_id => p_primary_ledger_id
192071 );
192072
192073
192074
192075 IF ( g_diagnostics_mode ='Y' ) THEN
192076
192077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192078 trace
192079 (p_msg => 'CALL Transaction Objects Diagnostics'
192080 ,p_level => C_LEVEL_STATEMENT
192081 ,p_module => l_log_module);
192082
192083 END IF;
192084
192085 insert_sources_298(
192086 p_target_ledger_id => p_target_ledger_id
192087 , p_language => l_language
192088 , p_sla_ledger_id => l_sla_ledger_id
192089 , p_pad_start_date => p_pad_start_date
192090 , p_pad_end_date => p_pad_end_date
192091 );
192092
192093 END IF;
192094
192095 l_created := EventType_299(
192096 p_application_id => p_application_id
192097 , p_base_ledger_id => p_base_ledger_id
192098 , p_target_ledger_id => p_target_ledger_id
192099 , p_language => l_language
192100 , p_currency_code => l_currency_code
192101 , p_sla_ledger_id => l_sla_ledger_id
192102 , p_pad_start_date => p_pad_start_date
192103 , p_pad_end_date => p_pad_end_date
192104 , p_primary_ledger_id => p_primary_ledger_id
192105 );
192106
192107
192108
192109 IF ( g_diagnostics_mode ='Y' ) THEN
192110
192111 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192112 trace
192113 (p_msg => 'CALL Transaction Objects Diagnostics'
192114 ,p_level => C_LEVEL_STATEMENT
192115 ,p_module => l_log_module);
192116
192117 END IF;
192118
192119 insert_sources_299(
192120 p_target_ledger_id => p_target_ledger_id
192121 , p_language => l_language
192122 , p_sla_ledger_id => l_sla_ledger_id
192123 , p_pad_start_date => p_pad_start_date
192124 , p_pad_end_date => p_pad_end_date
192125 );
192126
192127 END IF;
192128
192129 l_created := EventClass_300(
192130 p_application_id => p_application_id
192131 , p_base_ledger_id => p_base_ledger_id
192132 , p_target_ledger_id => p_target_ledger_id
192133 , p_language => l_language
192134 , p_currency_code => l_currency_code
192135 , p_sla_ledger_id => l_sla_ledger_id
192136 , p_pad_start_date => p_pad_start_date
192137 , p_pad_end_date => p_pad_end_date
192138 , p_primary_ledger_id => p_primary_ledger_id
192139 );
192140
192141
192142
192143 IF ( g_diagnostics_mode ='Y' ) THEN
192144
192145 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192146 trace
192147 (p_msg => 'CALL Transaction Objects Diagnostics'
192148 ,p_level => C_LEVEL_STATEMENT
192149 ,p_module => l_log_module);
192150
192151 END IF;
192152
192153 insert_sources_300(
192154 p_target_ledger_id => p_target_ledger_id
192155 , p_language => l_language
192156 , p_sla_ledger_id => l_sla_ledger_id
192157 , p_pad_start_date => p_pad_start_date
192158 , p_pad_end_date => p_pad_end_date
192159 );
192160
192161 END IF;
192162
192163 l_created := EventType_301(
192164 p_application_id => p_application_id
192165 , p_base_ledger_id => p_base_ledger_id
192166 , p_target_ledger_id => p_target_ledger_id
192167 , p_language => l_language
192168 , p_currency_code => l_currency_code
192169 , p_sla_ledger_id => l_sla_ledger_id
192170 , p_pad_start_date => p_pad_start_date
192171 , p_pad_end_date => p_pad_end_date
192172 , p_primary_ledger_id => p_primary_ledger_id
192173 );
192174
192178
192175
192176
192177 IF ( g_diagnostics_mode ='Y' ) THEN
192179 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192180 trace
192181 (p_msg => 'CALL Transaction Objects Diagnostics'
192182 ,p_level => C_LEVEL_STATEMENT
192183 ,p_module => l_log_module);
192184
192185 END IF;
192186
192187 insert_sources_301(
192188 p_target_ledger_id => p_target_ledger_id
192189 , p_language => l_language
192190 , p_sla_ledger_id => l_sla_ledger_id
192191 , p_pad_start_date => p_pad_start_date
192192 , p_pad_end_date => p_pad_end_date
192193 );
192194
192195 END IF;
192196
192197 l_created := EventType_302(
192198 p_application_id => p_application_id
192199 , p_base_ledger_id => p_base_ledger_id
192200 , p_target_ledger_id => p_target_ledger_id
192201 , p_language => l_language
192202 , p_currency_code => l_currency_code
192203 , p_sla_ledger_id => l_sla_ledger_id
192204 , p_pad_start_date => p_pad_start_date
192205 , p_pad_end_date => p_pad_end_date
192206 , p_primary_ledger_id => p_primary_ledger_id
192207 );
192208
192209
192210
192211 IF ( g_diagnostics_mode ='Y' ) THEN
192212
192213 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192214 trace
192215 (p_msg => 'CALL Transaction Objects Diagnostics'
192216 ,p_level => C_LEVEL_STATEMENT
192217 ,p_module => l_log_module);
192218
192219 END IF;
192220
192221 insert_sources_302(
192222 p_target_ledger_id => p_target_ledger_id
192223 , p_language => l_language
192224 , p_sla_ledger_id => l_sla_ledger_id
192225 , p_pad_start_date => p_pad_start_date
192226 , p_pad_end_date => p_pad_end_date
192227 );
192228
192229 END IF;
192230
192231 l_created := EventClass_303(
192232 p_application_id => p_application_id
192233 , p_base_ledger_id => p_base_ledger_id
192234 , p_target_ledger_id => p_target_ledger_id
192235 , p_language => l_language
192236 , p_currency_code => l_currency_code
192237 , p_sla_ledger_id => l_sla_ledger_id
192238 , p_pad_start_date => p_pad_start_date
192239 , p_pad_end_date => p_pad_end_date
192240 , p_primary_ledger_id => p_primary_ledger_id
192241 );
192242
192243
192244
192245 IF ( g_diagnostics_mode ='Y' ) THEN
192246
192247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192248 trace
192249 (p_msg => 'CALL Transaction Objects Diagnostics'
192250 ,p_level => C_LEVEL_STATEMENT
192251 ,p_module => l_log_module);
192252
192253 END IF;
192254
192255 insert_sources_303(
192256 p_target_ledger_id => p_target_ledger_id
192257 , p_language => l_language
192258 , p_sla_ledger_id => l_sla_ledger_id
192259 , p_pad_start_date => p_pad_start_date
192260 , p_pad_end_date => p_pad_end_date
192261 );
192262
192263 END IF;
192264
192265 l_created := EventType_304(
192266 p_application_id => p_application_id
192267 , p_base_ledger_id => p_base_ledger_id
192268 , p_target_ledger_id => p_target_ledger_id
192269 , p_language => l_language
192270 , p_currency_code => l_currency_code
192271 , p_sla_ledger_id => l_sla_ledger_id
192272 , p_pad_start_date => p_pad_start_date
192273 , p_pad_end_date => p_pad_end_date
192274 , p_primary_ledger_id => p_primary_ledger_id
192275 );
192276
192277
192278
192279 IF ( g_diagnostics_mode ='Y' ) THEN
192280
192281 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192282 trace
192283 (p_msg => 'CALL Transaction Objects Diagnostics'
192284 ,p_level => C_LEVEL_STATEMENT
192285 ,p_module => l_log_module);
192286
192287 END IF;
192288
192289 insert_sources_304(
192290 p_target_ledger_id => p_target_ledger_id
192291 , p_language => l_language
192292 , p_sla_ledger_id => l_sla_ledger_id
192293 , p_pad_start_date => p_pad_start_date
192294 , p_pad_end_date => p_pad_end_date
192295 );
192296
192297 END IF;
192298
192299 l_created := EventType_305(
192300 p_application_id => p_application_id
192301 , p_base_ledger_id => p_base_ledger_id
192302 , p_target_ledger_id => p_target_ledger_id
192303 , p_language => l_language
192304 , p_currency_code => l_currency_code
192305 , p_sla_ledger_id => l_sla_ledger_id
192306 , p_pad_start_date => p_pad_start_date
192307 , p_pad_end_date => p_pad_end_date
192308 , p_primary_ledger_id => p_primary_ledger_id
192309 );
192310
192311
192312
192313 IF ( g_diagnostics_mode ='Y' ) THEN
192314
192315 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192316 trace
192317 (p_msg => 'CALL Transaction Objects Diagnostics'
192318 ,p_level => C_LEVEL_STATEMENT
192319 ,p_module => l_log_module);
192320
192321 END IF;
192322
192323 insert_sources_305(
192327 , p_pad_start_date => p_pad_start_date
192324 p_target_ledger_id => p_target_ledger_id
192325 , p_language => l_language
192326 , p_sla_ledger_id => l_sla_ledger_id
192328 , p_pad_end_date => p_pad_end_date
192329 );
192330
192331 END IF;
192332
192333
192334 --
192335 -- Bug 4865292
192336 -- When the number of events and that of header extract do not match,
192337 -- set the no header extract flag to indicate there are some issues
192338 -- in header extract.
192339 --
192340 -- Event count context is set in xla_accounting_pkg.unit_processor.
192341 -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
192342 -- to report it as a general error.
192343 --
192344 IF xla_context_pkg.get_event_count_context <> g_hdr_extract_count
192345 AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
192346
192347 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192348 trace
192349 (p_msg => '# of extracted headers and events does not match'
192350 ,p_level => C_LEVEL_STATEMENT
192351 ,p_module => l_log_module);
192352
192353 trace
192354 (p_msg => '# of extracted headers: '
192355 ||g_hdr_extract_count
192356 ,p_level => C_LEVEL_STATEMENT
192357 ,p_module => l_log_module);
192358
192359 trace
192360 (p_msg => '# of events in xla_events_gt: '
192361 ||xla_context_pkg.get_event_count_context
192362 ,p_level => C_LEVEL_STATEMENT
192363 ,p_module => l_log_module);
192364
192365 trace
192366 (p_msg => 'Event No Header Extract Context: '
192367 ||xla_context_pkg.get_event_nohdr_context
192368 ,p_level => C_LEVEL_STATEMENT
192369 ,p_module => l_log_module);
192370
192371 END IF;
192372
192373
192374 xla_context_pkg.set_event_nohdr_context
192375 (p_nohdr_extract_flag => 'Y'
192376 ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
192377
192378 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192379 trace
192380 (p_msg => 'No Header Extract Flag is set to Y'
192381 ,p_level => C_LEVEL_STATEMENT
192382 ,p_module => l_log_module);
192383 END IF;
192384
192385 END IF;
192386
192387 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192388 trace
192389 (p_msg => 'END of CreateHeadersAndLines'
192390 ,p_level => C_LEVEL_PROCEDURE
192391 ,p_module => l_log_module);
192392 END IF;
192393
192394 RETURN l_created;
192395 EXCEPTION
192396 WHEN xla_exceptions_pkg.application_exception THEN
192397 RAISE;
192398 WHEN OTHERS THEN
192399 xla_exceptions_pkg.raise_message
192400 (p_location => 'XLA_00555_AAD_S_000001_PKG.CreateHeadersAndLines');
192401 END CreateHeadersAndLines;
192402 --
192403 --
192404
192405 --
192406 --+============================================+
192407 --| |
192408 --| PUBLIC FUNCTION |
192409 --| |
192410 --+============================================+
192411 --
192412 FUNCTION CreateJournalEntries
192413 (p_application_id IN NUMBER
192414 ,p_base_ledger_id IN NUMBER
192415 ,p_pad_start_date IN DATE
192416 ,p_pad_end_date IN DATE
192417 ,p_primary_ledger_id IN NUMBER)
192418 RETURN NUMBER IS
192419 l_log_module VARCHAR2(240);
192420 l_array_ledgers xla_accounting_cache_pkg.t_array_ledger_id;
192421 l_temp_result BOOLEAN;
192422 l_result NUMBER;
192423 BEGIN
192424 --
192425 IF g_log_enabled THEN
192426 l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
192427 END IF;
192428 --
192429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192430 trace
192431 (p_msg => 'BEGIN of CreateJournalEntries'||
192432 ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
192433 ,p_level => C_LEVEL_PROCEDURE
192434 ,p_module => l_log_module);
192435
192436 END IF;
192437
192438 --
192439 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
192440
192441 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192442 trace
192443 (p_msg => 'g_diagnostics_mode = '||g_diagnostics_mode
192444 ,p_level => C_LEVEL_STATEMENT
192445 ,p_module => l_log_module);
192446 END IF;
192447 --
192448 xla_ae_journal_entry_pkg.SetProductAcctDefinition
192449 (p_product_rule_code => 'PROCESS_MFG_FINANCIALS'
192450 ,p_product_rule_type_code => 'S'
192451 ,p_product_rule_version => ''
192452 ,p_product_rule_name => 'Process Manufacturing Financials'
192453 ,p_amb_context_code => 'DEFAULT'
192454 );
192455
192456 l_array_ledgers :=
192457 xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
192458 (p_base_ledger_id => p_base_ledger_id);
192459
192460 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
192461 l_temp_result :=
192462 XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
192463 (p_application_id => p_application_id
192464 ,p_base_ledger_id => p_base_ledger_id
192465 ,p_target_ledger_id => l_array_ledgers(Idx)
192466 ,p_primary_ledger_id => p_primary_ledger_id
192467 ,p_pad_start_date => p_pad_start_date
192468 ,p_pad_end_date => p_pad_end_date);
192469
192470 l_temp_result :=
192471 l_temp_result AND
192472 CreateHeadersAndLines
192476 ,p_pad_start_date => p_pad_start_date
192473 (p_application_id => p_application_id
192474 ,p_base_ledger_id => p_base_ledger_id
192475 ,p_target_ledger_id => l_array_ledgers(Idx)
192477 ,p_pad_end_date => p_pad_end_date
192478 ,p_primary_ledger_id => p_primary_ledger_id
192479 );
192480 END LOOP;
192481
192482
192483 IF (g_diagnostics_mode = 'Y' AND
192484 C_LEVEL_UNEXPECTED >= g_log_level AND
192485 xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
192486
192487 xla_accounting_dump_pkg.acctg_event_extract_log(
192488 p_application_id => p_application_id
192489 ,p_request_id => xla_environment_pkg.g_Req_Id
192490 );
192491
192492 END IF;
192493
192494 CASE l_temp_result
192495 WHEN TRUE THEN l_result := 0;
192496 ELSE l_result := 2;
192497 END CASE;
192498
192499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192500 trace
192501 (p_msg => 'return value. = '||TO_CHAR(l_result)
192502 ,p_level => C_LEVEL_PROCEDURE
192503 ,p_module => l_log_module);
192504 trace
192505 (p_msg => 'END of CreateJournalEntries '
192506 ,p_level => C_LEVEL_PROCEDURE
192507 ,p_module => l_log_module);
192508 END IF;
192509
192510 RETURN l_result;
192511 EXCEPTION
192512 WHEN xla_exceptions_pkg.application_exception THEN
192513 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192514 trace
192515 (p_msg => 'ERROR. = '||sqlerrm
192516 ,p_level => C_LEVEL_PROCEDURE
192517 ,p_module => l_log_module);
192518 END IF;
192519 RAISE;
192520 WHEN OTHERS THEN
192521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192522 trace
192523 (p_msg => 'ERROR. = '||sqlerrm
192524 ,p_level => C_LEVEL_PROCEDURE
192525 ,p_module => l_log_module);
192526 END IF;
192527 xla_exceptions_pkg.raise_message
192528 (p_location => 'XLA_00555_AAD_S_000001_PKG.CreateJournalEntries');
192529 END CreateJournalEntries;
192530 --
192531 --=============================================================================
192532 --
192533 --
192534 --
192535 --
192536 --
192537 --
192538 --
192539 --
192540 --
192541 --
192542 --
192543 --
192544 --
192545 --
192546 --
192547 --
192548 --
192549 --
192550 --
192551 --
192552 --
192553 --
192554 --=============================================================================
192555 --=============================================================================
192556 -- *********** Initialization routine **********
192557 --=============================================================================
192558
192559 BEGIN
192560 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
192561 g_log_enabled := fnd_log.test
192562 (log_level => g_log_level
192563 ,module => C_DEFAULT_MODULE);
192564
192565 IF NOT g_log_enabled THEN
192566 g_log_level := C_LEVEL_LOG_DISABLED;
192567 END IF;
192568 --
192569 END XLA_00555_AAD_S_000001_PKG;
192570 --